aboutsummaryrefslogtreecommitdiffstats
path: root/external
diff options
context:
space:
mode:
authorDavid Fugate <dfugate@microsoft.com>2011-06-28 10:36:30 -0700
committerDavid Fugate <dfugate@microsoft.com>2011-06-28 10:36:30 -0700
commit0005b0b87b55ee11277e414c4063ae97b3c793e1 (patch)
treefc37bea04c3ff1cf21dff9ee02f51f2757958cd9 /external
parent55855b285e67bc29e567c515459726cb1a110163 (diff)
parente69a5fa68f7b946e385786ab13981385b769db64 (diff)
Merged remote changes
Diffstat (limited to 'external')
-rw-r--r--external/contributions/Google/sputniktests/AUTHORS10
-rw-r--r--external/contributions/Google/sputniktests/LICENSE26
-rw-r--r--external/contributions/Google/sputniktests/lib/Date_constants.js20
-rw-r--r--external/contributions/Google/sputniktests/lib/Date_library.js326
-rw-r--r--external/contributions/Google/sputniktests/lib/framework.js18
-rw-r--r--external/contributions/Google/sputniktests/lib/math_isequal.js18
-rw-r--r--external/contributions/Google/sputniktests/lib/math_precision.js13
-rw-r--r--external/contributions/Google/sputniktests/lib/numeric_conversion.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.1_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.2_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.3_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.3_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.4_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.5_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.5_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.1_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.2_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.3_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.4_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.4_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.5_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.5_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.1_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.2_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.3_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.4_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.4_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.5_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.5_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.1_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.2_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.3_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.4_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.4_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.5_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.5_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T4.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T5.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.1_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.2_T2.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.1_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.1_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.2_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.2_T2.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T1.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T2.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T3.js7
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T1.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T2.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T3.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.3_T1.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.3_T2.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.4_T1.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.4_T2.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T1.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T2.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T3.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T4.js4
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.2_T2.js10
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T4.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T1.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T2.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T3.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T4.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T5.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T7.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T8.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A1_T2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A2_T1.js77
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A2_T2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T5.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T6.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A5.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A2.js121
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.10.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.11.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.12.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.13.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.14.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.15.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.16.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.17.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.18.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.19.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.20.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.21.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.22.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.23.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.24.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.25.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.4.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.5.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.6.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.7.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.8.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.9.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.1.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.10.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.11.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.12.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.13.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.14.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.15.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.15ns.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.16.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.17.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.18.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.18ns.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.19.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.2.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.20.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.21.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.21ns.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.22.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.22ns.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.23.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.23ns.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.24.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.24ns.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.25.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.26.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.26ns.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.27.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.28.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.29.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.3.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.30.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.31.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.4.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.5.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.6.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.7.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.8.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.9.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T1.js74
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T2.js74
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T3.js74
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T4.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.1_T1.js115
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.1_T2.js116
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.2_T1.js143
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.2_T2.js143
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.3_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T10.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T4.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T5.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T6.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T7.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T8.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T9.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.1_Null_Literals/S7.8.1_A1_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.1_Null_Literals/S7.8.1_A1_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.2_Boolean_Literals/S7.8.2_A1_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.2_Boolean_Literals/S7.8.2_A1_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.1_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.1_T2.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T3.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T5.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T6.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T7.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T8.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T3.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T3.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T5.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T6.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T7.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T8.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.1_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.1_T2.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T3.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T3.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T5.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T6.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T7.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T8.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T3.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T5.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T6.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T7.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T8.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T5.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T6.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T7.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T8.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T3.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T5.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T6.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T7.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T8.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T1.js89
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T2.js89
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T3.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T4.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T5.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T6.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T7.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T8.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.1_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.2_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.2_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.1_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.2_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.2_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.2_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.3_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.1_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.2_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.2_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.1_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.1_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T2.js114
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T4.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T6.js143
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T8.js143
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T5.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T6.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T7.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T3.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T1.js89
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.2_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.2_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.3_T1.js84
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.4_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.4_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T1.js89
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T5.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T6.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.3_T1.js84
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.4_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.4_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.1_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.1_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T3.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.4_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.4_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.1_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.1_T2.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.2_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.2_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.4_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.4_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T7.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T8.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T9.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A4.1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A4.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T3.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T5.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T7.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T10.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T11.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T12.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T5.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T7.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T8.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T9.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T10.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T11.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T7.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T8.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T9.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A3.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.1_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.2_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.6_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.6_T2.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.7_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.8_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.9_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T10.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T11.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T12.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T13.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T8.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T9.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T10.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T9.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.4_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.4_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T3.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T7.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T8.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T9.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T5.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T3.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T5.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T7.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T8.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T9.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A1_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A1_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A2_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A2_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A5.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A1_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A1_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A1_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A1_T2.js74
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A2.1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A2.2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A3.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A10.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A11.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A12.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A6.1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A6.2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.4.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A8.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T1.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T3.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A10.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A11_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A11_T2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A12.1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A12.2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A13_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A13_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A14_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A14_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A2.1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A2.2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A5.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A6.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A7.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A9.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A3.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.2_A1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.2_A2.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.3_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A2_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A2_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A3.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A2_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A2_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A3.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A3.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A1.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A4.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T4.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A6.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A2_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A2_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A3_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A3_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A4_T1.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.1_A1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.1_A2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A1_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A1_T2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A2.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A3.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A4.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A5_T1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A5_T2.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A6.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A7.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T4.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A1_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A1_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A2_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A2_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A3_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T3.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T4.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A6_T1.js104
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A6_T2.js104
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A10.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A11.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A12.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A13.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A14.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A15.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A16.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A17.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A18.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A19.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A2.js288
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A20.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A21.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A22.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A23.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A24.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A25.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A26.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A27.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A28.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A29.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A30.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A31.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A32.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A3_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A3_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A4_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A4_T2.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T2.js145
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T3.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A6_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A6_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A1_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A1_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A2_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.1_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.1_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.2_T1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.2_T2.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A5_T1.js125
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A5_T2.js125
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A3_T1.js82
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A3_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A1_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.1_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.1_T2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.2_T1.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.2_T2.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.3_T1.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.3_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T4.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.2_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A2.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A2.2.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T4.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A2.1.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A2.2.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T4.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A10.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A6.js92
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A7.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A8.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A9_T1.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A9_T2.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A1_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A1_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A2_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A2_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A3_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A3_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A5_T1.js92
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A5_T2.js91
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A2.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A4.js177
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A5.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A6.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A4_T1.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A4_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.1_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.1_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.2_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T6.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T7.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T8.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T2.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T3.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T3.js89
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T3.js89
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T3.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T2.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T3.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T3.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T2.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T4.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T4.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A6.js66
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.7_A1_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.1_Global_Code/S10.2.1_A1_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.1_Global_Code/S10.2.1_A1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T10.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T11.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T4.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T6.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T7.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T8.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T9.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T10.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T11.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T3.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T4.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T5.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T6.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T7.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T8.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/S10.2_A1.1_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/S10.2_A1.1_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.2_T1.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T3.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T2.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T3.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T1.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T5.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T10.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T11.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T2.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T3.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T4.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T5.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T6.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T7.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T8.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T9.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.10.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.7.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.8.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.10.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.11.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.6.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.8.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.9.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.10.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.11.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.9.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T11.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T6.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T7.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T11.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T6.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T7.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T11.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T6.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T7.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.4.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.5.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.6.js77
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.7.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.3.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.4.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.5.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.7.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A2.js127
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.3.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A2.js93
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.3.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T4.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T5.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T8.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T9.js100
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T3.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T4.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T5.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T2.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T3.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T4.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T5.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T4.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T5.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T2.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T2.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.3_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T4.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.2_T1.js109
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.2_T1.js109
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.3.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.4.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.5.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.6.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.7.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.2_T1.js103
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.2_T1.js103
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T4.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.2_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T10.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T5.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T6.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T8.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T9.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T2.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T3.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T4.js89
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T5.js103
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T6.js81
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T7.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T3.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T4.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T5.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T6.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T7.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T1.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T2.js2571
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T3.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T4.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.1_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.2_T1.js329
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T1.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T2.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T3.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T4.js2565
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.1_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.2_T1.js329
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T1.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T2.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T3.js2650
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T4.js2650
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.1_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.2_T1.js330
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.10.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.11.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.7.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.9.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.10.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.11.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.7.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.9.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.10.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.11.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.7.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.9.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.10.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.11.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.7.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.9.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A3.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T1.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T4.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A3.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.3.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.7.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.8.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.9.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.3.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.7.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.8.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.9.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.3.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A5.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A7.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T1.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T2.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T3.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T4.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.3.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A5.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A7.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T1.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T2.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T3.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T4.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T1.js137
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T2.js146
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T3.js149
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T4.js139
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T5.js140
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T1.js145
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T2.js150
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T3.js150
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T4.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T5.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T1.js142
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T2.js148
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T3.js150
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T4.js150
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T5.js154
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T1.js135
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T2.js143
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T3.js145
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T1.js142
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T2.js147
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T3.js150
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T4.js151
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T5.js149
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T1.js142
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T2.js143
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T3.js146
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T4.js147
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T5.js154
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T1.js137
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T2.js146
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T3.js148
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T4.js138
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T5.js140
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T1.js142
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T2.js145
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T3.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T4.js137
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T5.js145
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T1.js136
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T2.js145
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T3.js147
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T1.js142
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T2.js147
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T3.js149
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T4.js151
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T5.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T1.js142
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T2.js142
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T3.js145
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T4.js150
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T5.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T1.js142
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T2.js137
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T3.js145
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T1.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T2.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T3.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T4.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T5.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T4.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T5.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T4.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T5.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T2.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T3.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T2.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T5.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T1.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T2.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T3.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T5.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T2.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T3.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T4.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T5.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T2.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T3.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T4.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T5.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T2.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T3.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T3.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T4.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T5.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T2.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T3.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T4.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T5.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T2.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T3.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T4.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T5.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T6.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T3.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T4.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T5.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T6.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T1.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T2.js87
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T3.js91
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T4.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A2_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A4_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.12_Labelled_Statements/S12.12_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T3.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T5.js74
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T6.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T3.js91
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T4.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T6.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T2.js115
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T3.js150
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T4.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T2.js122
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T3.js149
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T4.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T2.js131
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T3.js161
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T4.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T2.js181
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T3.js185
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A14.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A15.js91
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T10.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T11.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T12.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T13.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T14.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T15.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T5.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T7.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T8.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T9.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A17.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T3.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T4.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T5.js101
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T6.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T7.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A19_T1.js67
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A19_T2.js101
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A2.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A3.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A5.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A6.js66
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T1.js137
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T2.js151
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T3.js168
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A8.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T2.js121
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T3.js157
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T4.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T5.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A2.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A4_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A4_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A5.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A11.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A12.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A2.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A3.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A5.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A6_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A6_T2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A7.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T7.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.3_Empty_Statement/S12.3_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A2_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.1_T1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.1_T2.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.2_T1.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.2_T2.js100
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A10_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A10_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A11.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T4.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1_T1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1_T2.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A2.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A5.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A6_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A6_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A7.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A8.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A1.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A10.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A11.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A12.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A14_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A14_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A15.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T4.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T5.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A5.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T6.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A7.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A8.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A9.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A10.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A11.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A14_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A14_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A15.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T3.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T5.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A5.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T6.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A7.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A8.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A9.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A10.1.js110
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A10.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T2.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T2.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T2.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T2.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A13.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A14.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A15.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4.1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A5.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A6.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7.1_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7.1_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A14_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A14_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A15.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A3.1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A4.1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A4.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A5.1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A5.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A6.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A7_T1.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A7_T2.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A2.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A3.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A6.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A7.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A9_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A9_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T4.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A2.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A3.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T3.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A6.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A7.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A9_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A9_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T10.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T9.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A2.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A4.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A5.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A1_T1.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A5_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A5_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A6_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A6_T2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T3.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T4.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A8_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A8_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9.1_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9.1_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9_T2.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A10.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A11.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A12.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A13.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A14.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T3.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T4.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T3.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T2.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T3.js67
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A18_T1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A18_T2.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T3.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T5.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T6.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T7.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T8.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A1_T2.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A2.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A3_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A3_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A4_T1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A4_T2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A5_T1.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A5_T2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A6_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A6_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A7_T1.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A7_T2.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T2.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A9.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A1_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A2_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A2_T2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A4_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A4_T2.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A5.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A10.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T4.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A12_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A12_T2.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A14.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T5.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A16.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A17_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A17_T2.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A18.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A19_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A19_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T3.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T4.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A5.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A6_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A6_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T1.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T2.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A8_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A8_T2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A9.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A5_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A5_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T10.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T11.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T12.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T13.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T14.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T15.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T16.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T9.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.1_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.2_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.3_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.5_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A3.1_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A3.1_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A5.1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T3.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T6.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T7.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T1.js522
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T3.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T1.js523
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T3.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T4.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T1.js2058
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T1.js522
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T4.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T1.js521
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T4.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T1.js522
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T4.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T10.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T11.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T12.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T13.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T14.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T15.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T16.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T17.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T6.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T7.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T8.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T9.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T7.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T8.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T10.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T11.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T12.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T13.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T14.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T15.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T16.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T17.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T18.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T19.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T20.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T21.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T22.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T23.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T24.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T25.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T26.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T27.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T28.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T29.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T30.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T31.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T32.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T33.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T34.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T35.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T36.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T37.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T38.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T39.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T40.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T41.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T6.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T8.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T9.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T10.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T11.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T12.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T13.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T14.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T15.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T16.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T17.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T4.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T9.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T10.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T6.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T7.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T8.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T9.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T10.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T11.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T12.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T13.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T14.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T15.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T5.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T6.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T7.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T8.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T9.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T6.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T7.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T8.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A5_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A5_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T10.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T11.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T12.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T6.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T7.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T8.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T9.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T10.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T11.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T12.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T13.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T14.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T6.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T7.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T8.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T9.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T10.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T11.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T12.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T13.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T14.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T15.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T16.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T17.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T18.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T19.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T20.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T21.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T6.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T7.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T8.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T9.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T10.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T11.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T12.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T6.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T7.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T8.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T9.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T4.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T4.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T10.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T11.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T7.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T9.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T1.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T10.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T11.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T12.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T13.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T14.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T15.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T16.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T17.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T18.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T19.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T2.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T20.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T21.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T22.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T23.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T24.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T25.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T26.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T27.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T28.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T29.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T30.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T31.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T32.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T33.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T4.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T5.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T6.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T7.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T8.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T9.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T1.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T2.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T3.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T4.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T5.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T6.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T7.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T8.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T9.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A5_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A5_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/S15.10.2_A1_T1.js88
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A2_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A2_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A3_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T4.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T5.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A2_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T4.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T5.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T4.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T5.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T9.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A6_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A7_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A7_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T10.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T11.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T12.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T13.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T5.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A2_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A2_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A11.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A12.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T10.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T11.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T12.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T13.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T14.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T15.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T16.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T17.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T18.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T19.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T2.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T20.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T21.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T3.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T4.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T5.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T6.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T9.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T10.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T6.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T7.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T2.js155
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T3.js155
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T4.js155
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T5.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T6.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T7.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T1.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T10.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T11.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T12.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T2.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T3.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T4.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T5.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T6.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T7.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T8.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T9.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A8.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A10.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A11.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T10.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T11.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T12.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T13.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T14.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T15.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T16.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T17.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T18.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T19.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T20.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T21.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T8.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T9.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T10.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T5.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T6.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T7.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T8.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A8.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A10.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A11.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A8.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6.1_A1_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6.1_A1_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A1_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A1_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A10.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A8.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A9.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A10.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A8.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A9.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A10.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A8.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A10.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A8.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A9.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.5_lastIndex/S15.10.7.5_A8.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.5_lastIndex/S15.10.7.5_A9.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A2_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A3_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A3_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A1_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1_A1_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A1_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A1_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A2_T1.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A3_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A4_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3_A1_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3_A2_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.1_A1_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.1_A1_T2.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.2_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.2_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.3_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.3_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.4_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.4_A2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.12_The_JSON_Object/15.12.2_JSON.parse/S15.12.2_A1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A2_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A2_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A3.1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A3.2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A2_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A2_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A3.1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A3.2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A2_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A2_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A3.1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A3.2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.1_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.1_T2.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.2_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A2_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A2_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.1_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.1_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T5.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T7.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T8.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T3.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T2.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T5.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T7.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T10.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T5.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T6.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T7.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T8.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T9.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T7.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.1_T1.js74
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.1_T2.js74
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T1.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T2.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.1_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.2_T1.js100
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.2_T2.js100
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.1_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.1_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T1.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T2.js112
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T3.js112
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T2.js109
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T3.js109
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A8.js82
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T6.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T7.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T10.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T5.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T6.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T7.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T8.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T9.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T2.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T3.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T3.js90
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T5.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T6.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T7.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T4.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A6.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A1_T1.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A1_T2.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A1_T1.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A1_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.10_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.11_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.11_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T2.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T3.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.13_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.13_T2.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T2.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T3.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T4.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T2.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T3.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T4.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T5.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T6.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.1_T1.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.2_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.2_T2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.3_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.3_T2.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.4_T1.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.5_T1.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.6_T1.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.7_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.8_T1.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.8_T2.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T1.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T2.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T3.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.1_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.2_T1.js83
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.3_T1.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.4_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.5_T1.js90
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T2.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A6_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.10_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.11_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.11_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T2.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T3.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.13_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.13_T2.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T2.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T3.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T4.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T2.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T3.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T4.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T5.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T6.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.1_T1.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.2_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.2_T2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.3_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.3_T2.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.4_T1.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.5_T1.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.6_T1.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.7_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.8_T1.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.8_T2.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T1.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T2.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T3.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.1_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.2_T1.js77
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.3_T1.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.4_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.5_T1.js90
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T1.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T2.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A6_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T2.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T2.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.3_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.1_T1.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.3_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T1.js88
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T2.js88
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.5_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.1_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.3_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A6_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.1_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.1_T2.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.2_T2.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.3_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.1_T1.js81
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.3_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.4_T1.js88
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.4_T2.js88
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.5_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.3_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A6_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A1_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A2_T1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T4.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T5.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T11.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T12.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T13.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T14.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T6.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T7.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T8.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T2.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T3.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T4.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T5.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T5.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T6.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T7.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T1.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T4.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A10.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A11.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A12.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A13.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A14.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A15.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A16.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A8.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A11.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A12.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A13.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A8.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A11.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A12.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A13.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A14.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T4.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T6.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T7.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A8.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A11.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A12.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A13.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T2.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A8.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A9.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A1.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A10.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A11.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A12.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A13.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A8.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A9.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A10.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A11.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A12.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A13.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A2_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A2_T2.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A8.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A9.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4.1_A1_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4.1_A1_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A1_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A1_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/S15.2_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T10.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T11.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T12.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T13.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T3.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T4.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T5.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T6.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T7.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T8.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T9.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T4.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T6.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T10.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T11.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T12.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T13.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T14.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T15.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T5.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T6.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T7.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T8.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T9.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2_A1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A2_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A2_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A11.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A12.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A13.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A14.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A15.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A16.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A8.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A9.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A11.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A12.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A13.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A14.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A15.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A16.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A1_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A1_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A2_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A2_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T10.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T8.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T9.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T6.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T8.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T10.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T6.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T6.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A9.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A11.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A12.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A13.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A14.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A15.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A16.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A1_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A1_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A2_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A2_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T10.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T9.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T6.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T8.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T10.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T6.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T6.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A9.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A13.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A14.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A15.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A16.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4.1_A1_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4.1_A1_T2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A3_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A3_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T3.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.2_A1_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.2_A1_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T6.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T8.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T5.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T6.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A3_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A3_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A1_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A1_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A2_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A2_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A3_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A3_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3.1_A1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A2_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T1.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T3.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T5.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T6.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.2_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.3_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A2.1_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A2.2_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A3.1_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.2_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.3_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A2.1_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A2.2_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.2_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.1_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T2.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T3.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T4.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T5.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T5.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T7.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T4.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T3.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.5_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.5_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T2.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T3.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T4.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T5.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T3.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T4.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T5.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T2.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T3.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T4.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T5.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T6.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A4_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.1_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.2_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.2_T2.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.3_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.4_T1.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.4_T2.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.5_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A3_T1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A3_T2.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T2.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T3.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A5_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A6_T2.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A8.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T3.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T6.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T3.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T4.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T3.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T4.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T3.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T6.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.5_T1.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.5_T2.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T1.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T2.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T3.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T4.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T1.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T3.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T5.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T1.js67
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T3.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T4.js67
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T1.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T1.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T2.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T3.js74
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A1_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A1_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T1.js67
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T2.js117
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T3.js91
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T1.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T2.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T3.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A4_T1.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A4_T2.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.18_Array_prototype_forEach/S15.4.4.18_A1.js11
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.18_Array_prototype_forEach/S15.4.4.18_A2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.1_Array_prototype_constructor/S15.4.4.1_A1_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.1_Array_prototype_constructor/S15.4.4.1_A2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T2.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T3.js90
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T4.js111
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A2_T1.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A3_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A1_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A2_T1.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A3_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T2.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T4.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A2_T1.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A2_T2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A3_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.1_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.2_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.2_T2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.3_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T1.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T2.js84
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T3.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T4.js83
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.1_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.1_T2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.2_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.2_T2.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A5_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A1.1_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A1.2_T1.js68
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T2.js90
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T4.js97
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T1.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T2.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A4_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A4_T2.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A1_T1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A1_T2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T1.js67
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T2.js117
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T3.js92
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T1.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A5_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A1_T1.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A1_T2.js127
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T1.js129
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T2.js129
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T3.js129
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T1.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T2.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T3.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A4_T1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A4_T2.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A1.1_T1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A1.2_T1.js68
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T2.js90
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T4.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T5.js97
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T1.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T2.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T3.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A4_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A4_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.3.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.2_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A2.1_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A2.1_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.1_T2.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.3_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.3_T2.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.2_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A1_T1.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A1_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T3.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T10.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T2.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T5.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T6.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T7.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T8.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T9.js93
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T10.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T11.js117
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T12.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T13.js81
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T14.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T15.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T16.js81
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T17.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T18.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T19.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T4.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T6.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T7.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T8.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A2_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T10.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T11.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T12.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T13.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T16.js110
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T17.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T18.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T19.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T3.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T5.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T6.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T7.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T8.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T9.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A2_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A2_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A2.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A3_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A3_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A4.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A2_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A2_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T10.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T11.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T12.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T13.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T14.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T10.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T11.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T12.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T13.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T14.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T15.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T16.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T17.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T18.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T3.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T4.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T5.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T6.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T8.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T9.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A12.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T10.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T11.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T12.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T13.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T14.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T15.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T16.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T17.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T5.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T7.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T9.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T10.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T6.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T8.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T9.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A5_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A6.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1.1_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T10.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T11.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T12.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T13.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T14.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A3_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T10.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T11.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T12.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T13.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T14.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T15.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T9.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T4.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T10.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T11.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T12.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T13.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T14.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T15.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T16.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T17.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T18.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T3.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T4.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T5.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T6.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T7.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T8.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T9.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T1.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T10.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T11.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T12.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T13.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T14.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T15.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T16.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T17.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T18.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T19.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T2.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T20.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T21.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T22.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T23.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T24.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T25.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T26.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T27.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T28.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T29.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T3.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T30.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T31.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T32.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T33.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T34.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T35.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T36.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T37.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T38.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T39.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T4.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T40.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T41.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T42.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T43.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T5.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T6.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T7.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T8.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T9.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T10.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T11.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T2.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T3.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T4.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T5.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T6.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T7.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T8.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T9.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T10.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T11.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T12.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T13.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T14.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T15.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T16.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T17.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T18.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T19.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T2.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T20.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T21.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T22.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T23.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T24.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T25.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T3.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T4.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T5.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T6.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T7.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T8.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T9.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T10.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T11.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T12.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T13.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T14.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T15.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T5.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T7.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T9.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T10.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T9.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T10.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T11.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T6.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T7.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T8.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T9.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T10.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T12.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T13.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T14.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T4.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T6.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T8.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T9.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T10.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T12.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T13.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T14.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T4.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T8.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T9.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T10.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T11.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T12.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T13.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T14.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T4.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T8.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T9.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T10.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T11.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T12.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T13.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T14.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T4.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T8.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T9.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1.1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T10.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T8.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T9.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A5.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T10.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T3.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T8.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T9.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A4.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T10.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T8.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T9.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A4_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A4_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T10.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T11.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T12.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T5.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T6.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T10.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T11.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T12.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T5.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T5.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A7.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A1_T1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A1_T2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A6.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A7.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A9.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.1_A1_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.1_A1_T2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A2_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A2_T2.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A3_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A4_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A2_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A2_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A4.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A1_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A1_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A2_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A2_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T2.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T3.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T4.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T5.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A1.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A3.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.1_A1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A1_T1.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A1_T2.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A1_T2.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T3.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T4.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T5.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4_A1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4_A2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.1_The_Number_Constructor_Called_as_a_Function/S15.7.1.1_A1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.1_The_Number_Constructor_Called_as_a_Function/S15.7.1.1_A2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A1.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A2_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A2_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A3.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A5.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A7.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.1_Number.prototype.constructor/S15.7.4.1_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T01.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T02.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T03.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T01.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T02.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T03.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T04.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T05.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T06.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T07.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T08.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T09.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T10.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T11.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T12.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T13.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T14.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T15.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T16.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T17.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T18.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T19.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T20.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T21.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T22.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T23.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T24.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T25.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T26.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T27.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T28.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T29.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T30.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T31.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T32.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T33.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T34.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T01.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T02.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T03.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T04.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T01.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T02.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T03.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T04.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T05.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A1_T01.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A1_T02.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T01.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T02.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T03.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T04.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T05.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.1_T01.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.1_T02.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.3_T01.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.3_T02.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.4_T01.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A2_T01.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A1.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.5.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.7.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T01.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T02.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T03.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T04.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T05.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T06.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T07.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A4.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A6.js159
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A2.js67
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A2.js67
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A4.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A10.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A11.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A12.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A13.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A14.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A15.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A16.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A17.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A18.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A19.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A20.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A21.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A22.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A23.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A24.js227
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A7.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A8.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.14_random/S15.8.2.14_A1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A6.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A7.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A2.JS13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A6.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A7.js158
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A6.js159
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A6.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A7.js159
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A5.js162
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A6.js161
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A6.js161
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A1.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A10.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A11.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A12.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A13.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A14.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A15.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A16.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A17.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A18.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A19.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A20.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A21.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A22.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A23.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A24.js226
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A5.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A7.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A9.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A6.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A6.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A7.js158
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A6.js160
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A2.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A3.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A4.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A5.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A6.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A7.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.2_The_Date_Constructor_Called_as_a_Function/S15.9.2.1_A1.js80
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.2_The_Date_Constructor_Called_as_a_Function/S15.9.2.1_A2.js91
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T1.js226
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T2.js226
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T3.js226
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T4.js226
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T5.js226
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T6.js226
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T1.js191
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T2.js191
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T3.js191
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T4.js191
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T5.js191
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T6.js191
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T1.1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T1.2.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T2.1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T2.2.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T3.1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T3.2.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T4.1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T4.2.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T5.1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T5.2.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T6.1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T6.2.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T2.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T3.js67
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T4.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T5.js89
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T6.js100
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T2.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T3.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T4.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T5.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T6.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T1.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T2.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T3.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T4.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T5.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A1_T1.js156
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A2_T1.js133
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A3_T1.1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A3_T1.2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A3.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A2_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T1.js16
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T2.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A01_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A02_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A03_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A04_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A05_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A06_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A07_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A08_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A09_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A10_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A11_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A12_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A13_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A14_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A15_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A16_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A17_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A18_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A19_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A20_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A21_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A22_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A23_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A24_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A25_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A26_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A27_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A28_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A29_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A30_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A31_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A32_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A33_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A34_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A35_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A36_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A37_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A38_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A39_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A40_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A41_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A42_T1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/readme.txt39
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S11.4.3_D1.1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S11.4.3_D1.2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S12.6.4_D1.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T4.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T5.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T6.js47
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T7.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T8.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2_D1.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2_D1.2.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13_D1_T1.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D1_T1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T3.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D6_T1.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D6_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D7.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.1.2.2_D1.1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.1.2.2_D1.2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.10.6.3_D1_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.4.4.12_D1.5_T1.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.4.4.12_D1.5_T2.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D1_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D1_T2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T2.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T3.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.7.4.5_A1.2_D02.js131
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.7.4.5_D1.2_T01.js132
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.9.1.14_D1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D1.1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D1.2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.4.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.5.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.3.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T11.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T5.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T6.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T7.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S12.6.4_R1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S12.6.4_R2.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R2.1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R2.2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R3.1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R3.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R4.js140
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R2.1.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R2.2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R3.1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R3.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R4.js140
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.10.2.12_A1_T6.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.10.2.12_A2_T6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.16_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.16_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.18_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.18_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A1_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A1.6_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A2.6_T1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A3.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A4.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T3.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T4.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T5.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T6.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T3.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.3.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.4.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A3.1.js152
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A3.2.js124
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T1.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T10.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T2.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T3.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T4.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T5.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T6.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T7.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T8.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T9.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.3_T1.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.3_T2.js155
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.10.2.12_A1_T6.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.10.2.12_A2_T6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.16_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.16_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.18_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.18_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A1_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A1.6_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A2.6_T1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A3.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A4.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T3.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T4.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T5.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T6.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T3.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.3.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.4.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A3.1.js152
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A3.2.js124
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T1.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T10.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T2.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T3.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T4.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T5.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T6.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T7.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T8.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T9.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.3_T1.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.3_T2.js155
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.10.2.12_A1_T6.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.10.2.12_A2_T6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.16_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.16_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.18_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.18_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A1_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A1.6_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A2.6_T1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A3.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A4.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T3.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T4.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T5.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T6.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T3.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.3.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.4.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A3.1.js152
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A3.2.js124
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T1.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T10.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T2.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T3.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T4.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T5.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T6.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T7.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T8.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T9.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.3_T1.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.3_T2.js155
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.10.2.12_A1_T6.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.10.2.12_A2_T6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.16_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.16_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.18_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.18_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A1_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A1.6_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A2.6_T1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A3.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A4.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T3.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T4.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T5.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T6.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T3.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.3.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.4.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A3.1.js152
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A3.2.js124
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T1.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T10.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T2.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T3.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T4.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T5.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T6.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T7.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T8.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T9.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.3_T1.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.3_T2.js155
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.10.2.12_A1_T6.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.10.2.12_A2_T6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.16_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.16_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.18_A1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.18_A2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A1_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A1.6_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A2.6_T1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A3.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A4.6_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T3.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T4.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T5.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T6.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T2.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T3.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T4.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.2_T1.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.2_T2.js61
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.3.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.4.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A3.1.js152
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A3.2.js124
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T1.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T10.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T2.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T3.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T4.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T5.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T6.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T7.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T8.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T9.js62
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.3_T1.js153
-rw-r--r--external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.3_T2.js155
-rw-r--r--external/contributions/Google/test1
5597 files changed, 235326 insertions, 1 deletions
diff --git a/external/contributions/Google/sputniktests/AUTHORS b/external/contributions/Google/sputniktests/AUTHORS
new file mode 100644
index 000000000..13129a0fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/AUTHORS
@@ -0,0 +1,10 @@
+# Below is a list of people and organizations that have contributed
+# to the Sputnik project. Names should be added to the list like so:
+#
+# Name/Organization <email address>
+
+Google Inc.
+
+outofhanwell <outofhanwell@gmail.com>
+Pedro Del Gallego <pedro.delgallego@gmail.com>
+
diff --git a/external/contributions/Google/sputniktests/LICENSE b/external/contributions/Google/sputniktests/LICENSE
new file mode 100644
index 000000000..971852544
--- /dev/null
+++ b/external/contributions/Google/sputniktests/LICENSE
@@ -0,0 +1,26 @@
+Copyright 2009, the Sputnik authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/external/contributions/Google/sputniktests/lib/Date_constants.js b/external/contributions/Google/sputniktests/lib/Date_constants.js
new file mode 100644
index 000000000..2409939f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/lib/Date_constants.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.
+
+var HoursPerDay = 24;
+var MinutesPerHour = 60;
+var SecondsPerMinute = 60;
+
+var msPerDay = 86400000;
+var msPerSecond = 1000;
+var msPerMinute = 60000;
+var msPerHour = 3600000;
+
+var date_1899_end = -2208988800001;
+var date_1900_start = -2208988800000;
+var date_1969_end = -1;
+var date_1970_start = 0;
+var date_1999_end = 946684799999;
+var date_2000_start = 946684800000;
+var date_2099_end = 4102444799999;
+var date_2100_start = 4102444800000;
diff --git a/external/contributions/Google/sputniktests/lib/Date_library.js b/external/contributions/Google/sputniktests/lib/Date_library.js
new file mode 100644
index 000000000..6594acfb8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/lib/Date_library.js
@@ -0,0 +1,326 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+//15.9.1.2 Day Number and Time within Day
+function Day(t) {
+ return Math.floor(t/msPerDay);
+}
+
+function TimeWithinDay(t) {
+ return t%msPerDay;
+}
+
+//15.9.1.3 Year Number
+function DaysInYear(y){
+ if(y%4 != 0) return 365;
+ if(y%4 == 0 && y%100 != 0) return 366;
+ if(y%100 == 0 && y%400 != 0) return 365;
+ if(y%400 == 0) return 366;
+}
+
+function DayFromYear(y) {
+ return (365*(y-1970)
+ + Math.floor((y-1969)/4)
+ - Math.floor((y-1901)/100)
+ + Math.floor((y-1601)/400));
+}
+
+function TimeFromYear(y){
+ return msPerDay*DayFromYear(y);
+}
+
+function YearFromTime(t) {
+ t = Number(t);
+ var sign = ( t < 0 ) ? -1 : 1;
+ var year = ( sign < 0 ) ? 1969 : 1970;
+
+ for(var time = 0;;year += sign){
+ time = TimeFromYear(year);
+
+ if(sign > 0 && time > t){
+ year -= sign;
+ break;
+ }
+ else if(sign < 0 && time <= t){
+ break;
+ }
+ };
+ return year;
+}
+
+function InLeapYear(t){
+ if(DaysInYear(YearFromTime(t)) == 365)
+ return 0;
+
+ if(DaysInYear(YearFromTime(t)) == 366)
+ return 1;
+}
+
+function DayWithinYear(t) {
+ return Day(t)-DayFromYear(YearFromTime(t));
+}
+
+//15.9.1.4 Month Number
+function MonthFromTime(t){
+ var day = DayWithinYear(t);
+ var leap = InLeapYear(t);
+
+ if((0 <= day) && (day < 31)) return 0;
+ if((31 <= day) && (day < (59+leap))) return 1;
+ if(((59+leap) <= day) && (day < (90+leap))) return 2;
+ if(((90+leap) <= day) && (day < (120+leap))) return 3;
+ if(((120+leap) <= day) && (day < (151+leap))) return 4;
+ if(((151+leap) <= day) && (day < (181+leap))) return 5;
+ if(((181+leap) <= day) && (day < (212+leap))) return 6;
+ if(((212+leap) <= day) && (day < (243+leap))) return 7;
+ if(((243+leap) <= day) && (day < (273+leap))) return 8;
+ if(((273+leap) <= day) && (day < (304+leap))) return 9;
+ if(((304+leap) <= day) && (day < (334+leap))) return 10;
+ if(((334+leap) <= day) && (day < (365+leap))) return 11;
+}
+
+//15.9.1.5 Date Number
+function DateFromTime(t) {
+ var day = DayWithinYear(t);
+ var month = MonthFromTime(t);
+ var leap = InLeapYear(t);
+
+ if(month == 0) return day+1;
+ if(month == 1) return day-30;
+ if(month == 2) return day-58-leap;
+ if(month == 3) return day-89-leap;
+ if(month == 4) return day-119-leap;
+ if(month == 5) return day-150-leap;
+ if(month == 6) return day-180-leap;
+ if(month == 7) return day-211-leap;
+ if(month == 8) return day-242-leap;
+ if(month == 9) return day-272-leap;
+ if(month == 10) return day-303-leap;
+ if(month == 11) return day-333-leap;
+}
+
+//15.9.1.6 Week Day
+function WeekDay(t) {
+ var weekday = (Day(t)+4)%7;
+ return (weekday < 0 ? 7+weekday : weekday);
+}
+
+//15.9.1.9 Daylight Saving Time Adjustment
+var LocalTZA = $LocalTZ*msPerHour;
+
+function DaysInMonth(m, leap) {
+ m = m%12;
+
+ //April, June, Sept, Nov
+ if(m == 3 || m == 5 || m == 8 || m == 10 ) {
+ return 30;
+ }
+
+ //Jan, March, May, July, Aug, Oct, Dec
+ if(m == 0 || m == 2 || m == 4 || m == 6 || m == 7 || m == 9 || m == 11){
+ return 31;
+ }
+
+ //Feb
+ return 28+leap;
+}
+
+function GetSundayInMonth(t, m, count){
+ var year = YearFromTime(t);
+ var leap = InLeapYear(t);
+ var day = 0;
+
+ if(m >= 1) day += DaysInMonth(0, leap);
+ if(m >= 2) day += DaysInMonth(1, leap);
+ if(m >= 3) day += DaysInMonth(2, leap);
+ if(m >= 4) day += DaysInMonth(3, leap);
+ if(m >= 5) day += DaysInMonth(4, leap);
+ if(m >= 6) day += DaysInMonth(5, leap);
+ if(m >= 7) day += DaysInMonth(6, leap);
+ if(m >= 8) day += DaysInMonth(7, leap);
+ if(m >= 9) day += DaysInMonth(8, leap);
+ if(m >= 10) day += DaysInMonth(9, leap);
+ if(m >= 11) day += DaysInMonth(10, leap);
+
+ var month_start = TimeFromYear(year)+day*msPerDay;
+ var sunday = 0;
+
+ if(count === "last"){
+ for(var last_sunday = month_start+DaysInMonth(m, leap)*msPerDay;
+ WeekDay(last_sunday)>0;
+ last_sunday -= msPerDay
+ ){};
+ sunday = last_sunday;
+ }
+ else {
+ for(var first_sunday = month_start;
+ WeekDay(first_sunday)>0;
+ first_sunday += msPerDay
+ ){};
+ sunday = first_sunday+7*msPerDay*(count-1);
+ }
+
+ return sunday;
+}
+
+function DaylightSavingTA(t) {
+ t = t-LocalTZA;
+
+ var DST_start = GetSundayInMonth(t, $DST_start_month, $DST_start_sunday)
+ +$DST_start_hour*msPerHour
+ +$DST_start_minutes*msPerMinute;
+
+ var k = new Date(DST_start);
+
+ var DST_end = GetSundayInMonth(t, $DST_end_month, $DST_end_sunday)
+ +$DST_end_hour*msPerHour
+ +$DST_end_minutes*msPerMinute;
+
+ if ( t >= DST_start && t < DST_end ) {
+ return msPerHour;
+ } else {
+ return 0;
+ }
+}
+
+//15.9.1.9 Local Time
+function LocalTime(t){
+ return t+LocalTZA+DaylightSavingTA(t);
+}
+
+function UTC(t) {
+ return t-LocalTZA-DaylightSavingTA(t-LocalTZA);
+}
+
+//15.9.1.10 Hours, Minutes, Second, and Milliseconds
+function HourFromTime(t){
+ return Math.floor(t/msPerHour)%HoursPerDay;
+}
+
+function MinFromTime(t){
+ return Math.floor(t/msPerMinute)%MinutesPerHour;
+}
+
+function SecFromTime(t){
+ return Math.floor(t/msPerSecond)%SecondsPerMinute;
+}
+
+function msFromTime(t){
+ return t%msPerSecond;
+}
+
+//15.9.1.11 MakeTime (hour, min, sec, ms)
+function MakeTime(hour, min, sec, ms){
+ if ( !isFinite(hour) || !isFinite(min) || !isFinite(sec) || !isFinite(ms)) {
+ return Number.NaN;
+ }
+
+ hour = ToInteger(hour);
+ min = ToInteger(min);
+ sec = ToInteger(sec);
+ ms = ToInteger(ms);
+
+ return ((hour*msPerHour) + (min*msPerMinute) + (sec*msPerSecond) + ms);
+}
+
+//15.9.1.12 MakeDay (year, month, date)
+function MakeDay(year, month, date) {
+ if ( !isFinite(year) || !isFinite(month) || !isFinite(date)) {
+ return Number.NaN;
+ }
+
+ year = ToInteger(year);
+ month = ToInteger(month);
+ date = ToInteger(date );
+
+ var result5 = year + Math.floor(month/12);
+ var result6 = month%12;
+
+ var sign = ( year < 1970 ) ? -1 : 1;
+ var t = ( year < 1970 ) ? 1 : 0;
+ var y = ( year < 1970 ) ? 1969 : 1970;
+
+ if( sign == -1 ){
+ for ( y = 1969; y >= year; y += sign ) {
+ t += sign * DaysInYear(y)*msPerDay;
+ }
+ } else {
+ for ( y = 1970 ; y < year; y += sign ) {
+ t += sign * DaysInYear(y)*msPerDay;
+ }
+ }
+
+ var leap = 0;
+ for ( var m = 0; m < month; m++ ) {
+ //if year is changed, than we need to recalculate leep
+ leap = InLeapYear(t);
+ t += DaysInMonth(m, leap)*msPerDay;
+ }
+
+ if ( YearFromTime(t) != result5 ) {
+ return Number.NaN;
+ }
+ if ( MonthFromTime(t) != result6 ) {
+ return Number.NaN;
+ }
+ if ( DateFromTime(t) != 1 ) {
+ return Number.NaN;
+ }
+
+ return Day(t)+date-1;
+}
+
+//15.9.1.13 MakeDate (day, time)
+function MakeDate( day, time ) {
+ if(!isFinite(day) || !isFinite(time)) {
+ return Number.NaN;
+ }
+
+ return day*msPerDay+time;
+}
+
+//15.9.1.14 TimeClip (time)
+function TimeClip(time) {
+ if(!isFinite(time) || Math.abs(time) > 8.64e15){
+ return Number.NaN;
+ }
+
+ return ToInteger(time);
+}
+
+//Test Functions
+function ConstructDate(year, month, date, hours, minutes, seconds, ms){
+ /*
+ * 1. Call ToNumber(year)
+ * 2. Call ToNumber(month)
+ * 3. If date is supplied use ToNumber(date); else use 1
+ * 4. If hours is supplied use ToNumber(hours); else use 0
+ * 5. If minutes is supplied use ToNumber(minutes); else use 0
+ * 6. If seconds is supplied use ToNumber(seconds); else use 0
+ * 7. If ms is supplied use ToNumber(ms); else use 0
+ * 8. If Result(1) is not NaN and 0 <= ToInteger(Result(1)) <= 99, Result(8) is
+ * 1900+ToInteger(Result(1)); otherwise, Result(8) is Result(1)
+ * 9. Compute MakeDay(Result(8), Result(2), Result(3))
+ * 10. Compute MakeTime(Result(4), Result(5), Result(6), Result(7))
+ * 11. Compute MakeDate(Result(9), Result(10))
+ * 12. Set the [[Value]] property of the newly constructed object to TimeClip(UTC(Result(11)))
+ */
+ var r1 = Number(year);
+ var r2 = Number(month);
+ var r3 = ((date && arguments.length > 2) ? Number(date) : 1);
+ var r4 = ((hours && arguments.length > 3) ? Number(hours) : 0);
+ var r5 = ((minutes && arguments.length > 4) ? Number(minutes) : 0);
+ var r6 = ((seconds && arguments.length > 5) ? Number(seconds) : 0);
+ var r7 = ((ms && arguments.length > 6) ? Number(ms) : 0);
+
+ var r8 = r1;
+
+ if(!isNaN(r1) && (0 <= ToInteger(r1)) && (ToInteger(r1) <= 99))
+ r8 = 1900+r1;
+
+ var r9 = MakeDay(r8, r2, r3);
+ var r10 = MakeTime(r4, r5, r6, r7);
+ var r11 = MakeDate(r9, r10);
+
+ return TimeClip(UTC(r11));
+}
diff --git a/external/contributions/Google/sputniktests/lib/framework.js b/external/contributions/Google/sputniktests/lib/framework.js
new file mode 100644
index 000000000..a9983c83e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/lib/framework.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+function SputnikError(message) {
+ this.message = message;
+}
+
+SputnikError.prototype.toString = function () {
+ return "SputnikError: " + this.message;
+};
+
+function testFailed(message) {
+ throw new SputnikError(message);
+}
+
+function testPrint(message) {
+
+}
diff --git a/external/contributions/Google/sputniktests/lib/math_isequal.js b/external/contributions/Google/sputniktests/lib/math_isequal.js
new file mode 100644
index 000000000..143889175
--- /dev/null
+++ b/external/contributions/Google/sputniktests/lib/math_isequal.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+var prec;
+function isEqual(num1, num2)
+{
+ if ((num1 === Infinity)&&(num2 === Infinity))
+ {
+ return(true);
+ }
+ if ((num1 === -Infinity)&&(num2 === -Infinity))
+ {
+ return(true);
+ }
+ prec = getPrecision(Math.min(Math.abs(num1), Math.abs(num2)));
+ return(Math.abs(num1 - num2) <= prec);
+ //return(num1 === num2);
+}
diff --git a/external/contributions/Google/sputniktests/lib/math_precision.js b/external/contributions/Google/sputniktests/lib/math_precision.js
new file mode 100644
index 000000000..2b20d6e43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/lib/math_precision.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.
+
+function getPrecision(num)
+{
+ //TODO: Create a table of prec's,
+ // because using Math for testing Math isn't that correct.
+
+ log2num = Math.log(Math.abs(num))/Math.LN2;
+ pernum = Math.ceil(log2num);
+ return(2 * Math.pow(2, -52 + pernum));
+ //return(0);
+}
diff --git a/external/contributions/Google/sputniktests/lib/numeric_conversion.js b/external/contributions/Google/sputniktests/lib/numeric_conversion.js
new file mode 100644
index 000000000..5b3dfa409
--- /dev/null
+++ b/external/contributions/Google/sputniktests/lib/numeric_conversion.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.
+
+function ToInteger(p) {
+ x = Number(p);
+
+ if(isNaN(x)){
+ return +0;
+ }
+
+ if((x === +0)
+ || (x === -0)
+ || (x === Number.POSITIVE_INFINITY)
+ || (x === Number.NEGATIVE_INFINITY)){
+ return x;
+ }
+
+ var sign = ( x < 0 ) ? -1 : 1;
+
+ return (sign*Math.floor(Math.abs(x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.1_T1.js
new file mode 100644
index 000000000..4c43c3a94
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.1_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.1_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: HORIZONTAL TAB (U+0009) between any two tokens is allowed;
+ * @description: Insert HORIZONTAL TAB(\u0009 and \t) between tokens of var x=1;
+*/
+
+// CHECK#1
+eval("\u0009var\u0009x\u0009=\u00091\u0009");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u0009var\\u0009x\\u0009=\\u00091\\u0009"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u0009" + "var" + "\u0009" + "x" + "\u0009" + "=" + "\u0009" + "1" + "\u0009");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u0009" + "var" + "\\u0009" + "x" + "\\u0009" + "=" + "\\u0009" + "1" + "\\u0009"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\tvar\tx\t=\t1\t");
+if (x !== 1) {
+ $ERROR('#3: eval("\\tvar\\tx\\t=\\t1\\t"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\t" + "var" + "\t" + "x" + "\t" + "=" + "\t" + "1" + "\t");
+if (x !== 1) {
+ $ERROR('#4: eval("\\t" + "var" + "\\t" + "x" + "\\t" + "=" + "\\t" + "1" + "\\t"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u0009" + "var" + "\t" + "x" + "\u0009" + "=" + "\t" + "1" + "\u0009");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u0009" + "var" + "\\t" + "x" + "\\u0009" + "=" + "\\t" + "1" + "\\u0009"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.1_T2.js
new file mode 100644
index 000000000..97edbae91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.1_T2;
+ * @section: 7.2, 7.5;
+ * @assertion: HORIZONTAL TAB (U+0009) between any two tokens is allowed;
+ * @description: Insert real HORIZONTAL TAB between tokens of var x=1;
+*/
+
+//CHECK#1
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#1: var x = 1 ; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval(" var\tx =\t2 ");
+if (x !== 2) {
+ $ERROR('#2: var\\tx =\\t1 ; x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.2_T1.js
new file mode 100644
index 000000000..1a106dba9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.2_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.2_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: VERTICAL TAB (U+000B) between any two tokens is allowed;
+ * @description: Insert VERTICAL TAB(\u000B and \v) between tokens of var x=1;
+*/
+
+// CHECK#1
+eval("\u000Bvar\u000Bx\u000B=\u000B1\u000B");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u000Bvar\\u000Bx\\u000B=\\u000B1\\u000B"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u000B" + "var" + "\u000B" + "x" + "\u000B" + "=" + "\u000B" + "1" + "\u000B");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u000B" + "var" + "\\u000B" + "x" + "\\u000B" + "=" + "\\u000B" + "1" + "\\u000B"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\vvar\vx\v=\v1\v");
+if (x !== 1) {
+ $ERROR('#3: eval("\\vvar\\vx\\v=\\v1\\v"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\v" + "var" + "\v" + "x" + "\v" + "=" + "\v" + "1" + "\v");
+if (x !== 1) {
+ $ERROR('#4: eval("\\v" + "var" + "\\v" + "x" + "\\v" + "=" + "\\v" + "1" + "\\v"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u000B" + "var" + "\v" + "x" + "\u000B" + "=" + "\v" + "1" + "\u000B");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u000B" + "var" + "\\v" + "x" + "\\u000B" + "=" + "\\v" + "1" + "\\u000B"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.2_T2.js
new file mode 100644
index 000000000..782139c9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.2_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.2_T2;
+ * @section: 7.2, 7.5;
+ * @assertion: VERTICAL TAB (U+000B) between any two tokens is allowed;
+ * @description: Insert real VERTICAL TAB between tokens of var x=1;
+*/
+
+//CHECK#1
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#1: var x = 1 ; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval(" var\vx =\v1 ");
+if (x !== 1) {
+ $ERROR('#2: var\\vx =\\v1 ; x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.3_T1.js
new file mode 100644
index 000000000..397bb642b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.3_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.3_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: FORM FEED (U+000C) between any two tokens is allowed;
+ * @description: Insert FORM FEED(\u000C and \f) between tokens of var x=1;
+*/
+
+// CHECK#1
+eval("\u000Cvar\u000Cx\u000C=\u000C1\u000C");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u000Cvar\\u000Cx\\u000C=\\u000C1\\u000C"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u000C" + "var" + "\u000C" + "x" + "\u000C" + "=" + "\u000C" + "1" + "\u000C");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u000C" + "var" + "\\u000C" + "x" + "\\u000C" + "=" + "\\u000C" + "1" + "\\u000C"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\fvar\fx\f=\f1\f");
+if (x !== 1) {
+ $ERROR('#3: eval("\\fvar\\fx\\f=\\f1\\f"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\f" + "var" + "\f" + "x" + "\f" + "=" + "\f" + "1" + "\f");
+if (x !== 1) {
+ $ERROR('#4: eval("\\f" + "var" + "\\f" + "x" + "\\f" + "=" + "\\f" + "1" + "\\f"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u000C" + "var" + "\f" + "x" + "\u000C" + "=" + "\f" + "1" + "\u000C");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u000C" + "var" + "\\f" + "x" + "\\u000C" + "=" + "\\f" + "1" + "\\u000C"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.3_T2.js
new file mode 100644
index 000000000..bd474155a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.3_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.3_T2;
+ * @section: 7.2, 7.5;
+ * @assertion: FORM FEED (U+000C) between any two tokens is allowed;
+ * @description: Insert real FORM FEED between tokens of var x=1;
+*/
+
+//CHECK#1
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#1: var x = 1 ; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval(" var\fx =\f1 ");
+if (x !== 1) {
+ $ERROR('#2: var\\fx =\\f1 ; x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.4_T1.js
new file mode 100644
index 000000000..bf89d59fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.4_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: SPACE (U+0020) between any two tokens is allowed;
+ * @description: Insert SPACE(\u0020) between tokens of var x=1;
+*/
+
+// CHECK#1
+eval("\u0020var\u0020x\u0020=\u00201\u0020");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u0020var\\u0020x\\u0020=\\u00201\\u0020"); x === 1;');
+}
+
+//CHECK#2
+eval("\u0020" + "var" + "\u0020" + "x" + "\u0020" + "=" + "\u0020" + "1" + "\u0020");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u0020" + "var" + "\\u0020" + "x" + "\\u0020" + "=" + "\\u0020" + "1" + "\\u0020"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.4_T2.js
new file mode 100644
index 000000000..dd9e4fdae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.4_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.4_T2;
+ * @section: 7.2, 7.5;
+ * @assertion: SPACE (U+0020) between any two tokens is allowed;
+ * @description: Insert real SPACE between tokens of var x=1;
+*/
+
+//CHECK#1
+eval("\u0020var x\u0020= 1\u0020");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u0020var x\\u0020= 1\\u0020"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#2: var x = 1 ; x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.5_T1.js
new file mode 100644
index 000000000..ecc1a7612
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.5_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.5_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: NO-BREAK SPACE (U+00A0) between any two tokens is allowed;
+ * @description: Insert NO-BREAK SPACE(\u00A0) between tokens of var x=1;
+*/
+
+// CHECK#1
+eval("\u00A0var\u00A0x\u00A0=\u00A01\u00A0");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u00A0var\\u00A0x\\u00A0=\\u00A01\\u00A0"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u00A0" + "var" + "\u00A0" + "x" + "\u00A0" + "=" + "\u00A0" + "1" + "\u00A0");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u00A0" + "var" + "\\u00A0" + "x" + "\\u00A0" + "=" + "\\u00A0" + "1" + "\\u00A0"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.5_T2.js
new file mode 100644
index 000000000..e14741e38
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A1.5_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.5_T2;
+ * @section: 7.2, 7.5;
+ * @assertion: NO-BREAK SPACE (U+00A0) between any two tokens is allowed;
+ * @description: Insert real NO-BREAK SPACE between tokens of var x=1;
+*/
+
+//CHECK#1
+eval("\u00A0var x\u00A0= 1\u00A0");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u00A0var x\\u00A0= 1\\u00A0"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#2:  var x = 1 ; x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.1_T1.js
new file mode 100644
index 000000000..77f823469
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.1_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: HORIZONTAL TAB (U+0009) may occur within strings;
+ * @description: Use HORIZONTAL TAB(\u0009 and \t);
+*/
+
+// CHECK#1
+if (eval("'\u0009str\u0009ing\u0009'") !== "\u0009str\u0009ing\u0009") {
+ $ERROR('#1: eval("\'\\u0009str\\u0009ing\\u0009\'") === "\\u0009str\\u0009ing\\u0009"');
+}
+
+//CHECK#2
+if (eval("'\tstr\ting\t'") !== "\tstr\ting\t") {
+ $ERROR('#2: eval("\'\\tstr\\ting\\t\'") === "\\tstr\\ting\\t"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.1_T2.js
new file mode 100644
index 000000000..1d21a6a8a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.1_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.1_T2;
+ * @section: 7.2, 7.8.4;
+ * @assertion: HORIZONTAL TAB (U+0009) may occur within strings;
+ * @description: Use real HORIZONTAL TAB;
+*/
+
+//CHECK#1
+if (" str ing " !== "\u0009str\u0009ing\u0009") {
+ $ERROR('#1: " str ing " === "\\u0009str\\u0009ing\\u0009"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.2_T1.js
new file mode 100644
index 000000000..a304f5c50
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.2_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: VERTICAL TAB (U+000B) may occur within strings;
+ * @description: Use VERTICAL TAB(\u000B and \v);
+*/
+
+// CHECK#1
+if (eval("'\u000Bstr\u000Bing\u000B'") !== "\u000Bstr\u000Bing\u000B") {
+ $ERROR('#1: eval("\'\\u000Bstr\\u000Bing\\u000B\'") === "\\u000Bstr\\u000Bing\\u000B"');
+}
+
+//CHECK#2
+if (eval("'\vstr\ving\v'") !== "\vstr\ving\v") {
+ $ERROR('#2: eval("\'\\vstr\\ving\\v\'") === "\\vstr\\ving\\v"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.2_T2.js
new file mode 100644
index 000000000..02602eab5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.2_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.2_T2;
+ * @section: 7.2, 7.8.4;
+ * @assertion: VERTICAL TAB (U+000B) may occur within strings;
+ * @description: Use real VERTICAL TAB;
+*/
+
+//CHECK#1
+if (" str ing " !== "\u000Bstr\u000Bing\u000B") {
+ $ERROR('#1: " str ing " === "\\u000Bstr\\u000Bing\\u000B"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.3_T1.js
new file mode 100644
index 000000000..f641cbb26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.3_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: FORM FEED (U+000C) may occur within strings;
+ * @description: Use FORM FEED(\u000C and \f);
+*/
+
+// CHECK#1
+if (eval("'\u000Cstr\u000Cing\u000C'") !== "\u000Cstr\u000Cing\u000C") {
+ $ERROR('#1: eval("\'\\u000Cstr\\u000Cing\\u000C\'") === "\\u000Cstr\\u000Cing\\u000C"');
+}
+
+//CHECK#2
+if (eval("'\fstr\fing\f'") !== "\fstr\fing\f") {
+ $ERROR('#2: eval("\'\\fstr\\fing\\f\'") === "\\fstr\\fing\\f"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.3_T2.js
new file mode 100644
index 000000000..f42bfcc96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.3_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.3_T2;
+ * @section: 7.2, 7.8.4;
+ * @assertion: FORM FEED (U+000C) may occur within strings;
+ * @description: Use real FORM FEED;
+*/
+
+//CHECK#1
+if (" str ing " !== "\u000Cstr\u000Cing\u000C") {
+ $ERROR('#1: " str ing " === "\\u000Cstr\\u000Cing\\u000C"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.4_T1.js
new file mode 100644
index 000000000..91c0bbcc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.4_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.4_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: SPACE (U+0020) may occur within strings;
+ * @description: Use SPACE(\u0020);
+*/
+
+// CHECK#1
+if (eval("'\u0020str\u0020ing\u0020'") !== "\u0020str\u0020ing\u0020") {
+ $ERROR('#1: eval("\'\\u0020str\\u0020ing\\u0020\'") === "\\u0020str\\u0020ing\\u0020"');
+}
+
+//CHECK#2
+if (eval("' str ing '") !== " str ing ") {
+ $ERROR('#2: eval("\' str ing \'") === " str ing "');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.4_T2.js
new file mode 100644
index 000000000..f64685a91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.4_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.4_T2;
+ * @section: 7.2, 7.8.4;
+ * @assertion: SPACE (U+0020) may occur within strings;
+ * @description: Use real SPACE;
+*/
+
+//CHECK#1
+if (" str ing " !== "\u0020str\u0020ing\u0020") {
+ $ERROR('#1: " str ing " === "\\u0020str\\u0020ing\\u0020"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.5_T1.js
new file mode 100644
index 000000000..57eaec8e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.5_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.5_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: NO-BREAK SPACE (U+00A0) may occur within strings;
+ * @description: Use NO-BREAK SPACE(\u00A0);
+*/
+
+// CHECK#1
+if (eval("'\u00A0str\u00A0ing\u00A0'") !== "\u00A0str\u00A0ing\u00A0") {
+ $ERROR('#1: eval("\'\\u00A0str\\u00A0ing\\u00A0\'") === "\\u00A0str\\u00A0ing\\u00A0"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.5_T2.js
new file mode 100644
index 000000000..42bf7644d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A2.5_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.5_T2;
+ * @section: 7.2, 7.8.4;
+ * @assertion: NO-BREAK SPACE (U+00A0) may occur within strings;
+ * @description: Use real NO-BREAK SPACE;
+*/
+
+//CHECK#1
+if (" str ing " !== "\u00A0str\u00A0ing\u00A0") {
+ $ERROR('#1: " str ing " === "\\u00A0str\\u00A0ing\\u00A0"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.1_T1.js
new file mode 100644
index 000000000..f579c57f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.1_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain HORIZONTAL TAB (U+0009);
+ * @description: Use HORIZONTAL TAB(\u0009);
+ */
+
+// CHECK#1
+eval("//\u0009 single line \u0009 comment \u0009");
+
+//CHECK#2
+var x = 0;
+eval("//\u0009 single line \u0009 comment \u0009 x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u0009 single line \\u0009 comment \\u0009 x = 1;"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.1_T2.js
new file mode 100644
index 000000000..2535b5f5c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.1_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain HORIZONTAL TAB (U+0009);
+ * @description: Use real HORIZONTAL TAB;
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.2_T1.js
new file mode 100644
index 000000000..593f8803c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.2_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain VERTICAL TAB (U+000B);
+ * @description: Use VERTICAL TAB(\u000B);
+ */
+
+// CHECK#1
+eval("//\u000B single line \u000B comment \u000B");
+
+//CHECK#2
+var x = 0;
+eval("//\u000B single line \u000B comment \u000B x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u000B single line \\u000B comment \\u000B x = 1;"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.2_T2.js
new file mode 100644
index 000000000..a2649d2d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.2_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.2_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain VERTICAL TAB (U+000B);
+ * @description: Use real VERTICAL TAB;
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.3_T1.js
new file mode 100644
index 000000000..7c0fd2862
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.3_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain FORM FEED (U+000C);
+ * @description: Use FORM FEED(\u000C);
+ */
+
+// CHECK#1
+eval("//\u000C single line \u000C comment \u000C");
+
+//CHECK#2
+var x = 0;
+eval("//\u000C single line \u000C comment \u000C x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u000C single line \\u000C comment \\u000C x = 1;"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.3_T2.js
new file mode 100644
index 000000000..7bc2c757c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.3_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.3_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain FORM FEED (U+000C);
+ * @description: Use real FORM FEED;
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.4_T1.js
new file mode 100644
index 000000000..68223e118
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.4_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.4_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain SPACE (U+0020);
+ * @description: Use SPACE(\u0020);
+ */
+
+// CHECK#1
+eval("//\u0020 single line \u0020 comment \u0020");
+
+//CHECK#2
+var x = 0;
+eval("//\u0020 single line \u0020 comment \u0020 x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u0020 single line \\u0020 comment \\u0020 x = 1;"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.4_T2.js
new file mode 100644
index 000000000..85759b101
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.4_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.4_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain SPACE (U+0020);
+ * @description: Use real SPACE;
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.5_T1.js
new file mode 100644
index 000000000..7c943523c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.5_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.5_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain NO-BREAK SPACE (U+00A0);
+ * @description: Use NO-BREAK SPACE(\u00A0);
+ */
+
+// CHECK#1
+eval("//\u00A0 single line \u00A0 comment \u00A0");
+
+//CHECK#2
+var x = 0;
+eval("//\u00A0 single line \u00A0 comment \u00A0 x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u00A0 single line \\u00A0 comment \\u00A0 x = 1;"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.5_T2.js
new file mode 100644
index 000000000..667f58f9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A3.5_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.5_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain NO-BREAK SPACE (U+00A0);
+ * @description: Use real NO-BREAK SPACE;
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.1_T1.js
new file mode 100644
index 000000000..cc069a819
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.1_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain HORIZONTAL TAB (U+0009);
+ * @description: Use HORIZONTAL TAB(\u0009);
+ */
+
+// CHECK#1
+eval("/*\u0009 multi line \u0009 comment \u0009*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u0009 multi line \u0009 comment \u0009 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u0009 multi line \\u0009 comment \\u0009 x = 1;*/"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.1_T2.js
new file mode 100644
index 000000000..7112fdd93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.1_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain HORIZONTAL TAB (U+0009);
+ * @description: Use real HORIZONTAL TAB;
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.2_T1.js
new file mode 100644
index 000000000..8eee5b15c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.2_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain VERTICAL TAB (U+000B);
+ * @description: Use VERTICAL TAB(\u000B);
+ */
+
+// CHECK#1
+eval("/*\u000B multi line \u000B comment \u000B*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u000B multi line \u000B comment \u000B x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u000B multi line \\u000B comment \\u000B x = 1;*/"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.2_T2.js
new file mode 100644
index 000000000..7ddcd3242
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.2_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.2_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain VERTICAL TAB (U+000B);
+ * @description: Use real VERTICAL TAB;
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.3_T1.js
new file mode 100644
index 000000000..ee350ba7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.3_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain FORM FEED (U+000C);
+ * @description: Use FORM FEED(\u000C);
+ */
+
+// CHECK#1
+eval("/*\u000C multi line \u000C comment \u000C*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u000C multi line \u000C comment \u000C x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u000C multi line \\u000C comment \\u000C x = 1;*/"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.3_T2.js
new file mode 100644
index 000000000..45b7fcc41
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.3_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.3_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain FORM FEED (U+000C);
+ * @description: Use real FORM FEED;
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.4_T1.js
new file mode 100644
index 000000000..56b9c63e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.4_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.4_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain SPACE (U+0020);
+ * @description: Use SPACE(\u0020);
+ */
+
+// CHECK#1
+eval("/*\u0020 multi line \u0020 comment \u0020*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u0020 multi line \u0020 comment \u0020 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u0020 multi line \\u0020 comment \\u0020 x = 1;*/"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.4_T2.js
new file mode 100644
index 000000000..a6c31c785
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.4_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.4_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain SPACE (U+0020);
+ * @description: Use real SPACE;
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.5_T1.js
new file mode 100644
index 000000000..2fd57d2ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.5_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.5_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain NO-BREAK SPACE (U+00A0);
+ * @description: Use NO-BREAK SPACE(\u00A0);
+ */
+
+// CHECK#1
+eval("/*\u00A0 multi line \u00A0 comment \u00A0*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u00A0 multi line \u00A0 comment \u00A0 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u00A0 multi line \\u00A0 comment \\u00A0 x = 1;*/"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.5_T2.js
new file mode 100644
index 000000000..148270c29
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A4.5_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.5_T2;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain NO-BREAK SPACE (U+00A0);
+ * @description: Use real NO-BREAK SPACE;
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T1.js
new file mode 100644
index 000000000..010fda52d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A5_T1;
+ * @section: 7.2;
+ * @assertion: White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Use TAB (U+0009);
+ * @negative
+*/
+
+var\u0009x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T2.js
new file mode 100644
index 000000000..30389c587
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A5_T2;
+ * @section: 7.2;
+ * @assertion: White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Use VERTICAL TAB (U+000B);
+ * @negative
+*/
+
+var\u000Bx;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T3.js
new file mode 100644
index 000000000..991c80608
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A5_T3;
+ * @section: 7.2;
+ * @assertion: White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Use FORM FEED (U+000C);
+ * @negative
+*/
+
+var\u000Cx;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T4.js
new file mode 100644
index 000000000..fb4847938
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T4.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A5_T4;
+ * @section: 7.2;
+ * @assertion: White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Use SPACE (U+0020);
+ * @negative
+*/
+
+var\u0020x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T5.js
new file mode 100644
index 000000000..7368cdfaa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T5.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A5_T5;
+ * @section: 7.2;
+ * @assertion: White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Use NO-BREAK SPACE (U+00A0);
+ * @negative
+*/
+
+var\u00A0x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.1_T1.js
new file mode 100644
index 000000000..fcc686aa3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.1_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A1.1_T1;
+ * @section: 7.3;
+ * @assertion: LINE FEED (U+000A) may occur between any two tokens;
+ * @description: Insert LINE FEED (\u000A and \n) between tokens of var x=1;
+*/
+
+// CHECK#1
+eval("\u000Avar\u000Ax\u000A=\u000A1\u000A");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u000Avar\\u000Ax\\u000A=\\u000A1\\u000A"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u000A" + "var" + "\u000A" + "x" + "\u000A" + "=" + "\u000A" + "1" + "\u000A");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u000A" + "var" + "\\u000A" + "x" + "\\u000A" + "=" + "\\u000A" + "1" + "\\u000A"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\nvar\nx\n=\n1\n");
+if (x !== 1) {
+ $ERROR('#3: eval("\\nvar\\nx\\n=\\n1\\n"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\n" + "var" + "\n" + "x" + "\n" + "=" + "\n" + "1" + "\n");
+if (x !== 1) {
+ $ERROR('#4: eval("\\n" + "var" + "\\n" + "x" + "\\n" + "=" + "\\n" + "1" + "\\n"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u000A" + "var" + "\n" + "x" + "\u000A" + "=" + "\n" + "1" + "\u000A");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u000A" + "var" + "\\n" + "x" + "\\u000A" + "=" + "\\n" + "1" + "\\u000A"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.1_T2.js
new file mode 100644
index 000000000..8e836e261
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A1.1_T2;
+ * @section: 7.3;
+ * @assertion: LINE FEED (U+000A) may occur between any two tokens;
+ * @description: Insert real LINE FEED between tokens of var x=1;
+*/
+
+//CHECK#1
+var
+x
+=
+1;
+if (x !== 1) {
+ $ERROR('#1: var\\nx\\n=\\n1\\n; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.2_T1.js
new file mode 100644
index 000000000..a276eba81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.2_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A1.2_T1;
+ * @section: 7.3;
+ * @assertion: CARRIAGE RETURN (U+000D) may occur between any two tokens;
+ * @description: Insert CARRIAGE RETURN (\u000D and \r) between tokens of var x=1;
+*/
+
+// CHECK#1
+eval("\u000Dvar\u000Dx\u000D=\u000D1\u000D");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u000Dvar\\u000Dx\\u000D=\\u000D1\\u000D"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u000D" + "var" + "\u000D" + "x" + "\u000D" + "=" + "\u000D" + "1" + "\u000D");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u000D" + "var" + "\\u000D" + "x" + "\\u000D" + "=" + "\\u000D" + "1" + "\\u000D"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\rvar\rx\r=\r1\r");
+if (x !== 1) {
+ $ERROR('#3: eval("\\rvar\\rx\\r=\\r1\\r"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\r" + "var" + "\r" + "x" + "\r" + "=" + "\r" + "1" + "\r");
+if (x !== 1) {
+ $ERROR('#4: eval("\\r" + "var" + "\\r" + "x" + "\\r" + "=" + "\\r" + "1" + "\\r"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u000D" + "var" + "\r" + "x" + "\u000D" + "=" + "\r" + "1" + "\u000D");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u000D" + "var" + "\\r" + "x" + "\\u000D" + "=" + "\\r" + "1" + "\\u000D"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.2_T2.js
new file mode 100644
index 000000000..ee5bae510
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.2_T2.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A1.2_T2;
+ * @section: 7.3;
+ * @assertion: CARRIAGE RETURN (U+000D) may occur between any two tokens;
+ * @description: Insert real CARRIAGE RETURN between tokens of var x=1;
+*/
+ //CHECK#1 var x
+= 1; if (x !== 1) { $ERROR('#1: var\\nx\\n=\\n1\\n; x === 1. Actual: ' + (x)); }
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.3.js
new file mode 100644
index 000000000..87d19250a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A1.3;
+ * @section: 7.3;
+ * @assertion: LINE SEPARATOR (U+2028) may occur between any two tokens;
+ * @description: Insert LINE SEPARATOR (\u2028) between tokens of var x=1;
+*/
+
+// CHECK#1
+eval("\u2028var\u2028x\u2028=\u20281\u2028");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u2028var\\u2028x\\u2028=\\u20281\\u2028"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u2028" + "var" + "\u2028" + "x" + "\u2028" + "=" + "\u2028" + "1" + "\u2028");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u2028" + "var" + "\\u2028" + "x" + "\\u2028" + "=" + "\\u2028" + "1" + "\\u2028"); x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.4.js
new file mode 100644
index 000000000..8a5778d5b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A1.4.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A1.4;
+ * @section: 7.3;
+ * @assertion: PARAGRAPH SEPARATOR (U+2029) may occur between any two tokens;
+ * @description: Insert PARAGRAPH SEPARATOR (\u2029) between tokens of var x=1;
+*/
+
+// CHECK#1
+eval("\u2029var\u2029x\u2029=\u20291\u2029");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u2029var\\u2029x\\u2029=\\u20291\\u2029"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u2029" + "var" + "\u2029" + "x" + "\u2029" + "=" + "\u2029" + "1" + "\u2029");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u2029" + "var" + "\\u2029" + "x" + "\\u2029" + "=" + "\\u2029" + "1" + "\\u2029"); x === 1. Actual: ' + (x));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.1_T1.js
new file mode 100644
index 000000000..0b5003c13
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.1_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A2.1_T1;
+ * @section: 7.3;
+ * @assertion: LINE FEED (U+000A) within strings is not allowed;
+ * @description: Insert LINE FEED (\u000A) into string;
+ * @negative
+*/
+
+// CHECK#1
+if (eval("'\u000Astr\u000Aing\u000A'") === "\u000Astr\u000Aing\u000A") {
+ $ERROR('#1: eval("\'\\u000Astr\\u000Aing\\u000A\'") === "\\u000Astr\\u000Aing\\u000A"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.1_T2.js
new file mode 100644
index 000000000..64bb1b6c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A2.1_T2;
+ * @section: 7.3;
+ * @assertion: LINE FEED (U+000A) within strings is not allowed;
+ * @description: Use real LINE FEED into string;
+ * @negative
+*/
+
+//CHECK#1
+"
+str
+ing
+";
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.2_T1.js
new file mode 100644
index 000000000..695640178
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.2_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A2.2_T1;
+ * @section: 7.3;
+ * @assertion: CARRIAGE RETURN (U+000D) within strings is not allowed;
+ * @description: Insert CARRIAGE RETURN (\u000D) into string;
+ * @negative
+*/
+
+// CHECK#1
+if (eval("'\u000Dstr\u000Ding\u000D'") === "\u000Dstr\u000Ding\u000D") {
+ $ERROR('#1: eval("\'\\u000Dstr\\u000Ding\\u000D\'") === "\\u000Dstr\\u000Ding\\u000D"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.2_T2.js
new file mode 100644
index 000000000..a3f465c95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.2_T2.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A2.2_T2;
+ * @section: 7.3;
+ * @assertion: CARRIAGE RETURN (U+000D) within strings is not allowed;
+ * @description: Insert real CARRIAGE RETURN into string;
+ * @negative
+*/
+ //CHECK#1 " str ing ";
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.3.js
new file mode 100644
index 000000000..24da21330
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A2.3;
+ * @section: 7.3;
+ * @assertion: LINE SEPARATOR (U+2028) within strings is not allowed;
+ * @description: Insert LINE SEPARATOR (\u2028) into string;
+ * @negative
+*/
+
+// CHECK#1
+if (eval("'\u2028str\u2028ing\u2028'") === "\u2028str\u2028ing\u2028") {
+ $ERROR('#1: eval("\'\\u2028str\\u2028ing\\u2028\'") === "\\u2028str\\u2028ing\\u2028"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.4.js
new file mode 100644
index 000000000..5979695f1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A2.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A2.4;
+ * @section: 7.3;
+ * @assertion: PARAGRAPH SEPARATOR (U+2029) within strings is not allowed;
+ * @description: Insert PARAGRAPH SEPARATOR (\u2029) into string;
+ * @negative
+*/
+
+// CHECK#1
+if (eval("'\u2029str\u2029ing\u2029'") === "\u2029str\u2029ing\u2029") {
+ $ERROR('#1: eval("\'\\u2029str\\u2029ing\\u2029\'") === "\\u2029str\\u2029ing\\u2029"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T1.js
new file mode 100644
index 000000000..4a21470a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T1.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.1_T1; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain LINE FEED (U+000A) inside; * @description: Insert LINE FEED (\u000A) into single line comment; * @negative */ // CHECK#1 eval("// single line \u000A comment");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T2.js
new file mode 100644
index 000000000..e8d809565
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T2.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.1_T2; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain LINE FEED (U+000A) inside; * @description: Insert LINE FEED (\u000A) into begin of single line comment; * @negative */ // CHECK#1 eval("//\u000A single line comment");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T3.js
new file mode 100644
index 000000000..07eb842f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.1_T3.js
@@ -0,0 +1,7 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.1_T3; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain LINE FEED (U+000A) inside; * @description: Insert real LINE FEED into single line comment; * @negative */
+// CHECK#1
+//single
+line comment
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T1.js
new file mode 100644
index 000000000..1bf2c0c0b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T1.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.2_T1; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain CARRIAGE RETURN (U+000D) inside; * @description: Insert CARRIAGE RETURN (\u000D) into single line comment; * @negative */ // CHECK#1 eval("// single line \u000D comment");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T2.js
new file mode 100644
index 000000000..95a1308b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T2.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.2_T2; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain CARRIAGE RETURN (U+000D) inside; * @description: Insert CARRIAGE RETURN (\u000D) into begin of single line comment; * @negative */ // CHECK#1 eval("//\u000D single line comment");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T3.js
new file mode 100644
index 000000000..16fb279dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.2_T3.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.2_T3; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain CARRIAGE RETURN (U+000D) inside; * @description: Insert real CARRIAGE RETURN into single line comment; * @negative */ // CHECK#1 //single line comment
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.3_T1.js
new file mode 100644
index 000000000..b4e51a34e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.3_T1.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.3_T1; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain LINE SEPARATOR (U+2028) inside; * @description: Insert LINE SEPARATOR (\u2028) into single line comment; * @negative */ // CHECK#1 eval("// single line \u2028 comment");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.3_T2.js
new file mode 100644
index 000000000..4c7a7bf6d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.3_T2.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.3_T2; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain LINE SEPARATOR (U+2028) inside; * @description: Insert LINE SEPARATOR (\u2028) into begin of single line comment; * @negative */ // CHECK#1 eval("//\u2028 single line comment");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.4_T1.js
new file mode 100644
index 000000000..495f308ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.4_T1.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.4_T1; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain PARAGRAPH SEPARATOR (U+2029) inside; * @description: Insert PARAGRAPH SEPARATOR (\u2029) into single line comment; * @negative */ // CHECK#1 eval("// single line \u2029 comment");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.4_T2.js
new file mode 100644
index 000000000..6018b2b3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A3.4_T2.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A3.4_T2; * @section: 7.3, 7.4; * @assertion: Single line comments can not contain PARAGRAPH SEPARATOR (U+2029) inside; * @description: Insert PARAGRAPH SEPARATOR (\u2029) into begin of single line comment; * @negative */ // CHECK#1 eval("//\u2029 single line comment");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T1.js
new file mode 100644
index 000000000..d2f6b53f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T1.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A4_T1; * @section: 7.3, 7.4; * @assertion: Single line comments can contain Line Terminator at the end of line; * @description: Insert LINE FEED (U+000A) into the end of single line comment; */ // CHECK#1 eval("// single line comment\u000A"); // CHECK#2 var x = 0; eval("// single line comment\u000A x = 1;"); if (x !== 1) { $ERROR('#1: var x = 0; eval("// single line comment\\u000A x = 1;"); x === 1. Actual: ' + (x)); }
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T2.js
new file mode 100644
index 000000000..362248471
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T2.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A4_T2; * @section: 7.3, 7.4; * @assertion: Single line comments can contain Line Terminator at the end of line; * @description: Insert CARRIAGE RETURN (U+000D) into the end of single line comment; */ // CHECK#1 eval("// single line comment\u000D"); // CHECK#2 var x = 0; eval("// single line comment\u000D x = 1;"); if (x !== 1) { $ERROR('#1: var x = 0; eval("// single line comment\\u000D x = 1;"); x === 1. Actual: ' + (x)); }
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T3.js
new file mode 100644
index 000000000..3494d9a3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T3.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A4_T3; * @section: 7.3, 7.4; * @assertion: Single line comments can contain Line Terminator at the end of line; * @description: Insert LINE SEPARATOR (U+2028) into the end of single line comment; */ // CHECK#1 eval("// single line comment\u2028"); // CHECK#2 var x = 0; eval("// single line comment\u2028 x = 1;"); if (x !== 1) { $ERROR('#1: var x = 0; eval("// single line comment\\u2028 x = 1;"); x === 1. Actual: ' + (x)); }
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T4.js
new file mode 100644
index 000000000..07071c1d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A4_T4.js
@@ -0,0 +1,4 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/** * @name: S7.3_A4_T4; * @section: 7.3, 7.4; * @assertion: Single line comments can contain Line Terminator at the end of line; * @description: Insert PARAGRAPH SEPARATOR (U+2029) into the end of single line comment; */ // CHECK#1 eval("// single line comment\u2029"); // CHECK#2 var x = 0; eval("// single line comment\u2029 x = 1;"); if (x !== 1) { $ERROR('#1: var x = 0; eval("// single line comment\\u2029 x = 1;"); x === 1. Actual: ' + (x)); }
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.1_T1.js
new file mode 100644
index 000000000..f0422188b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A5.1_T1;
+ * @section: 7.3, 7.4;
+ * @assertion: Multi line comment can contain LINE FEED (U+000A);
+ * @description: Insert LINE FEED (U+000A) into multi line comment;
+ */
+
+// CHECK#1
+eval("/*\u000A multi line \u000A comment \u000A*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u000A multi line \u000A comment \u000A x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u000A multi line \\u000A comment \\u000A x = 1;*/"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.1_T2.js
new file mode 100644
index 000000000..0b7fe7aba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A5.1_T2;
+ * @section: 7.3, 7.4;
+ * @assertion: Multi line comment can contain LINE FEED (U+000A);
+ * @description: Insert real LINE FEED into multi line comment;
+ */
+
+/*CHECK#1*/
+var x = 0;
+/*
+multi
+line
+comment
+x = 1;
+*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /*\\nmulti\\nline\\ncomment\\nx = 1;\\n*/ x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.2_T1.js
new file mode 100644
index 000000000..ac4b48f0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A5.2_T1;
+ * @section: 7.3, 7.4;
+ * @assertion: Multi line comment can contain CARRIAGE RETURN (U+000D);
+ * @description: Insert CARRIAGE RETURN (U+000D) into multi line comment;
+ */
+
+// CHECK#1
+eval("/*\u000D multi line \u000D comment \u000D*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u000D multi line \u000D comment \u000D x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u000D multi line \\u000D comment \\u000D x = 1;*/"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.2_T2.js
new file mode 100644
index 000000000..7bc6810c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.2_T2.js
@@ -0,0 +1,10 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A5.2_T2;
+ * @section: 7.3, 7.4;
+ * @assertion: Multi line comment can contain CARRIAGE RETURN (U+000D);
+ * @description: Insert real CARRIAGE RETURN into multi line comment;
+ */
+ /*CHECK#1*/ var x = 0; /* multi line comment x = 1; */ if (x !== 0) { $ERROR('#1: var x = 0; /*\\rmulti\\rline\\rcomment\\rx = 1;\\r*/ x === 0. Actual: ' + (x)); }
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.3.js
new file mode 100644
index 000000000..a48fafa1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A5.3;
+ * @section: 7.3, 7.4;
+ * @assertion: Multi line comment can contain LINE SEPARATOR (U+2028);
+ * @description: Insert LINE SEPARATOR (U+2028) into multi line comment;
+ */
+
+// CHECK#1
+eval("/*\u2028 multi line \u2028 comment \u2028*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u2028 multi line \u2028 comment \u2028 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u2028 multi line \\u2028 comment \\u2028 x = 1;*/"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.4.js
new file mode 100644
index 000000000..d675e9bab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A5.4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A5.4;
+ * @section: 7.3, 7.4;
+ * @assertion: Multi line comment can contain LINE SEPARATOR (U+2029);
+ * @description: Insert PARAGRAPH SEPARATOR (U+2029) into multi line comment;
+ */
+
+// CHECK#1
+eval("/*\u2029 multi line \u2029 comment \u2029*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u2029 multi line \u2029 comment \u2029 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u2029 multi line \\u2029 comment \\u2029 x = 1;*/"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T1.js
new file mode 100644
index 000000000..c143b701f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A6_T1;
+ * @section: 7.3;
+ * @assertion: Line Terminator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Insert LINE FEED (U+000A) in var x;
+ * @negative
+*/
+
+var\u000Ax;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T2.js
new file mode 100644
index 000000000..88f5dcf1b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A6_T2;
+ * @section: 7.3;
+ * @assertion: Line Terminator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Insert CARRIAGE RETURN (U+000D) in var x;
+ * @negative
+*/
+
+var\u000Dx;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T3.js
new file mode 100644
index 000000000..5e19cdf28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A6_T3;
+ * @section: 7.3;
+ * @assertion: Line Terminator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Insert LINE SEPARATOR (U+2028) in var x;
+ * @negative
+*/
+
+var\u2028x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T4.js
new file mode 100644
index 000000000..1caba1434
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T4.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A6_T4;
+ * @section: 7.3;
+ * @assertion: Line Terminator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Insert PARAGRAPH SEPARATOR (U+2029) in var x;
+ * @negative
+*/
+
+var\u2029x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T1.js
new file mode 100644
index 000000000..e92c67eb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T1.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A7_T1;
+ * @section: 7.3;
+ * @assertion: Line Terminators between operators are allowed;
+ * @description: Insert Line Terminator in var x=y+z;
+*/
+
+// CHECK#1
+var y=2;
+var z=3;
+var
+x
+=
+y
++
+z
+;
+if (x !== 5) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n+\\nz\\n; x === 5. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=2;
+var z=3;
+var
+x
+=
+y
++
+z
+;
+if (x !== 5) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n+\\nz\\n; x === 5. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=2;
+var z=3;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028+\u2028z\u2028");
+if (x !== 5) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028+\\u2028z\\u2028"); x === 5. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=2;
+var z=3;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029+\u2029z\u2029");
+if (x !== 5) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029+\\u2029z\\u2029"); x === 5. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T2.js
new file mode 100644
index 000000000..050a95a85
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T2.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A7_T2;
+ * @section: 7.3;
+ * @assertion: Line Terminators between operators are allowed;
+ * @description: Insert Line Terminator in var x=y-z;
+*/
+
+// CHECK#1
+var y=3;
+var z=2;
+var
+x
+=
+y
+-
+z
+;
+if (x !== 1) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n-\\nz\\n; x === 1. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=3;
+var z=2;
+var
+x
+=
+y
+-
+z
+;
+if (x !== 1) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n-\\nz\\n; x === 1. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=3;
+var z=2;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028-\u2028z\u2028");
+if (x !== 1) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028-\\u2028z\\u2028"); x === 1. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=3;
+var z=2;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029-\u2029z\u2029");
+if (x !== 1) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029-\\u2029z\\u2029"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T3.js
new file mode 100644
index 000000000..536ee9173
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T3.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A7_T3;
+ * @section: 7.3;
+ * @assertion: Line Terminators between operators are allowed;
+ * @description: Insert Line Terminator in var x=y*z;
+*/
+
+// CHECK#1
+var y=3;
+var z=2;
+var
+x
+=
+y
+*
+z
+;
+if (x !== 6) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n*\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=3;
+var z=2;
+var
+x
+=
+y
+*
+z
+;
+if (x !== 6) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n*\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=3;
+var z=2;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028*\u2028z\u2028");
+if (x !== 6) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028*\\u2028z\\u2028"); x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=3;
+var z=2;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029*\u2029z\u2029");
+if (x !== 6) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029*\\u2029z\\u2029"); x === 6. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T4.js
new file mode 100644
index 000000000..c1e84b5db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T4.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A7_T4;
+ * @section: 7.3;
+ * @assertion: Line Terminators between operators are allowed;
+ * @description: Insert Line Terminator in var x=y/z;
+*/
+
+// CHECK#1
+var y=12;
+var z=2;
+var
+x
+=
+y
+/
+z
+;
+if (x !== 6) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n/\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=12;
+var z=2;
+var
+x
+=
+y
+/
+z
+;
+if (x !== 6) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n/\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=12;
+var z=2;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028/\u2028z\u2028");
+if (x !== 6) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028/\\u2028z\\u2028"); x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=12;
+var z=2;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029/\u2029z\u2029");
+if (x !== 6) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029/\\u2029z\\u2029"); x === 6. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T5.js
new file mode 100644
index 000000000..132caa73d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T5.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A7_T5;
+ * @section: 7.3;
+ * @assertion: Line Terminators between operators are allowed;
+ * @description: Insert Line Terminator in var x=y%z;
+*/
+
+// CHECK#1
+var y=16;
+var z=10;
+var
+x
+=
+y
+%
+z
+;
+if (x !== 6) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n%\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=16;
+var z=10;
+var
+x
+=
+y
+%
+z
+;
+if (x !== 6) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n%\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=16;
+var z=10;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028%\u2028z\u2028");
+if (x !== 6) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028%\\u2028z\\u2028"); x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=16;
+var z=10;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029%\u2029z\u2029");
+if (x !== 6) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029%\\u2029z\\u2029"); x === 6. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T6.js
new file mode 100644
index 000000000..f4c326ff9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A7_T6;
+ * @section: 7.3;
+ * @assertion: Line Terminators between operators are allowed;
+ * @description: Insert Line Terminator in var x=y>>z;
+*/
+
+// CHECK#1
+var y=16;
+var z=3;
+var
+x
+=
+y
+>>
+z
+;
+if (x !== 2) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n>>\\nz\\n; x === 2. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=16;
+var z=3;
+var
+x
+=
+y
+>>
+z
+;
+if (x !== 2) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n>>\\nz\\n; x === 2. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=16;
+var z=3;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028>>\u2028z\u2028");
+if (x !== 2) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028>>\\u2028z\\u2028"); x === 2. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=16;
+var z=3;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029>>\u2029z\u2029");
+if (x !== 2) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029>>\\u2029z\\u2029"); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T7.js
new file mode 100644
index 000000000..904727e21
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T7.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A7_T7;
+ * @section: 7.3;
+ * @assertion: Line Terminators between operators are allowed;
+ * @description: Insert Line Terminator in var x=y<<z;
+*/
+
+// CHECK#1
+var y=2;
+var z=3;
+var
+x
+=
+y
+<<
+z
+;
+if (x !== 16) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n<<\\nz\\n; x === 16. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=2;
+var z=3;
+var
+x
+=
+y
+<<
+z
+;
+if (x !== 16) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n<<\\nz\\n; x ===16 ');
+}
+x=0;
+
+// CHECK#3
+var y=2;
+var z=3;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028<<\u2028z\u2028");
+if (x !== 16) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028<<\\u2028z\\u2028"); x === 16. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=2;
+var z=3;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029<<\u2029z\u2029");
+if (x !== 16) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029<<\\u2029z\\u2029"); x === 16. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T8.js
new file mode 100644
index 000000000..cc66de3b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A7_T8.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.3_A7_T8;
+ * @section: 7.3;
+ * @assertion: Line Terminators between operators are allowed;
+ * @description: Insert Line Terminator in var x=y<z;
+*/
+
+// CHECK#1
+var y=2;
+var z=3;
+var
+x
+=
+y
+<
+z
+;
+if (x !== true) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n<\\nz\\n; x === true. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=2;
+var z=3;
+var
+x
+=
+y
+<
+z
+;
+if (x !== true) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n<\\nz\\n; x === true. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=2;
+var z=3;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028<\u2028z\u2028");
+if (x !== true) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028<\\u2028z\\u2028"); x === true. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=2;
+var z=3;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029<\u2029z\u2029");
+if (x !== true) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029<\\u2029z\\u2029"); x === true. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A1_T1.js
new file mode 100644
index 000000000..e79dc1ebd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A1_T1;
+ * @section: 7.4;
+ * @assertion: Correct interpretation of single line comments;
+ * @description: Create comments with any code;
+*/
+
+//CHECK#1
+// $ERROR('#1: Correct interpretation single line comments');
+
+//CHECK#2
+var x = 0;
+// x = 1;
+if (x !== 0) {
+ $ERROR('#2: var x = 0; // x = 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+var // y = 1;
+y;
+if (y !== undefined) {
+ $ERROR('#3: var // y = 1; \\n y; y === undefined. Actual: ' + (y));
+}
+
+//CHECK#4
+//$ERROR('#4: Correct interpretation single line comments') //$ERROR('#4: Correct interpretation single line comments'); //
+
+////CHECK#5
+//var x = 1;
+//if (x === 1) {
+// $ERROR('#5: Correct interpretation single line comments');
+//}
+
+//CHECK#6
+//var this.y = 1;
+this.y++;
+if (isNaN(y) !== true) {
+ $ERROR('#6: //var this.y = 1; \\n this.y++; y === Not-a-Number. Actual: ' + (y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A1_T2.js
new file mode 100644
index 000000000..6c3812492
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A1_T2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A1_T2;
+ * @section: 7.4;
+ * @assertion: Correct interpretation of single line comments;
+ * @description: Simple test, create empty comment: ///;
+*/
+
+//CHECK#1
+///
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A2_T1.js
new file mode 100644
index 000000000..4f69f6de8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A2_T1.js
@@ -0,0 +1,77 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A2_T1;
+ * @section: 7.4;
+ * @assertion: Correct interpretation of multi line comments;
+ * @description: Create comments with any code;
+*/
+
+/*CHECK#1*/
+/* $ERROR('#1: Correct interpretation multi line comments');
+*/
+
+/*CHECK#2*/
+var x = 0;
+/* x = 1;*/
+if (x !== 0) {
+ $ERROR('#2: var x = 0; /* x = 1;*/ x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+var /* y = 1;*/
+y;
+if (y !== undefined) {
+ $ERROR('#3: var /* y = 1; */ \\n y; y === undefined. Actual: ' + (y));
+}
+
+//CHECK#4
+var /* y = 1;*/ y;
+if (y !== undefined) {
+ $ERROR('#4: var /* y = 1; */ y; y === undefined. Actual: ' + (y));
+}
+
+/*CHECK#5*/
+/*var x = 1;
+if (x === 1) {
+ $ERROR('#5: Correct interpretation multi line comments');
+}
+*/
+
+/*CHECK#6*/
+/*var this.y = 1;*/
+this.y++;
+if (isNaN(y) !== true) {
+ $ERROR('#6: /*var this.y = 1;*/ \\n this.y++; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#7
+var string = "/*var y = 0*/" /* y = 1;*/
+if (string !== "/*var y = 0*/") {
+$ERROR('#7: var string = "/*var y = 0*/" /* y = 1;*/ string === "//var y = 0"');
+}
+
+//CHECK#8
+var string = "/*var y = 0" /* y = 1;*/
+if (string !== "/*var y = 0") {
+$ERROR('#8: var string = "/*var y = 0" /* y = 1;*/ string === "//var y = 0"');
+}
+
+/*CHECK#9*/
+/** $ERROR('#9: Correct interpretation multi line comments');
+*/
+
+/*CHECK#10*/
+/* $ERROR('#10: Correct interpretation multi line comments');
+**/
+
+/*CHECK#11*/
+/****** $ERROR('#11: Correct interpretation multi line comments');*********
+***********
+*
+
+
+**********
+**/
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A2_T2.js
new file mode 100644
index 000000000..a7b8b46b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A2_T2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A2_T2;
+ * @section: 7.4;
+ * @assertion: Correct interpretation of multi line comments;
+ * @description: Try use /*CHECK#1/. This is not closed multi line comment;
+ * @negative
+*/
+
+/*CHECK#1/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A3.js
new file mode 100644
index 000000000..9adf6b6d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.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.
+
+/**
+ * @name: S7.4_A3;
+ * @section: 7.4;
+ * @assertion: Multi line comments cannot nest;
+ * @description: Try use nested comments;
+ * @negative
+*/
+
+/*CHECK#1*/
+
+/*
+var
+
+/* x */
+= 1;
+*/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T1.js
new file mode 100644
index 000000000..7ebb35687
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A4_T1;
+ * @section: 7.4;
+ * @assertion: Single and Multi line comments are used together;
+ * @description: Try use 2 close comment tags;
+ * @negative
+*/
+
+/*CHECK#1*/
+
+/* var*/
+x*/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T2.js
new file mode 100644
index 000000000..469a73022
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A4_T2;
+ * @section: 7.4;
+ * @assertion: Single and Multi line comments are used together;
+ * @description: Fist Multi line comment, then Single line comment;
+*/
+
+/*CHECK#1*/
+
+/* var
+*///x*/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T3.js
new file mode 100644
index 000000000..0ee7847c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A4_T3;
+ * @section: 7.4;
+ * @assertion: Single and Multi line comments are used together;
+ * @description: Insert Single line comment into Multi line comment;
+*/
+
+/*CHECK#1*/
+
+/* var
+//x
+*/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T4.js
new file mode 100644
index 000000000..744728174
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A4_T4;
+ * @section: 7.4;
+ * @assertion: Single and Multi line comments are used together;
+ * @description: Try to open Multi line comment at the end of Single comment;
+ * @negative
+*/
+
+/*CHECK#1*/
+
+// var /*
+x*/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T5.js
new file mode 100644
index 000000000..2cab44197
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T5.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A4_T5;
+ * @section: 7.4;
+ * @assertion: Single and Multi line comments are used together;
+ * @description: Insert Multi line comment into Single line comment;
+*/
+
+/*CHECK#1*/
+
+// var /* x */
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T6.js
new file mode 100644
index 000000000..d414a2089
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T6.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A4_T6;
+ * @section: 7.4;
+ * @assertion: Single and Multi line comments are used together;
+ * @description: Insert Multi line comment with two closed tags into Single line comment;
+*/
+
+/*CHECK#1*/
+
+// var /* x / = */ 1 */
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T7.js
new file mode 100644
index 000000000..41683be7d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A4_T7.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A4_T7;
+ * @section: 7.4;
+ * @assertion: Single and Multi line comments are used together;
+ * @description: Insert Multi line comment into Single line comments;
+*/
+
+/*CHECK#1*/
+
+// var /*
+// x
+// =
+// 1*/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A5.js
new file mode 100644
index 000000000..8d9fd4b01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A5.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A5;
+ * @section: 7.4;
+ * @assertion: Single line comments can contain any Unicode character without Line Terminators;
+ * @description: //var " + xx + "yy = -1", insert instead of xx all Unicode characters;
+*/
+
+//CHECK
+errorCount = 0;
+count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (i1 = 0; i1 < 16; i1++) {
+ for (i2 = 0; i2 < 16; i2++) {
+ for (i3 = 0; i3 < 16; i3++) {
+ for (i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var xx = String.fromCharCode("0x" + uu);
+ var LineTerminators = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ var yy = 0;
+ eval("//var " + xx + "yy = -1");
+ if (LineTerminators !== true) {
+ if (yy !== 0) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ if (yy !== -1) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ }
+ } catch (e){
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A6.js
new file mode 100644
index 000000000..a79a8ae35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.4_A6;
+ * @section: 7.4;
+ * @assertion: If multi line comments csn not nest, they can contain any Unicode character;
+ * @description: "var"+ yy+ "xx = 1", insert instead of yy all Unicode characters;
+*/
+
+//CHECK
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI <= 65535; indexI++) {
+ try {
+ var xx = 0;
+ eval("/*var " + String.fromCharCode(indexI) + "xx = 1*/");
+ var hex = decimalToHexString(indexI);
+ if (xx !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e){
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.1.js
new file mode 100644
index 000000000..d2ce4eb31
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.1_A1.1;
+ * @section: 7.5.1;
+ * @assertion: The "null" token can not be used as identifier;
+ * @description: Checking if execution of "null = 1" fails;
+ * @negative
+*/
+
+null = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.2.js
new file mode 100644
index 000000000..239e1ddba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.1_A1.2;
+ * @section: 7.5.1;
+ * @assertion: The "true" token can not be used as identifier;
+ * @description: Checking if execution of "true=1" fails;
+ * @negative
+*/
+
+true = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.3.js
new file mode 100644
index 000000000..9293e15c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A1.3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.1_A1.3;
+ * @section: 7.5.1;
+ * @assertion: The "false" token can not be used as identifier;
+ * @description: Checking if execution of "false=1" fails;
+ * @negative
+*/
+
+false = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A2.js
new file mode 100644
index 000000000..3654f9e9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.1_Reserved_Words/S7.5.1_A2.js
@@ -0,0 +1,121 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.1_A2;
+ * @section: 7.5.1;
+ * @assertion: List of words that are not reserved;
+ * @description: Try assign 1 for not reserved words;
+*/
+
+// a
+and = 1;
+and_eq = 1;
+as = 1;
+asm = 1;
+assert = 1;
+auto = 1;
+// b
+base = 1;
+bitand = 1;
+bitor = 1;
+bool = 1;
+byvalue = 1;
+// c
+checked = 1;
+clone = 1;
+comment = 1;
+compl = 1;
+const_cast = 1;
+// d
+decimal = 1;
+delegate = 1;
+dynamic_cast = 1;
+// e
+explicit = 1;
+extern = 1;
+equals = 1;
+event = 1;
+// f
+finalize = 1;
+fixed = 1;
+friend = 1;
+foreach = 1;
+future = 1;
+// g
+getClass = 1;
+generic = 1;
+// h
+hashCode = 1;
+// i
+implicit = 1;
+infinity = 1;
+inline = 1;
+inner = 1;
+internal = 1;
+is = 1;
+// j
+// k
+// l
+lock = 1;
+// m
+mutable = 1;
+// n
+NaN = 1;
+namespace = 1;
+not = 1;
+notify = 1;
+notifyAll = 1;
+not_eq = 1;
+// o
+object = 1;
+operator = 1;
+or = 1;
+or_eq = 1;
+out = 1;
+outer = 1;
+override = 1;
+// p
+params = 1;
+// q
+// r
+readonly = 1;
+reinterpret_cast = 1;
+ref = 1;
+register = 1;
+
+// s
+sbyte = 1;
+signed = 1;
+sizeof = 1;
+stackalloc = 1;
+static_cast = 1;
+string = 1;
+strictfp = 1;
+struct = 1;
+// t
+template = 1;
+toString = 1;
+typedef = 1;
+typeid = 1;
+// u
+uint = 1;
+unchecked = 1;
+undefiend = 1;
+union = 1;
+unsafe = 1;
+unsigned = 1;
+use = 1;
+using = 1;
+ushort = 1;
+// v
+valueOf = 1;
+virtual = 1;
+// w
+wait = 1;
+wchar_t = 1;
+// x
+xor = 1;
+xor_eq = 1;
+// y
+// z
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.1.js
new file mode 100644
index 000000000..734879c2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.1;
+ * @section: 7.5.2;
+ * @assertion: The "break" token can not be used as identifier;
+ * @description: Checking if execution of "break=1" fails;
+ * @negative
+*/
+
+break = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.10.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.10.js
new file mode 100644
index 000000000..e45f9d939
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.10.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.10;
+ * @section: 7.5.2;
+ * @assertion: The "for" token can not be used as identifier;
+ * @description: Checking if execution of "for=1" fails;
+ * @negative
+*/
+
+for = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.11.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.11.js
new file mode 100644
index 000000000..2ce5105c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.11.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.11;
+ * @section: 7.5.2;
+ * @assertion: The "function" token can not be used as identifier;
+ * @description: Checking if execution of "function=1" fails;
+ * @negative
+*/
+
+function = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.12.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.12.js
new file mode 100644
index 000000000..1242bbb92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.12.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.12;
+ * @section: 7.5.2;
+ * @assertion: The "if" token can not be used as identifier;
+ * @description: Checking if execution of "if=1" fails;
+ * @negative
+*/
+
+if = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.13.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.13.js
new file mode 100644
index 000000000..fd8bb7d66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.13.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.13;
+ * @section: 7.5.2;
+ * @assertion: The "in" token can not be used as identifier;
+ * @description: Checking if execution of "in=1" fails;
+ * @negative
+*/
+
+in = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.14.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.14.js
new file mode 100644
index 000000000..2e52ec882
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.14.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.14;
+ * @section: 7.5.2;
+ * @assertion: The "instanceof" token can not be used as identifier;
+ * @description: Checking if execution of "instanceof=1" fails;
+ * @negative
+*/
+
+instanceof = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.15.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.15.js
new file mode 100644
index 000000000..14f27cc02
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.15.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.15;
+ * @section: 7.5.2;
+ * @assertion: The "new" token can not be used as identifier;
+ * @description: Checking if execution of "new=1" fails;
+ * @negative
+*/
+
+new = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.16.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.16.js
new file mode 100644
index 000000000..c97808257
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.16.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.16;
+ * @section: 7.5.2;
+ * @assertion: The "return" token can not be used as identifier;
+ * @description: Checking if execution of "return=1" fails;
+ * @negative
+*/
+
+return = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.17.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.17.js
new file mode 100644
index 000000000..9005467ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.17.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.17;
+ * @section: 7.5.2;
+ * @assertion: The "switch" token can not be used as identifier;
+ * @description: Checking if execution of "switch=1" fails;
+ * @negative
+*/
+
+switch = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.18.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.18.js
new file mode 100644
index 000000000..b9bc28ad6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.18.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.18;
+ * @section: 7.5.2;
+ * @assertion: The "this" token can not be used as identifier;
+ * @description: Checking if execution of "this=1" fails;
+ * @negative
+*/
+
+this = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.19.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.19.js
new file mode 100644
index 000000000..b306bbaaa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.19.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.19;
+ * @section: 7.5.2;
+ * @assertion: The "throw" token can not be used as identifier;
+ * @description: Checking if execution of "throw=1" fails;
+ * @negative
+*/
+
+throw = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.2.js
new file mode 100644
index 000000000..1df55a4fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.2;
+ * @section: 7.5.2;
+ * @assertion: The "case" token can not be used as identifier;
+ * @description: Checking if execution of "case=1" fails;
+ * @negative
+*/
+
+case = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.20.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.20.js
new file mode 100644
index 000000000..86272ab6b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.20.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.20;
+ * @section: 7.5.2;
+ * @assertion: The "try" token can not be used as identifier;
+ * @description: Checking if execution of "try=1" fails;
+ * @negative
+*/
+
+try = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.21.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.21.js
new file mode 100644
index 000000000..f3022682c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.21.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.21;
+ * @section: 7.5.2;
+ * @assertion: The "typeof" token can not be used as identifier;
+ * @description: Checking if execution of "typeof=1" fails;
+ * @negative
+*/
+
+typeof = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.22.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.22.js
new file mode 100644
index 000000000..58455fe72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.22.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.22;
+ * @section: 7.5.2;
+ * @assertion: The "var" token can not be used as identifier;
+ * @description: Checking if execution of "var=1" fails;
+ * @negative
+*/
+
+var = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.23.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.23.js
new file mode 100644
index 000000000..e7e551471
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.23.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.23;
+ * @section: 7.5.2;
+ * @assertion: The "void" token can not be used as identifier;
+ * @description: Checking if execution of "void=1" fails;
+ * @negative
+*/
+
+void = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.24.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.24.js
new file mode 100644
index 000000000..4e5985275
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.24.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.24;
+ * @section: 7.5.2;
+ * @assertion: The "while" token can not be used as identifier;
+ * @description: Checking if execution of "while=1" fails;
+ * @negative
+*/
+
+while = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.25.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.25.js
new file mode 100644
index 000000000..2ec745fde
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.25.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.25;
+ * @section: 7.5.2;
+ * @assertion: The "with" token can not be used as identifier;
+ * @description: Checking if execution of "with=1" fails;
+ * @negative
+*/
+
+with = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.3.js
new file mode 100644
index 000000000..21c0ce612
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.3;
+ * @section: 7.5.2;
+ * @assertion: The "catch" token can not be used as identifier;
+ * @description: Checking if execution of "catch=1" fails;
+ * @negative
+*/
+
+catch = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.4.js
new file mode 100644
index 000000000..a1b2cb1ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.4.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.4;
+ * @section: 7.5.2;
+ * @assertion: The "continue" token can not be used as identifier;
+ * @description: Checking if execution of "contunue=1" fails;
+ * @negative
+*/
+
+continue = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.5.js
new file mode 100644
index 000000000..cebcaca9e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.5.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.5;
+ * @section: 7.5.2;
+ * @assertion: The "default" token can not be used as identifier;
+ * @description: Checking if execution of "default=1" fails;
+ * @negative
+*/
+
+default = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.6.js
new file mode 100644
index 000000000..dadb6d83f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.6.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.6;
+ * @section: 7.5.2;
+ * @assertion: The "delete" token can not be used as identifier;
+ * @description: Checking if execution of "delete=1" fails;
+ * @negative
+*/
+
+delete = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.7.js
new file mode 100644
index 000000000..189c74736
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.7.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.7;
+ * @section: 7.5.2;
+ * @assertion: The "do" token can not be used as identifier;
+ * @description: Checking if execution of "do=1" fails;
+ * @negative
+*/
+
+do = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.8.js
new file mode 100644
index 000000000..5a07e6f6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.8.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.8;
+ * @section: 7.5.2;
+ * @assertion: The "else" token can not be used as identifier;
+ * @description: Checking if execution of "else=1" fails;
+ * @negative
+*/
+
+else = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.9.js
new file mode 100644
index 000000000..d04369f74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.2_Keywords/S7.5.2_A1.9.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.2_A1.9;
+ * @section: 7.5.2;
+ * @assertion: The "finally" token can not be used as identifier;
+ * @description: Checking if execution of "finally=1" fails;
+ * @negative
+*/
+
+finally = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.1.js
new file mode 100644
index 000000000..d37ca0f53
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.1.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.1;
+ * @section: 7.5.3;
+ * @assertion: The "abstract" token can be used as identifier;
+ * @description: Checking if execution of "abstract=1" succeeds;
+ */
+
+abstract = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.10.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.10.js
new file mode 100644
index 000000000..64475e904
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.10.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.10;
+ * @section: 7.5.3;
+ * @assertion: The "export" token can not be used as identifier;
+ * @description: Checking if execution of "export=1" fails;
+ * @negative
+*/
+
+export = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.11.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.11.js
new file mode 100644
index 000000000..058315f0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.11.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.11;
+ * @section: 7.5.3;
+ * @assertion: The "extends" token can not be used as identifier;
+ * @description: Checking if execution of "extends=1" fails;
+ * @negative
+*/
+
+extends = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.12.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.12.js
new file mode 100644
index 000000000..2fbba1c64
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.12.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.12;
+ * @section: 7.5.3;
+ * @assertion: The "final" token can be used as identifier;
+ * @description: Checking if execution of "final=1" succeeds;
+ */
+
+final = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.13.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.13.js
new file mode 100644
index 000000000..9e436929a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.13.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.13;
+ * @section: 7.5.3;
+ * @assertion: The "float" token can be used as identifier;
+ * @description: Checking if execution of "float=1" succeeds;
+*/
+
+float = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.14.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.14.js
new file mode 100644
index 000000000..6399276b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.14.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.14;
+ * @section: 7.5.3;
+ * @assertion: The "goto" token can be used as identifier;
+ * @description: Checking if execution of "goto=1" succeeds;
+ */
+
+goto = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.15.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.15.js
new file mode 100644
index 000000000..be59187b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.15.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.15;
+ * @section: 7.5.3;
+ * @assertion: The "implements" token can not be used as identifier in
+ * strict code;
+ * @description: Checking if execution of "implements=1" fails in
+ * strict code;
+ * @negative
+ */
+
+"use strict";
+implements = 1; \ No newline at end of file
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.15ns.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.15ns.js
new file mode 100644
index 000000000..939f3fbf1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.15ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.15;
+ * @section: 7.5.3;
+ * @assertion: The "implements" token can be used as identifier in
+ * non-strict code;
+ * @description: Checking if execution of "implements=1" succeeds in
+ * non-strict code;
+ */
+
+new Function('implements = 1'); \ No newline at end of file
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.16.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.16.js
new file mode 100644
index 000000000..ec4141dc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.16.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.16;
+ * @section: 7.5.3;
+ * @assertion: The "import" token can not be used as identifier;
+ * @description: Checking if execution of "import=1" fails;
+ * @negative
+*/
+
+import = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.17.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.17.js
new file mode 100644
index 000000000..5e7e72bde
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.17.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.17;
+ * @section: 7.5.3;
+ * @assertion: The "int" token can be used as identifier;
+ * @description: Checking if execution of "int=1" succeeds;
+*/
+
+int = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.18.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.18.js
new file mode 100644
index 000000000..1ce3a1b13
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.18.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.18;
+ * @section: 7.5.3;
+ * @assertion: The "interface" token can not be used as identifier in
+ * strict code;
+ * @description: Checking if execution of "interface = 1" fails in
+ * strict code;
+ * @negative
+ */
+
+"use strict";
+interface = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.18ns.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.18ns.js
new file mode 100644
index 000000000..787e65646
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.18ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.18;
+ * @section: 7.5.3;
+ * @assertion: The "interface" token can be used as identifier in
+ * non-strict code;
+ * @description: Checking if execution of "interface = 1" succeeds in
+ * strict code;
+ */
+
+new Function('interface = 1');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.19.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.19.js
new file mode 100644
index 000000000..1667d3905
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.19.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.19;
+ * @section: 7.5.3;
+ * @assertion: The "long" token can be used as identifier;
+ * @description: Checking if execution of "long=1" succeeds;
+ */
+
+long = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.2.js
new file mode 100644
index 000000000..76c3c81c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.2.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.2;
+ * @section: 7.5.3;
+ * @assertion: The "boolean" token can be used as identifier;
+ * @description: Checking if execution of "boolean=1" succeeds;
+ */
+
+boolean = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.20.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.20.js
new file mode 100644
index 000000000..979fff751
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.20.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.20;
+ * @section: 7.5.3;
+ * @assertion: The "native" token can be used as identifier;
+ * @description: Checking if execution of "native=1" succeeds;
+ */
+
+native = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.21.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.21.js
new file mode 100644
index 000000000..05e0223ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.21.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.21;
+ * @section: 7.5.3;
+ * @assertion: The "package" token can not be used as identifier in
+ * strict code;
+ * @description: Checking if execution of "package=1" fails in strict code;
+ * @negative
+ */
+
+"use strict";
+package = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.21ns.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.21ns.js
new file mode 100644
index 000000000..65cbd9363
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.21ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.21;
+ * @section: 7.5.3;
+ * @assertion: The "package" token can be used as identifier in
+ * non-strict code;
+ * @description: Checking if execution of "package=1" succeeds in
+ * non-strict code;
+ */
+
+new Function('package = 1');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.22.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.22.js
new file mode 100644
index 000000000..96441b0b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.22.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.22;
+ * @section: 7.5.3;
+ * @assertion: The "private" token can not be used as identifier in
+ * strict code;
+ * @description: Checking if execution of "private=1" fails in strict code;
+ * @negative
+ */
+
+"use strict";
+private = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.22ns.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.22ns.js
new file mode 100644
index 000000000..e8b1040de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.22ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.22;
+ * @section: 7.5.3;
+ * @assertion: The "private" token can be used as identifier in
+ * non-strict code;
+ * @description: Checking if execution of "private=1" succeeds in
+ * non-strict code;
+ */
+
+new Function('private = 1');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.23.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.23.js
new file mode 100644
index 000000000..fb272f7bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.23.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.23;
+ * @section: 7.5.3;
+ * @assertion: The "protected" token can not be used as identifier in
+ * strict code;
+ * @description: Checking if execution of "protected=1" fails in
+ * strict code;
+ * @negative
+ */
+
+"use strict";
+protected = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.23ns.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.23ns.js
new file mode 100644
index 000000000..19bc9f963
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.23ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.23;
+ * @section: 7.5.3;
+ * @assertion: The "protected" token can be used as identifier in
+ * non-strict code;
+ * @description: Checking if execution of "protected=1" succeeds in
+ * non-strict code;
+ */
+
+new Function('protected = 1');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.24.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.24.js
new file mode 100644
index 000000000..ff3426949
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.24.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.24;
+ * @section: 7.5.3;
+ * @assertion: The "public" token can not be used as identifier in
+ * strict code;
+ * @description: Checking if execution of "public=1" fails in strict code;
+ * @negative
+ */
+
+"use strict";
+public = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.24ns.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.24ns.js
new file mode 100644
index 000000000..cd4b780b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.24ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.24;
+ * @section: 7.5.3;
+ * @assertion: The "public" token can be used as identifier in
+ * non-strict code;
+ * @description: Checking if execution of "public=1" succeeds in
+ * non-strict code;
+ */
+
+new Function('public = 1');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.25.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.25.js
new file mode 100644
index 000000000..10218efbc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.25.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.25;
+ * @section: 7.5.3;
+ * @assertion: The "short" token can be used as identifier;
+ * @description: Checking if execution of "short=1" succeeds;
+ */
+
+short = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.26.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.26.js
new file mode 100644
index 000000000..a26ad6d7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.26.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.26;
+ * @section: 7.5.3;
+ * @assertion: The "static" token can not be used as identifier in
+ * strict code;
+ * @description: Checking if execution of "static=1" fails in strict code;
+ * @negative
+*/
+
+"use strict";
+static = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.26ns.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.26ns.js
new file mode 100644
index 000000000..9d47c76d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.26ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.26;
+ * @section: 7.5.3;
+ * @assertion: The "static" token can be used as identifier in
+ * non-strict code;
+ * @description: Checking if execution of "static=1" succeeds in
+ * non-strict code;
+ */
+
+new Function('static = 1');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.27.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.27.js
new file mode 100644
index 000000000..9ea6c97ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.27.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.27;
+ * @section: 7.5.3;
+ * @assertion: The "super" token can not be used as identifier;
+ * @description: Checking if execution of "super=1" fails;
+ * @negative
+*/
+
+super = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.28.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.28.js
new file mode 100644
index 000000000..d70f857ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.28.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.28;
+ * @section: 7.5.3;
+ * @assertion: The "synchronized" token can be used as identifier;
+ * @description: Checking if execution of "synchronized=1" succeeds;
+*/
+
+synchronized = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.29.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.29.js
new file mode 100644
index 000000000..6aa1b70e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.29.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.29;
+ * @section: 7.5.3;
+ * @assertion: The "throws" token can be used as identifier;
+ * @description: Checking if execution of "throws=1" succeeds;
+*/
+
+throws = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.3.js
new file mode 100644
index 000000000..5d17b3639
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.3.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.3;
+ * @section: 7.5.3;
+ * @assertion: The "byte" token can be used as identifier;
+ * @description: Checking if execution of "byte=1" succeeds;
+ */
+
+byte = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.30.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.30.js
new file mode 100644
index 000000000..23d1e296f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.30.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.30;
+ * @section: 7.5.3;
+ * @assertion: The "transient" token can be used as identifier;
+ * @description: Checking if execution of "transient=1" succeeds;
+ */
+
+transient = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.31.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.31.js
new file mode 100644
index 000000000..67fcbc722
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.31.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.31;
+ * @section: 7.5.3;
+ * @assertion: The "volatile" token can be used as identifier;
+ * @description: Checking if execution of "volatile=1" succeeds;
+ */
+
+volatile = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.4.js
new file mode 100644
index 000000000..589c6b553
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.4.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.4;
+ * @section: 7.5.3;
+ * @assertion: The "char" token can be used as identifier;
+ * @description: Checking if execution of "char=1" succeeds;
+ */
+
+char = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.5.js
new file mode 100644
index 000000000..d6a5fe065
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.5.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.5;
+ * @section: 7.5.3;
+ * @assertion: The "class" token can not be used as identifier;
+ * @description: Checking if execution of "class=1" fails;
+ * @negative
+*/
+
+class = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.6.js
new file mode 100644
index 000000000..27ffe164b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.6.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.6;
+ * @section: 7.5.3;
+ * @assertion: The "const" token can not be used as identifier;
+ * @description: Checking if execution of "const=1" fails;
+ * @negative
+*/
+
+const = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.7.js
new file mode 100644
index 000000000..244cdee6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.7.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.7;
+ * @section: 7.5.3;
+ * @assertion: The "debugger" token can not be used as identifier;
+ * @description: Checking if execution of "debugger=1" fails;
+ * @negative
+*/
+
+debugger = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.8.js
new file mode 100644
index 000000000..40e509a3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.8.js
@@ -0,0 +1,11 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.8;
+ * @section: 7.5.3;
+ * @assertion: The "double" token can be used as identifier;
+ * @description: Checking if execution of "double=1" succeeds;
+ */
+
+double = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.9.js
new file mode 100644
index 000000000..c7a311b70
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.9.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.5.3_A1.9;
+ * @section: 7.5.3;
+ * @assertion: The "enum" token can not be used as identifier;
+ * @description: Checking if execution of "enum=1" fails;
+ * @negative
+*/
+
+enum = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T1.js
new file mode 100644
index 000000000..e75b5ae7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.2_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: $;
+ * @description: Create variable $;
+*/
+
+//CHECK#1
+var $ = 1;
+if ($ !== 1) {
+ $ERROR('#1: var $ = 1; $ === 1. Actual: ' + ($));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T2.js
new file mode 100644
index 000000000..404e37577
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.2_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: $;
+ * @description: The $ as unicode character \u0024;
+*/
+
+//CHECK#1
+var \u0024 = 1;
+if ($ !== 1) {
+ $ERROR('#1: var \\u0024 = 1; $ === 1. Actual: ' + ($));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T3.js
new file mode 100644
index 000000000..711e8b02c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.2_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.2_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: $;
+ * @description: The $ as unicode character \u0024;
+*/
+
+//CHECK#1
+var identifier = String.fromCharCode(0x0024);
+eval("var " + identifier + "=1");
+if (eval(identifier + "===1") !== true) {
+ $ERROR('#1: var identifier = String.fromCharCode(0x0024); eval("var " + identifier + "=1"); eval(identifier + "===1") === true');
+}
+
+//CHECK#2
+if ("$" !== String.fromCharCode(0x0024)) {
+ $ERROR('#2: "$" === String.fromCharCode(0x0024)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T1.js
new file mode 100644
index 000000000..447c19945
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.3_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: _;
+ * @description: Create variable _;
+*/
+
+//CHECK#1
+var _ = 1;
+if (_ !== 1) {
+ $ERROR('#1: var _ = 1; _ === 1. Actual: ' + (_));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T2.js
new file mode 100644
index 000000000..ec5c1e585
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.3_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: _;
+ * @description: The _ as unicode character \u005F;
+*/
+
+//CHECK#1
+var \u005F = 1;
+if (_ !== 1) {
+ $ERROR('#1: var \\u005F = 1; _ === 1. Actual: ' + (_));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T3.js
new file mode 100644
index 000000000..ac3deba87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A1.3_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.3_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: _;
+ * @description: The _ as unicode character \u005F;
+*/
+
+//CHECK#1
+var identifier = String.fromCharCode(0x005F);
+eval("var " + identifier + "=1");
+if (eval(identifier + "===1") !== true) {
+ $ERROR('#1: var identifier = String.fromCharCode(0x005F); eval("var " + identifier + "=1"); eval(identifier + "===1") === true');
+}
+
+//CHECK#2
+if ("_" !== String.fromCharCode(0x005F)) {
+ $ERROR('#2: "_" === String.fromCharCode(0x005F)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T1.js
new file mode 100644
index 000000000..a6e025c7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T1.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.1_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: IdentifierStart;
+ * @description: IdentifierStart :: UnicodeLetter;
+*/
+
+//CHECK#1
+try {
+ var identifier = "x" + "x";
+ eval("var " + identifier + "=1");
+ if (xx !== 1) {
+ $ERROR('#1.1: var identifier = "x" + "x"; eval("var " + identifier + "=1"); xx === 1. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#1.2: var identifier = "x" + "x"; eval("var " + identifier + "=1"); xx === 1. Actual: ' + (xx));
+}
+
+//CHECK#2
+try {
+ var identifier = "x" + String.fromCharCode(0x0078);
+ eval("var " + identifier + "=2");
+ if (xx !== 2) {
+ $ERROR('#2.1: var identifier = "x" + String.fromCharCode(0x0078); eval("var " + identifier + "=2"); xx === 2. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#2.2: var identifier = "x" + String.fromCharCode(0x0078); eval("var " + identifier + "=2"); xx === 2. Actual: ' + (xx));
+}
+
+//CHECK#3
+try {
+ var identifier = String.fromCharCode(0x0078) + String.fromCharCode(0x0078);
+ eval("var " + identifier + "=3");
+ if (xx !== 3) {
+ $ERROR('#3.1: var identifier = String.fromCharCode(0x0078) + String.fromCharCode(0x0078); eval("var " + identifier + "=3"); xx === 3. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#3.2: var identifier = String.fromCharCode(0x0078) + String.fromCharCode(0x0078); eval("var " + identifier + "=3"); xx === 3. Actual: ' + (xx));
+}
+
+//CHECK#4
+try {
+ var identifier = "$" + String.fromCharCode(0x0078);
+ eval("var " + identifier + "=4");
+ if ($x !== 4) {
+ $ERROR('#4.1: var identifier = "$" + String.fromCharCode(0x0078); eval("var " + identifier + "=4"); $x === 4. Actual: ' + ($x));
+ }
+} catch (e) {
+ $ERROR('#4.2: var identifier = "$" + String.fromCharCode(0x0078); eval("var " + identifier + "=4"); $x === 4. Actual: ' + ($x));
+}
+
+//CHECK#5
+try {
+ var identifier = "_" + String.fromCharCode(0x0078);
+ eval("var " + identifier + "=5");
+ if (_x !== 5) {
+ $ERROR('#5.1: var identifier = "_" + String.fromCharCode(0x0078); eval("var " + identifier + "=5"); _x === 5. Actual: ' + (_x));
+ }
+} catch (e) {
+ $ERROR('#5.2: var identifier = "_" + String.fromCharCode(0x0078); eval("var " + identifier + "=5"); _x === 5. Actual: ' + (_x));
+}
+
+//CHECK#6
+try {
+ var \u0078x = 6;
+ if (xx !== 6) {
+ $ERROR('#6.1: var \\u0078x = 1; xx === 6. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#6.2: var \\u0078x = 1; xx === 6. Actual: ' + (xx));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T2.js
new file mode 100644
index 000000000..84f85060c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T2.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.1_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: IdentifierStart;
+ * @description: IdentifierStart :: $;
+*/
+
+//CHECK#1
+try {
+ var identifier = "x" + "$";
+ eval("var " + identifier + "=1");
+ if (x$ !== 1) {
+ $ERROR('#1.1: var identifier = "x" + "$"; eval("var " + identifier + "=1"); x$ === 1. Actual: ' + (x$));
+ }
+} catch (e) {
+ $ERROR('#1.2: var identifier = "x" + "$"; eval("var " + identifier + "=1"); x$ === 1. Actual: ' + (x$));
+}
+
+//CHECK#2
+try {
+ var identifier = String.fromCharCode(0x0078) + "$";
+ eval("var " + identifier + "=2");
+ if (x$ !== 2) {
+ $ERROR('#2.1: var identifier = String.fromCharCode(0x0078) + "$"; eval("var " + identifier + "=2"); x$ === 2. Actual: ' + (x$));
+ }
+} catch (e) {
+ $ERROR('#2.2: var identifier = String.fromCharCode(0x0078) + "$"; eval("var " + identifier + "=2"); x$ === 2. Actual: ' + (x$));
+}
+
+//CHECK#3
+try {
+ var identifier = "$" + "$";
+ eval("var " + identifier + "=3");
+ if ($$ !== 3) {
+ $ERROR('#3.1: var identifier = "$" + "$"; eval("var " + identifier + "=3"); $$ === 3. Actual: ' + ($$));
+ }
+} catch (e) {
+ $ERROR('#3.2: var identifier = "$" + "$"; eval("var " + identifier + "=3"); $$ === 3. Actual: ' + ($$));
+}
+
+//CHECK#4
+try {
+ var identifier = String.fromCharCode(0x0024) + String.fromCharCode(0x0024);
+ eval("var " + identifier + "=4");
+ if ($$ !== 4) {
+ $ERROR('#4.1: var identifier = String.fromCharCode(0x0024) + String.fromCharCode(0x0024); eval("var " + identifier + "=4"); $$ === 4. Actual: ' + ($$));
+ }
+} catch (e) {
+ $ERROR('#4.2: var identifier = String.fromCharCode(0x0024) + String.fromCharCode(0x0024); eval("var " + identifier + "=4"); $$ === 4. Actual: ' + ($$));
+}
+
+//CHECK#5
+try {
+ var identifier = "_" + "$";
+ eval("var " + identifier + "=5");
+ if (_$ !== 5) {
+ $ERROR('#5.1: var identifier = "_" + "$"; eval("var " + identifier + "=5"); _$ === 5. Actual: ' + (_$));
+ }
+} catch (e) {
+ $ERROR('#5.2: var identifier = "_" + "$"; eval("var " + identifier + "=5"); _$ === 5. Actual: ' + (_$));
+}
+
+//CHECK#6
+try {
+ var \u0078$ = 6;
+ if (x$ !== 6) {
+ $ERROR('#6.1: var \\u0078$ = 1; x$ === 6. Actual: ' + (x$));
+ }
+} catch (e) {
+ $ERROR('#6.2: var \\u0078$ = 1; x$ === 6. Actual: ' + (x$));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T3.js
new file mode 100644
index 000000000..35118249e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T3.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.1_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: IdentifierStart;
+ * @description: IdentifierStart :: _;
+*/
+
+//CHECK#1
+try {
+ var identifier = "x" + "_";
+ eval("var " + identifier + "=1");
+ if (x_ !== 1) {
+ $ERROR('#1.1: var identifier = "x" + "_"; eval("var " + identifier + "=1"); x_ === 1. Actual: ' + (x_));
+ }
+} catch (e) {
+ $ERROR('#1.2: var identifier = "x" + "_"; eval("var " + identifier + "=1"); x_ === 1. Actual: ' + (x_));
+}
+
+//CHECK#2
+try {
+ var identifier = String.fromCharCode(0x0078) + "_";
+ eval("var " + identifier + "=2");
+ if (x_ !== 2) {
+ $ERROR('#2.1: var identifier = String.fromCharCode(0x0078) + "_"; eval("var " + identifier + "=2"); x_ === 2. Actual: ' + (x_));
+ }
+} catch (e) {
+ $ERROR('#2.2: var identifier = String.fromCharCode(0x0078) + "_"; eval("var " + identifier + "=2"); x_ === 2. Actual: ' + (x_));
+}
+
+//CHECK#3
+try {
+ var identifier = "_" + "_";
+ eval("var " + identifier + "=3");
+ if (__ !== 3) {
+ $ERROR('#3.1: var identifier = "_" + "_"; eval("var " + identifier + "=3"); __ === 3. Actual: ' + (__));
+ }
+} catch (e) {
+ $ERROR('#3.2: var identifier = "_" + "_"; eval("var " + identifier + "=3"); __ === 3. Actual: ' + (__));
+}
+
+//CHECK#4
+try {
+ var identifier = String.fromCharCode(0x005F) + String.fromCharCode(0x005F);
+ eval("var " + identifier + "=4");
+ if (__ !== 4) {
+ $ERROR('#4.1: var identifier = String.fromCharCode(0x005F) + String.fromCharCode(0x005F); eval("var " + identifier + "=4"); __ === 4. Actual: ' + (__));
+ }
+} catch (e) {
+ $ERROR('#4.2: var identifier = String.fromCharCode(0x005F) + String.fromCharCode(0x005F); eval("var " + identifier + "=4"); __ === 4. Actual: ' + (__));
+}
+
+//CHECK#5
+try {
+ var identifier = "_" + "_";
+ eval("var " + identifier + "=5");
+ if (__ !== 5) {
+ $ERROR('#5.1: var identifier = "_" + "_"; eval("var " + identifier + "=5"); __ === 5. Actual: ' + (__));
+ }
+} catch (e) {
+ $ERROR('#5.2: var identifier = "_" + "_"; eval("var " + identifier + "=5"); __ === 5. Actual: ' + (__));
+}
+
+//CHECK#6
+try {
+ var \u0078_ = 6;
+ if (x_ !== 6) {
+ $ERROR('#6.1: var \\u0078_ = 1; x_ === 6. Actual: ' + (x_));
+ }
+} catch (e) {
+ $ERROR('#6.2: var \\u0078_ = 1; x_ === 6. Actual: ' + (x_));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T4.js
new file mode 100644
index 000000000..a71dd55d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A2.1_T4.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.1_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: IdentifierStart;
+ * @description: IdentifierStart :: \UnicodeEscapeSequence;
+*/
+
+//CHECK#1
+try {
+ var x\u0078 = 1;
+ if (xx !== 1) {
+ $ERROR('#1.1: var x\\u0078 = 1; xx === 1. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#1.2: var x\\u0078 = 1; xx === 1. Actual: ' + (xx));
+}
+
+//CHECK#2
+try {
+ var \u0078\u0078 = 2;
+ if (xx !== 2) {
+ $ERROR('#2.1: var \\u0078\\u0078 = 1; xx === 2. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#2.2: var \\u0078\\u0078 = 1; xx === 2. Actual: ' + (xx));
+}
+
+//CHECK#3
+try {
+ var \u0024\u0024 = 3;
+ if ($$ !== 3) {
+ $ERROR('#3.1: var \\u0024\\u0024 = 1; $$ === 3. Actual: ' + ($$));
+ }
+} catch (e) {
+ $ERROR('#3.2: var \\u0024\\u0024 = 1; $$ === 3. Actual: ' + ($$));
+}
+
+//CHECK#4
+try {
+ var \u005F\u005F = 4;
+ if (__ !== 4) {
+ $ERROR('#4.1: var \\u005F\\u005F = 1; __ === 4. Actual: ' + (__));
+ }
+} catch (e) {
+ $ERROR('#4.2: var \\u005F\\u005F = 1; __ === 4. Actual: ' + (__));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.1_T1.js
new file mode 100644
index 000000000..bc78e0374
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.1_T1.js
@@ -0,0 +1,115 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A4.1_T1;
+ * @section: 7.6;
+ * @assertion: Correct interpretation of ENGLISH ALPHABET;
+ * @description: Check ENGLISH CAPITAL ALPHABET;
+*/
+
+//CHECK#A-Z
+\u0041 = 1;
+if (A !== 1) {
+ $ERROR('#A');
+}
+\u0042 = 1;
+if (B !== 1) {
+ $ERROR('#B');
+}
+\u0043 = 1;
+if (C !== 1) {
+ $ERROR('#C');
+}
+\u0044 = 1;
+if (D !== 1) {
+ $ERROR('#D');
+}
+\u0045 = 1;
+if (E !== 1) {
+ $ERROR('#E');
+}
+\u0046 = 1;
+if (F !== 1) {
+ $ERROR('#F');
+}
+\u0047 = 1;
+if (G !== 1) {
+ $ERROR('#G');
+}
+\u0048 = 1;
+if (H !== 1) {
+ $ERROR('#H');
+}
+\u0049 = 1;
+if (I !== 1) {
+ $ERROR('#I');
+}
+\u004A = 1;
+if (J !== 1) {
+ $ERROR('#J');
+}
+\u004B = 1;
+if (K !== 1) {
+ $ERROR('#K');
+}
+\u004C = 1;
+if (L !== 1) {
+ $ERROR('#L');
+}
+\u004D = 1;
+if (M !== 1) {
+ $ERROR('#M');
+}
+\u004E = 1;
+if (N !== 1) {
+ $ERROR('#N');
+}
+\u004F = 1;
+if (O !== 1) {
+ $ERROR('#O');
+}
+\u0050 = 1;
+if (P !== 1) {
+ $ERROR('#P');
+}
+\u0051 = 1;
+if (Q !== 1) {
+ $ERROR('#Q');
+}
+\u0052 = 1;
+if (R !== 1) {
+ $ERROR('#R');
+}
+\u0053 = 1;
+if (S !== 1) {
+ $ERROR('#S');
+}
+\u0054 = 1;
+if (T !== 1) {
+ $ERROR('#T');
+}
+\u0055 = 1;
+if (U !== 1) {
+ $ERROR('#U');
+}
+\u0056 = 1;
+if (V !== 1) {
+ $ERROR('#V');
+}
+\u0057 = 1;
+if (W !== 1) {
+ $ERROR('#W');
+}
+\u0058 = 1;
+if (X !== 1) {
+ $ERROR('#X');
+}
+\u0059 = 1;
+if (Y !== 1) {
+ $ERROR('#Y');
+}
+\u005A = 1;
+if (Z !== 1) {
+ $ERROR('#Z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.1_T2.js
new file mode 100644
index 000000000..8add4b80e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.1_T2.js
@@ -0,0 +1,116 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A4.1_T2;
+ * @section: 7.6;
+ * @assertion: Correct interpretation of ENGLISH ALPHABET;
+ * @description: Check ENGLISH SMALL ALPHABET;
+*/
+
+//CHECK#a-z
+\u0061 = 1;
+if (a !== 1) {
+ $ERROR('#a');
+}
+\u0062 = 1;
+if (b !== 1) {
+ $ERROR('#b');
+}
+\u0063 = 1;
+if (c !== 1) {
+ $ERROR('#c');
+}
+\u0064 = 1;
+if (d !== 1) {
+ $ERROR('#d');
+}
+\u0065 = 1;
+if (e !== 1) {
+ $ERROR('#e');
+}
+\u0066 = 1;
+if (f !== 1) {
+ $ERROR('#f');
+}
+\u0067 = 1;
+if (g !== 1) {
+ $ERROR('#g');
+}
+\u0068 = 1;
+if (h !== 1) {
+ $ERROR('#h');
+}
+\u0069 = 1;
+if (i !== 1) {
+ $ERROR('#i');
+}
+\u006A = 1;
+if (j !== 1) {
+ $ERROR('#j');
+}
+\u006B = 1;
+if (k !== 1) {
+ $ERROR('#k');
+}
+\u006C = 1;
+if (l !== 1) {
+ $ERROR('#l');
+}
+\u006D = 1;
+if (m !== 1) {
+ $ERROR('#m');
+}
+\u006E = 1;
+if (n !== 1) {
+ $ERROR('#n');
+}
+\u006F = 1;
+if (o !== 1) {
+ $ERROR('#o');
+}
+\u0070 = 1;
+if (p !== 1) {
+ $ERROR('#p');
+}
+\u0071 = 1;
+if (q !== 1) {
+ $ERROR('#q');
+}
+\u0072 = 1;
+if (r !== 1) {
+ $ERROR('#r');
+}
+\u0073 = 1;
+if (s !== 1) {
+ $ERROR('#s');
+}
+\u0074 = 1;
+if (t !== 1) {
+ $ERROR('#t');
+}
+\u0075 = 1;
+if (u !== 1) {
+ $ERROR('#u');
+}
+\u0076 = 1;
+if (v !== 1) {
+ $ERROR('#v');
+}
+\u0077 = 1;
+if (w !== 1) {
+ $ERROR('#w');
+}
+\u0078 = 1;
+if (x !== 1) {
+ $ERROR('#x');
+}
+\u0079 = 1;
+if (y !== 1) {
+ $ERROR('#y');
+}
+\u007A = 1;
+if (z !== 1) {
+ $ERROR('#z');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.2_T1.js
new file mode 100644
index 000000000..12e181f20
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.2_T1.js
@@ -0,0 +1,143 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A4.2_T1;
+ * @section: 7.6;
+ * @assertion: Correct interpretation of RUSSIAN ALPHABET;
+ * @description: Check RUSSIAN CAPITAL ALPHABET;
+*/
+
+//CHECK#А-Я
+\u0410 = 1;
+if (А !== 1) {
+ $ERROR('#А');
+}
+\u0411 = 1;
+if (Б !== 1) {
+ $ERROR('#Б');
+}
+\u0412 = 1;
+if (В !== 1) {
+ $ERROR('#В');
+}
+\u0413 = 1;
+if (Г !== 1) {
+ $ERROR('#Г');
+}
+\u0414 = 1;
+if (Д !== 1) {
+ $ERROR('#Д');
+}
+\u0415 = 1;
+if (Е !== 1) {
+ $ERROR('#Е');
+}
+\u0416 = 1;
+if (Ж !== 1) {
+ $ERROR('#Ж');
+}
+\u0417 = 1;
+if (З !== 1) {
+ $ERROR('#З');
+}
+\u0418 = 1;
+if (И !== 1) {
+ $ERROR('#И');
+}
+\u0419 = 1;
+if (Й !== 1) {
+ $ERROR('#Й');
+}
+\u041A = 1;
+if (К !== 1) {
+ $ERROR('#К');
+}
+\u041B = 1;
+if (Л !== 1) {
+ $ERROR('#Л');
+}
+\u041C = 1;
+if (М !== 1) {
+ $ERROR('#М');
+}
+\u041D = 1;
+if (Н !== 1) {
+ $ERROR('#Н');
+}
+\u041E = 1;
+if (О !== 1) {
+ $ERROR('#О');
+}
+\u041F = 1;
+if (П !== 1) {
+ $ERROR('#П');
+}
+\u0420 = 1;
+if (Р !== 1) {
+ $ERROR('#Р');
+}
+\u0421 = 1;
+if (С !== 1) {
+ $ERROR('#С');
+}
+\u0422 = 1;
+if (Т !== 1) {
+ $ERROR('#Т');
+}
+\u0423 = 1;
+if (У !== 1) {
+ $ERROR('#У');
+}
+\u0424 = 1;
+if (Ф !== 1) {
+ $ERROR('#Ф');
+}
+\u0425 = 1;
+if (Х !== 1) {
+ $ERROR('#Х');
+}
+\u0426 = 1;
+if (Ц !== 1) {
+ $ERROR('#Ц');
+}
+\u0427 = 1;
+if (Ч !== 1) {
+ $ERROR('#Ч');
+}
+\u0428 = 1;
+if (Ш !== 1) {
+ $ERROR('#Ш');
+}
+\u0429 = 1;
+if (Щ !== 1) {
+ $ERROR('#Щ');
+}
+\u042A = 1;
+if (Ъ !== 1) {
+ $ERROR('#Ъ');
+}
+\u042B = 1;
+if (Ы !== 1) {
+ $ERROR('#Ы');
+}
+\u042C = 1;
+if (Ь !== 1) {
+ $ERROR('#Ь');
+}
+\u042D = 1;
+if (Э !== 1) {
+ $ERROR('#Э');
+}
+\u042E = 1;
+if (Ю !== 1) {
+ $ERROR('#Ю');
+}
+\u042F = 1;
+if (Я !== 1) {
+ $ERROR('#Я');
+}
+\u0401 = 1;
+if (Ё !== 1) {
+ $ERROR('#Ё');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.2_T2.js
new file mode 100644
index 000000000..6ed7c177b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.2_T2.js
@@ -0,0 +1,143 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A4.2_T2;
+ * @section: 7.6;
+ * @assertion: Correct interpretation of RUSSIAN ALPHABET;
+ * @description: Check RUSSIAN SMALL ALPHABET;
+*/
+
+//CHECK#а-я
+\u0430 = 1;
+if (а !== 1) {
+ $ERROR('#а');
+}
+\u0431 = 1;
+if (б !== 1) {
+ $ERROR('#б');
+}
+\u0432 = 1;
+if (в !== 1) {
+ $ERROR('#в');
+}
+\u0433 = 1;
+if (г !== 1) {
+ $ERROR('#г');
+}
+\u0434 = 1;
+if (д !== 1) {
+ $ERROR('#д');
+}
+\u0435 = 1;
+if (е !== 1) {
+ $ERROR('#е');
+}
+\u0436 = 1;
+if (ж !== 1) {
+ $ERROR('#ж');
+}
+\u0437 = 1;
+if (з !== 1) {
+ $ERROR('#з');
+}
+\u0438 = 1;
+if (и !== 1) {
+ $ERROR('#и');
+}
+\u0439 = 1;
+if (й !== 1) {
+ $ERROR('#й');
+}
+\u043A = 1;
+if (к !== 1) {
+ $ERROR('#к');
+}
+\u043B = 1;
+if (л !== 1) {
+ $ERROR('#л');
+}
+\u043C = 1;
+if (м !== 1) {
+ $ERROR('#м');
+}
+\u043D = 1;
+if (н !== 1) {
+ $ERROR('#н');
+}
+\u043E = 1;
+if (о !== 1) {
+ $ERROR('#о');
+}
+\u043F = 1;
+if (п !== 1) {
+ $ERROR('#п');
+}
+\u0440 = 1;
+if (р !== 1) {
+ $ERROR('#р');
+}
+\u0441 = 1;
+if (с !== 1) {
+ $ERROR('#с');
+}
+\u0442 = 1;
+if (т !== 1) {
+ $ERROR('#т');
+}
+\u0443 = 1;
+if (у !== 1) {
+ $ERROR('#у');
+}
+\u0444 = 1;
+if (ф !== 1) {
+ $ERROR('#ф');
+}
+\u0445 = 1;
+if (х !== 1) {
+ $ERROR('#х');
+}
+\u0446 = 1;
+if (ц !== 1) {
+ $ERROR('#ц');
+}
+\u0447 = 1;
+if (ч !== 1) {
+ $ERROR('#ч');
+}
+\u0448 = 1;
+if (ш !== 1) {
+ $ERROR('#ш');
+}
+\u0449 = 1;
+if (щ !== 1) {
+ $ERROR('#щ');
+}
+\u044A = 1;
+if (ъ !== 1) {
+ $ERROR('#ъ');
+}
+\u044B = 1;
+if (ы !== 1) {
+ $ERROR('#ы');
+}
+\u044C = 1;
+if (ь !== 1) {
+ $ERROR('#ь');
+}
+\u044D = 1;
+if (э !== 1) {
+ $ERROR('#э');
+}
+\u044E = 1;
+if (ю !== 1) {
+ $ERROR('#ю');
+}
+\u044F = 1;
+if (я !== 1) {
+ $ERROR('#я');
+}
+\u0451 = 1;
+if (ё !== 1) {
+ $ERROR('#ё');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.3_T1.js
new file mode 100644
index 000000000..909907b07
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.6_Identifiers/S7.6_A4.3_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A4.3_T1;
+ * @section: 7.6;
+ * @assertion: Correct interpretation of DIGITS;
+ * @description: Identifier is $+ANY_DIGIT;
+*/
+
+//CHECK#0-9
+$\u0030 = 0;
+if ($0 !== 0) {
+ $ERROR('#0: $\\u0030 = 0; $0 === 0');
+}
+$\u0031 = 1;
+if ($1 !== 1) {
+ $ERROR('#1: $\\u0031 = 1; $1 === 1');
+}
+$\u0032 = 2;
+if ($2 !== 2) {
+ $ERROR('#2: $\\u0032 = 2; $2 === 2');
+}
+$\u0033 = 3;
+if ($3 !== 3) {
+ $ERROR('#3: $\\u0033 = 3; $3 === 3');
+}
+$\u0034 = 4;
+if ($4 !== 4) {
+ $ERROR('#4: $\\u0034 = 4; $4 === 4');
+}
+$\u0035 = 5;
+if ($5 !== 5) {
+ $ERROR('#5: $\\u0035 = 5; $5 === 5');
+}
+$\u0036 = 6;
+if ($6 !== 6) {
+ $ERROR('#6: $\\u0036 = 6; $6 === 6');
+}
+$\u0037 = 7;
+if ($7 !== 7) {
+ $ERROR('#7: $\\u0037 = 7; $7 === 7');
+}
+$\u0038 = 8;
+if ($8 !== 8) {
+ $ERROR('#8: $\\u0038 = 8; $8 === 8');
+}
+$\u0039 = 9;
+if ($9 !== 9) {
+ $ERROR('#9: $\\u0039 = 9; $9 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A1.js
new file mode 100644
index 000000000..183ddb1f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_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.
+
+/**
+ * @name: S7.7_A1;
+ * @section: 7.7;
+ * @assertion: Correct interpretation of all punctuators;
+ * @description: Using all punctuators;
+*/
+
+//CHECK#1
+ ({});[];
+ this.NaN;
+ 1 < 2 > 3 <= 4 >= 5 == 6 != 7 === 8 !== 9;
+ 1 + 2 - 3 * 4 % 5 / 6 << 7 >> 8 >>> 9;
+ this.NaN++; ++this.NaN; this.NaN--; --this.NaN;
+ 1 & 2 | 3 ^ 4 && !5 || ~6;
+ 1 ? 2 : 3;
+ this.NaN = 1; this.NaN += 2; this.NaN -= 3; this.NaN *= 4; this.NaN /= 5;
+ this.NaN %= 6; this.NaN <<= 7; this.NaN >>= 8; this.NaN >>>= 9;
+ this.NaN &= 1; this.NaN |= 2; this.NaN ^= 3;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T1.js
new file mode 100644
index 000000000..c857f1e23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T1;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use {} as a Unicode \u007B\u007D;
+ * @negative
+*/
+
+\u007B\u007D;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T10.js
new file mode 100644
index 000000000..88cc253e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T10.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T10;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use / as a Unicode \u002F;
+ * @negative
+*/
+
+1\u002F2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T2.js
new file mode 100644
index 000000000..aa47e4a01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T2;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use () as Unicode \u00281\u0029;
+ * @negative
+*/
+
+\u00281\u0029;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T3.js
new file mode 100644
index 000000000..b8353e0aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T3;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use [] as a Unicode \u005B\u005D;
+ * @negative
+*/
+
+\u005B\u005D;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T4.js
new file mode 100644
index 000000000..daa48be58
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T4.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T4;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use ; as a Unicode \u003B;
+ * @negative
+*/
+
+\u003B;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T5.js
new file mode 100644
index 000000000..019e7f87d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T5.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T5;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use . as a Unicode \u002E;
+ * @negative
+*/
+
+x = 1;
+this\u002Ex;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T6.js
new file mode 100644
index 000000000..4a6e40e5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T6.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T6;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use , as a Unicode \u002C;
+ * @negative
+*/
+
+1\u002C2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T7.js
new file mode 100644
index 000000000..3a09aaa53
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T7.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T7;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use + as a Unicode \u002B;
+ * @negative
+*/
+
+1\u002B2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T8.js
new file mode 100644
index 000000000..4a6d7bf8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T8.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T8;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use - as a Unicode \u002D;
+ * @negative
+*/
+
+1\u002D2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T9.js
new file mode 100644
index 000000000..5419bbf97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.7_Punctuators/S7.7_A2_T9.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.7_A2_T9;
+ * @section: 7.7;
+ * @assertion: Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits;
+ * @description: Try to use * as a Unicode \u002A;
+ * @negative
+*/
+
+1\u002A2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.1_Null_Literals/S7.8.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.1_Null_Literals/S7.8.1_A1_T1.js
new file mode 100644
index 000000000..df432c8e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.1_Null_Literals/S7.8.1_A1_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.1_A1_T1;
+ * @section: 7.8.1;
+ * @assertion: Literal :: NullLiteral;
+ * @description: Check null === null;
+*/
+
+//CHECK#1
+if (null !== null) {
+ $ERROR('#1: null === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.1_Null_Literals/S7.8.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.1_Null_Literals/S7.8.1_A1_T2.js
new file mode 100644
index 000000000..8c1e0f78e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.1_Null_Literals/S7.8.1_A1_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.1_A1_T2;
+ * @section: 7.8.1;
+ * @assertion: Literal :: NullLiteral;
+ * @description: Check RegExp("0").exec("1") === null;
+*/
+
+//CHECK#1
+if (RegExp("0").exec("1") !== null) {
+ $ERROR('#1: RegExp("0").exec("1") === null');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.2_Boolean_Literals/S7.8.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.2_Boolean_Literals/S7.8.2_A1_T1.js
new file mode 100644
index 000000000..c016eaf62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.2_Boolean_Literals/S7.8.2_A1_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.2_A1_T1;
+ * @section: 7.8.2;
+ * @assertion: Literal :: BooleanLiteral;
+ * @description: BooleanLiteral :: true;
+*/
+
+//CHECK#1
+if (Boolean(true) !== true) {
+ $ERROR('#1: Boolean(true) === true. Actual: Boolean(true) === ' + (Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.2_Boolean_Literals/S7.8.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.2_Boolean_Literals/S7.8.2_A1_T2.js
new file mode 100644
index 000000000..d9fe3877a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.2_Boolean_Literals/S7.8.2_A1_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.2_A1_T2;
+ * @section: 7.8.2;
+ * @assertion: Literal :: BooleanLiteral;
+ * @description: BooleanLiteral :: false;
+*/
+
+//CHECK#1
+if (Boolean(false) !== false) {
+ $ERROR('#1: Boolean(false) === false. Actual: Boolean(false) === ' + (Boolean(false)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.1_T1.js
new file mode 100644
index 000000000..c33ec6ee0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.1_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.1_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral;
+ * @description: DecimalIntegerLiteral :: 0, NoNZeroDigit;
+*/
+
+//CHECK#0
+if (0 !== 0) {
+ $ERROR('#0: 0 === 0');
+}
+
+//CHECK#1
+if (1 !== 1) {
+ $ERROR('#1: 1 === 1');
+}
+
+//CHECK#2
+if (2 !== 2) {
+ $ERROR('#2: 2 === 2');
+}
+
+//CHECK#3
+if (3 !== 3) {
+ $ERROR('#3: 3 === 3');
+}
+
+//CHECK#4
+if (4 !== 4) {
+ $ERROR('#4: 4 === 4');
+}
+
+//CHECK#5
+if (5 !== 5) {
+ $ERROR('#5: 5 === 5');
+}
+
+//CHECK#6
+if (6 !== 6) {
+ $ERROR('#6: 6 === 6');
+}
+
+//CHECK#7
+if (7 !== 7) {
+ $ERROR('#7: 7 === 7');
+}
+
+//CHECK#8
+if (8 !== 8) {
+ $ERROR('#8: 8 === 8');
+}
+
+//CHECK#9
+if (9 !== 9) {
+ $ERROR('#9: 9 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.1_T2.js
new file mode 100644
index 000000000..197f9912a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.1_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.1_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral;
+ * @description: DecimalIntegerLiteral :: NoNZeroDigit DecimalDigits;
+*/
+
+
+//CHECK#1
+if (11 !== 11) {
+ $ERROR('#1: 11 === 11');
+}
+
+//CHECK#2
+if (22 !== 22) {
+ $ERROR('#2: 22 === 22');
+}
+
+//CHECK#3
+if (33 !== 33) {
+ $ERROR('#3: 33 === 33');
+}
+
+//CHECK#4
+if (44 !== 44) {
+ $ERROR('#4: 44 === 44');
+}
+
+//CHECK#5
+if (55 !== 55) {
+ $ERROR('#5: 55 === 55');
+}
+
+//CHECK#6
+if (66 !== 66) {
+ $ERROR('#6: 66 === 66');
+}
+
+//CHECK#7
+if (77 !== 77) {
+ $ERROR('#7: 77 === 77');
+}
+
+//CHECK#8
+if (88 !== 88) {
+ $ERROR('#8: 88 === 88');
+}
+
+//CHECK#9
+if (99 !== 99) {
+ $ERROR('#9: 99 === 99');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T1.js
new file mode 100644
index 000000000..c644424ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.2_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral ExponentPart;
+ * @description: ExponentPart :: e DecimalDigits;
+*/
+
+//CHECK#0
+if (0e1 !== 0) {
+ $ERROR('#0: 0e1 === 0');
+}
+
+//CHECK#1
+if (1e1 !== 10) {
+ $ERROR('#1: 1e1 === 10');
+}
+
+//CHECK#2
+if (2e1 !== 20) {
+ $ERROR('#2: 2e1 === 20');
+}
+
+//CHECK#3
+if (3e1 !== 30) {
+ $ERROR('#3: 3e1 === 30');
+}
+
+//CHECK#4
+if (4e1 !== 40) {
+ $ERROR('#4: 4e1 === 40');
+}
+
+//CHECK#5
+if (5e1 !== 50) {
+ $ERROR('#5: 5e1 === 50');
+}
+
+//CHECK#6
+if (6e1 !== 60) {
+ $ERROR('#6: 6e1 === 60');
+}
+
+//CHECK#7
+if (7e1 !== 70) {
+ $ERROR('#7: 7e1 === 70');
+}
+
+//CHECK#8
+if (8e1 !== 80) {
+ $ERROR('#8: 8e1 === 80');
+}
+
+//CHECK#9
+if (9e1 !== 90) {
+ $ERROR('#9: 9e1 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T2.js
new file mode 100644
index 000000000..b8c469d56
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.2_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral ExponentPart;
+ * @description: ExponentPart :: E DecimalDigits;
+*/
+
+//CHECK#0
+if (0E1 !== 0) {
+ $ERROR('#0: 0E1 === 0');
+}
+
+//CHECK#1
+if (1E1 !== 10) {
+ $ERROR('#1: 1E1 === 1');
+}
+
+//CHECK#2
+if (2E1 !== 20) {
+ $ERROR('#2: 2E1 === 20');
+}
+
+//CHECK#3
+if (3E1 !== 30) {
+ $ERROR('#3: 3E1 === 30');
+}
+
+//CHECK#4
+if (4E1 !== 40) {
+ $ERROR('#4: 4E1 === 40');
+}
+
+//CHECK#5
+if (5E1 !== 50) {
+ $ERROR('#5: 5E1 === 50');
+}
+
+//CHECK#6
+if (6E1 !== 60) {
+ $ERROR('#6: 6E1 === 60');
+}
+
+//CHECK#7
+if (7E1 !== 70) {
+ $ERROR('#7: 7E1 === 70');
+}
+
+//CHECK#8
+if (8E1 !== 80) {
+ $ERROR('#8: 8E1 === 80');
+}
+
+//CHECK#9
+if (9E1 !== 90) {
+ $ERROR('#9: 9E1 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T3.js
new file mode 100644
index 000000000..f40072b36
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T3.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.2_T3;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral ExponentPart;
+ * @description: ExponentPart :: e -DecimalDigits;
+*/
+
+//CHECK#0
+if (0e-1 !== 0) {
+ $ERROR('#0: 0e-1 === 0');
+}
+
+//CHECK#1
+if (1e-1 !== 0.1) {
+ $ERROR('#1: 1e-1 === 0.1');
+}
+
+//CHECK#2
+if (2e-1 !== 0.2) {
+ $ERROR('#2: 2e-1 === 0.2');
+}
+
+//CHECK#3
+if (3e-1 !== 0.3) {
+ $ERROR('#3: 3e-1 === 0.3');
+}
+
+//CHECK#4
+if (4e-1 !== 0.4) {
+ $ERROR('#4: 4e-1 === 0.4');
+}
+
+//CHECK#5
+if (5e-1 !== 0.5) {
+ $ERROR('#5: 5e-1 === 0.5');
+}
+
+//CHECK#6
+if (6e-1 !== 0.6) {
+ $ERROR('#6: 6e-1 === 0.6');
+}
+
+//CHECK#7
+if (7e-1 !== 0.7) {
+ $ERROR('#7: 7e-1 === 0.7');
+}
+
+//CHECK#8
+if (8e-1 !== 0.8) {
+ $ERROR('#8: 8e-1 === 0.8');
+}
+
+//CHECK#9
+if (9e-1 !== 0.9) {
+ $ERROR('#9: 9e-1 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T4.js
new file mode 100644
index 000000000..c2771dbc4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.2_T4;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral ExponentPart;
+ * @description: ExponentPart :: E -DecimalDigits;
+*/
+
+//CHECK#0
+if (0E-1 !== 0) {
+ $ERROR('#0: 0E-1 === 0');
+}
+
+//CHECK#1
+if (1E-1 !== 0.1) {
+ $ERROR('#1: 1E-1 === 0.1');
+}
+
+//CHECK#2
+if (2E-1 !== 0.2) {
+ $ERROR('#2: 2E-1 === 0.2');
+}
+
+//CHECK#3
+if (3E-1 !== 0.3) {
+ $ERROR('#3: 3E-1 === 0.3');
+}
+
+//CHECK#4
+if (4E-1 !== 0.4) {
+ $ERROR('#4: 4E-1 === 0.4');
+}
+
+//CHECK#5
+if (5E-1 !== 0.5) {
+ $ERROR('#5: 5E-1 === 0.5');
+}
+
+//CHECK#6
+if (6E-1 !== 0.6) {
+ $ERROR('#6: 6E-1 === 0.6');
+}
+
+//CHECK#7
+if (7E-1 !== 0.7) {
+ $ERROR('#7: 7E-1 === 0.7');
+}
+
+//CHECK#8
+if (8E-1 !== 0.8) {
+ $ERROR('#8: 8E-1 === 0.8');
+}
+
+//CHECK#9
+if (9E-1 !== 0.9) {
+ $ERROR('#9: 9E-1 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T5.js
new file mode 100644
index 000000000..0cc0a0569
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T5.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.2_T5;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral ExponentPart;
+ * @description: ExponentPart :: e +DecimalDigits;
+*/
+
+//CHECK#0
+if (0e+1 !== 0) {
+ $ERROR('#0: 0e+1 === 0');
+}
+
+//CHe+CK#1
+if (1e+1 !== 10) {
+ $ERROR('#1: 1e+1 === 10');
+}
+
+//CHe+CK#2
+if (2e+1 !== 20) {
+ $ERROR('#2: 2e+1 === 20');
+}
+
+//CHe+CK#3
+if (3e+1 !== 30) {
+ $ERROR('#3: 3e+1 === 30');
+}
+
+//CHe+CK#4
+if (4e+1 !== 40) {
+ $ERROR('#4: 4e+1 === 40');
+}
+
+//CHe+CK#5
+if (5e+1 !== 50) {
+ $ERROR('#5: 5e+1 === 50');
+}
+
+//CHe+CK#6
+if (6e+1 !== 60) {
+ $ERROR('#6: 6e+1 === 60');
+}
+
+//CHe+CK#7
+if (7e+1 !== 70) {
+ $ERROR('#7: 7e+1 === 70');
+}
+
+//CHe+CK#8
+if (8e+1 !== 80) {
+ $ERROR('#8: 8e+1 === 80');
+}
+
+//CHe+CK#9
+if (9e+1 !== 90) {
+ $ERROR('#9: 9e+1 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T6.js
new file mode 100644
index 000000000..3f50e4f26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T6.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.2_T6;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral ExponentPart;
+ * @description: ExponentPart :: E +DecimalDigits;
+*/
+
+//CHECK#0
+if (0E+1 !== 0) {
+ $ERROR('#0: 0E+1 === 0');
+}
+
+//CHE+CK#1
+if (1E+1 !== 10) {
+ $ERROR('#1: 1E+1 === 10');
+}
+
+//CHE+CK#2
+if (2E+1 !== 20) {
+ $ERROR('#2: 2E+1 === 20');
+}
+
+//CHE+CK#3
+if (3E+1 !== 30) {
+ $ERROR('#3: 3E+1 === 30');
+}
+
+//CHE+CK#4
+if (4E+1 !== 40) {
+ $ERROR('#4: 4E+1 === 40');
+}
+
+//CHE+CK#5
+if (5E+1 !== 50) {
+ $ERROR('#5: 5E+1 === 50');
+}
+
+//CHE+CK#6
+if (6E+1 !== 60) {
+ $ERROR('#6: 6E+1 === 60');
+}
+
+//CHE+CK#7
+if (7E+1 !== 70) {
+ $ERROR('#7: 7E+1 === 70');
+}
+
+//CHE+CK#8
+if (8E+1 !== 80) {
+ $ERROR('#8: 8E+1 === 80');
+}
+
+//CHE+CK#9
+if (9E+1 !== 90) {
+ $ERROR('#9: 9E+1 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T7.js
new file mode 100644
index 000000000..62e8241eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T7.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.2_T7;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral ExponentPart;
+ * @description: ExponentPart :: e 0;
+*/
+
+//CHECK#0
+if (0e0 !== 0) {
+ $ERROR('#0: 0e0 === 0');
+}
+
+//CHECK#1
+if (1e0 !== 1) {
+ $ERROR('#1: 1e0 === 1');
+}
+
+//CHECK#2
+if (2e0 !== 2) {
+ $ERROR('#2: 2e0 === 2');
+}
+
+//CHECK#3
+if (3e0 !== 3) {
+ $ERROR('#3: 3e0 === 3');
+}
+
+//CHECK#4
+if (4e0 !== 4) {
+ $ERROR('#4: 4e0 === 4');
+}
+
+//CHECK#5
+if (5e0 !== 5) {
+ $ERROR('#5: 5e0 === 5');
+}
+
+//CHECK#6
+if (6e0 !== 6) {
+ $ERROR('#6: 6e0 === 6');
+}
+
+//CHECK#7
+if (7e0 !== 7) {
+ $ERROR('#7: 7e0 === 7');
+}
+
+//CHECK#8
+if (8e0 !== 8) {
+ $ERROR('#8: 8e0 === 8');
+}
+
+//CHECK#9
+if (9e0 !== 9) {
+ $ERROR('#9: 9e0 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T8.js
new file mode 100644
index 000000000..73cddcc61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A1.2_T8.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A1.2_T8;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral ExponentPart;
+ * @description: ExponentPart :: E 0;
+*/
+
+//CHECK#0
+if (0E0 !== 0) {
+ $ERROR('#0: 0E0 === 0');
+}
+
+//CHECK#1
+if (1E0 !== 1) {
+ $ERROR('#1: 1E0 === 1');
+}
+
+//CHECK#2
+if (2E0 !== 2) {
+ $ERROR('#2: 2E0 === 2');
+}
+
+//CHECK#3
+if (3E0 !== 3) {
+ $ERROR('#3: 3E0 === 3');
+}
+
+//CHECK#4
+if (4E0 !== 4) {
+ $ERROR('#4: 4E0 === 4');
+}
+
+//CHECK#5
+if (5E0 !== 5) {
+ $ERROR('#5: 5E0 === 5');
+}
+
+//CHECK#6
+if (6E0 !== 6) {
+ $ERROR('#6: 6E0 === 6');
+}
+
+//CHECK#7
+if (7E0 !== 7) {
+ $ERROR('#7: 7E0 === 7');
+}
+
+//CHECK#8
+if (8E0 !== 8) {
+ $ERROR('#8: 8E0 === 8');
+}
+
+//CHECK#9
+if (9E0 !== 9) {
+ $ERROR('#9: 9E0 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T1.js
new file mode 100644
index 000000000..e670bfa24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.1_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits;
+ * @description: Use .DecimalDigit;
+*/
+
+//CHECK#0
+if (.0 !== 0.0) {
+ $ERROR('#0: .0 === 0.0');
+}
+
+//CHECK#1
+if (.1 !== 0.1) {
+ $ERROR('#1: .1 === 0.1');
+}
+
+//CHECK#2
+if (.2 !== 0.2) {
+ $ERROR('#2: .2 === 0.2');
+}
+
+//CHECK#3
+if (.3 !== 0.3) {
+ $ERROR('#3: .3 === 0.3');
+}
+
+//CHECK#4
+if (.4 !== 0.4) {
+ $ERROR('#4: .4 === 0.4');
+}
+
+//CHECK#5
+if (.5 !== 0.5) {
+ $ERROR('#5: .5 === 0.5');
+}
+
+//CHECK#6
+if (.6 !== 0.6) {
+ $ERROR('#6: .6 === 0.6');
+}
+
+//CHECK#7
+if (.7 !== 0.7) {
+ $ERROR('#7: .7 === 0.7');
+}
+
+//CHECK#8
+if (.8 !== 0.8) {
+ $ERROR('#8: .8 === 0.8');
+}
+
+//CHECK#9
+if (.9 !== 0.9) {
+ $ERROR('#9: .9 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T2.js
new file mode 100644
index 000000000..7370cc3cd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.1_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits;
+ * @description: Use .DecimalDigits;
+*/
+
+//CHECK#0
+if (.00 !== 0.00) {
+ $ERROR('#0: .00 === 0.00');
+}
+
+//CHECK#1
+if (.11 !== 0.11) {
+ $ERROR('#1: .11 === 0.11');
+}
+
+//CHECK#2
+if (.22 !== 0.22) {
+ $ERROR('#2: .22 === 0.22');
+}
+
+//CHECK#3
+if (.33 !== 0.33) {
+ $ERROR('#3: .33 === 0.33');
+}
+
+//CHECK#4
+if (.44 !== 0.44) {
+ $ERROR('#4: .44 === 0.44');
+}
+
+//CHECK#5
+if (.55 !== 0.55) {
+ $ERROR('#5: .55 === 0.55');
+}
+
+//CHECK#6
+if (.66 !== 0.66) {
+ $ERROR('#6: .66 === 0.66');
+}
+
+//CHECK#7
+if (.77 !== 0.77) {
+ $ERROR('#7: .77 === 0.77');
+}
+
+//CHECK#8
+if (.88 !== 0.88) {
+ $ERROR('#8: .88 === 0.88');
+}
+
+//CHECK#9
+if (.99 !== 0.99) {
+ $ERROR('#9: .99 === 0.99');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T3.js
new file mode 100644
index 000000000..126e7902d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.1_T3.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.1_T3;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits;
+ * @description: Use .DecimalDigits that have at the end zeros;
+*/
+
+//CHECK#0
+if (.00 !== 0.0) {
+ $ERROR('#0: .0 === 0.0');
+}
+
+//CHECK#1
+if (.10 !== 0.1) {
+ $ERROR('#1: .1 === 0.1');
+}
+
+//CHECK#2
+if (.20 !== 0.2) {
+ $ERROR('#2: .2 === 0.2');
+}
+
+//CHECK#3
+if (.30 !== 0.3) {
+ $ERROR('#3: .3 === 0.3');
+}
+
+//CHECK#4
+if (.40 !== 0.4) {
+ $ERROR('#4: .4 === 0.4');
+}
+
+//CHECK#5
+if (.50 !== 0.5) {
+ $ERROR('#5: .5 === 0.5');
+}
+
+//CHECK#6
+if (.60 !== 0.6) {
+ $ERROR('#6: .6 === 0.6');
+}
+
+//CHECK#7
+if (.70 !== 0.7) {
+ $ERROR('#7: .7 === 0.7');
+}
+
+//CHECK#8
+if (.80 !== 0.8) {
+ $ERROR('#8: .8 === 0.8');
+}
+
+//CHECK#9
+if (.90 !== 0.9) {
+ $ERROR('#9: .9 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T1.js
new file mode 100644
index 000000000..1481c1976
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.2_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits ExponentPart;
+ * @description: ExponentPart :: e DecimalDigits;
+*/
+
+//CHECK#0
+if (.0e1 !== 0) {
+ $ERROR('#0: .0e1 === 0');
+}
+
+//CHECK#1
+if (.1e1 !== 1) {
+ $ERROR('#1: .1e1 === 1');
+}
+
+//CHECK#2
+if (.2e1 !== 2) {
+ $ERROR('#2: .2e1 === 2');
+}
+
+//CHECK#3
+if (.3e1 !== 3) {
+ $ERROR('#3: .3e1 === 3');
+}
+
+//CHECK#4
+if (.4e1 !== 4) {
+ $ERROR('#4: .4e1 === 4');
+}
+
+//CHECK#5
+if (.5e1 !== 5) {
+ $ERROR('#5: .5e1 === 5');
+}
+
+//CHECK#6
+if (.6e1 !== 6) {
+ $ERROR('#6: .6e1 === 6');
+}
+
+//CHECK#7
+if (.7e1 !== 7) {
+ $ERROR('#7: .7e1 === 7');
+}
+
+//CHECK#8
+if (.8e1 !== 8) {
+ $ERROR('#8: .8e1 === 8');
+}
+
+//CHECK#9
+if (.9e1 !== 9) {
+ $ERROR('#9: .9e1 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T2.js
new file mode 100644
index 000000000..19eeabcd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.2_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits ExponentPart;
+ * @description: ExponentPart :: E DecimalDigits;
+*/
+
+//CHECK#0
+if (.0E1 !== 0) {
+ $ERROR('#0: .0E1 === 0');
+}
+
+//CHECK#1
+if (.1E1 !== 1) {
+ $ERROR('#1: .1E1 === 1');
+}
+
+//CHECK#2
+if (.2E1 !== 2) {
+ $ERROR('#2: .2E1 === 2');
+}
+
+//CHECK#3
+if (.3E1 !== 3) {
+ $ERROR('#3: .3E1 === 3');
+}
+
+//CHECK#4
+if (.4E1 !== 4) {
+ $ERROR('#4: .4E1 === 4');
+}
+
+//CHECK#5
+if (.5E1 !== 5) {
+ $ERROR('#5: .5E1 === 5');
+}
+
+//CHECK#6
+if (.6E1 !== 6) {
+ $ERROR('#6: .6E1 === 6');
+}
+
+//CHECK#7
+if (.7E1 !== 7) {
+ $ERROR('#7: .7E1 === 7');
+}
+
+//CHECK#8
+if (.8E1 !== 8) {
+ $ERROR('#8: .8E1 === 8');
+}
+
+//CHECK#9
+if (.9E1 !== 9) {
+ $ERROR('#9: .9E1 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T3.js
new file mode 100644
index 000000000..d272c9349
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T3.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.2_T3;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits ExponentPart;
+ * @description: ExponentPart :: e +DecimalDigits;
+*/
+
+//CHECK#0
+if (.0e-1 !== 0) {
+ $ERROR('#0: .0e-1 === 0');
+}
+
+//CHECK#1
+if (.1e-1 !== 0.01) {
+ $ERROR('#1: .1e-1 === 0.01');
+}
+
+//CHECK#2
+if (.2e-1 !== 0.02) {
+ $ERROR('#2: .2e-1 === 0.02');
+}
+
+//CHECK#3
+if (.3e-1 !== 0.03) {
+ $ERROR('#3: .3e-1 === 0.03');
+}
+
+//CHECK#4
+if (.4e-1 !== 0.04) {
+ $ERROR('#4: .4e-1 === 0.04');
+}
+
+//CHECK#5
+if (.5e-1 !== 0.05) {
+ $ERROR('#5: .5e-1 === 0.05');
+}
+
+//CHECK#6
+if (.6e-1 !== 0.06) {
+ $ERROR('#6: .6e-1 === 0.06');
+}
+
+//CHECK#7
+if (.7e-1 !== 0.07) {
+ $ERROR('#7: .7e-1 === 0.07');
+}
+
+//CHECK#8
+if (.8e-1 !== 0.08) {
+ $ERROR('#8: .8e-1 === 0.08');
+}
+
+//CHECK#9
+if (.9e-1 !== 0.09) {
+ $ERROR('#9: .9e-1 === 0.09');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T4.js
new file mode 100644
index 000000000..838e9cb12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.2_T4;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits ExponentPart;
+ * @description: ExponentPart :: E +DecimalDigits;
+*/
+
+//CHECK#0
+if (.0E-1 !== 0) {
+ $ERROR('#0: .0E-1 === 0');
+}
+
+//CHECK#1
+if (.1E-1 !== 0.01) {
+ $ERROR('#1: .1E-1 === 0.01');
+}
+
+//CHECK#2
+if (.2E-1 !== 0.02) {
+ $ERROR('#2: .2E-1 === 0.02');
+}
+
+//CHECK#3
+if (.3E-1 !== 0.03) {
+ $ERROR('#3: .3E-1 === 0.03');
+}
+
+//CHECK#4
+if (.4E-1 !== 0.04) {
+ $ERROR('#4: .4E-1 === 0.04');
+}
+
+//CHECK#5
+if (.5E-1 !== 0.05) {
+ $ERROR('#5: .5E-1 === 0.05');
+}
+
+//CHECK#6
+if (.6E-1 !== 0.06) {
+ $ERROR('#6: .6E-1 === 0.06');
+}
+
+//CHECK#7
+if (.7E-1 !== 0.07) {
+ $ERROR('#7: .7E-1 === 0.07');
+}
+
+//CHECK#8
+if (.8E-1 !== 0.08) {
+ $ERROR('#8: .8E-1 === 0.08');
+}
+
+//CHECK#9
+if (.9E-1 !== 0.09) {
+ $ERROR('#9: .9E-1 === 0.09');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T5.js
new file mode 100644
index 000000000..ff9c87c77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T5.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.2_T5;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits ExponentPart;
+ * @description: ExponentPart :: e +DecimalDigits;
+*/
+
+//CHECK#0
+if (.0e+1 !== 0) {
+ $ERROR('#0: .0e+1 === 0');
+}
+
+//CHECK#1
+if (.1e+1 !== 1) {
+ $ERROR('#1: .1e+1 === 1');
+}
+
+//CHECK#2
+if (.2e+1 !== 2) {
+ $ERROR('#2: .2e+1 === 2');
+}
+
+//CHECK#3
+if (.3e+1 !== 3) {
+ $ERROR('#3: .3e+1 === 3');
+}
+
+//CHECK#4
+if (.4e+1 !== 4) {
+ $ERROR('#4: .4e+1 === 4');
+}
+
+//CHECK#5
+if (.5e+1 !== 5) {
+ $ERROR('#5: .5e+1 === 5');
+}
+
+//CHECK#6
+if (.6e+1 !== 6) {
+ $ERROR('#6: .6e+1 === 6');
+}
+
+//CHECK#7
+if (.7e+1 !== 7) {
+ $ERROR('#7: .7e+1 === 7');
+}
+
+//CHECK#8
+if (.8e+1 !== 8) {
+ $ERROR('#8: .8e+1 === 8');
+}
+
+//CHECK#9
+if (.9e+1 !== 9) {
+ $ERROR('#9: .9e+1 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T6.js
new file mode 100644
index 000000000..4e9b5bfa2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T6.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.2_T6;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits ExponentPart;
+ * @description: ExponentPart :: E +DecimalDigits;
+*/
+
+//CHECK#0
+if (.0E+1 !== 0) {
+ $ERROR('#0: .0E+1 === 0');
+}
+
+//CHECK#1
+if (.1E+1 !== 1) {
+ $ERROR('#1: .1E+1 === 1');
+}
+
+//CHECK#2
+if (.2E+1 !== 2) {
+ $ERROR('#2: .2E+1 === 2');
+}
+
+//CHECK#3
+if (.3E+1 !== 3) {
+ $ERROR('#3: .3E+1 === 3');
+}
+
+//CHECK#4
+if (.4E+1 !== 4) {
+ $ERROR('#4: .4E+1 === 4');
+}
+
+//CHECK#5
+if (.5E+1 !== 5) {
+ $ERROR('#5: .5E+1 === 5');
+}
+
+//CHECK#6
+if (.6E+1 !== 6) {
+ $ERROR('#6: .6E+1 === 6');
+}
+
+//CHECK#7
+if (.7E+1 !== 7) {
+ $ERROR('#7: .7E+1 === 7');
+}
+
+//CHECK#8
+if (.8E+1 !== 8) {
+ $ERROR('#8: .8E+1 === 8');
+}
+
+//CHECK#9
+if (.9E+1 !== 9) {
+ $ERROR('#9: .9E+1 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T7.js
new file mode 100644
index 000000000..2d6cda8dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T7.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.2_T7;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits ExponentPart;
+ * @description: ExponentPart :: e 0;
+*/
+
+//CHECK#0
+if (.0e0 !== 0.0) {
+ $ERROR('#0: .0e0 === 0.0');
+}
+
+//CHECK#1
+if (.1e0 !== 0.1) {
+ $ERROR('#1: .1e0 === 0.1');
+}
+
+//CHECK#2
+if (.2e0 !== 0.2) {
+ $ERROR('#2: .2e0 === 0.2');
+}
+
+//CHECK#3
+if (.3e0 !== 0.3) {
+ $ERROR('#3: .3e0 === 0.3');
+}
+
+//CHECK#4
+if (.4e0 !== 0.4) {
+ $ERROR('#4: .4e0 === 0.4');
+}
+
+//CHECK#5
+if (.5e0 !== 0.5) {
+ $ERROR('#5: .5e0 === 0.5');
+}
+
+//CHECK#6
+if (.6e0 !== 0.6) {
+ $ERROR('#6: .6e0 === 0.6');
+}
+
+//CHECK#7
+if (.7e0 !== 0.7) {
+ $ERROR('#7: .7e0 === 0.7');
+}
+
+//CHECK#8
+if (.8e0 !== 0.8) {
+ $ERROR('#8: .8e0 === 0.8');
+}
+
+//CHECK#9
+if (.9e0 !== 0.9) {
+ $ERROR('#9: .9e0 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T8.js
new file mode 100644
index 000000000..e85c55fdf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A2.2_T8.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A2.2_T8;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: .DecimalDigits ExponentPart;
+ * @description: ExponentPart :: E 0;
+*/
+
+//CHECK#0
+if (.0E0 !== 0.0) {
+ $ERROR('#0: .0E0 === 0.0');
+}
+
+//CHECK#1
+if (.1E0 !== 0.1) {
+ $ERROR('#1: .1E0 === 0.1');
+}
+
+//CHECK#2
+if (.2E0 !== 0.2) {
+ $ERROR('#2: .2E0 === 0.2');
+}
+
+//CHECK#3
+if (.3E0 !== 0.3) {
+ $ERROR('#3: .3E0 === 0.3');
+}
+
+//CHECK#4
+if (.4E0 !== 0.4) {
+ $ERROR('#4: .4E0 === 0.4');
+}
+
+//CHECK#5
+if (.5E0 !== 0.5) {
+ $ERROR('#5: .5E0 === 0.5');
+}
+
+//CHECK#6
+if (.6E0 !== 0.6) {
+ $ERROR('#6: .6E0 === 0.6');
+}
+
+//CHECK#7
+if (.7E0 !== 0.7) {
+ $ERROR('#7: .7E0 === 0.7');
+}
+
+//CHECK#8
+if (.8E0 !== 0.8) {
+ $ERROR('#8: .8E0 === 0.8');
+}
+
+//CHECK#9
+if (.9E0 !== 0.9) {
+ $ERROR('#9: .9E0 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.1_T1.js
new file mode 100644
index 000000000..977ce1605
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.1_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.1_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ;
+ * @description: DecimalIntegerLiteral :: 0, NoNZeroDigit;
+*/
+
+//CHECK#0
+if (0. !== 0) {
+ $ERROR('#0: 0. === 0');
+}
+
+//CHECK#1
+if (1. !== 1) {
+ $ERROR('#1: 1. === 1');
+}
+
+//CHECK#2
+if (2. !== 2) {
+ $ERROR('#2: 2. === 2');
+}
+
+//CHECK#3
+if (3. !== 3) {
+ $ERROR('#3: 3. === 3');
+}
+
+//CHECK#4
+if (4. !== 4) {
+ $ERROR('#4: 4. === 4');
+}
+
+//CHECK#5
+if (5. !== 5) {
+ $ERROR('#5: 5. === 5');
+}
+
+//CHECK#6
+if (6. !== 6) {
+ $ERROR('#6: 6. === 6');
+}
+
+//CHECK#7
+if (7. !== 7) {
+ $ERROR('#7: 7. === 7');
+}
+
+//CHECK#8
+if (8. !== 8) {
+ $ERROR('#8: 8. === 8');
+}
+
+//CHECK#9
+if (9. !== 9) {
+ $ERROR('#9: 9. === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.1_T2.js
new file mode 100644
index 000000000..87022120a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.1_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.1_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ;
+ * @description: DecimalIntegerLiteral :: NoNZeroDigit DecimalDigigts;
+*/
+
+
+//CHECK#1
+if (11. !== 11) {
+ $ERROR('#1: 11. === 11');
+}
+
+//CHECK#2
+if (22. !== 22) {
+ $ERROR('#2: 22. === 22');
+}
+
+//CHECK#3
+if (33. !== 33) {
+ $ERROR('#3: 33. === 33');
+}
+
+//CHECK#4
+if (44. !== 44) {
+ $ERROR('#4: 44. === 44');
+}
+
+//CHECK#5
+if (55. !== 55) {
+ $ERROR('#5: 55. === 55');
+}
+
+//CHECK#6
+if (66. !== 66) {
+ $ERROR('#6: 66. === 66');
+}
+
+//CHECK#7
+if (77. !== 77) {
+ $ERROR('#7: 77. === 77');
+}
+
+//CHECK#8
+if (88. !== 88) {
+ $ERROR('#8: 88. === 88');
+}
+
+//CHECK#9
+if (99. !== 99) {
+ $ERROR('#9: 99. === 99');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T1.js
new file mode 100644
index 000000000..ee1afc0dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.2_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigits;
+ * @description: After DecimalIntegerLiteral. used ZeroDigit;
+*/
+
+//CHECK#0
+if (0.0 !== 0) {
+ $ERROR('#0: 0.0 === 0');
+}
+
+//CHECK#1
+if (1.0 !== 1) {
+ $ERROR('#1: 1.0 === 1');
+}
+
+//CHECK#2
+if (2.0 !== 2) {
+ $ERROR('#2: 2.0 === 2');
+}
+
+//CHECK#3
+if (3.0 !== 3) {
+ $ERROR('#3: 3.0 === 3');
+}
+
+//CHECK#4
+if (4.0 !== 4) {
+ $ERROR('#4: 4.0 === 4');
+}
+
+//CHECK#5
+if (5.0 !== 5) {
+ $ERROR('#5: 5.0 === 5');
+}
+
+//CHECK#6
+if (6.0 !== 6) {
+ $ERROR('#6: 6.0 === 6');
+}
+
+//CHECK#7
+if (7.0 !== 7) {
+ $ERROR('#7: 7.0 === 7');
+}
+
+//CHECK#8
+if (8.0 !== 8) {
+ $ERROR('#8: 8.0 === 8');
+}
+
+//CHECK#9
+if (9.0 !== 9) {
+ $ERROR('#9: 9.0 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T2.js
new file mode 100644
index 000000000..03688aa04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.2_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigits;
+ * @description: After DecimalIntegerLiteral. used ZeroDigits;
+*/
+
+//CHECK#0
+if (0.00 !== 0) {
+ $ERROR('#0: 0.00 === 0');
+}
+
+//CHECK#1
+if (1.00 !== 1) {
+ $ERROR('#1: 1.00 === 1');
+}
+
+//CHECK#2
+if (2.00 !== 2) {
+ $ERROR('#2: 2.00 === 2');
+}
+
+//CHECK#3
+if (3.00 !== 3) {
+ $ERROR('#3: 3.00 === 3');
+}
+
+//CHECK#4
+if (4.00 !== 4) {
+ $ERROR('#4: 4.00 === 4');
+}
+
+//CHECK#5
+if (5.00 !== 5) {
+ $ERROR('#5: 5.00 === 5');
+}
+
+//CHECK#6
+if (6.00 !== 6) {
+ $ERROR('#6: 6.00 === 6');
+}
+
+//CHECK#7
+if (7.00 !== 7) {
+ $ERROR('#7: 7.00 === 7');
+}
+
+//CHECK#8
+if (8.00 !== 8) {
+ $ERROR('#8: 8.00 === 8');
+}
+
+//CHECK#9
+if (9.00 !== 9) {
+ $ERROR('#9: 9.00 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T3.js
new file mode 100644
index 000000000..1b06b4a98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.2_T3.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.2_T3;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigits;
+ * @description: After DecimalIntegerLiteral. used NoNZeroDigit;
+*/
+
+//CHECK#0
+if (0.0 !== 0.0) {
+ $ERROR('#0: 0.0 === 0.0');
+}
+
+//CHECK#1
+if (1.1 !== 1.1) {
+ $ERROR('#1: 1.1 === 1.1');
+}
+
+//CHECK#2
+if (2.2 !== 2.2) {
+ $ERROR('#2: 2.2 === 2.2');
+}
+
+//CHECK#3
+if (3.3 !== 3.3) {
+ $ERROR('#3: 3.3 === 3.3');
+}
+
+//CHECK#4
+if (4.4 !== 4.4) {
+ $ERROR('#4: 4.4 === 4.4');
+}
+
+//CHECK#5
+if (5.5 !== 5.5) {
+ $ERROR('#5: 5.5 === 5.5');
+}
+
+//CHECK#6
+if (6.6 !== 6.6) {
+ $ERROR('#6: 6.6 === 6.6');
+}
+
+//CHECK#7
+if (7.7 !== 7.7) {
+ $ERROR('#7: 7.7 === 7.7');
+}
+
+//CHECK#8
+if (8.8 !== 8.8) {
+ $ERROR('#8: 8..8 === 8.8');
+}
+
+//CHECK#9
+if (9.9 !== 9.9) {
+ $ERROR('#9: 9.9 === 9.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T1.js
new file mode 100644
index 000000000..4558c1e1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.3_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ExponentPart;
+ * @description: ExponentPart :: e DecimalDigits;
+*/
+
+//CHECK#0
+if (0.e1 !== 0) {
+ $ERROR('#0: 0.e1 === 0');
+}
+
+//CHECK#1
+if (1.e1 !== 10) {
+ $ERROR('#1: 1.e1 === 10');
+}
+
+//CHECK#2
+if (2.e1 !== 20) {
+ $ERROR('#2: 2.e1 === 20');
+}
+
+//CHECK#3
+if (3.e1 !== 30) {
+ $ERROR('#3: 3.e1 === 30');
+}
+
+//CHECK#4
+if (4.e1 !== 40) {
+ $ERROR('#4: 4.e1 === 40');
+}
+
+//CHECK#5
+if (5.e1 !== 50) {
+ $ERROR('#5: 5.e1 === 50');
+}
+
+//CHECK#6
+if (6.e1 !== 60) {
+ $ERROR('#6: 6.e1 === 60');
+}
+
+//CHECK#7
+if (7.e1 !== 70) {
+ $ERROR('#7: 7.e1 === 70');
+}
+
+//CHECK#8
+if (8.e1 !== 80) {
+ $ERROR('#8: 8.e1 === 80');
+}
+
+//CHECK#9
+if (9.e1 !== 90) {
+ $ERROR('#9: 9.e1 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T2.js
new file mode 100644
index 000000000..87648a40d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.3_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ExponentPart;
+ * @description: ExponentPart :: E DecimalDigits;
+*/
+
+//CHECK#0
+if (0.E1 !== 0) {
+ $ERROR('#0: 0.E1 === 0');
+}
+
+//CHECK#1
+if (1.E1 !== 10) {
+ $ERROR('#1: 1.E1 === 10');
+}
+
+//CHECK#2
+if (2.E1 !== 20) {
+ $ERROR('#2: 2.E1 === 20');
+}
+
+//CHECK#3
+if (3.E1 !== 30) {
+ $ERROR('#3: 3.E1 === 30');
+}
+
+//CHECK#4
+if (4.E1 !== 40) {
+ $ERROR('#4: 4.E1 === 40');
+}
+
+//CHECK#5
+if (5.E1 !== 50) {
+ $ERROR('#5: 5.E1 === 50');
+}
+
+//CHECK#6
+if (6.E1 !== 60) {
+ $ERROR('#6: 6.E1 === 60');
+}
+
+//CHECK#7
+if (7.E1 !== 70) {
+ $ERROR('#7: 7.E1 === 70');
+}
+
+//CHECK#8
+if (8.E1 !== 80) {
+ $ERROR('#8: 8.E1 === 80');
+}
+
+//CHECK#9
+if (9.E1 !== 90) {
+ $ERROR('#9: 9.E1 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T3.js
new file mode 100644
index 000000000..6c4553b1f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T3.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.3_T3;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ExponentPart;
+ * @description: ExponentPart :: e -DecimalDigits;
+*/
+
+//CHECK#0
+if (0.e-1 !== 0) {
+ $ERROR('#0: 0.e-1 === 0');
+}
+
+//CHECK#1
+if (1.e-1 !== 0.1) {
+ $ERROR('#1: 1.e-1 === 0.1');
+}
+
+//CHECK#2
+if (2.e-1 !== 0.2) {
+ $ERROR('#2: 2.e-1 === 0.2');
+}
+
+//CHECK#3
+if (3.e-1 !== 0.3) {
+ $ERROR('#3: 3.e-1 === 0.3');
+}
+
+//CHECK#4
+if (4.e-1 !== 0.4) {
+ $ERROR('#4: 4.e-1 === 0.4');
+}
+
+//CHECK#5
+if (5.e-1 !== 0.5) {
+ $ERROR('#5: 5.e-1 === 0.5');
+}
+
+//CHECK#6
+if (6.e-1 !== 0.6) {
+ $ERROR('#6: 6.e-1 === 0.6');
+}
+
+//CHECK#7
+if (7.e-1 !== 0.7) {
+ $ERROR('#7: 7.e-1 === 0.7');
+}
+
+//CHECK#8
+if (8.e-1 !== 0.8) {
+ $ERROR('#8: 8.e-1 === 0.8');
+}
+
+//CHECK#9
+if (9.e-1 !== 0.9) {
+ $ERROR('#9: 9.e-1 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T4.js
new file mode 100644
index 000000000..a47be52e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.3_T4;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ExponentPart;
+ * @description: ExponentPart :: E -DecimalDigits;
+*/
+
+//CHECK#0
+if (0.E-1 !== 0) {
+ $ERROR('#0: 0.E-1 === 0');
+}
+
+//CHECK#1
+if (1.E-1 !== 0.1) {
+ $ERROR('#1: 1.E-1 === 0.1');
+}
+
+//CHECK#2
+if (2.E-1 !== 0.2) {
+ $ERROR('#2: 2.E-1 === 0.2');
+}
+
+//CHECK#3
+if (3.E-1 !== 0.3) {
+ $ERROR('#3: 3.E-1 === 0.3');
+}
+
+//CHECK#4
+if (4.E-1 !== 0.4) {
+ $ERROR('#4: 4.E-1 === 0.4');
+}
+
+//CHECK#5
+if (5.E-1 !== 0.5) {
+ $ERROR('#5: 5.E-1 === 0.5');
+}
+
+//CHECK#6
+if (6.E-1 !== 0.6) {
+ $ERROR('#6: 6.E-1 === 0.6');
+}
+
+//CHECK#7
+if (7.E-1 !== 0.7) {
+ $ERROR('#7: 7.E-1 === 0.7');
+}
+
+//CHECK#8
+if (8.E-1 !== 0.8) {
+ $ERROR('#8: 8.E-1 === 0.8');
+}
+
+//CHECK#9
+if (9.E-1 !== 0.9) {
+ $ERROR('#9: 9.E-1 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T5.js
new file mode 100644
index 000000000..f4e0e079a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T5.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.3_T5;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ExponentPart;
+ * @description: ExponentPart :: e +DecimalDigits;
+*/
+
+//CHECK#0
+if (0.e+1 !== 0) {
+ $ERROR('#0: 0.e+1 === 0');
+}
+
+//CHECK#1
+if (1.e+1 !== 10) {
+ $ERROR('#1: 1.e+1 === 10');
+}
+
+//CHECK#2
+if (2.e+1 !== 20) {
+ $ERROR('#2: 2.e+1 === 20');
+}
+
+//CHECK#3
+if (3.e+1 !== 30) {
+ $ERROR('#3: 3.e+1 === 30');
+}
+
+//CHECK#4
+if (4.e+1 !== 40) {
+ $ERROR('#4: 4.e+1 === 40');
+}
+
+//CHECK#5
+if (5.e+1 !== 50) {
+ $ERROR('#5: 5.e+1 === 50');
+}
+
+//CHECK#6
+if (6.e+1 !== 60) {
+ $ERROR('#6: 6.e+1 === 60');
+}
+
+//CHECK#7
+if (7.e+1 !== 70) {
+ $ERROR('#7: 7.e+1 === 70');
+}
+
+//CHECK#8
+if (8.e+1 !== 80) {
+ $ERROR('#8: 8.e+1 === 80');
+}
+
+//CHECK#9
+if (9.e+1 !== 90) {
+ $ERROR('#9: 9.e+1 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T6.js
new file mode 100644
index 000000000..895b7d4c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T6.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.3_T6;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ExponentPart;
+ * @description: ExponentPart :: E +DecimalDigits;
+*/
+
+//CHECK#0
+if (0.E+1 !== 0) {
+ $ERROR('#0: 0.E+1 === 0');
+}
+
+//CHECK#1
+if (1.E+1 !== 10) {
+ $ERROR('#1: 1.E+1 === 10');
+}
+
+//CHECK#2
+if (2.E+1 !== 20) {
+ $ERROR('#2: 2.E+1 === 20');
+}
+
+//CHECK#3
+if (3.E+1 !== 30) {
+ $ERROR('#3: 3.E+1 === 30');
+}
+
+//CHECK#4
+if (4.E+1 !== 40) {
+ $ERROR('#4: 4.E+1 === 40');
+}
+
+//CHECK#5
+if (5.E+1 !== 50) {
+ $ERROR('#5: 5.E+1 === 50');
+}
+
+//CHECK#6
+if (6.E+1 !== 60) {
+ $ERROR('#6: 6.E+1 === 60');
+}
+
+//CHECK#7
+if (7.E+1 !== 70) {
+ $ERROR('#7: 7.E+1 === 70');
+}
+
+//CHECK#8
+if (8.E+1 !== 80) {
+ $ERROR('#8: 8.E+1 === 80');
+}
+
+//CHECK#9
+if (9.E+1 !== 90) {
+ $ERROR('#9: 9.E+1 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T7.js
new file mode 100644
index 000000000..c779350d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T7.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.3_T7;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ExponentPart;
+ * @description: ExponentPart :: e 0;
+*/
+
+//CHECK#0
+if (0.e0 !== 0) {
+ $ERROR('#0: 0.e0 === 0');
+}
+
+//CHECK#1
+if (1.e0 !== 1) {
+ $ERROR('#1: 1.e0 === 1');
+}
+
+//CHECK#2
+if (2.e0 !== 2) {
+ $ERROR('#2: 2.e0 === 2');
+}
+
+//CHECK#3
+if (3.e0 !== 3) {
+ $ERROR('#3: 3.e0 === 3');
+}
+
+//CHECK#4
+if (4.e0 !== 4) {
+ $ERROR('#4: 4.e0 === 4');
+}
+
+//CHECK#5
+if (5.e0 !== 5) {
+ $ERROR('#5: 5.e0 === 5');
+}
+
+//CHECK#6
+if (6.e0 !== 6) {
+ $ERROR('#6: 6.e0 === 6');
+}
+
+//CHECK#7
+if (7.e0 !== 7) {
+ $ERROR('#7: 7.e0 === 7');
+}
+
+//CHECK#8
+if (8.e0 !== 8) {
+ $ERROR('#8: 8.e0 === 8');
+}
+
+//CHECK#9
+if (9.e0 !== 9) {
+ $ERROR('#9: 9.e0 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T8.js
new file mode 100644
index 000000000..fa1050097
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.3_T8.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.3_T8;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. ExponentPart;
+ * @description: ExponentPart :: E 0;
+*/
+
+//CHECK#0
+if (0.E0 !== 0) {
+ $ERROR('#0: 0.E0 === 0');
+}
+
+//CHECK#1
+if (1.E0 !== 1) {
+ $ERROR('#1: 1.E0 === 1');
+}
+
+//CHECK#2
+if (2.E0 !== 2) {
+ $ERROR('#2: 2.E0 === 2');
+}
+
+//CHECK#3
+if (3.E0 !== 3) {
+ $ERROR('#3: 3.E0 === 3');
+}
+
+//CHECK#4
+if (4.E0 !== 4) {
+ $ERROR('#4: 4.E0 === 4');
+}
+
+//CHECK#5
+if (5.E0 !== 5) {
+ $ERROR('#5: 5.E0 === 5');
+}
+
+//CHECK#6
+if (6.E0 !== 6) {
+ $ERROR('#6: 6.E0 === 6');
+}
+
+//CHECK#7
+if (7.E0 !== 7) {
+ $ERROR('#7: 7.E0 === 7');
+}
+
+//CHECK#8
+if (8.E0 !== 8) {
+ $ERROR('#8: 8.E0 === 8');
+}
+
+//CHECK#9
+if (9.E0 !== 9) {
+ $ERROR('#9: 9.E0 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T1.js
new file mode 100644
index 000000000..4f1a8dd03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.4_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart;
+ * @description: ExponentPart :: e DecimalDigits;
+*/
+
+//CHECK#0
+if (0.0e1 !== 0) {
+ $ERROR('#0: 0.0e1 === 0');
+}
+
+//CHECK#1
+if (1.1e1 !== 11) {
+ $ERROR('#1: 1.1e1 === 11');
+}
+
+//CHECK#2
+if (2.2e1 !== 22) {
+ $ERROR('#2: 2.2e1 === 22');
+}
+
+//CHECK#3
+if (3.3e1 !== 33) {
+ $ERROR('#3: 3.3e1 === 33');
+}
+
+//CHECK#4
+if (4.4e1 !== 44) {
+ $ERROR('#4: 4.4e1 === 44');
+}
+
+//CHECK#5
+if (5.5e1 !== 55) {
+ $ERROR('#5: 5.5e1 === 55');
+}
+
+//CHECK#6
+if (6.6e1 !== 66) {
+ $ERROR('#6: 6.e1 === 66');
+}
+
+//CHECK#7
+if (7.7e1 !== 77) {
+ $ERROR('#7: 7.7e1 === 77');
+}
+
+//CHECK#8
+if (8.8e1 !== 88) {
+ $ERROR('#8: 8.8e1 === 88');
+}
+
+//CHECK#9
+if (9.9e1 !== 99) {
+ $ERROR('#9: 9.9e1 === 99');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T2.js
new file mode 100644
index 000000000..d77b7cc7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.4_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart;
+ * @description: ExponentPart :: E DecimalDigits;
+*/
+
+//CHECK#0
+if (0.0E1 !== 0) {
+ $ERROR('#0: 0.0E1 === 0');
+}
+
+//CHECK#1
+if (1.1E1 !== 11) {
+ $ERROR('#1: 1.1E1 === 11');
+}
+
+//CHECK#2
+if (2.2E1 !== 22) {
+ $ERROR('#2: 2.2E1 === 22');
+}
+
+//CHECK#3
+if (3.3E1 !== 33) {
+ $ERROR('#3: 3.3E1 === 33');
+}
+
+//CHECK#4
+if (4.4E1 !== 44) {
+ $ERROR('#4: 4.4E1 === 44');
+}
+
+//CHECK#5
+if (5.5E1 !== 55) {
+ $ERROR('#5: 5.5E1 === 55');
+}
+
+//CHECK#6
+if (6.6E1 !== 66) {
+ $ERROR('#6: 6.E1 === 66');
+}
+
+//CHECK#7
+if (7.7E1 !== 77) {
+ $ERROR('#7: 7.7E1 === 77');
+}
+
+//CHECK#8
+if (8.8E1 !== 88) {
+ $ERROR('#8: 8.8E1 === 88');
+}
+
+//CHECK#9
+if (9.9E1 !== 99) {
+ $ERROR('#9: 9.9E1 === 99');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T3.js
new file mode 100644
index 000000000..afc436855
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T3.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.4_T3;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart;
+ * @description: ExponentPart :: e -DecimalDigits;
+*/
+
+//CHECK#0
+if (0.0e-1 !== 0) {
+ $ERROR('#0: 0.0e-1 === 0');
+}
+
+//CHECK#1
+if (1.1e-1 !== 0.11) {
+ $ERROR('#1: 1.1e-1 === 0.11');
+}
+
+//CHECK#2
+if (2.2e-1 !== 0.22) {
+ $ERROR('#2: 2.2e-1 === 0.22');
+}
+
+//CHECK#3
+if (3.3e-1 !== 0.33) {
+ $ERROR('#3: 3.3e-1 === 0.33');
+}
+
+//CHECK#4
+if (4.4e-1 !== 0.44) {
+ $ERROR('#4: 4.4e-1 === 0.44');
+}
+
+//CHECK#5
+if (5.5e-1 !== 0.55) {
+ $ERROR('#5: 5.5e-1 === 0.55');
+}
+
+//CHECK#6
+if (6.6e-1 !== 0.66) {
+ $ERROR('#6: 6.e-1 === 0.66');
+}
+
+//CHECK#7
+if (7.7e-1 !== 0.77) {
+ $ERROR('#7: 7.7e-1 === 0.77');
+}
+
+//CHECK#8
+if (8.8e-1 !== 0.88) {
+ $ERROR('#8: 8.8e-1 === 0.88');
+}
+
+//CHECK#9
+if (9.9e-1 !== 0.99) {
+ $ERROR('#9: 9.9e-1 === 0.99');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T4.js
new file mode 100644
index 000000000..237f5502b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.4_T4;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart;
+ * @description: ExponentPart :: E -DecimalDigits;
+*/
+
+//CHECK#0
+if (0.0E-1 !== 0) {
+ $ERROR('#0: 0.0E-1 === 0');
+}
+
+//CHECK#1
+if (1.1E-1 !== 0.11) {
+ $ERROR('#1: 1.1E-1 === 0.11');
+}
+
+//CHECK#2
+if (2.2E-1 !== 0.22) {
+ $ERROR('#2: 2.2E-1 === 0.22');
+}
+
+//CHECK#3
+if (3.3E-1 !== 0.33) {
+ $ERROR('#3: 3.3E-1 === 0.33');
+}
+
+//CHECK#4
+if (4.4E-1 !== 0.44) {
+ $ERROR('#4: 4.4E-1 === 0.44');
+}
+
+//CHECK#5
+if (5.5E-1 !== 0.55) {
+ $ERROR('#5: 5.5E-1 === 0.55');
+}
+
+//CHECK#6
+if (6.6E-1 !== 0.66) {
+ $ERROR('#6: 6.E-1 === 0.66');
+}
+
+//CHECK#7
+if (7.7E-1 !== 0.77) {
+ $ERROR('#7: 7.7E-1 === 0.77');
+}
+
+//CHECK#8
+if (8.8E-1 !== 0.88) {
+ $ERROR('#8: 8.8E-1 === 0.88');
+}
+
+//CHECK#9
+if (9.9E-1 !== 0.99) {
+ $ERROR('#9: 9.9E-1 === 0.99');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T5.js
new file mode 100644
index 000000000..90e1682a1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T5.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.4_T5;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart;
+ * @description: ExponentPart :: e +DecimalDigits;
+*/
+
+//CHECK#0
+if (0.0e+1 !== 0) {
+ $ERROR('#0: 0.0e+1 === 0');
+}
+
+//CHECK#1
+if (1.1e+1 !== 11) {
+ $ERROR('#1: 1.1e+1 === 11');
+}
+
+//CHECK#2
+if (2.2e+1 !== 22) {
+ $ERROR('#2: 2.2e+1 === 22');
+}
+
+//CHECK#3
+if (3.3e+1 !== 33) {
+ $ERROR('#3: 3.3e+1 === 33');
+}
+
+//CHECK#4
+if (4.4e+1 !== 44) {
+ $ERROR('#4: 4.4e+1 === 44');
+}
+
+//CHECK#5
+if (5.5e+1 !== 55) {
+ $ERROR('#5: 5.5e+1 === 55');
+}
+
+//CHECK#6
+if (6.6e+1 !== 66) {
+ $ERROR('#6: 6.e+1 === 66');
+}
+
+//CHECK#7
+if (7.7e+1 !== 77) {
+ $ERROR('#7: 7.7e+1 === 77');
+}
+
+//CHECK#8
+if (8.8e+1 !== 88) {
+ $ERROR('#8: 8.8e+1 === 88');
+}
+
+//CHECK#9
+if (9.9e+1 !== 99) {
+ $ERROR('#9: 9.9e+1 === 99');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T6.js
new file mode 100644
index 000000000..e91892ef1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T6.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.4_T6;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart;
+ * @description: ExponentPart :: E +DecimalDigits;
+*/
+
+//CHECK#0
+if (0.0E+1 !== 0) {
+ $ERROR('#0: 0.0E+1 === 0');
+}
+
+//CHECK#1
+if (1.1E+1 !== 11) {
+ $ERROR('#1: 1.1E+1 === 11');
+}
+
+//CHECK#2
+if (2.2E+1 !== 22) {
+ $ERROR('#2: 2.2E+1 === 22');
+}
+
+//CHECK#3
+if (3.3E+1 !== 33) {
+ $ERROR('#3: 3.3E+1 === 33');
+}
+
+//CHECK#4
+if (4.4E+1 !== 44) {
+ $ERROR('#4: 4.4E+1 === 44');
+}
+
+//CHECK#5
+if (5.5E+1 !== 55) {
+ $ERROR('#5: 5.5E+1 === 55');
+}
+
+//CHECK#6
+if (6.6E+1 !== 66) {
+ $ERROR('#6: 6.E+1 === 66');
+}
+
+//CHECK#7
+if (7.7E+1 !== 77) {
+ $ERROR('#7: 7.7E+1 === 77');
+}
+
+//CHECK#8
+if (8.8E+1 !== 88) {
+ $ERROR('#8: 8.8E+1 === 88');
+}
+
+//CHECK#9
+if (9.9E+1 !== 99) {
+ $ERROR('#9: 9.9E+1 === 99');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T7.js
new file mode 100644
index 000000000..27caa4a39
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T7.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.4_T7;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart;
+ * @description: ExponentPart :: e 0;
+*/
+
+//CHECK#0
+if (0.0e0 !== 0.0) {
+ $ERROR('#0: 0.0e0 === 0.0');
+}
+
+//CHECK#1
+if (1.1e0 !== 1.1) {
+ $ERROR('#1: 1.1e0 === 1.1');
+}
+
+//CHECK#2
+if (2.2e0 !== 2.2) {
+ $ERROR('#2: 2.2e0 === 2.2');
+}
+
+//CHECK#3
+if (3.3e0 !== 3.3) {
+ $ERROR('#3: 3.3e0 === 3.3');
+}
+
+//CHECK#4
+if (4.4e0 !== 4.4) {
+ $ERROR('#4: 4.4e0 === 4.4');
+}
+
+//CHECK#5
+if (5.5e0 !== 5.5) {
+ $ERROR('#5: 5.5e0 === 5.5');
+}
+
+//CHECK#6
+if (6.6e0 !== 6.6) {
+ $ERROR('#6: 6.e0 === 6.6');
+}
+
+//CHECK#7
+if (7.7e0 !== 7.7) {
+ $ERROR('#7: 7.7e0 === 7.7');
+}
+
+//CHECK#8
+if (8.8e0 !== 8.8) {
+ $ERROR('#8: 8.8e0 === 8.8');
+}
+
+//CHECK#9
+if (9.9e0 !== 9.9) {
+ $ERROR('#9: 9.9e0 === 9.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T8.js
new file mode 100644
index 000000000..cb5f34cd7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A3.4_T8.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A3.4_T8;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart;
+ * @description: ExponentPart :: E 0;
+*/
+
+//CHECK#0
+if (0.0E0 !== 0.0) {
+ $ERROR('#0: 0.0E0 === 0.0');
+}
+
+//CHECK#1
+if (1.1E0 !== 1.1) {
+ $ERROR('#1: 1.1E0 === 1.1');
+}
+
+//CHECK#2
+if (2.2E0 !== 2.2) {
+ $ERROR('#2: 2.2E0 === 2.2');
+}
+
+//CHECK#3
+if (3.3E0 !== 3.3) {
+ $ERROR('#3: 3.3E0 === 3.3');
+}
+
+//CHECK#4
+if (4.4E0 !== 4.4) {
+ $ERROR('#4: 4.4E0 === 4.4');
+}
+
+//CHECK#5
+if (5.5E0 !== 5.5) {
+ $ERROR('#5: 5.5E0 === 5.5');
+}
+
+//CHECK#6
+if (6.6E0 !== 6.6) {
+ $ERROR('#6: 6.E0 === 6.6');
+}
+
+//CHECK#7
+if (7.7E0 !== 7.7) {
+ $ERROR('#7: 7.7E0 === 7.7');
+}
+
+//CHECK#8
+if (8.8E0 !== 8.8) {
+ $ERROR('#8: 8.8E0 === 8.8');
+}
+
+//CHECK#9
+if (9.9E0 !== 9.9) {
+ $ERROR('#9: 9.9E0 === 9.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T1.js
new file mode 100644
index 000000000..1877e8684
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.1_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: ExponentPart is incorrect;
+ * @description: ExponentPart :: e DecimalDigits;
+ * @negative
+*/
+
+//CHECK#1
+e1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T2.js
new file mode 100644
index 000000000..b03351640
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.1_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: ExponentPart is incorrect;
+ * @description: ExponentPart :: E DecimalDigits;
+ * @negative
+*/
+
+//CHECK#1
+E1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T3.js
new file mode 100644
index 000000000..249f6f35b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.1_T3;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: ExponentPart is incorrect;
+ * @description: ExponentPart :: e DecimalDigits;
+ * @negative
+*/
+
+//CHECK#1
+e-1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T4.js
new file mode 100644
index 000000000..3b7cec99c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.1_T4;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: ExponentPart is incorrect;
+ * @description: ExponentPart :: E DecimalDigits;
+ * @negative
+*/
+
+//CHECK#1
+E-1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T5.js
new file mode 100644
index 000000000..1f92a7803
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T5.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.1_T5;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: ExponentPart is incorrect;
+ * @description: ExponentPart :: e DecimalDigits;
+ * @negative
+*/
+
+//CHECK#1
+e+1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T6.js
new file mode 100644
index 000000000..ebd13fe46
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T6.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.1_T6;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: ExponentPart is incorrect;
+ * @description: ExponentPart :: E DecimalDigits;
+ * @negative
+*/
+
+//CHECK#1
+E+1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T7.js
new file mode 100644
index 000000000..b6a02a0f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T7.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.1_T7;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: ExponentPart is incorrect;
+ * @description: ExponentPart :: e 0;
+ * @negative
+*/
+
+//CHECK#1
+e0
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T8.js
new file mode 100644
index 000000000..054da2a67
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.1_T8.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.1_T8;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: ExponentPart is incorrect;
+ * @description: ExponentPart :: E 0;
+ * @negative
+*/
+
+//CHECK#1
+E0
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T1.js
new file mode 100644
index 000000000..60ea9aa9d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.2_T1;
+ * @section: 7.8.3;
+ * @assertion: ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed;
+ * @description: ExponentIndicator :: e;
+*/
+
+//CHECK#0
+if (0e01 !== 0) {
+ $ERROR('#0: 0e01 === 0');
+}
+
+//CHECK#1
+if (1e01 !== 10) {
+ $ERROR('#1: 1e01 === 10');
+}
+
+//CHECK#2
+if (2e01 !== 20) {
+ $ERROR('#2: 2e01 === 20');
+}
+
+//CHECK#3
+if (3e01 !== 30) {
+ $ERROR('#3: 3e01 === 30');
+}
+
+//CHECK#4
+if (4e01 !== 40) {
+ $ERROR('#4: 4e01 === 40');
+}
+
+//CHECK#5
+if (5e01 !== 50) {
+ $ERROR('#5: 5e01 === 50');
+}
+
+//CHECK#6
+if (6e01 !== 60) {
+ $ERROR('#6: 6e01 === 60');
+}
+
+//CHECK#7
+if (7e01 !== 70) {
+ $ERROR('#7: 7e01 === 70');
+}
+
+//CHECK#8
+if (8e01 !== 80) {
+ $ERROR('#8: 8e01 === 80');
+}
+
+//CHECK#9
+if (9e01 !== 90) {
+ $ERROR('#9: 9e01 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T2.js
new file mode 100644
index 000000000..cd727a47c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.2_T2;
+ * @section: 7.8.3;
+ * @assertion: ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed;
+ * @description: ExponentIndicator :: E;
+*/
+
+//CHECK#0
+if (0E01 !== 0) {
+ $ERROR('#0: 0E01 === 0');
+}
+
+//CHECK#1
+if (1E01 !== 10) {
+ $ERROR('#1: 1E01 === 10');
+}
+
+//CHECK#2
+if (2E01 !== 20) {
+ $ERROR('#2: 2E01 === 20');
+}
+
+//CHECK#3
+if (3E01 !== 30) {
+ $ERROR('#3: 3E01 === 30');
+}
+
+//CHECK#4
+if (4E01 !== 40) {
+ $ERROR('#4: 4E01 === 40');
+}
+
+//CHECK#5
+if (5E01 !== 50) {
+ $ERROR('#5: 5E01 === 50');
+}
+
+//CHECK#6
+if (6E01 !== 60) {
+ $ERROR('#6: 6E01 === 60');
+}
+
+//CHECK#7
+if (7E01 !== 70) {
+ $ERROR('#7: 7E01 === 70');
+}
+
+//CHECK#8
+if (8E01 !== 80) {
+ $ERROR('#8: 8E01 === 80');
+}
+
+//CHECK#9
+if (9E01 !== 90) {
+ $ERROR('#9: 9E01 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T3.js
new file mode 100644
index 000000000..153ad87fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T3.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.2_T3;
+ * @section: 7.8.3;
+ * @assertion: ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed;
+ * @description: ExponentIndicator :: e;
+*/
+
+//CHECK#0
+if (0e-01 !== 0) {
+ $ERROR('#0: 0e-01 === 0');
+}
+
+//CHECK#1
+if (1e-01 !== 0.1) {
+ $ERROR('#1: 1e-01 === 0.1');
+}
+
+//CHECK#2
+if (2e-01 !== 0.2) {
+ $ERROR('#2: 2e-01 === 0.2');
+}
+
+//CHECK#3
+if (3e-01 !== 0.3) {
+ $ERROR('#3: 3e-01 === 0.3');
+}
+
+//CHECK#4
+if (4e-01 !== 0.4) {
+ $ERROR('#4: 4e-01 === 0.4');
+}
+
+//CHECK#5
+if (5e-01 !== 0.5) {
+ $ERROR('#5: 5e-01 === 0.5');
+}
+
+//CHECK#6
+if (6e-01 !== 0.6) {
+ $ERROR('#6: 6e-01 === 0.6');
+}
+
+//CHECK#7
+if (7e-01 !== 0.7) {
+ $ERROR('#7: 7e-01 === 0.7');
+}
+
+//CHECK#8
+if (8e-01 !== 0.8) {
+ $ERROR('#8: 8e-01 === 0.8');
+}
+
+//CHECK#9
+if (9e-01 !== 0.9) {
+ $ERROR('#9: 9e-01 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T4.js
new file mode 100644
index 000000000..8764c7b2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.2_T4;
+ * @section: 7.8.3;
+ * @assertion: ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed;
+ * @description: ExponentIndicator :: E;
+*/
+
+//CHECK#0
+if (0E-01 !== 0) {
+ $ERROR('#0: 0E-01 === 0');
+}
+
+//CHECK#1
+if (1E-01 !== 0.1) {
+ $ERROR('#1: 1E-01 === 0.1');
+}
+
+//CHECK#2
+if (2E-01 !== 0.2) {
+ $ERROR('#2: 2E-01 === 0.2');
+}
+
+//CHECK#3
+if (3E-01 !== 0.3) {
+ $ERROR('#3: 3E-01 === 0.3');
+}
+
+//CHECK#4
+if (4E-01 !== 0.4) {
+ $ERROR('#4: 4E-01 === 0.4');
+}
+
+//CHECK#5
+if (5E-01 !== 0.5) {
+ $ERROR('#5: 5E-01 === 0.5');
+}
+
+//CHECK#6
+if (6E-01 !== 0.6) {
+ $ERROR('#6: 6E-01 === 0.6');
+}
+
+//CHECK#7
+if (7E-01 !== 0.7) {
+ $ERROR('#7: 7E-01 === 0.7');
+}
+
+//CHECK#8
+if (8E-01 !== 0.8) {
+ $ERROR('#8: 8E-01 === 0.8');
+}
+
+//CHECK#9
+if (9E-01 !== 0.9) {
+ $ERROR('#9: 9E-01 === 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T5.js
new file mode 100644
index 000000000..b5e707ceb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T5.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.2_T5;
+ * @section: 7.8.3;
+ * @assertion: ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed;
+ * @description: ExponentIndicator :: e;
+*/
+
+//CHECK#0
+if (0e+01 !== 0) {
+ $ERROR('#0: 0e+01 === 0');
+}
+
+//CHECK#1
+if (1e+01 !== 10) {
+ $ERROR('#1: 1e+01 === 10');
+}
+
+//CHECK#2
+if (2e+01 !== 20) {
+ $ERROR('#2: 2e+01 === 20');
+}
+
+//CHECK#3
+if (3e+01 !== 30) {
+ $ERROR('#3: 3e+01 === 30');
+}
+
+//CHECK#4
+if (4e+01 !== 40) {
+ $ERROR('#4: 4e+01 === 40');
+}
+
+//CHECK#5
+if (5e+01 !== 50) {
+ $ERROR('#5: 5e+01 === 50');
+}
+
+//CHECK#6
+if (6e+01 !== 60) {
+ $ERROR('#6: 6e+01 === 60');
+}
+
+//CHECK#7
+if (7e+01 !== 70) {
+ $ERROR('#7: 7e+01 === 70');
+}
+
+//CHECK#8
+if (8e+01 !== 80) {
+ $ERROR('#8: 8e+01 === 80');
+}
+
+//CHECK#9
+if (9e+01 !== 90) {
+ $ERROR('#9: 9e+01 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T6.js
new file mode 100644
index 000000000..f6b3cdbc2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T6.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.2_T6;
+ * @section: 7.8.3;
+ * @assertion: ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed;
+ * @description: ExponentIndicator :: E;
+*/
+
+//CHECK#0
+if (0E+01 !== 0) {
+ $ERROR('#0: 0E+01 === 0');
+}
+
+//CHECK#1
+if (1E+01 !== 10) {
+ $ERROR('#1: 1E+01 === 10');
+}
+
+//CHECK#2
+if (2E+01 !== 20) {
+ $ERROR('#2: 2E+01 === 20');
+}
+
+//CHECK#3
+if (3E+01 !== 30) {
+ $ERROR('#3: 3E+01 === 30');
+}
+
+//CHECK#4
+if (4E+01 !== 40) {
+ $ERROR('#4: 4E+01 === 40');
+}
+
+//CHECK#5
+if (5E+01 !== 50) {
+ $ERROR('#5: 5E+01 === 50');
+}
+
+//CHECK#6
+if (6E+01 !== 60) {
+ $ERROR('#6: 6E+01 === 60');
+}
+
+//CHECK#7
+if (7E+01 !== 70) {
+ $ERROR('#7: 7E+01 === 70');
+}
+
+//CHECK#8
+if (8E+01 !== 80) {
+ $ERROR('#8: 8E+01 === 80');
+}
+
+//CHECK#9
+if (9E+01 !== 90) {
+ $ERROR('#9: 9E+01 === 90');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T7.js
new file mode 100644
index 000000000..a2543f9c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T7.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.2_T7;
+ * @section: 7.8.3;
+ * @assertion: ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed;
+ * @description: ExponentIndicator :: e;
+*/
+
+//CHECK#0
+if (0e00 !== 0) {
+ $ERROR('#0: 0e00 === 0');
+}
+
+//CHECK#1
+if (1e00 !== 1) {
+ $ERROR('#1: 1e00 === 1');
+}
+
+//CHECK#2
+if (2e00 !== 2) {
+ $ERROR('#2: 2e00 === 2');
+}
+
+//CHECK#3
+if (3e00 !== 3) {
+ $ERROR('#3: 3e00 === 3');
+}
+
+//CHECK#4
+if (4e00 !== 4) {
+ $ERROR('#4: 4e00 === 4');
+}
+
+//CHECK#5
+if (5e00 !== 5) {
+ $ERROR('#5: 5e00 === 5');
+}
+
+//CHECK#6
+if (6e00 !== 6) {
+ $ERROR('#6: 6e00 === 6');
+}
+
+//CHECK#7
+if (7e00 !== 7) {
+ $ERROR('#7: 7e00 === 7');
+}
+
+//CHECK#8
+if (8e00 !== 8) {
+ $ERROR('#8: 8e00 === 8');
+}
+
+//CHECK#9
+if (9e00 !== 9) {
+ $ERROR('#9: 9e00 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T8.js
new file mode 100644
index 000000000..7496e6e12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A4.2_T8.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A4.2_T8;
+ * @section: 7.8.3;
+ * @assertion: ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed;
+ * @description: ExponentIndicator :: E;
+*/
+
+//CHECK#0
+if (0E00 !== 0) {
+ $ERROR('#0: 0E00 === 0');
+}
+
+//CHECK#1
+if (1E00 !== 1) {
+ $ERROR('#1: 1E00 === 1');
+}
+
+//CHECK#2
+if (2E00 !== 2) {
+ $ERROR('#2: 2E00 === 2');
+}
+
+//CHECK#3
+if (3E00 !== 3) {
+ $ERROR('#3: 3E00 === 3');
+}
+
+//CHECK#4
+if (4E00 !== 4) {
+ $ERROR('#4: 4E00 === 4');
+}
+
+//CHECK#5
+if (5E00 !== 5) {
+ $ERROR('#5: 5E00 === 5');
+}
+
+//CHECK#6
+if (6E00 !== 6) {
+ $ERROR('#6: 6E00 === 6');
+}
+
+//CHECK#7
+if (7E00 !== 7) {
+ $ERROR('#7: 7E00 === 7');
+}
+
+//CHECK#8
+if (8E00 !== 8) {
+ $ERROR('#8: 8E00 === 8');
+}
+
+//CHECK#9
+if (9E00 !== 9) {
+ $ERROR('#9: 9E00 === 9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T1.js
new file mode 100644
index 000000000..b66e15df2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T1.js
@@ -0,0 +1,89 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A5.1_T1;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: HexIntegerLiteral;
+ * @description: HexIntegerLiteral :: 0x Digit;
+*/
+
+//CHECK#0
+if (0x0 !== 0) {
+ $ERROR('#0: 0x0 === 0');
+}
+
+//CHECK#1
+if (0x1 !== 1) {
+ $ERROR('#1: 0x1 === 1');
+}
+
+//CHECK#2
+if (0x2 !== 2) {
+ $ERROR('#2: 0x2 === 2');
+}
+
+//CHECK#3
+if (0x3 !== 3) {
+ $ERROR('#3: 0x3 === 3');
+}
+
+//CHECK#4
+if (0x4 !== 4) {
+ $ERROR('#4: 0x4 === 4');
+}
+
+//CHECK#5
+if (0x5 !== 5) {
+ $ERROR('#5: 0x5 === 5');
+}
+
+//CHECK#6
+if (0x6 !== 6) {
+ $ERROR('#6: 0x6 === 6');
+}
+
+//CHECK#7
+if (0x7 !== 7) {
+ $ERROR('#7: 0x7 === 7');
+}
+
+//CHECK#8
+if (0x8 !== 8) {
+ $ERROR('#8: 0x8 === 8');
+}
+
+//CHECK#9
+if (0x9 !== 9) {
+ $ERROR('#9: 0x9 === 9');
+}
+
+//CHECK#A
+if (0xA !== 10) {
+ $ERROR('#A: 0xA === 10');
+}
+
+//CHECK#B
+if (0xB !== 11) {
+ $ERROR('#B: 0xB === 11');
+}
+
+//CHECK#C
+if (0xC !== 12) {
+ $ERROR('#C: 0xC === 12');
+}
+
+//CHECK#D
+if (0xD !== 13) {
+ $ERROR('#D: 0xD === 13');
+}
+
+//CHECK#E
+if (0xE !== 14) {
+ $ERROR('#E: 0xE === 14');
+}
+
+//CHECK#F
+if (0xF !== 15) {
+ $ERROR('#F: 0xF === 15');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T2.js
new file mode 100644
index 000000000..a1a44c125
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T2.js
@@ -0,0 +1,89 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A5.1_T2;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: HexIntegerLiteral;
+ * @description: HexIntegerLiteral :: 0X Digit;
+*/
+
+//CHECK#0
+if (0X0 !== 0) {
+ $ERROR('#0: 0X0 === 0');
+}
+
+//CHECK#1
+if (0X1 !== 1) {
+ $ERROR('#1: 0X1 === 1');
+}
+
+//CHECK#2
+if (0X2 !== 2) {
+ $ERROR('#2: 0X2 === 2');
+}
+
+//CHECK#3
+if (0X3 !== 3) {
+ $ERROR('#3: 0X3 === 3');
+}
+
+//CHECK#4
+if (0X4 !== 4) {
+ $ERROR('#4: 0X4 === 4');
+}
+
+//CHECK#5
+if (0X5 !== 5) {
+ $ERROR('#5: 0X5 === 5');
+}
+
+//CHECK#6
+if (0X6 !== 6) {
+ $ERROR('#6: 0X6 === 6');
+}
+
+//CHECK#7
+if (0X7 !== 7) {
+ $ERROR('#7: 0X7 === 7');
+}
+
+//CHECK#8
+if (0X8 !== 8) {
+ $ERROR('#8: 0X8 === 8');
+}
+
+//CHECK#9
+if (0X9 !== 9) {
+ $ERROR('#9: 0X9 === 9');
+}
+
+//CHECK#A
+if (0XA !== 10) {
+ $ERROR('#A: 0XA === 10');
+}
+
+//CHECK#B
+if (0XB !== 11) {
+ $ERROR('#B: 0XB === 11');
+}
+
+//CHECK#C
+if (0XC !== 12) {
+ $ERROR('#C: 0XC === 12');
+}
+
+//CHECK#D
+if (0XD !== 13) {
+ $ERROR('#D: 0XD === 13');
+}
+
+//CHECK#E
+if (0XE !== 14) {
+ $ERROR('#E: 0XE === 14');
+}
+
+//CHECK#F
+if (0XF !== 15) {
+ $ERROR('#F: 0XF === 15');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T3.js
new file mode 100644
index 000000000..d8ecddd66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T3.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A5.1_T3;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: HexIntegerLiteral;
+ * @description: HexIntegerLiteral :: 0x NonZeroDigit Digits;
+*/
+
+//CHECK#0
+if (0x0 !== 0) {
+ $ERROR('#0: 0x0 === 0');
+}
+
+//CHECK#1
+if (0x1 !== 1) {
+ $ERROR('#1: 0x1 === 1');
+}
+
+//CHECK#2
+if (0x10 !== 16) {
+ $ERROR('#2: 0x10 === 16');
+}
+
+//CHECK3
+if (0x100 !== 256) {
+ $ERROR('3: 0x100 === 256');
+}
+
+//CHECK#4
+if (0x1000 !== 4096) {
+ $ERROR('#4: 0x1000 === 4096');
+}
+
+//CHECK#5
+if (0x10000 !== 65536) {
+ $ERROR('#5: 0x10000 === 65536');
+}
+
+//CHECK#6
+if (0x100000 !== 1048576) {
+ $ERROR('#6: 0x100000 === 1048576');
+}
+
+//CHECK#7
+if (0x1000000 !== 16777216) {
+ $ERROR('#7: 0x1000000 === 16777216');
+}
+
+//CHECK#8
+if (0x10000000 !== 268435456) {
+ $ERROR('#8: 0x10000000 === 268435456');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T4.js
new file mode 100644
index 000000000..0b93e371c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T4.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A5.1_T4;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: HexIntegerLiteral;
+ * @description: HexIntegerLiteral :: 0X NonZeroDigit Digits;
+*/
+
+//CHECK#0
+if (0X0 !== 0) {
+ $ERROR('#0: 0X0 === 0');
+}
+
+//CHECK#1
+if (0X1 !== 1) {
+ $ERROR('#1: 0X1 === 1');
+}
+
+//CHECK#2
+if (0X10 !== 16) {
+ $ERROR('#2: 0X10 === 16');
+}
+
+//CHECK3
+if (0X100 !== 256) {
+ $ERROR('3: 0X100 === 256');
+}
+
+//CHECK#4
+if (0X1000 !== 4096) {
+ $ERROR('#4: 0X1000 === 4096');
+}
+
+//CHECK#5
+if (0X10000 !== 65536) {
+ $ERROR('#5: 0X10000 === 65536');
+}
+
+//CHECK#6
+if (0X100000 !== 1048576) {
+ $ERROR('#6: 0X100000 === 1048576');
+}
+
+//CHECK#7
+if (0X1000000 !== 16777216) {
+ $ERROR('#7: 0X1000000 === 16777216');
+}
+
+//CHECK#8
+if (0X10000000 !== 268435456) {
+ $ERROR('#8: 0X10000000 === 268435456');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T5.js
new file mode 100644
index 000000000..f7461a8d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T5.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A5.1_T5;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: HexIntegerLiteral;
+ * @description: HexIntegerLiteral :: 0x0 Digits;
+*/
+
+//CHECK#0
+if (0x00 !== 0) {
+ $ERROR('#0: 0x00 === 0');
+}
+
+//CHECK#1
+if (0x01 !== 1) {
+ $ERROR('#1: 0x01 === 1');
+}
+
+//CHECK#2
+if (0x010 !== 16) {
+ $ERROR('#2: 0x010 === 16');
+}
+
+//CHECK3
+if (0x0100 !== 256) {
+ $ERROR('3: 0x0100 === 256');
+}
+
+//CHECK#4
+if (0x01000 !== 4096) {
+ $ERROR('#4: 0x01000 === 4096');
+}
+
+//CHECK#5
+if (0x010000 !== 65536) {
+ $ERROR('#5: 0x010000 === 65536');
+}
+
+//CHECK#6
+if (0x0100000 !== 1048576) {
+ $ERROR('#6: 0x0100000 === 1048576');
+}
+
+//CHECK#7
+if (0x01000000 !== 16777216) {
+ $ERROR('#7: 0x01000000 === 16777216');
+}
+
+//CHECK#8
+if (0x010000000 !== 268435456) {
+ $ERROR('#8: 0x010000000 === 268435456');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T6.js
new file mode 100644
index 000000000..b79cf24f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T6.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A5.1_T6;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: HexIntegerLiteral;
+ * @description: HexIntegerLiteral :: 0X0 Digits;
+*/
+
+//CHECK#0
+if (0X00 !== 0) {
+ $ERROR('#0: 0X00 === 0');
+}
+
+//CHECK#1
+if (0X01 !== 1) {
+ $ERROR('#1: 0X01 === 1');
+}
+
+//CHECK#2
+if (0X010 !== 16) {
+ $ERROR('#2: 0X010 === 16');
+}
+
+//CHECK3
+if (0X0100 !== 256) {
+ $ERROR('3: 0X0100 === 256');
+}
+
+//CHECK#4
+if (0X01000 !== 4096) {
+ $ERROR('#4: 0X01000 === 4096');
+}
+
+//CHECK#5
+if (0X010000 !== 65536) {
+ $ERROR('#5: 0X010000 === 65536');
+}
+
+//CHECK#6
+if (0X0100000 !== 1048576) {
+ $ERROR('#6: 0X0100000 === 1048576');
+}
+
+//CHECK#7
+if (0X01000000 !== 16777216) {
+ $ERROR('#7: 0X01000000 === 16777216');
+}
+
+//CHECK#8
+if (0X010000000 !== 268435456) {
+ $ERROR('#8: 0X010000000 === 268435456');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T7.js
new file mode 100644
index 000000000..1f0362640
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T7.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A5.1_T7;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: HexIntegerLiteral;
+ * @description: HexIntegerLiteral :: 0x one of a, b, c, d, e, f;
+*/
+
+//CHECK#a
+if (0xa !== 10) {
+ $ERROR('#a: 0xa === 10');
+}
+
+//CHECK#b
+if (0xb !== 11) {
+ $ERROR('#b: 0xb === 11');
+}
+
+//CHECK#c
+if (0xc !== 12) {
+ $ERROR('#c: 0xc === 12');
+}
+
+//CHECK#d
+if (0xd !== 13) {
+ $ERROR('#d: 0xd === 13');
+}
+
+//CHECK#e
+if (0xe !== 14) {
+ $ERROR('#e: 0xe === 14');
+}
+
+//CHECK#f
+if (0xf !== 15) {
+ $ERROR('#f: 0xf === 15');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T8.js
new file mode 100644
index 000000000..ece396353
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A5.1_T8.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A5.1_T8;
+ * @section: 7.8.3;
+ * @assertion: DecimalLiteral :: HexIntegerLiteral;
+ * @description: HexIntegerLiteral :: 0X one of a, b, c, d, e, f;
+*/
+
+//CHECK#a
+if (0Xa !== 10) {
+ $ERROR('#a: 0Xa === 10');
+}
+
+//CHECK#b
+if (0Xb !== 11) {
+ $ERROR('#b: 0Xb === 11');
+}
+
+//CHECK#c
+if (0Xc !== 12) {
+ $ERROR('#c: 0Xc === 12');
+}
+
+//CHECK#d
+if (0Xd !== 13) {
+ $ERROR('#d: 0Xd === 13');
+}
+
+//CHECK#e
+if (0Xe !== 14) {
+ $ERROR('#e: 0Xe === 14');
+}
+
+//CHECK#f
+if (0Xf !== 15) {
+ $ERROR('#f: 0Xf === 15');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.1_T1.js
new file mode 100644
index 000000000..ed047c229
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.1_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A6.1_T1;
+ * @section: 7.8.3;
+ * @assertion: HexIntegerLiteral :: 0(x/X) is incorrect;
+ * @description: Checking if execution of "0x" passes;
+ * @negative
+*/
+
+//CHECK#1
+0x
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.1_T2.js
new file mode 100644
index 000000000..020f016f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.1_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A6.1_T2;
+ * @section: 7.8.3;
+ * @assertion: HexIntegerLiteral :: 0(x/X) is incorrect;
+ * @description: Checking if execution of "0X" passes;
+ * @negative
+*/
+
+//CHECK#1
+0X
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.2_T1.js
new file mode 100644
index 000000000..217961fb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.2_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A6.2_T1;
+ * @section: 7.8.3;
+ * @assertion: 0xG is incorrect;
+ * @description: Checking if execution of "0xG" fails;
+ * @negative
+*/
+
+//CHECK#1
+0xG
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.2_T2.js
new file mode 100644
index 000000000..54689cb3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.3_Numeric_Literals/S7.8.3_A6.2_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.3_A6.2_T2;
+ * @section: 7.8.3;
+ * @assertion: 0xG is incorrect;
+ * @description: Checking if execution of "0xg" fails;
+ * @negative
+*/
+
+//CHECK#1
+0xg
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.1_T1.js
new file mode 100644
index 000000000..39852b6b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.1_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A1.1_T1;
+ * @section: 7.8.4;
+ * @assertion: StringLiteral :: "DoubleStringCharacters_opt";
+ * @description: DoubleStringCharacter :: SourceCharacter but not double-quote " or LineTerminator;
+ * @negative
+*/
+
+//CHECK#1
+"""
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.1_T2.js
new file mode 100644
index 000000000..978b72c66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.1_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A1.1_T2;
+ * @section: 7.8.4;
+ * @assertion: StringLiteral :: "DoubleStringCharacters_opt";
+ * @description: DoubleStringCharacter :: SourceCharacter but not double-quote " or LineTerminator;
+ * @negative
+*/
+
+//CHECK#1
+"
+"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.2_T1.js
new file mode 100644
index 000000000..a1589e9bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.2_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A1.2_T1;
+ * @section: 7.8.4;
+ * @assertion: StringLiteral :: 'SingleStringCharacters_opt';
+ * @description: SingleStringCharacter :: SourceCharacter but not single-quote ' or LineTerminator;
+ * @negative
+*/
+
+//CHECK#1
+'''
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.2_T2.js
new file mode 100644
index 000000000..f3467d769
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A1.2_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A1.2_T2;
+ * @section: 7.8.4;
+ * @assertion: StringLiteral :: 'SingleStringCharacters_opt';
+ * @description: SingleStringCharacter :: SourceCharacter but not single-quote ' or LineTerminator;
+ * @negative
+*/
+
+//CHECK#1
+'
+'
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.1_T1.js
new file mode 100644
index 000000000..d2b72052a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A2.1_T1;
+ * @section: 7.8.4;
+ * @assertion: Correct interpretation of ENGLISH ALPHABET;
+ * @description: Check ENGLISH CAPITAL ALPHABET;
+*/
+
+//CHECK#A-Z
+unicode = ["\u0041", "\u0042", "\u0043", "\u0044", "\u0045", "\u0046", "\u0047", "\u0048", "\u0049", "\u004A", "\u004B", "\u004C", "\u004D", "\u004E", "\u004F", "\u0050", "\u0051", "\u0052", "\u0053", "\u0054", "\u0055", "\u0056", "\u0057", "\u0058", "\u0059", "\u005A"];
+character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+for (index = 0; index <= 25; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.1_T2.js
new file mode 100644
index 000000000..fcd0cf0b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A2.1_T2;
+ * @section: 7.8.4;
+ * @assertion: Correct interpretation of ENGLISH ALPHABET;
+ * @description: Check ENGLISH SMALL ALPHABET;
+*/
+
+//CHECK#a-z
+hex = ["\u0061", "\u0062", "\u0063", "\u0064", "\u0065", "\u0066", "\u0067", "\u0068", "\u0069", "\u006A", "\u006B", "\u006C", "\u006D", "\u006E", "\u006F", "\u0070", "\u0071", "\u0072", "\u0073", "\u0074", "\u0075", "\u0076", "\u0077", "\u0078", "\u0079", "\u007A"];
+character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (index = 0; index <= 25; index++) {
+ if (hex[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.2_T1.js
new file mode 100644
index 000000000..b51178192
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A2.2_T1;
+ * @section: 7.8.4;
+ * @assertion: Correct interpretation of RUSSIAN ALPHABET;
+ * @description: Check RUSSIAN CAPITAL ALPHABET;
+*/
+
+//CHECK#А-Я
+unicode = ["\u0410", "\u0411", "\u0412", "\u0413", "\u0414", "\u0415", "\u0416", "\u0417", "\u0418", "\u0419", "\u041A", "\u041B", "\u041C", "\u041D", "\u041E", "\u041F", "\u0420", "\u0421", "\u0422", "\u0423", "\u0424", "\u0425", "\u0426", "\u0427", "\u0428", "\u0429", "\u042A", "\u042B", "\u042C", "\u042D", "\u042E", "\u042F", "\u0401"];
+character = ["А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", "Ё"];
+for (index = 0; index <= 32; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.2_T2.js
new file mode 100644
index 000000000..ddc41a26f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.2_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A2.2_T2;
+ * @section: 7.8.4;
+ * @assertion: Correct interpretation of RUSSIAN ALPHABET;
+ * @description: Check RUSSIAN SMALL ALPHABET;
+*/
+
+//CHECK#а-я
+unicode = ["\u0430", "\u0431", "\u0432", "\u0433", "\u0434", "\u0435", "\u0436", "\u0437", "\u0438", "\u0439", "\u043A", "\u043B", "\u043C", "\u043D", "\u043E", "\u043F", "\u0440", "\u0441", "\u0442", "\u0443", "\u0444", "\u0445", "\u0446", "\u0447", "\u0448", "\u0449", "\u044A", "\u044B", "\u044C", "\u044D", "\u044E", "\u044F", "\u0451"];
+character = ["а", "б", "в", "г", "д", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", "ё"];
+for (index = 0; index <= 32; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.3_T1.js
new file mode 100644
index 000000000..017d0e13b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A2.3_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A2.3_T1;
+ * @section: 7.8.4;
+ * @assertion: Correct interpretation of DIGITS;
+ * @description: Check DIGITS;
+*/
+
+//CHECK#0-9
+unicode = ["\u0030", "\u0031", "\u0032", "\u0033", "\u0034", "\u0035", "\u0036", "\u0037", "\u0038", "\u0039"];
+character = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
+for (index = 0; index <= 9; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.1_T1.js
new file mode 100644
index 000000000..2a8739269
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.1_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A3.1_T1;
+ * @section: 7.8.4;
+ * @assertion: StringLiteral :: "\" or '\' is not correct;
+ * @description: Checking if execution of "\" fails;
+ * @negative
+*/
+
+//CHECK#1
+"\"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.1_T2.js
new file mode 100644
index 000000000..690a37607
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.1_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A3.1_T2;
+ * @section: 7.8.4;
+ * @assertion: StringLiteral :: "\" or '\' is not correct;
+ * @description: Checking if execution of "'\'" fails;
+ * @negative
+*/
+
+//CHECK#1
+'\'
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.2_T1.js
new file mode 100644
index 000000000..8ff86be57
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.2_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A3.2_T1;
+ * @section: 7.8.4;
+ * @assertion: StringLiteral :: "\\\" or '\\\' is not correct;
+ * @description: Checking if execution of "\\\" fails;
+ * @negative
+*/
+
+//CHECK#1
+"\\\"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.2_T2.js
new file mode 100644
index 000000000..6aebf53b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A3.2_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A3.2_T2;
+ * @section: 7.8.4;
+ * @assertion: StringLiteral :: "\\\" or '\\\' is not correct;
+ * @description: Checking if execution of '\\\' fails;
+ * @negative
+*/
+
+//CHECK#1
+'\\\'
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.1_T1.js
new file mode 100644
index 000000000..a0b9ebae3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.1_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.1_T1;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: SingleEscapeSequence;
+ * @description: SingleEscapeSequence :: one of b f n r t v;
+*/
+
+//CHECK#1
+if (String.fromCharCode(0x0008) !== "\b") {
+ $ERROR('#1: String.fromCharCode(0x0008) === "\\b"');
+}
+
+//CHECK#2
+if (String.fromCharCode(0x0009) !== "\t") {
+ $ERROR('#2: String.fromCharCode(0x0009) === "\\t"');
+}
+
+//CHECK#3
+if (String.fromCharCode(0x000A) !== "\n") {
+ $ERROR('#3: String.fromCharCode(0x000A) === "\\n"');
+}
+
+//CHECK#4
+if (String.fromCharCode(0x000B) !== "\v") {
+ $ERROR('#4: String.fromCharCode(0x000B) === "\\v"');
+}
+
+//CHECK#5
+if (String.fromCharCode(0x000C) !== "\f") {
+ $ERROR('#5: String.fromCharCode(0x000C) === "\\f"');
+}
+
+//CHECK#6
+if (String.fromCharCode(0x000D) !== "\r") {
+ $ERROR('#6: String.fromCharCode(0x000D) === "\\r"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.1_T2.js
new file mode 100644
index 000000000..781921799
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.1_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.1_T2;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: SingleEscapeSequence;
+ * @description: SingleEscapeSequence :: one of ' " \;
+*/
+
+//CHECK#1
+if (String.fromCharCode(0x0027) !== "\'") {
+ $ERROR('#1: String.fromCharCode(0x0027) === "\\\'"');
+}
+
+//CHECK#2
+if (String.fromCharCode(0x0022) !== '\"') {
+ $ERROR('#2: String.fromCharCode(0x0027) === \'\\\"\'');
+}
+
+//CHECK#3
+if (String.fromCharCode(0x005C) !== "\\") {
+ $ERROR('#3: String.fromCharCode(0x005C) === "\\\"');
+}
+
+//CHECK#4
+if ("\'" !== "'") {
+ $ERROR('#4: "\'" === "\\\'"');
+}
+
+//CHECK#5
+if ('\"' !== '"') {
+ $ERROR('#5: \'\"\' === \'\\\"\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T1.js
new file mode 100644
index 000000000..f96a20027
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.2_T1;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: NonEscapeSequence;
+ * @description: NonEscapeSequence :: ENGLISH CAPITAL ALPHABET;
+*/
+
+//CHECK#A-Z
+CharacterCode = [0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A];
+NonEscapeCharacter = ["\A", "\B", "\C", "\D", "\E", "\F", "\G", "\H", "\I", "\J", "\K", "\L", "\M", "\N", "\O", "\P", "\Q", "\R", "\S", "\T", "\U", "\V", "\W", "\X", "\Y", "\Z"];
+for (index = 0; index <= 25; index++) {
+ if (String.fromCharCode(CharacterCode[index]) !== NonEscapeCharacter[index]) {
+ $ERROR('#' + NonEscapeCharacter[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T2.js
new file mode 100644
index 000000000..7b824c64c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T2.js
@@ -0,0 +1,114 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.2_T2;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: NonEscapeSequence;
+ * @description: NonEscapeSequence :: ENGLISH CAPITAL ALPHABET;
+*/
+
+//CHECK#A-Z
+if ("A" !== "\A") {
+ $ERROR('#A');
+}
+
+if ("B" !== "\B") {
+ $ERROR('#B');
+}
+
+if ("C" !== "\C") {
+ $ERROR('#C');
+}
+
+if ("D" !== "\D") {
+ $ERROR('#D');
+}
+
+if ("E" !== "\E") {
+ $ERROR('#E');
+}
+
+if ("F" !== "\F") {
+ $ERROR('#F');
+}
+
+if ("G" !== "\G") {
+ $ERROR('#G');
+}
+
+if ("H" !== "\H") {
+ $ERROR('#H');
+}
+
+if ("I" !== "\I") {
+ $ERROR('#I');
+}
+
+if ("J" !== "\J") {
+ $ERROR('#J');
+}
+
+if ("K" !== "\K") {
+ $ERROR('#K');
+}
+
+if ("L" !== "\L") {
+ $ERROR('#L');
+}
+
+if ("M" !== "\M") {
+ $ERROR('#M');
+}
+
+if ("N" !== "\N") {
+ $ERROR('#N');
+}
+
+if ("O" !== "\O") {
+ $ERROR('#O');
+}
+
+if ("P" !== "\P") {
+ $ERROR('#P');
+}
+
+if ("Q" !== "\Q") {
+ $ERROR('#Q');
+}
+
+if ("R" !== "\R") {
+ $ERROR('#R');
+}
+
+if ("S" !== "\S") {
+ $ERROR('#S');
+}
+
+if ("T" !== "\T") {
+ $ERROR('#T');
+}
+
+if ("U" !== "\U") {
+ $ERROR('#U');
+}
+
+if ("V" !== "\V") {
+ $ERROR('#V');
+}
+
+if ("W" !== "\W") {
+ $ERROR('#W');
+}
+
+if ("X" !== "\X") {
+ $ERROR('#X');
+}
+
+if ("Y" !== "\Y") {
+ $ERROR('#Y');
+}
+
+if ("Z" !== "\Z") {
+ $ERROR('#Z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T3.js
new file mode 100644
index 000000000..fa4495d6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.2_T3;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: NonEscapeSequence;
+ * @description: NonEscapeSequence :: ENGLISH SMALL ALPHABET;
+*/
+
+//CHECK#a-z without b, f, n, r, t, v, x, u
+CharacterCode = [0x0061, 0x0063, 0x0064, 0x0065, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006F, 0x0070, 0x0071, 0x0073, 0x0077, 0x0079, 0x007A];
+NonEscapeCharacter = ["\a", "\c", "\d", "\e", "\g", "\h", "\i", "\j", "\k", "\l", "\m", "\o", "\p", "\q", "\s", "\w", "\y", "\z"];
+for (index = 0; index <= 17; index++) {
+ if (String.fromCharCode(CharacterCode[index]) !== NonEscapeCharacter[index]) {
+ $ERROR('#' + NonEscapeCharacter[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T4.js
new file mode 100644
index 000000000..fcda8ea7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T4.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.2_T4;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: NonEscapeSequence;
+ * @description: NonEscapeSequence :: ENGLISH SMALL ALPHABET;
+*/
+
+//CHECK#a-z without b, f, n, r, t, v, x, u
+
+if ("a" !== "\a") {
+ $ERROR('#a');
+}
+
+if ("c" !== "\c") {
+ $ERROR('#c');
+}
+
+if ("d" !== "\d") {
+ $ERROR('#d');
+}
+
+if ("e" !== "\e") {
+ $ERROR('#e');
+}
+
+if ("g" !== "\g") {
+ $ERROR('#g');
+}
+
+if ("h" !== "\h") {
+ $ERROR('#h');
+}
+
+if ("i" !== "\i") {
+ $ERROR('#i');
+}
+
+if ("j" !== "\j") {
+ $ERROR('#j');
+}
+
+if ("k" !== "\k") {
+ $ERROR('#k');
+}
+
+if ("l" !== "\l") {
+ $ERROR('#l');
+}
+
+if ("m" !== "\m") {
+ $ERROR('#m');
+}
+
+
+if ("o" !== "\o") {
+ $ERROR('#o');
+}
+
+if ("p" !== "\p") {
+ $ERROR('#p');
+}
+
+if ("q" !== "\q") {
+ $ERROR('#q');
+}
+
+if ("s" !== "\s") {
+ $ERROR('#s');
+}
+
+if ("w" !== "\w") {
+ $ERROR('#w');
+}
+
+if ("y" !== "\y") {
+ $ERROR('#y');
+}
+
+if ("z" !== "\z") {
+ $ERROR('#z');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T5.js
new file mode 100644
index 000000000..074c07945
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.2_T5;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: NonEscapeSequence;
+ * @description: NonEscapeSequence :: RUSSIAN CAPITAL ALPHABET;
+*/
+
+//CHECK#А-Я
+CharacterCode = [0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0401];
+NonEscapeCharacter = ["\А", "\Б", "\В", "\Г", "\Д", "\Е", "\Ж", "\З", "\И", "\Й", "\К", "\Л", "\М", "\Н", "\О", "\П", "\Р", "\С", "\Т", "\У", "\Ф", "\Х", "\Ц", "\Ч", "\Ш", "\Щ", "\Ъ", "\Ы", "\Ь", "\Э", "\Ю", "\Я", "\Ё"];
+for (index = 0; index <= 32; index++) {
+ if (String.fromCharCode(CharacterCode[index]) !== NonEscapeCharacter[index]) {
+ $ERROR('#' + NonEscapeCharacter[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T6.js
new file mode 100644
index 000000000..0b2438e35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T6.js
@@ -0,0 +1,143 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.2_T6;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: NonEscapeSequence;
+ * @description: NonEscapeSequence :: RUSSIAN CAPITAL ALPHABET;
+*/
+
+//CHECK#А-Я
+
+if ("А" !== "\А") {
+ $ERROR('#А');
+}
+
+if ("Б" !== "\Б") {
+ $ERROR('#Б');
+}
+
+if ("В" !== "\В") {
+ $ERROR('#В');
+}
+
+if ("Г" !== "\Г") {
+ $ERROR('#Г');
+}
+
+if ("Д" !== "\Д") {
+ $ERROR('#Д');
+}
+
+if ("Е" !== "\Е") {
+ $ERROR('#Е');
+}
+
+if ("Ж" !== "\Ж") {
+ $ERROR('#Ж');
+}
+
+if ("З" !== "\З") {
+ $ERROR('#З');
+}
+
+if ("И" !== "\И") {
+ $ERROR('#И');
+}
+
+if ("Й" !== "\Й") {
+ $ERROR('#Й');
+}
+
+if ("К" !== "\К") {
+ $ERROR('#К');
+}
+
+if ("Л" !== "\Л") {
+ $ERROR('#Л');
+}
+
+if ("М" !== "\М") {
+ $ERROR('#М');
+}
+
+if ("Н" !== "\Н") {
+ $ERROR('#Н');
+}
+
+if ("О" !== "\О") {
+ $ERROR('#О');
+}
+
+if ("П" !== "\П") {
+ $ERROR('#П');
+}
+
+if ("Р" !== "\Р") {
+ $ERROR('#Р');
+}
+
+if ("С" !== "\С") {
+ $ERROR('#С');
+}
+
+if ("Т" !== "\Т") {
+ $ERROR('#Т');
+}
+
+if ("У" !== "\У") {
+ $ERROR('#У');
+}
+
+if ("Ф" !== "\Ф") {
+ $ERROR('#Ф');
+}
+
+if ("Х" !== "\Х") {
+ $ERROR('#Х');
+}
+
+if ("Ц" !== "\Ц") {
+ $ERROR('#Ц');
+}
+
+if ("Ч" !== "\Ч") {
+ $ERROR('#Ч');
+}
+
+if ("Ш" !== "\Ш") {
+ $ERROR('#Ш');
+}
+
+if ("Щ" !== "\Щ") {
+ $ERROR('#Щ');
+}
+
+if ("Ъ" !== "\Ъ") {
+ $ERROR('#Ъ');
+}
+
+if ("Ы" !== "\Ы") {
+ $ERROR('#Ы');
+}
+
+if ("Ь" !== "\Ь") {
+ $ERROR('#Ь');
+}
+
+if ("Э" !== "\Э") {
+ $ERROR('#Э');
+}
+
+if ("Ю" !== "\Ю") {
+ $ERROR('#Ю');
+}
+
+if ("Я" !== "\Я") {
+ $ERROR('#Я');
+}
+
+if ("Ё" !== "\Ё") {
+ $ERROR('#Ё');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T7.js
new file mode 100644
index 000000000..bb7b88cb0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.2_T7;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: NonEscapeSequence;
+ * @description: NonEscapeSequence :: RUSSIAN SMALL ALPHABET;
+*/
+
+//CHECK#а-я
+CharacterCode = [0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x0451];
+NonEscapeCharacter = ["\а", "\б", "\в", "\г", "\д", "\е", "\ж", "\з", "\и", "\й", "\к", "\л", "\м", "\н", "\о", "\п", "\р", "\с", "\т", "\у", "\ф", "\х", "\ц", "\ч", "\ш", "\щ", "\ъ", "\ы", "\ь", "\э", "\ю", "\я", "\ё"];
+for (index = 0; index <= 32; index++) {
+ if (String.fromCharCode(CharacterCode[index]) !== NonEscapeCharacter[index]) {
+ $ERROR('#' + NonEscapeCharacter[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T8.js
new file mode 100644
index 000000000..aa58e4fdf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.2_T8.js
@@ -0,0 +1,143 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.2_T8;
+ * @section: 7.8.4;
+ * @assertion: CharacterEscapeSequnce :: NonEscapeSequence;
+ * @description: NonEscapeSequence :: RUSSIAN SMALL ALPHABET;
+*/
+
+//CHECK#а-я
+
+if ("а" !== "\а") {
+ $ERROR('#а');
+}
+
+if ("б" !== "\б") {
+ $ERROR('#б');
+}
+
+if ("в" !== "\в") {
+ $ERROR('#в');
+}
+
+if ("г" !== "\г") {
+ $ERROR('#г');
+}
+
+if ("д" !== "\д") {
+ $ERROR('#д');
+}
+
+if ("е" !== "\е") {
+ $ERROR('#е');
+}
+
+if ("ж" !== "\ж") {
+ $ERROR('#ж');
+}
+
+if ("з" !== "\з") {
+ $ERROR('#з');
+}
+
+if ("и" !== "\и") {
+ $ERROR('#и');
+}
+
+if ("й" !== "\й") {
+ $ERROR('#й');
+}
+
+if ("к" !== "\к") {
+ $ERROR('#к');
+}
+
+if ("л" !== "\л") {
+ $ERROR('#л');
+}
+
+if ("м" !== "\м") {
+ $ERROR('#м');
+}
+
+if ("н" !== "\н") {
+ $ERROR('#н');
+}
+
+if ("о" !== "\о") {
+ $ERROR('#о');
+}
+
+if ("п" !== "\п") {
+ $ERROR('#п');
+}
+
+if ("р" !== "\р") {
+ $ERROR('#р');
+}
+
+if ("с" !== "\с") {
+ $ERROR('#с');
+}
+
+if ("т" !== "\т") {
+ $ERROR('#т');
+}
+
+if ("у" !== "\у") {
+ $ERROR('#у');
+}
+
+if ("ф" !== "\ф") {
+ $ERROR('#ф');
+}
+
+if ("х" !== "\х") {
+ $ERROR('#х');
+}
+
+if ("ц" !== "\ц") {
+ $ERROR('#ц');
+}
+
+if ("ч" !== "\ч") {
+ $ERROR('#ч');
+}
+
+if ("ш" !== "\ш") {
+ $ERROR('#ш');
+}
+
+if ("щ" !== "\щ") {
+ $ERROR('#щ');
+}
+
+if ("ъ" !== "\ъ") {
+ $ERROR('#ъ');
+}
+
+if ("ы" !== "\ы") {
+ $ERROR('#ы');
+}
+
+if ("ь" !== "\ь") {
+ $ERROR('#ь');
+}
+
+if ("э" !== "\э") {
+ $ERROR('#э');
+}
+
+if ("ю" !== "\ю") {
+ $ERROR('#ю');
+}
+
+if ("я" !== "\я") {
+ $ERROR('#я');
+}
+
+if ("ё" !== "\ё") {
+ $ERROR('#ё');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T1.js
new file mode 100644
index 000000000..979b36413
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.3_T1;
+ * @section: 7.8.4;
+ * @assertion: NonEscapeSequence is not EscapeCharacter;
+ * @description: EscapeCharacter :: DecimalDigits :: 1;
+ * @negative
+*/
+
+//CHECK#1
+"\1"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T2.js
new file mode 100644
index 000000000..13c24c9f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.3_T2;
+ * @section: 7.8.4;
+ * @assertion: NonEscapeSequence is not EscapeCharacter;
+ * @description: EscapeCharacter :: DecimalDigits :: 7;
+ * @negative
+*/
+
+//CHECK#1
+"\7"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T3.js
new file mode 100644
index 000000000..1dd54fff5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.3_T3;
+ * @section: 7.8.4;
+ * @assertion: NonEscapeSequence is not EscapeCharacter;
+ * @description: EscapeCharacter :: DecimalDigits :: 8;
+ * @negative
+*/
+
+//CHECK#1
+"\8"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T4.js
new file mode 100644
index 000000000..26a5260d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.3_T4;
+ * @section: 7.8.4;
+ * @assertion: NonEscapeSequence is not EscapeCharacter;
+ * @description: EscapeCharacter :: DecimalDigits :: 9;
+ * @negative
+*/
+
+//CHECK#1
+"\9"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T5.js
new file mode 100644
index 000000000..1cce3fb03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T5.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.3_T5;
+ * @section: 7.8.4;
+ * @assertion: NonEscapeSequence is not EscapeCharacter;
+ * @description: EscapeCharacter :: u;
+ * @negative
+*/
+
+//CHECK#1
+"\u"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T6.js
new file mode 100644
index 000000000..81fc40fce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T6.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.3_T6;
+ * @section: 7.8.4;
+ * @assertion: NonEscapeSequence is not EscapeCharacter;
+ * @description: EscapeCharacter :: x;
+ * @negative
+*/
+
+//CHECK#1
+"\x"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T7.js
new file mode 100644
index 000000000..3c9c838cd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A4.3_T7.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A4.3_T7;
+ * @section: 7.8.4;
+ * @assertion: NonEscapeSequence is not EscapeCharacter;
+ * @description: EscapeCharacter :: SingleEscapeCharacter :: one of b f n r t v;
+*/
+
+//CHECK#bfnrtv
+if ("b" === "\b") {
+ $ERROR('#b')
+}
+
+if ("f" === "\f") {
+ $ERROR('#f')
+}
+
+if ("n" === "\n") {
+ $ERROR('#n')
+}
+
+if ("r" === "\r") {
+ $ERROR('#r')
+}
+
+if ("t" === "\t") {
+ $ERROR('#t')
+}
+
+if ("v" === "\v") {
+ $ERROR('#v')
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T1.js
new file mode 100644
index 000000000..b3270e0d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A5.1_T1;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: 0;
+ * @description: String.fromCharCode(0x0000);
+*/
+
+//CHECK#1
+if (String.fromCharCode(0x0000) !== "\0") {
+ $ERROR('#1: String.fromCharCode(0x0000) === "\\0"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T2.js
new file mode 100644
index 000000000..ed3184f53
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A5.1_T2;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: 0;
+ * @description: "\u0000";
+*/
+
+//CHECK#1
+if ("\u0000" !== "\0") {
+ $ERROR('#1: "\\u0000" === "\\0"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T3.js
new file mode 100644
index 000000000..fa3573eb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A5.1_T3.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A5.1_T3;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: 0;
+ * @description: "\x00";
+*/
+
+//CHECK#1
+if ("\x00" !== "\0") {
+ $ERROR('#1: "\\x00" === "\\0"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T1.js
new file mode 100644
index 000000000..323b05146
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T1.js
@@ -0,0 +1,89 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A6.1_T1;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: HexEscapeSequence :: x HexDigit HexDigit;
+ * @description: HexEscapeSequence :: HexDigit;
+*/
+
+//CHECK#0
+if ("\x00" !== String.fromCharCode("0")) {
+ $ERROR('#0: "\\x00" === String.fromCharCode("0")');
+}
+
+//CHECK#1
+if ("\x01" !== String.fromCharCode("1")) {
+ $ERROR('#1: "\\x01" === String.fromCharCode("1")');
+}
+
+//CHECK#2
+if ("\x02" !== String.fromCharCode("2")) {
+ $ERROR('#2: "\\x02" === String.fromCharCode("2")');
+}
+
+//CHECK#3
+if ("\x03" !== String.fromCharCode("3")) {
+ $ERROR('#3: "\\x03" === String.fromCharCode("3")');
+}
+
+//CHECK#4
+if ("\x04" !== String.fromCharCode("4")) {
+ $ERROR('#4: "\\x04" === String.fromCharCode("4")');
+}
+
+//CHECK#5
+if ("\x05" !== String.fromCharCode("5")) {
+ $ERROR('#5: "\\x05" === String.fromCharCode("5")');
+}
+
+//CHECK#6
+if ("\x06" !== String.fromCharCode("6")) {
+ $ERROR('#6: "\\x06" === String.fromCharCode("6")');
+}
+
+//CHECK#7
+if ("\x07" !== String.fromCharCode("7")) {
+ $ERROR('#7: "\\x07" === String.fromCharCode("7")');
+}
+
+//CHECK#8
+if ("\x08" !== String.fromCharCode("8")) {
+ $ERROR('#8: "\\x08" === String.fromCharCode("8")');
+}
+
+//CHECK#9
+if ("\x09" !== String.fromCharCode("9")) {
+ $ERROR('#9: "\\x09" === String.fromCharCode("9")');
+}
+
+//CHECK#A
+if ("\x0A" !== String.fromCharCode("10")) {
+ $ERROR('#A: "\\x0A" === String.fromCharCode("10")');
+}
+
+//CHECK#B
+if ("\x0B" !== String.fromCharCode("11")) {
+ $ERROR('#B: "\\x0B" === String.fromCharCode("11")');
+}
+
+//CHECK#C
+if ("\x0C" !== String.fromCharCode("12")) {
+ $ERROR('#C: "\\x0C" === String.fromCharCode("12")');
+}
+
+//CHECK#D
+if ("\x0D" !== String.fromCharCode("13")) {
+ $ERROR('#D: "\\x0D" === String.fromCharCode("13")');
+}
+
+//CHECK#E
+if ("\x0E" !== String.fromCharCode("14")) {
+ $ERROR('#E: "\\x0E" === String.fromCharCode("14")');
+}
+
+//CHECK#F
+if ("\x0F" !== String.fromCharCode("15")) {
+ $ERROR('#F: "\\x0F" === String.fromCharCode("15")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T2.js
new file mode 100644
index 000000000..1669290e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A6.1_T2;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: HexEscapeSequence :: x HexDigit HexDigit;
+ * @description: HexEscapeSequence :: ENGLISH CAPITAL ALPHABET;
+*/
+
+//CHECK#A-Z
+hex = ["\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4A", "\x4B", "\x4C", "\x4D", "\x4E", "\x4F", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5A"];
+character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+for (index = 0; index <= 25; index++) {
+ if (hex[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T3.js
new file mode 100644
index 000000000..46f9a7873
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A6.1_T3;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: HexEscapeSequence :: x HexDigit HexDigit;
+ * @description: HexEscapeSequence :: ENGLISH SMALL ALPHABET;
+*/
+
+//CHECK#a-z
+hex = ["\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6A", "\x6B", "\x6C", "\x6D", "\x6E", "\x6F", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7A"];
+character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (index = 0; index <= 25; index++) {
+ if (hex[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T4.js
new file mode 100644
index 000000000..05d68d2ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.1_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A6.1_T4;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: HexEscapeSequence :: x HexDigit HexDigit;
+ * @description: HexEscapeSequence :: x0G is incorrect;
+ * @negative
+*/
+
+//CHECK#
+"\x0G"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.2_T1.js
new file mode 100644
index 000000000..5fbff8129
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.2_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A6.2_T1;
+ * @section: 7.8.4;
+ * @assertion: HexEscapeSequence :: x HexDigit is incorrect;
+ * @description: HexDigit :: 1;
+ * @negative
+*/
+
+//CHECK#1
+"\x1"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.2_T2.js
new file mode 100644
index 000000000..7370b2356
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.2_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A6.2_T2;
+ * @section: 7.8.4;
+ * @assertion: HexEscapeSequence :: x HexDigit is incorrect;
+ * @description: HexDigit :: A;
+ * @negative
+*/
+
+//CHECK#1
+"\xA"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.3_T1.js
new file mode 100644
index 000000000..6ae94c79b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.3_T1.js
@@ -0,0 +1,84 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A6.3_T1;
+ * @section: 7.8.4;
+ * @assertion: \x HexDigit HexDigit SingleStringCharacter;
+ * @description: Check similar to ('\x01F' === String.fromCharCode('1') + 'F');
+*/
+
+//CHECK#1
+if ('\x01F' !== String.fromCharCode('1') + 'F') {
+ $ERROR("#1: '\x01F' === String.fromCharCode('1') + 'F'");
+}
+
+//CHECK#2
+if ('\x02E' !== String.fromCharCode('2') + 'E') {
+ $ERROR("#2: '\x02E' === String.fromCharCode('2') + 'E'");
+}
+
+//CHECK#3
+if ('\x03D' !== String.fromCharCode('3') + 'D') {
+ $ERROR("#3: '\x03D' === String.fromCharCode('3') + 'D'");
+}
+
+//CHECK#4
+if ('\x04C' !== String.fromCharCode('4') + 'C') {
+ $ERROR("#4: '\x04C' === String.fromCharCode('4') + 'C'");
+}
+
+//CHECK#5
+if ('\x05B' !== String.fromCharCode('5') + 'B') {
+ $ERROR("#5: '\x05B' === String.fromCharCode('5') + 'B'");
+}
+
+//CHECK#6
+if ('\x06A' !== String.fromCharCode('6') + 'A') {
+ $ERROR("#6: '\x06A' === String.fromCharCode('6') + 'A'");
+}
+
+//CHECK#7
+if ('\x079' !== String.fromCharCode('7') + '9') {
+ $ERROR("#7: '\x079' === String.fromCharCode('7') + '9'");
+}
+
+//CHECK#8
+if ('\x088' !== String.fromCharCode('8') + '8') {
+ $ERROR("#8: '\x088' === String.fromCharCode('8') + '8'");
+}
+
+//CHECK#9
+if ('\x097' !== String.fromCharCode('9') + '7') {
+ $ERROR("#9: '\x097' === String.fromCharCode('9') + '7'");
+}
+
+//CHECK#A
+if ('\x0A6' !== String.fromCharCode('10') + '6') {
+ $ERROR("#A: '\x0A6' === String.fromCharCode('10') + '6'");
+}
+
+//CHECK#B
+if ('\x0B5' !== String.fromCharCode('11') + '5') {
+ $ERROR("#B: '\x0B5' === String.fromCharCode('11') + '5'");
+}
+
+//CHECK#C
+if ('\x0C4' !== String.fromCharCode('12') + '4') {
+ $ERROR("#C: '\x0C4' === String.fromCharCode('12') + '4'");
+}
+
+//CHECK#D
+if ('\x0D3' !== String.fromCharCode('13') + '3') {
+ $ERROR("#D: '\x0D3' === String.fromCharCode('13') + '3'");
+}
+
+//CHECK#E
+if ('\x0E2' !== String.fromCharCode('14') + '2') {
+ $ERROR("#E: '\x0E2' === String.fromCharCode('14') + '2'");
+}
+
+//CHECK#F
+if ('\x0F1' !== String.fromCharCode('15') + '1') {
+ $ERROR("#F: '\x0F1' === String.fromCharCode('15') + '1'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.4_T1.js
new file mode 100644
index 000000000..927c12506
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.4_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A6.4_T1;
+ * @section: 7.8.4;
+ * @assertion: HexEscapeSequence \X HexDigit HexDigit is incorrect;
+ * @description: Checking if execution of "\X01" passes;
+ * @negative
+*/
+
+//CHECK#1
+"\X01"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.4_T2.js
new file mode 100644
index 000000000..3c69f1424
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A6.4_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A6.4_T2;
+ * @section: 7.8.4;
+ * @assertion: HexEscapeSequence \X HexDigit HexDigit is incorrect;
+ * @description: Checking if execution of "\X0A" passes;
+ * @negative
+*/
+
+//CHECK#1
+"\X0A"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T1.js
new file mode 100644
index 000000000..4729b84e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T1.js
@@ -0,0 +1,89 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.1_T1;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit;
+ * @description: Check similar to ("\u0000" === String.fromCharCode("0"));
+*/
+
+//CHECK#0
+if ("\u0000" !== String.fromCharCode("0")) {
+ $ERROR('#0: "\\u0000" === String.fromCharCode("0")');
+}
+
+//CHECK#1
+if ("\u0001" !== String.fromCharCode("1")) {
+ $ERROR('#1: "\\u0001" === String.fromCharCode("1")');
+}
+
+//CHECK#2
+if ("\u0002" !== String.fromCharCode("2")) {
+ $ERROR('#2: "\\u0002" === String.fromCharCode("2")');
+}
+
+//CHECK#3
+if ("\u0003" !== String.fromCharCode("3")) {
+ $ERROR('#3: "\\u0003" === String.fromCharCode("3")');
+}
+
+//CHECK#4
+if ("\u0004" !== String.fromCharCode("4")) {
+ $ERROR('#4: "\\u0004" === String.fromCharCode("4")');
+}
+
+//CHECK#5
+if ("\u0005" !== String.fromCharCode("5")) {
+ $ERROR('#5: "\\u0005" === String.fromCharCode("5")');
+}
+
+//CHECK#6
+if ("\u0006" !== String.fromCharCode("6")) {
+ $ERROR('#6: "\\u0006" === String.fromCharCode("6")');
+}
+
+//CHECK#7
+if ("\u0007" !== String.fromCharCode("7")) {
+ $ERROR('#7: "\\u0007" === String.fromCharCode("7")');
+}
+
+//CHECK#8
+if ("\u0008" !== String.fromCharCode("8")) {
+ $ERROR('#8: "\\u0008" === String.fromCharCode("8")');
+}
+
+//CHECK#9
+if ("\u0009" !== String.fromCharCode("9")) {
+ $ERROR('#9: "\\u0009" === String.fromCharCode("9")');
+}
+
+//CHECK#A
+if ("\u000A" !== String.fromCharCode("10")) {
+ $ERROR('#A: "\\u000A" === String.fromCharCode("10")');
+}
+
+//CHECK#B
+if ("\u000B" !== String.fromCharCode("11")) {
+ $ERROR('#B: "\\u000B" === String.fromCharCode("11")');
+}
+
+//CHECK#C
+if ("\u000C" !== String.fromCharCode("12")) {
+ $ERROR('#C: "\\u000C" === String.fromCharCode("12")');
+}
+
+//CHECK#D
+if ("\u000D" !== String.fromCharCode("13")) {
+ $ERROR('#D: "\\u000D" === String.fromCharCode("13")');
+}
+
+//CHECK#E
+if ("\u000E" !== String.fromCharCode("14")) {
+ $ERROR('#E: "\\u000E" === String.fromCharCode("14")');
+}
+
+//CHECK#F
+if ("\u000F" !== String.fromCharCode("15")) {
+ $ERROR('#F: "\\u000F" === String.fromCharCode("15")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T2.js
new file mode 100644
index 000000000..a0ab77db2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.1_T2;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit;
+ * @description: UnicodeEscapeSequence :: ENGLISH CAPITAL ALPHABET;
+*/
+
+//CHECK#A-Z
+unicode = ["\u0041", "\u0042", "\u0043", "\u0044", "\u0045", "\u0046", "\u0047", "\u0048", "\u0049", "\u004A", "\u004B", "\u004C", "\u004D", "\u004E", "\u004F", "\u0050", "\u0051", "\u0052", "\u0053", "\u0054", "\u0055", "\u0056", "\u0057", "\u0058", "\u0059", "\u005A"];
+character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+for (index = 0; index <= 25; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T3.js
new file mode 100644
index 000000000..025ac72e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.1_T3;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit;
+ * @description: UnicodeEscapeSequence :: ENGLISH SMALL ALPHABET;
+*/
+
+//CHECK#a-z
+unicode = ["\u0061", "\u0062", "\u0063", "\u0064", "\u0065", "\u0066", "\u0067", "\u0068", "\u0069", "\u006A", "\u006B", "\u006C", "\u006D", "\u006E", "\u006F", "\u0070", "\u0071", "\u0072", "\u0073", "\u0074", "\u0075", "\u0076", "\u0077", "\u0078", "\u0079", "\u007A"];
+character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (index = 0; index <= 25; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T4.js
new file mode 100644
index 000000000..9a85d1c3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.1_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.1_T4;
+ * @section: 7.8.4;
+ * @assertion: EscapeSequence :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit;
+ * @description: UnicodeEscapeSequence :: u000G is incorrect;
+ * @negative
+*/
+
+//CHECK#
+"\u000G"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T1.js
new file mode 100644
index 000000000..5e0244cd3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.2_T1;
+ * @section: 7.8.4;
+ * @assertion: UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect;
+ * @description: :: HexDigit :: 1;
+ * @negative
+*/
+
+//CHECK#1
+"\u1"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T2.js
new file mode 100644
index 000000000..1af36087d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.2_T2;
+ * @section: 7.8.4;
+ * @assertion: UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect;
+ * @description: :: HexDigit :: A;
+ * @negative
+*/
+
+//CHECK#1
+"\uA"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T3.js
new file mode 100644
index 000000000..47733624c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.2_T3;
+ * @section: 7.8.4;
+ * @assertion: UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect;
+ * @description: :: HexDigit :: 1;
+ * @negative
+*/
+
+//CHECK#1
+"\u11"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T4.js
new file mode 100644
index 000000000..4f546351a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.2_T4;
+ * @section: 7.8.4;
+ * @assertion: UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect;
+ * @description: :: HexDigit :: A;
+ * @negative
+*/
+
+//CHECK#1
+"\uAA"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T5.js
new file mode 100644
index 000000000..93431d506
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T5.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.2_T5;
+ * @section: 7.8.4;
+ * @assertion: UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect;
+ * @description: :: HexDigit :: 1;
+ * @negative
+*/
+
+//CHECK#1
+"\u111"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T6.js
new file mode 100644
index 000000000..4fab2b70c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.2_T6.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.2_T6;
+ * @section: 7.8.4;
+ * @assertion: UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect;
+ * @description: :: HexDigit :: A;
+ * @negative
+*/
+
+//CHECK#1
+"\uAAA"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.3_T1.js
new file mode 100644
index 000000000..320e0087e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.3_T1.js
@@ -0,0 +1,84 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.3_T1;
+ * @section: 7.8.4;
+ * @assertion: \u HexDigit HexDigit HexDigit HexDigit DoubleStringCharacter;
+ * @description: Check similar to ("\u0001F" === String.fromCharCode("1") + "F");
+*/
+
+//CHECK#1
+if ("\u0001F" !== String.fromCharCode("1") + "F") {
+ $ERROR('#1: "\\u0001F" === String.fromCharCode("1") + "F"');
+}
+
+//CHECK#2
+if ("\u0002E" !== String.fromCharCode("2") + "E") {
+ $ERROR('#2: "\\u0002E" === String.fromCharCode("2") + "E"');
+}
+
+//CHECK#3
+if ("\u0003D" !== String.fromCharCode("3") + "D") {
+ $ERROR('#3: "\\u0003D" === String.fromCharCode("3") + "D"');
+}
+
+//CHECK#4
+if ("\u0004C" !== String.fromCharCode("4") + "C") {
+ $ERROR('#4: "\\u0004C" === String.fromCharCode("4") + "C"');
+}
+
+//CHECK#5
+if ("\u0005B" !== String.fromCharCode("5") + "B") {
+ $ERROR('#5: "\\u0005B" === String.fromCharCode("5") + "B"');
+}
+
+//CHECK#6
+if ("\u0006A" !== String.fromCharCode("6") + "A") {
+ $ERROR('#6: "\\u0006A" === String.fromCharCode("6") + "A"');
+}
+
+//CHECK#7
+if ("\u00079" !== String.fromCharCode("7") + "9") {
+ $ERROR('#7: "\\u00079" === String.fromCharCode("7") + "9"');
+}
+
+//CHECK#8
+if ("\u00088" !== String.fromCharCode("8") + "8") {
+ $ERROR('#8: "\\u00088" === String.fromCharCode("8") + "8"');
+}
+
+//CHECK#9
+if ("\u00097" !== String.fromCharCode("9") + "7") {
+ $ERROR('#9: "\\u00097" === String.fromCharCode("9") + "7"');
+}
+
+//CHECK#A
+if ("\u000A6" !== String.fromCharCode("10") + "6") {
+ $ERROR('#A: "\\u000A6" === String.fromCharCode("10") + "6"');
+}
+
+//CHECK#B
+if ("\u000B5" !== String.fromCharCode("11") + "5") {
+ $ERROR('#B: "\\u000B5" === String.fromCharCode("11") + "5"');
+}
+
+//CHECK#C
+if ("\u000C4" !== String.fromCharCode("12") + "4") {
+ $ERROR('#C: "\\u000C4" === String.fromCharCode("12") + "4"');
+}
+
+//CHECK#D
+if ("\u000D3" !== String.fromCharCode("13") + "3") {
+ $ERROR('#D: "\\u000D3" === String.fromCharCode("13") + "3"');
+}
+
+//CHECK#E
+if ("\u000E2" !== String.fromCharCode("14") + "2") {
+ $ERROR('#E: "\\u000E2" === String.fromCharCode("14") + "2"');
+}
+
+//CHECK#F
+if ("\u000F1" !== String.fromCharCode("15") + "1") {
+ $ERROR('#F: "\\u000F1" === String.fromCharCode("15") + "1"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.4_T1.js
new file mode 100644
index 000000000..337c29aae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.4_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.4_T1;
+ * @section: 7.8.4;
+ * @assertion: UnicodeEscapeSequence \U HexDigit HexDigit HexDigit HexDigit is incorrect;
+ * @description: Checking if execution of "\U0001" passes;
+ * @negative
+*/
+
+//CHECK#1
+"\U0001"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.4_T2.js
new file mode 100644
index 000000000..cc9260dd5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.4_String_Literals/S7.8.4_A7.4_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.4_A7.4_T2;
+ * @section: 7.8.4;
+ * @assertion: UnicodeEscapeSequence \U HexDigit HexDigit HexDigit HexDigit is incorrect;
+ * @description: Checking if execution of "\U000A" passes;
+ * @negative
+*/
+
+//CHECK#1
+"\U000A"
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.1_T1.js
new file mode 100644
index 000000000..889d2b3b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.1_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.1_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: NonTerminator but not * or \ or /,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty];
+ * @description: Without eval;
+*/
+
+//CHECK#1
+if (/1/.source !== "1") {
+ $ERROR('#1: /1/');
+}
+
+//CHECK#2
+if (/a/.source !== "a") {
+ $ERROR('#2: /a/');
+}
+
+//CHECK#3
+if (/;/.source !== ";") {
+ $ERROR('#3: /;/');
+}
+
+//CHECK#4
+if (/ /.source !== " ") {
+ $ERROR('#4: / /');
+}
+
+//CHECK#5
+if (/\u0041/.source !== "\\u0041") {
+ $ERROR('#5: /\\u0041/');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.1_T2.js
new file mode 100644
index 000000000..5b3a2b704
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.1_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.1_T2;
+ * @section: 7.8.5, 15.10.1;
+ * @assertion: RegularExpressionFirstChar :: NonTerminator but not * or \ or /,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty];
+ * @description: Complex test with eval, using syntax pattern;
+*/
+
+//CHECK
+errorCount = 0;
+count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (i1 = 0; i1 < 16; i1++) {
+ for (i2 = 0; i2 < 16; i2++) {
+ for (i3 = 0; i3 < 16; i3++) {
+ for (i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T1.js
new file mode 100644
index 000000000..1dcfbfe28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.2_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect;
+ * @description: * ;
+ * @negative
+*/
+
+//CHECK#1
+/*/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T2.js
new file mode 100644
index 000000000..081133660
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.2_T2;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect;
+ * @description: \;
+ * @negative
+*/
+
+//CHECK#1
+/\/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T3.js
new file mode 100644
index 000000000..3cc3174cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T3.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.2_T3;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect;
+ * @description: /;
+ * @negative
+*/
+
+//CHECK#1
+///
+.source;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T4.js
new file mode 100644
index 000000000..d736e3c81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.2_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.2_T4;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect;
+ * @description: [empty];
+ * @negative
+*/
+
+//CHECK#1
+//
+.source;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T1.js
new file mode 100644
index 000000000..de31fbfeb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.3_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: LineTerminator is incorrect;
+ * @description: Line Feed, without eval;
+ * @negative
+*/
+
+//CHECK#1
+/
+/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T2.js
new file mode 100644
index 000000000..ee9cb22ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.3_T2;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: LineTerminator is incorrect;
+ * @description: Line Feed, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/\u000A/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Line Feed is incorrect. Actual: ' + (eval("/\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Line Feed is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T3.js
new file mode 100644
index 000000000..689ca7407
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.3_T3;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: LineTerminator is incorrect;
+ * @description: Carriage Return, without eval;
+ * @negative
+*/
+
+//CHECK#1
+/ /
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T4.js
new file mode 100644
index 000000000..cde74def1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.3_T4;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: LineTerminator is incorrect;
+ * @description: Carriage Return, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/\u000D/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Carriage Return is incorrect. Actual: ' + (eval("/\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Carriage Return is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T5.js
new file mode 100644
index 000000000..b96fabe71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.3_T5;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: LineTerminator is incorrect;
+ * @description: Line separator, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/\u2028/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Line separator is incorrect. Actual: ' + (eval("/\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Line separator is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T6.js
new file mode 100644
index 000000000..97cfc60bb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.3_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.3_T6;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: LineTerminator is incorrect;
+ * @description: Paragraph separator, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/\u2029/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Paragraph separator is incorrect. Actual: ' + (eval("/\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.4_T1.js
new file mode 100644
index 000000000..19784202c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.4_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.
+
+/**
+ * @name: S7.8.5_A1.4_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty];
+ * @description: Check similar to (/\1/.source === "\\1");
+*/
+
+//CHECK#1
+if (/\1/.source !== "\\1") {
+ $ERROR('#1: /\\1/');
+}
+
+//CHECK#2
+if (/\a/.source !== "\\a") {
+ $ERROR('#2: /\\a/');
+}
+
+//CHECK#3
+if (/\;/.source !== "\\;") {
+ $ERROR('#3: /\\;/');
+}
+
+//CHECK#4
+if (/\ /.source !== "\\ ") {
+ $ERROR('#4: /\\ /');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.4_T2.js
new file mode 100644
index 000000000..d997a2a72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.4_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.4_T2;
+ * @section: 7.8.5, 15.10.1;
+ * @assertion: RegularExpressionFirstChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty];
+ * @description: Complex test with eval, using syntax pattern;
+*/
+
+//CHECK
+errorCount = 0;
+count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (i1 = 0; i1 < 16; i1++) {
+ for (i2 = 0; i2 < 16; i2++) {
+ for (i3 = 0; i3 < 16; i3++) {
+ for (i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = "\\" + String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T1.js
new file mode 100644
index 000000000..b3de7a9dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.5_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Line Feed, without eval;
+ * @negative
+*/
+
+//CHECK#1
+/\
+/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T2.js
new file mode 100644
index 000000000..ffa2b60f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.5_T2;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Line Feed, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/\\\u000A/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (eval("/\\\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T3.js
new file mode 100644
index 000000000..7768919a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.5_T3;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Carriage Return, without eval;
+ * @negative
+*/
+
+//CHECK#1
+/\ /
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T4.js
new file mode 100644
index 000000000..fde5dab8e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.5_T4;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Carriage Return, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/\\\u000D/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (eval("/\\\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T5.js
new file mode 100644
index 000000000..3853c428a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.5_T5;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Line separator, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/\\\u2028/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (eval("/\\\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T6.js
new file mode 100644
index 000000000..ed8661881
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.5_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A1.5_T6;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Paragraph separator, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/\\\u2029/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (eval("/\\\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.1_T1.js
new file mode 100644
index 000000000..b7edcb67d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.1_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.1_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: NonTerminator but not \ or /,
+ * RegularExpressionFlags :: [empty];
+ * @description: Without eval;
+*/
+
+//CHECK#1
+if (/1a/.source !== "1a") {
+ $ERROR('#1: /1a/');
+}
+
+//CHECK#2
+if (/aa/.source !== "aa") {
+ $ERROR('#2: /aa/');
+}
+
+//CHECK#3
+if (/,;/.source !== ",;") {
+ $ERROR('#3: /,;/');
+}
+
+//CHECK#4
+if (/ /.source !== " ") {
+ $ERROR('#4: / /');
+}
+
+//CHECK#5
+if (/a\u0041/.source !== "a\\u0041") {
+ $ERROR('#5: /a\\u0041/');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.1_T2.js
new file mode 100644
index 000000000..8edb17632
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.1_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.1_T2;
+ * @section: 7.8.5, 15.10.1;
+ * @assertion: RegularExpressionChar :: NonTerminator but not \ or /,
+ * RegularExpressionFlags :: [empty];
+ * @description: Complex test with eval, using syntax pattern;
+*/
+
+//CHECK
+errorCount = 0;
+count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (i1 = 0; i1 < 16; i1++) {
+ for (i2 = 0; i2 < 16; i2++) {
+ for (i3 = 0; i3 < 16; i3++) {
+ for (i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = "nnnn" + String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.2_T1.js
new file mode 100644
index 000000000..2853fe213
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.2_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.2_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: \ or / is incorrect;
+ * @description: \;
+ * @negative
+*/
+
+//CHECK#1
+/a\/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.2_T2.js
new file mode 100644
index 000000000..6d8967dad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.2_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.2_T2;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: \ or / is incorrect;
+ * @description: /;
+ * @negative
+*/
+
+//CHECK#1
+/a//.source;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T1.js
new file mode 100644
index 000000000..cf1829416
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.3_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: LineTerminator is incorrect;
+ * @description: Line Feed, without eval;
+ * @negative
+*/
+
+//CHECK#1
+/a
+/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T2.js
new file mode 100644
index 000000000..2f239a8a1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.3_T2;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: LineTerminator is incorrect;
+ * @description: Line Feed, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/a\u000A/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Line Feedis incorrect. Actual: ' + (eval("/a\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Line Feed is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T3.js
new file mode 100644
index 000000000..fda8eac5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.3_T3;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: LineTerminator is incorrect;
+ * @description: Carriage Return, without eval;
+ * @negative
+*/
+
+//CHECK#1
+/a /
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T4.js
new file mode 100644
index 000000000..10603fb81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.3_T4;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: LineTerminator is incorrect;
+ * @description: Carriage Return, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/a\u000D/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Carriage Retur is incorrect. Actual: ' + (eval("/a\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Carriage Retur is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T5.js
new file mode 100644
index 000000000..ef118c424
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.3_T5;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: LineTerminator is incorrect;
+ * @description: Line separator, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/a\u2028/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Line separator is incorrect. Actual: ' + (eval("/a\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Line separator is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T6.js
new file mode 100644
index 000000000..89782bb0c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.3_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.3_T6;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: LineTerminator is incorrect;
+ * @description: Paragraph separator, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/s\u2029/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Paragraph separator is incorrect. Actual: ' + (eval("/s\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.4_T1.js
new file mode 100644
index 000000000..0f3bface9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.4_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.
+
+/**
+ * @name: S7.8.5_A2.4_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionFlags :: [empty];
+ * @description: Check similar to (/a\1/.source === "a\\1");
+*/
+
+//CHECK#1
+if (/a\1/.source !== "a\\1") {
+ $ERROR('#1: /a\\1/');
+}
+
+//CHECK#2
+if (/a\a/.source !== "a\\a") {
+ $ERROR('#2: /a\\a/');
+}
+
+//CHECK#3
+if (/,\;/.source !== ",\\;") {
+ $ERROR('#3: /,\\;/');
+}
+
+//CHECK#4
+if (/ \ /.source !== " \\ ") {
+ $ERROR('#4: / \\ /');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.4_T2.js
new file mode 100644
index 000000000..fa0bc210a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.4_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.4_T2;
+ * @section: 7.8.5, 15.10.1;
+ * @assertion: RegularExpressionChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionFlags :: [empty];
+ * @description: Complex test with eval, using syntax pattern;
+*/
+
+//CHECK
+errorCount = 0;
+count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (i1 = 0; i1 < 16; i1++) {
+ for (i2 = 0; i2 < 16; i2++) {
+ for (i3 = 0; i3 < 16; i3++) {
+ for (i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = "a\\" + String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T1.js
new file mode 100644
index 000000000..1f6787d0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.5_T1;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Line Feed, without eval;
+ * @negative
+*/
+
+//CHECK#1
+/a\
+/
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T2.js
new file mode 100644
index 000000000..ca4fdc9e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.5_T2;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Line Feed, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/a\\\u000A/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (eval("/a\\\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T3.js
new file mode 100644
index 000000000..8868af8f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.5_T3;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Carriage Return, without eval;
+ * @negative
+*/
+
+//CHECK#1
+/a\ /
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T4.js
new file mode 100644
index 000000000..e52d6ba96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.5_T4;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Carriage Return, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/a\\\u000D/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (eval("/a\\\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T5.js
new file mode 100644
index 000000000..d15b75ce3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.5_T5;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Line separator, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/a\\\u2028/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (eval("/a\\\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T6.js
new file mode 100644
index 000000000..96ffc13ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.5_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A2.5_T6;
+ * @section: 7.8.5;
+ * @assertion: RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect;
+ * @description: Paragraph separator, with eval;
+*/
+
+//CHECK#1
+try {
+ eval("/a\\\u2029/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (eval("/a\\\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T1.js
new file mode 100644
index 000000000..7a6a1276a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A3.1_T1;
+ * @section: 7.8.5, 15.10.4.1;
+ * @assertion: RegularExpressionFlags :: IdentifierPart;
+ * @description: IdentifierPart :: g;
+*/
+
+//CHECK#1
+var regexp = /(?:)/g;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== false) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === false. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== false) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === false. Actual: ' + (regexp.multiline));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T2.js
new file mode 100644
index 000000000..dc5fbbc42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A3.1_T2;
+ * @section: 7.8.5, 15.10.4.1;
+ * @assertion: RegularExpressionFlags :: IdentifierPart;
+ * @description: IdentifierPart :: i;
+*/
+
+//CHECK#1
+var regexp = /(?:)/i;
+if (regexp.global !== false) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === false. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== true) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== false) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === false. Actual: ' + (regexp.multiline));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T3.js
new file mode 100644
index 000000000..e266be1ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A3.1_T3;
+ * @section: 7.8.5, 15.10.4.1;
+ * @assertion: RegularExpressionFlags :: IdentifierPart;
+ * @description: IdentifierPart :: m;
+*/
+
+//CHECK#1
+var regexp = /(?:)/m;
+if (regexp.global !== false) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === false. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== false) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === false. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== true) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T4.js
new file mode 100644
index 000000000..0c3969309
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A3.1_T4;
+ * @section: 7.8.5, 15.10.4.1;
+ * @assertion: RegularExpressionFlags :: IdentifierPart;
+ * @description: IdentifierPart :: gi;
+*/
+
+//CHECK#1
+var regexp = /(?:)/gi;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== true) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== false) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === false. Actual: ' + (regexp.multiline));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T5.js
new file mode 100644
index 000000000..b0101e1a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A3.1_T5;
+ * @section: 7.8.5, 15.10.4.1;
+ * @assertion: RegularExpressionFlags :: IdentifierPart;
+ * @description: IdentifierPart :: mg;
+*/
+
+//CHECK#1
+var regexp = /(?:)/mg;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== false) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === false. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== true) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T6.js
new file mode 100644
index 000000000..25e84137b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A3.1_T6;
+ * @section: 7.8.5, 15.10.4.1;
+ * @assertion: RegularExpressionFlags :: IdentifierPart;
+ * @description: IdentifierPart :: mig;
+*/
+
+//CHECK#1
+var regexp = /(?:)/mig;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== true) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== true) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T7.js
new file mode 100644
index 000000000..4c112480b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T7.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A3.1_T7;
+ * @section: 7.8.5, 15.10.4.1;
+ * @assertion: RegularExpressionFlags :: IdentifierPart;
+ * @description: IdentifierPart :: \u0067 (g);
+*/
+
+//CHECK#1
+var regexp = /(?:)/\u0067;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/\\u0067; regexp.global === true. Actual: ' + (regexp.global));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T8.js
new file mode 100644
index 000000000..75d4a72af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T8.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A3.1_T8;
+ * @section: 7.8.5, 15.10.4.1;
+ * @assertion: RegularExpressionFlags :: IdentifierPart;
+ * @description: IdentifierPart :: \u0069 (i);
+*/
+
+//CHECK#1
+var regexp = /(?:)/\u0069;
+if (regexp.ignoreCase !== true) {
+ $ERROR('#1: var regexp = /(?:)/\\u0069; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T9.js
new file mode 100644
index 000000000..2086e12fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A3.1_T9.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A3.1_T9;
+ * @section: 7.8.5, 15.10.4.1;
+ * @assertion: RegularExpressionFlags :: IdentifierPart;
+ * @description: IdentifierPart :: \u006D (m);
+*/
+
+//CHECK#1
+var regexp = /(?:)/\u006D;
+if (regexp.multiline !== true) {
+ $ERROR('#1: var regexp = /(?:)/\\u006D; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A4.1.js
new file mode 100644
index 000000000..3846b14f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A4.1.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.
+
+/**
+ * @name: S7.8.5_A4.1;
+ * @section: 7.8.5;
+ * @assertion: A regular expression literal is an input element that is converted to
+ * a RegExp object when it is scanned;
+ * @description: Check ((/(?:)/ instanceof RegExp) === true);
+*/
+
+//CHECK#1
+if ((/(?:)/ instanceof RegExp) !== true) {
+ $ERROR('#1: (/(?:)/ instanceof RegExp) === true. Actual: ' + ((/(?:)/ instanceof RegExp)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A4.2.js
new file mode 100644
index 000000000..59d64a59d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A4.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.8.5_A4.2;
+ * @section: 7.8.5;
+ * @assertion: Two regular expression literals in a program evaluate to
+ * regular expression objects that never compare as === to each other even
+ * if the two literals' contents are identical;
+ * @description: Check equality two regular expression literals;
+*/
+
+//CHECK#1
+var regexp1 = /(?:)/;
+var regexp2 = /(?:)/;
+if (regexp1 === regexp2) {
+ $ERROR('#1: var regexp1 = /(?:)/; var regexp2 = /(?:)/; regexp1 !== regexp2');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T1.js
new file mode 100644
index 000000000..1245710c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.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.
+
+/**
+ * @name: S7.9.2_A1_T1;
+ * @section: 7.9.2;
+ * @assertion: Check examples for automatic semicolon insertion from the Standart;
+ * @description: { 1 2 } 3 is not a valid sentence in the ECMAScript grammar;
+ * @negative;
+*/
+
+//CHECK#1
+{ 1 2 } 3
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T2.js
new file mode 100644
index 000000000..ef79de50a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.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.
+
+/**
+ * @name: S7.9.2_A1_T2;
+ * @section: 7.9.2;
+ * @assertion: Check examples for automatic semicolon insertion from the Standart;
+ * @description: { 1 \n 2 } 3 is a valid sentence in the ECMAScript grammar with automatic semicolon insertion;
+*/
+
+//CHECK#1
+{ 1
+2 } 3
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T3.js
new file mode 100644
index 000000000..17f2c940c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T3.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9.2_A1_T3;
+ * @section: 7.9.2;
+ * @assertion: Check examples for automatic semicolon insertion from the Standart;
+ * @description: for( a ; b \n ) is not a valid sentence in the ECMAScript grammar;
+ * @negative;
+*/
+
+//CHECK#1
+for( a ; b
+)
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T4.js
new file mode 100644
index 000000000..3466ea5c7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9.2_A1_T4;
+ * @section: 7.9.2;
+ * @assertion: Check examples for automatic semicolon insertion from the Standart;
+ * @description: return \n a+b is a valid sentence in the ECMAScript grammar
+ * with automatic semicolon insertion, but returned undefined;
+*/
+
+//CHECK#1
+var a=1,b=2;
+function test(){
+ return
+ a+b
+}
+var x=test();
+if (x!==undefined) $ERROR('#1: Automatic semicolon insertion not work with return');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T5.js
new file mode 100644
index 000000000..5e96a4885
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T5.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9.2_A1_T5;
+ * @section: 7.9.2;
+ * @assertion: Check examples for automatic semicolon insertion from the Standart;
+ * @description: a=b \n ++c is a valid sentence in the ECMAScript grammar
+ * with automatic semicolon insertion, but a!==b++c;
+*/
+
+//CHECK#1
+var a=1,b=2,c=3;
+a=b
+++c
+
+if (a!==b) $ERROR('#1: Automatic semicolon insertion not work with ++');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T6.js
new file mode 100644
index 000000000..5748ca53c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9.2_A1_T6;
+ * @section: 7.9.2;
+ * @assertion: Check examples for automatic semicolon insertion from the Standart;
+ * @description: if(a>b) \n else c=d is not a valid sentence in the ECMAScript grammar;
+ * @negative;
+*/
+
+//CHECK#1
+var a=1,b=2,c=3,d;
+if(a>b)
+else c=d
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T7.js
new file mode 100644
index 000000000..6b7c59a18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/7.9.2_Examples_of_Automatic_Semicolon_Insertion/S7.9.2_A1_T7.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9.2_A1_T7;
+ * @section: 7.9.2;
+ * @assertion: Check examples for automatic semicolon insertion from the Standart;
+ * @description: a=b+c \n (d+e).print() is a valid sentence in the ECMAScript grammar,
+ * and automatic semicolon insertion not run;
+*/
+
+//CHECK#1
+function c (a){
+ return 2*a;
+}
+
+var a=1,b=2,d=4,e=5;
+
+a=b+c
+(d+e)
+
+if (a !== 20) $ERROR('#1: Automatic semicolon insertion work wrong');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A1.js
new file mode 100644
index 000000000..1b63bf15d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A1;
+ * @section: 7.9, 12.7, 12.12;
+ * @assertion: Check Continue Statement for automatic semicolon insertion;
+ * @description: Try use continue \n Label construction;
+*/
+
+//CHECK#1
+label1: for (var i = 0; i <= 0; i++) {
+ for (var j = 0; j <= 1; j++) {
+ if (j === 0) {
+ continue label1;
+ } else {
+ $ERROR('#1: Check continue statement for automatic semicolon insertion');
+ }
+ }
+}
+
+//CHECK#2
+var result = false;
+label2: for (var i = 0; i <= 1; i++) {
+ for (var j = 0; j <= 1; j++) {
+ if (j === 0) {
+ continue
+ label2;
+ } else {
+ result = true;
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: Check continue statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T1.js
new file mode 100644
index 000000000..bcf4cc633
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T1;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "1 * {}" passes;
+*/
+
+//CHECK#1
+1 * {}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T10.js
new file mode 100644
index 000000000..c21b9338e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T10.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T10;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "{a:1 \n} 3" passes;
+*/
+
+//CHECK#1
+{a:1
+} 3
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T11.js
new file mode 100644
index 000000000..cd8aa87f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T11.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T11;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "{a:1 \n} \n 3" passes;
+*/
+
+//CHECK#1
+{a:1
+}
+3
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T12.js
new file mode 100644
index 000000000..c546db9ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T12.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.
+
+/**
+ * @name: S7.9_A10_T12;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "{ \n a: \n 1 \n } \n 3" passes;
+*/
+
+//CHECK#1
+{
+a:
+1
+}
+3
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T2.js
new file mode 100644
index 000000000..cb1d1c140
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T2;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "{}*1" fails;
+ * @negative
+*/
+
+//CHECK#1
+{} * 1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T3.js
new file mode 100644
index 000000000..100aac112
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T3;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "({}) * 1" passes;
+*/
+
+//CHECK#1
+({}) * 1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T4.js
new file mode 100644
index 000000000..524e01aff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T4;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "({};)*1" fails;
+ * @negative
+*/
+
+//CHECK#1
+({};) * 1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T5.js
new file mode 100644
index 000000000..da946c6cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T5.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T5;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "( \n {} \n ) * 1" passes;
+*/
+
+//CHECK#1
+(
+ {}
+) * 1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T6.js
new file mode 100644
index 000000000..76eeab495
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T6;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "{} \n * 1" fails;
+ * @negative
+*/
+
+//CHECK#1
+{}
+ * 1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T7.js
new file mode 100644
index 000000000..f6a646b72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T7.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T7;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "{1} 2" passes;
+*/
+
+//CHECK#1
+{1} 2
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T8.js
new file mode 100644
index 000000000..42613bd5b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T8.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T8;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "{1 2} 3" fails;
+ * @negative
+*/
+
+//CHECK#1
+{1 2} 3
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T9.js
new file mode 100644
index 000000000..caed5e1ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A10_T9.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A10_T9;
+ * @section: 7.9;
+ * @assertion: Check {} for automatic semicolon insertion;
+ * @description: Checking if execution of "{1 \n 2} 3" passes;
+*/
+
+//CHECK#1
+{1
+2} 3
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T1.js
new file mode 100644
index 000000000..afe266aa5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A11_T1;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false) x = 1 (without semicolon) and check x;
+*/
+
+//CHECK#1
+x = 0;
+if (false) x = 1
+if (x !== 0) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T10.js
new file mode 100644
index 000000000..19232e941
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T10.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.
+
+/**
+ * @name: S7.9_A11_T10;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false) {x = 1} else {x=-1} and check x;
+*/
+
+//CHECK#1
+x = 0;
+if (false) {x = 1} else {x = -1}
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T11.js
new file mode 100644
index 000000000..98117dfdf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T11.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A11_T11;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false) {{x = 1};} \n else x=-1 and check x;
+*/
+
+//CHECK#1
+x = 0;
+if (false) {{x = 1};}
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T2.js
new file mode 100644
index 000000000..8aff7dc9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_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.
+
+/**
+ * @name: S7.9_A11_T2;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false) \n x = 1 and check x;
+*/
+
+//CHECK#1
+x = 0;
+if (false)
+x = 1
+if (x !== 0) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T3.js
new file mode 100644
index 000000000..146f49df6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A11_T3;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false);\n x = 1 and check x;
+*/
+
+//CHECK#1
+x = 0;
+if (false);
+x = 1
+if (x !== 1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T4.js
new file mode 100644
index 000000000..86cc4f460
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A11_T4;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "if (false) x = 1 else x = -1" fails;
+ * @negative
+*/
+
+//CHECK#1
+x = 0;
+if (false) x = 1 else x = -1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T5.js
new file mode 100644
index 000000000..07fd6aeff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T5.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A11_T5;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false) x = 1; else x=-1 and check x;
+*/
+
+//CHECK#1
+x = 0;
+if (false) x = 1; else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T6.js
new file mode 100644
index 000000000..e947d06f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A11_T6;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false) x = 1 \n else x=-1 and check x;
+*/
+
+//CHECK#1
+x = 0;
+if (false) x = 1
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T7.js
new file mode 100644
index 000000000..b53ad7649
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T7.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A11_T7;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false) x = 1; \n else x=-1 and check x;
+*/
+
+//CHECK#1
+x = 0;
+if (false) x = 1;
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T8.js
new file mode 100644
index 000000000..c1e3171eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T8.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A11_T8;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false) {x = 1}; \n else x=-1 and check x;
+ * @negative
+*/
+
+//CHECK#1
+x = 0;
+if (false) {x = 1};
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T9.js
new file mode 100644
index 000000000..e8ef43ec1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A11_T9.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A11_T9;
+ * @section: 7.9, 12.5;
+ * @assertion: Check If Statement for automatic semicolon insertion;
+ * @description: Use if (false) {x = 1} \n else x=-1 and check x;
+*/
+
+//CHECK#1
+x = 0;
+if (false) {x = 1}
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A2.js
new file mode 100644
index 000000000..1de851fda
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A2;
+ * @section: 7.9, 12.8, 12.12;
+ * @assertion: Check Break Statement for automatic semicolon insertion;
+ * @description: Try use break \n Label construction;
+*/
+
+//CHECK#1
+label1: for (var i = 0; i <= 0; i++) {
+ for (var j = 0; j <= 0; j++) {
+ break label1;
+ }
+ $ERROR('#1: Check break statement for automatic semicolon insertion');
+}
+
+//CHECK#2
+var result = false;
+label2: for (var i = 0; i <= 0; i++) {
+ for (var j = 0; j <= 0; j++) {
+ break
+ label2;
+ }
+ result = true;
+}
+
+if (result !== true) {
+ $ERROR('#2: Check break statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A3.js
new file mode 100644
index 000000000..3967e0786
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_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.
+
+/**
+ * @name: S7.9_A3;
+ * @section: 7.9, 12.9;
+ * @assertion: Check Return Statement for automatic semicolon insertion;
+ * @description: Try use return \n Expression construction;
+*/
+
+//CHECK#1
+function f1()
+{
+ return 1;
+}
+if (f1() !== 1) {
+ $ERROR('#1: Check return statement for automatic semicolon insertion');
+}
+
+//CHECK#2
+function f2()
+{
+ return
+ 1;
+}
+if (f2() !== undefined) {
+ $ERROR('#2: Check return statement for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A4.js
new file mode 100644
index 000000000..046238351
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A4;
+ * @section: 7.9, 12.13;
+ * @assertion: Check Throw Statement for automatic semicolon insertion;
+ * @description: Try use Throw \n Expression construction;
+ * @negative
+*/
+
+//CHECK#1
+try {
+ throw
+ 1;
+} catch(e) {
+}
+$ERROR('#1: Check throw statement for automatic semicolon insertion');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.1_T1.js
new file mode 100644
index 000000000..fbd867ba3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.1_T1;
+ * @section: 7.9, 12.4, 11.13.1;
+ * @assertion: Check Postfix Increment Operator for automatic semicolon insertion;
+ * @description: Try use Variable \n ++ construction;
+ * @negative
+*/
+
+//CHECK#1
+var x = 0;
+x
+++;
+$ERROR('#1: Check Postfix Increment Operator for automatic semicolon insertion');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.2_T1.js
new file mode 100644
index 000000000..66c0dced4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.2_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.2_T1;
+ * @section: 7.9, 12.4, 11.13.1;
+ * @assertion: Check Prefix Increment Operator for automatic semicolon insertion;
+ * @description: Try use Variable1 \n ++Variable2 construction;
+*/
+
+//CHECK#1
+var x = 0;
+var y = 0;
+x
+++y
+if (x !== 0) {
+ $ERROR('#1: Check Prefix Increment Operator for automatic semicolon insertion');
+} else {
+ if (y !== 1) {
+ $ERROR('#2: Check Prefix Increment Operator for automatic semicolon insertion');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.3_T1.js
new file mode 100644
index 000000000..273f80344
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.3_T1;
+ * @section: 7.9, 12.4, 11.13.2;
+ * @assertion: Check Postfix Decrement Operator for automatic semicolon insertion;
+ * @description: Try use Variable \n -- construction;
+ * @negative
+*/
+
+//CHECK#1
+var x = 1;
+x
+--;
+$ERROR('#1: Check Postfix Decrement Operator for automatic semicolon insertion');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.4_T1.js
new file mode 100644
index 000000000..787559802
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.4_T1;
+ * @section: 7.9, 12.4, 11.13.2;
+ * @assertion: Check Prefix Decrement Operator for automatic semicolon insertion;
+ * @description: Try use Variable1 \n --Variable2 construction;
+*/
+
+//CHECK#1
+var x = 1;
+var y = 1;
+x
+--y
+if (x !== 1) {
+ $ERROR('#1: Check Prefix Decrement Operator for automatic semicolon insertion');
+} else {
+ if (y !== 0) {
+ $ERROR('#1: Check Prefix Decrement Operator for automatic semicolon insertion');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T1.js
new file mode 100644
index 000000000..cc22c8f24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.5_T1;
+ * @section: 7.9, 12.4, 11.2.5;
+ * @assertion: Check Function Expression for automatic semicolon insertion;
+ * @description: Try use 1 + function_name\n(2 + 3) construction;
+*/
+
+//CHECK#1
+function f(t) {
+ return t;
+}
+var x = 1 + f
+(2 + 3)
+if (x !== 6) {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T2.js
new file mode 100644
index 000000000..e10966215
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.5_T2;
+ * @section: 7.9, 12.4, 11.2.5;
+ * @assertion: Check Function Expression for automatic semicolon insertion;
+ * @description: Try use function f(o) {o.x = 1; return o;}; \n (new Object()).x; construction;
+*/
+
+//CHECK#1
+var result = function f(o) {o.x = 1; return o;};
+(new Object()).x;
+if (typeof result !== "function") {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T3.js
new file mode 100644
index 000000000..e11c40a04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.5_T3;
+ * @section: 7.9, 12.4, 11.2.5;
+ * @assertion: Check Function Expression for automatic semicolon insertion;
+ * @description: Try use function f(o) {o.x = 1; return o;} \n (new Object()).x; construction;
+*/
+
+//CHECK#1
+var result = function f(o) {o.x = 1; return o;}
+(new Object()).x;
+if (result !== 1) {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T4.js
new file mode 100644
index 000000000..2e89107d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.5_T4;
+ * @section: 7.9, 12.4, 11.2.5;
+ * @assertion: Check Function Expression for automatic semicolon insertion;
+ * @description: Insert some LineTerminators into function body;
+*/
+
+//CHECK#1
+var x =
+1 + (function (t){return {a:t
+}
+})
+(2 + 3).
+a
+
+if (x !== 6) {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T5.js
new file mode 100644
index 000000000..f0a7d5b23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.5_T5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.5_T5;
+ * @section: 7.9, 12.4, 11.2.5;
+ * @assertion: Check Function Expression for automatic semicolon insertion;
+ * @description: Insert some LineTerminators into rerutn expression;
+ *
+*/
+
+//CHECK#1
+var x =
+1 + (function f
+(t){
+return {
+a:
+function(){
+return t + 1
+}
+}
+}
+)
+(2 + 3).
+a
+()
+
+if (x !== 7) {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.6_T1.js
new file mode 100644
index 000000000..33c56031b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.6_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.6_T1;
+ * @section: 7.9, 12.4, 11.3, 11.4.4, 11.4.5;
+ * @assertion: Since LineTerminator between Postfix Increment/Decrement Operator(I/DO) and operand is not allowed but
+ * between Prefix I/DO and operand admitted, Postfix I/DO in combination with prefix I/DO after automatic semicolon insertion gives valid result;
+ * @description: Try use Variable1 \n ++ \n Variable2 construction;
+*/
+
+var x=0, y=0;
+
+x
+++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==0)&(y!==1)) {
+ $ERROR('#1: Check Postfix Increment Operator for automatic semicolon insertion');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+x
+++y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((x!==0)&(y!==2)) {
+ $ERROR('#2: Check Postfix Increment Operator for automatic semicolon insertion');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.6_T2.js
new file mode 100644
index 000000000..c1aff726a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.6_T2.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A5.6_T2;
+ * @section: 7.9, 12.4, 11.3, 11.4.4, 11.4.5;
+ * @assertion: Since LineTerminator between Postfix Increment/Decrement Operator(I/DO) and operand is not allowed but
+ * between Prefix I/DO and operand admitted, Postfix I/DO in combination with prefix I/DO after automatic semicolon insertion gives valid result;
+ * @description: Try use Variable1 \n -- \n Variable2 construction;
+*/
+
+var x=0, y=2;
+
+x
+--
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==0)&(y!==1)) {
+ $ERROR('#1: Check Postfix Increment Operator for automatic semicolon insertion');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+x
+--y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((x!==0)&(y!==0)) {
+ $ERROR('#2: Check Postfix Increment Operator for automatic semicolon insertion');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.7_T1.js
new file mode 100644
index 000000000..46999612c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.7_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S7.9_A5.7_T1;
+* @section: 7.9;
+* @assertion: Since LineTerminator(LT) between Postfix Increment/Decrement Operator(I/DO) and operand is not allowed, two IO(just as two DO and their combination)
+* between two references separated by [LT] after automatic semicolon insertion lead to syntax error;
+* @description: Try use Variable1 \n ++ \n ++ \n Variable2 construction;
+* @negative;
+*/
+
+var x=0, y=0;
+z=
+x
+++
+++
+y
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.8_T1.js
new file mode 100644
index 000000000..3ab7f8dcc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.8_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S7.9_A5.8_T1;
+* @section: 7.9;
+* @assertion: Since LineTerminator(LT) between Postfix Increment/Decrement Operator(I/DO) and operand is admitted,
+* Additive/Substract Operator(A/SO) in combination with I/DO separated by LT or white spaces after automatic semicolon insertion gives valid result;
+* @description: Try use Variable1 \n + \n ++ \n Variable2 construction;
+*/
+
+var x=0, y=0;
+z=
+x
++
+++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((z!==1)&&(y!==1)&&(x!==0)) {
+ $ERROR('#1: ');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+z=
+x
++ ++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((z!==2)&&(y!==2)&&(x!==0)) {
+ $ERROR('');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+z=
+x
++ ++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ((z!==3)&&(y!==3)&&(x!==0)) {
+ $ERROR('');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.9_T1.js
new file mode 100644
index 000000000..d24d4f54d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A5.9_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S7.9_A5.9_T1;
+* @section: 7.9;
+* @assertion: Additive/Substract Operator(A/SO) in combination with itself separated by LT or white spaces
+* after automatic semicolon insertion gives valid result;
+* @description: Try use Variable1 (different combinations of three +) Variable2 construction;
+*/
+
+var x=1, y=1;
+z=
+x
++
++
++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((z!==2)&&(y!==1)&&(x!==1)) {
+ $ERROR('#1: ');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+z=
+x + + + y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((z!==2)&&(y!==1)&&(x!==1)) {
+ $ERROR('');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+z=
+x
++ +
++ +
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ((z!==2)&&(y!==1)&&(x!==1)) {
+ $ERROR('');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T1.js
new file mode 100644
index 000000000..e30eac579
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T1;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for( Empty two semicolons and \n);
+*/
+
+//CHECK#1
+for(;;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T10.js
new file mode 100644
index 000000000..8ef0f8d98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T10.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.
+
+/**
+ * @name: S7.9_A6.1_T10;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for (false \n two semicolons false \n);
+*/
+
+//CHECK#1
+for(false
+ ;;false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T11.js
new file mode 100644
index 000000000..284e7adb7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T11.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T11;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for (false \n semicolon \n semicolon \n);
+*/
+
+//CHECK#1
+for(false
+ ;
+ ;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T12.js
new file mode 100644
index 000000000..5829f314b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T12.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T12;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for (false \n semicolon false \n semicolon \n);
+*/
+
+//CHECK#1
+for(false
+ ;false
+ ;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T13.js
new file mode 100644
index 000000000..13a422e48
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T13.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T13;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for (false \n semicolon false \n semicolon false \n);
+*/
+
+//CHECK#1
+for(false
+ ;false
+ ;false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T2.js
new file mode 100644
index 000000000..8b187e35c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T2;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for (semicolon \n semicolon \n);
+*/
+
+//CHECK#1
+for(;
+ ;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T3.js
new file mode 100644
index 000000000..ac0aa30ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T3;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for (\n two semicolons \n);
+*/
+
+//CHECK#1
+for(
+ ;;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T4.js
new file mode 100644
index 000000000..2ad59ae6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T4;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for( \n semicolon \n semicolon \n);
+*/
+
+//CHECK#1
+for(
+ ;
+ ;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T5.js
new file mode 100644
index 000000000..32b90fdfc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T5;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for ( \n semicolon \n\n semicolon \n);
+*/
+
+//CHECK#1
+for(
+ ;
+
+ ;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T6.js
new file mode 100644
index 000000000..d99eb8763
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T6;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for(false semicolon false semicolon false \n);
+*/
+
+//CHECK#1
+for(false;false;false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T7.js
new file mode 100644
index 000000000..a1a144053
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T7.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T7;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for (false semicolon false \n semicolon \n);
+*/
+
+//CHECK#1
+for(false;false
+ ;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T8.js
new file mode 100644
index 000000000..1259702ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T8.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.
+
+/**
+ * @name: S7.9_A6.1_T8;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for (false semicolon false \n semicolon false \n);
+*/
+
+//CHECK#1
+for(false;false
+ ;false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T9.js
new file mode 100644
index 000000000..177aa3e8b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.1_T9.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.1_T9;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: for (false \n two semicolons \n);
+*/
+
+//CHECK#1
+for(false
+ ;;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T1.js
new file mode 100644
index 000000000..92d7bf158
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T1;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (semicolon \n);
+ * @negative
+*/
+
+//CHECK#1
+for(;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T10.js
new file mode 100644
index 000000000..a3655383e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T10.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T10;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (\n false \n semicolon);
+ * @negative
+*/
+
+//CHECK#1
+for(
+ false
+;) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T2.js
new file mode 100644
index 000000000..155daa9c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T2;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (\n semicolon \n);
+ * @negative
+*/
+
+//CHECK#1
+for(
+ ;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T3.js
new file mode 100644
index 000000000..913ff04aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T3;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (\n semicolon);
+ * @negative
+*/
+
+//CHECK#1
+for(
+;) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T4.js
new file mode 100644
index 000000000..ed57ab455
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T4;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (\n \n semicolon);
+ * @negative
+*/
+
+//CHECK#1
+for(
+
+;) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T5.js
new file mode 100644
index 000000000..a289dfa8b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T5;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (false semicolon false\n);
+ * @negative
+*/
+
+//CHECK#1
+for(false;false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T6.js
new file mode 100644
index 000000000..f149fe5e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T6;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (false semicolon \n false);
+ * @negative
+*/
+
+//CHECK#1
+for(false;
+false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T7.js
new file mode 100644
index 000000000..fcd935e9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T7;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (false \n semicolon \n);
+ * @negative
+*/
+
+//CHECK#1
+for(false
+ ;
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T8.js
new file mode 100644
index 000000000..a2a8e2302
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T8;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (false \n semicolon false \n);
+ * @negative
+*/
+
+//CHECK#1
+for(false
+ ;false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T9.js
new file mode 100644
index 000000000..162b49385
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.2_T9.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.2_T9;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon;
+ * @description: For header is (\n semicolon false);
+ * @negative
+*/
+
+//CHECK#1
+for(
+;false) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T1.js
new file mode 100644
index 000000000..48f26d74e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.3_T1;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons;
+ * @description: For header is (\n);
+ * @negative
+*/
+
+//CHECK#1
+for(
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T2.js
new file mode 100644
index 000000000..0bc46a241
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.3_T2;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons;
+ * @description: For header is (\n \n);
+ * @negative
+*/
+
+//CHECK#1
+for(
+
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T3.js
new file mode 100644
index 000000000..bd0b885d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.3_T3;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons;
+ * @description: For header is (\n \n \n);
+ * @negative
+*/
+
+//CHECK#1
+for(
+
+
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T4.js
new file mode 100644
index 000000000..fdac812fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.3_T4;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons;
+ * @description: For header is (\n false \n);
+ * @negative
+*/
+
+//CHECK#1
+for(
+ false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T5.js
new file mode 100644
index 000000000..a4baba1b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.3_T5;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons;
+ * @description: For header is (false \n false \n);
+ * @negative
+*/
+
+//CHECK#1
+for(false
+ false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T6.js
new file mode 100644
index 000000000..ae17d64a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.3_T6;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons;
+ * @description: For header is (\n false \n false \n);
+ * @negative
+*/
+
+//CHECK#1
+for(
+ false
+ false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T7.js
new file mode 100644
index 000000000..fabb699cd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.3_T7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.3_T7;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons;
+ * @description: For header is (\n false \n false \n false \n);
+ * @negative
+*/
+
+//CHECK#1
+for(
+ false
+ false
+ false
+) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.4_T1.js
new file mode 100644
index 000000000..d13052438
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.4_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.4_T1;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: Three semicolons. For header is (false semicolon false semicolon false semicolon);
+ * @negative
+*/
+
+//CHECK#1
+for(false;false;false;) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.4_T2.js
new file mode 100644
index 000000000..2344e0e44
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A6.4_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A6.4_T2;
+ * @section: 7.9, 12.6.3;
+ * @assertion: Check For Statement for automatic semicolon insertion;
+ * @description: Three semicolons. For header is (false semicolon false two semicolons false);
+ * @negative
+*/
+
+//CHECK#1
+for(false;false;;false) {
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T1.js
new file mode 100644
index 000000000..e595bea5a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A7_T1;
+ * @section: 7.9, 12.2;
+ * @assertion: Check Var Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "var x \n = 1" passes;
+
+*/
+
+//CHECK#1
+var x
+= 1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T2.js
new file mode 100644
index 000000000..e86117ce5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A7_T2;
+ * @section: 7.9, 12.2;
+ * @assertion: Check Var Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "var x = \n 1" passes;
+*/
+
+//CHECK#1
+var x =
+1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T3.js
new file mode 100644
index 000000000..3392194bb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T3.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A7_T3;
+ * @section: 7.9, 12.2;
+ * @assertion: Check Var Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "var x \n x = 1" passes;
+*/
+
+//CHECK#1
+var x
+x = 1
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T4.js
new file mode 100644
index 000000000..b70cb5896
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A7_T4;
+ * @section: 7.9, 12.2;
+ * @assertion: Check Var Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "var \n x" passes;
+*/
+
+//CHECK#1
+var
+x
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T5.js
new file mode 100644
index 000000000..d187870b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T5.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A7_T5;
+ * @section: 7.9, 12.2;
+ * @assertion: Check Var Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "var \n x \n = \n 1" passes;
+*/
+
+//CHECK#1
+var
+x
+=
+1
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T6.js
new file mode 100644
index 000000000..74cf74cb0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A7_T6;
+ * @section: 7.9, 12.2;
+ * @assertion: Check Var Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "var x, \n y" passes;
+*/
+
+//CHECK#1
+var x,
+y
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T7.js
new file mode 100644
index 000000000..d764851d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T7.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A7_T7;
+ * @section: 7.9, 12.2;
+ * @assertion: Check Var Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "var x \n y" passes;
+ * @negative
+*/
+
+//CHECK#1
+var x
+y
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T8.js
new file mode 100644
index 000000000..475120f19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T8.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A7_T8;
+ * @section: 7.9, 12.2;
+ * @assertion: Check Var Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "var x \n ,y" passes;
+*/
+
+//CHECK#1
+var x
+,y
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T9.js
new file mode 100644
index 000000000..a830cf4c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A7_T9.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A7_T9;
+ * @section: 7.9, 12.2;
+ * @assertion: Check Var Statement for automatic semicolon insertion;
+ * @description: Checking if execution of "var x \n ,y = 1" passes;
+*/
+
+//CHECK#1
+var
+x
+,y = 1
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T1.js
new file mode 100644
index 000000000..0ebebe8f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A8_T1;
+ * @section: 7.9, 12.4;
+ * @assertion: Check Empty Statement for automatic semicolon insertion;
+ * @description: Checking if execution of one semicolon passes;
+*/
+
+//CHECK#1
+;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T2.js
new file mode 100644
index 000000000..130d7ff01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A8_T2;
+ * @section: 7.9, 12.4;
+ * @assertion: Check Empty Statement for automatic semicolon insertion;
+ * @description: Checking if execution of some semicolons with LineTerminators pases;
+*/
+
+//CHECK#1
+;
+;
+;
+;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T3.js
new file mode 100644
index 000000000..65bacf2fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A8_T3;
+ * @section: 7.9, 12.4;
+ * @assertion: Check Empty Statement for automatic semicolon insertion;
+ * @description: Checking if execution of some semicolons without LineTerminators passes;
+*/
+
+//CHECK#1
+;;;;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T4.js
new file mode 100644
index 000000000..0503881e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A8_T4;
+ * @section: 7.9, 12.4;
+ * @assertion: Check Empty Statement for automatic semicolon insertion;
+ * @description: Checking if execution of some semicolons with LineTerminators and numbers passes;
+*/
+
+//CHECK#1
+;1;
+;1
+;1;
+;1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T5.js
new file mode 100644
index 000000000..bec378aa8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A8_T5.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A8_T5;
+ * @section: 7.9, 12.4;
+ * @assertion: Check Empty Statement for automatic semicolon insertion;
+ * @description: Checking if execution of some semicolons without LineTerminators but with numbers passes;
+*/
+
+//CHECK#1
+;;1;;1;;1
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T1.js
new file mode 100644
index 000000000..204a4fbb0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A9_T1;
+ * @section: 7.9, 12.6.1;
+ * @assertion: Check Do-While Statement for automatic semicolon insertion;
+ * @description: Execute do { \n }while(false);
+*/
+
+//CHECK#1
+do {
+} while (false)
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T2.js
new file mode 100644
index 000000000..95e78a098
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A9_T2;
+ * @section: 7.9, 12.6.1;
+ * @assertion: Check Do-While Statement for automatic semicolon insertion;
+ * @description: Execute do; while(false) \n true;
+*/
+
+//CHECK#1
+do ; while (false)
+true
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T3.js
new file mode 100644
index 000000000..e625f5b10
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T3.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A9_T3;
+ * @section: 7.9, 12.6.1;
+ * @assertion: Check Do-While Statement for automatic semicolon insertion;
+ * @description: Execute do { \n ; \n }while(false) true;
+*/
+
+//CHECK#1
+do {
+ ;
+} while (false) true
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T4.js
new file mode 100644
index 000000000..c5e538235
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A9_T4;
+ * @section: 7.9, 12.6.1;
+ * @assertion: Check Do-While Statement for automatic semicolon insertion;
+ * @description: Execute do ; while \n (false) true;
+*/
+
+//CHECK#1
+do ; while
+(false) true
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T5.js
new file mode 100644
index 000000000..0243affa1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T5.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A9_T5;
+ * @section: 7.9, 12.6.1;
+ * @assertion: Check Do-While Statement for automatic semicolon insertion;
+ * @description: Execute do { \n ; \n }while((false) \n );
+*/
+
+//CHECK#1
+do {
+ ;
+} while ((false)
+)
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T6.js
new file mode 100644
index 000000000..c172415a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A9_T6;
+ * @section: 7.9, 12.6.1;
+ * @assertion: Check Do-While Statement for automatic semicolon insertion;
+ * @description: Execute do \n while(false);
+ * @negative
+*/
+
+//CHECK#1
+do
+while (false)
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T7.js
new file mode 100644
index 000000000..996d90ba2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T7.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A9_T7;
+ * @section: 7.9, 12.6.1;
+ * @assertion: Check Do-While Statement for automatic semicolon insertion;
+ * @description: Execute do \n\n while(false);
+ * @negative
+*/
+
+//CHECK#1
+do
+
+while (false)
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T8.js
new file mode 100644
index 000000000..63177d855
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T8.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A9_T8;
+ * @section: 7.9, 12.6.1;
+ * @assertion: Check Do-While Statement for automatic semicolon insertion;
+ * @description: Execute do {}; \n while(false);
+ * @negative
+*/
+
+//CHECK#1
+do {};
+while (false)
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T9.js
new file mode 100644
index 000000000..794d5bd6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/07_Lexical_Conventions/7.9_Automatic_Semicolon_Insertion/S7.9_A9_T9.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.9_A9_T9;
+ * @section: 7.9, 12.6.1;
+ * @assertion: Check Do-While Statement for automatic semicolon insertion;
+ * @description: Execute do {} \n while(false);
+*/
+
+//CHECK#1
+do {}
+while (false)
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A1_T1.js
new file mode 100644
index 000000000..09cf97266
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A1_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.1_A1_T1;
+ * @section: 8.1;
+ * @assertion: The Undefined type has one value, called undefined;
+ * @description: Checking if execution of "var x = undefined" passes;
+*/
+
+// CHECK#1
+var x = undefined;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A1_T2.js
new file mode 100644
index 000000000..b3c2e0859
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A1_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.1_A1_T2;
+ * @section: 8.1;
+ * @assertion: The Undefined type has one value, called undefined;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A2_T1.js
new file mode 100644
index 000000000..0a99c4117
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A2_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.1_A2_T1;
+ * @section: 8.1;
+ * @assertion: Any variable that has not been assigned a value has the value undefined;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A2_T2.js
new file mode 100644
index 000000000..ee8d56ad0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A2_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.1_A2_T2;
+ * @section: 8.1;
+ * @assertion: Any variable that has not been assigned a value has the value undefined;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A3.js
new file mode 100644
index 000000000..f7b28f46e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.1_A3;
+ * @section: 8.1;
+ * @assertion: undefined is now non-writable in es5;
+ * @description: "undefined=1" should throw a TypeError;
+*/
+
+//////////////////////////////////////////////////////////
+// CHECK1#
+var undefined = 1;
+//
+//////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A4.js
new file mode 100644
index 000000000..11ea38cf4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_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.
+
+/**
+ * @name: S8.1_A4;
+ * @section: 8.1;
+ * @assertion: If property of object not exist, return undefined;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A5.js
new file mode 100644
index 000000000..b877f1fa8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.1_The_Undefined_Type/S8.1_A5.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.1_A5;
+ * @section: 8.1;
+ * @assertion: Function argument that isn't provided has a value of undefined;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A1_T1.js
new file mode 100644
index 000000000..29dd3c6fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.2_A1_T1;
+ * @section: 8.2;
+ * @assertion: The Null Type has one value, called null;
+ * @description: Checking if execution of "var x = null" passes;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x = null;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A1_T2.js
new file mode 100644
index 000000000..daa363f0f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.2_A1_T2;
+ * @section: 8.2;
+ * @assertion: The Null Type has one value, called null;
+ * @description: Checking if execution of "x = null" passes;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+x = null;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A2.js
new file mode 100644
index 000000000..0a6020d29
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.2_A2;
+ * @section: 8.2;
+ * @assertion: The null is resrved word;
+ * @description: Checking if execution of "var null" fails;
+ * @negative;
+*/
+
+var null;
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A3.js
new file mode 100644
index 000000000..84edee3ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.2_The_Null_Type/S8.2_A3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.2_A3;
+ * @section: 8.2, 11.4.3;
+ * @assertion: 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;
+ * @description: Check type of null;
+*/
+
+//////////////////////////////////////////////////////////////
+// CHECK#1
+if (typeof(null) !== "object") {
+ $ERROR('#1: typeof null === "object". Actual: ' + (typeof null));
+}
+//
+/////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A1_T1.js
new file mode 100644
index 000000000..187ecb95d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A1_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.3_A1_T1;
+ * @section: 8.3;
+ * @assertion: The Boolean type have two values, called true and false;
+ * @description: Assign true and false to variables;
+*/
+
+if (x == undefined) {
+ $ERROR("x == undefined, but actual is "+ x);
+}
+
+////////////////////////////////////////////////////////////////////////
+// CHECK#1
+var x = true;
+var y = false;
+//
+////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A1_T2.js
new file mode 100644
index 000000000..264fa3471
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A1_T2.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.3_A1_T2;
+ * @section: 8.3;
+ * @assertion: The Boolean type have two values, called true and false;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A2.1.js
new file mode 100644
index 000000000..a65c209fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A2.1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.3_A2.1;
+ * @section: 8.3;
+ * @assertion: The true is reserved word;
+ * @description: Checking if execution of "true=1" fails;
+ * @negative
+*/
+
+true = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A2.2.js
new file mode 100644
index 000000000..b258b6572
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A2.2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.3_A2.2;
+ * @section: 8.3;
+ * @assertion: The false is reserved word;
+ * @description: Checking if execution of "false=0" fails;
+ * @negative
+*/
+
+false = 0;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A3.js
new file mode 100644
index 000000000..e0c4c2bff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.3_The_Boolean_Type/S8.3_A3.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.3_A3;
+* @section: 8.3;
+* @assertion: Applaing negation to boolean works well;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A1.js
new file mode 100644
index 000000000..14e492061
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_A1;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Any variable that has been assigned with string literal has the type string;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A10.js
new file mode 100644
index 000000000..9febe9981
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A10.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A10;
+* @section: 8.4, 7.8.4;
+* @assertion: Both unicode and ascii chars are allowed;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A11.js
new file mode 100644
index 000000000..676653dd0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A11.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A11;
+* @section: 8.4, 7.8.4;
+* @assertion: Presence of reserved words in string literal are allowed;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A12.js
new file mode 100644
index 000000000..5d44716b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A12.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A12;
+* @section: 8.4, 7.8.4;
+* @assertion: Assignment to string literal calls String constructor;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T1.js
new file mode 100644
index 000000000..381b55963
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A13_T1;
+* @section: 8.4;
+* @assertion: When appears not closed single-quote program failes;
+* @description: Try to create variable using 3 single-quote;
+* @negative;
+*/
+
+var str = ''';
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T2.js
new file mode 100644
index 000000000..5a76e7cdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A13_T2;
+* @section: 8.4;
+* @assertion: When appears not closed single-quote program failes;
+* @description: Try to create variable using 1 single-quote;
+* @negative;
+*/
+
+var str = ';
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T3.js
new file mode 100644
index 000000000..f812c606c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A13_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A13_T3;
+* @section: 8.4;
+* @assertion: When appears not closed single-quote program failes;
+* @description: Try to create variable using 4 single-quote;
+* @negative;
+*/
+
+var str = '''';
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T1.js
new file mode 100644
index 000000000..38e863df2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A14_T1;
+* @section: 8.4;
+* @assertion: When appears not closed double-quote program failes;
+* @description: Try to create variable using 1 double-quote;
+* @negative;
+*/
+
+var str = ";
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T2.js
new file mode 100644
index 000000000..ac5eb0d5b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A14_T2;
+* @section: 8.4;
+* @assertion: When appears not closed double-quote program failes;
+* @description: Try to create variable using 3 double-quote;
+* @negative;
+*/
+
+var str = """;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T3.js
new file mode 100644
index 000000000..624f9af0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A14_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A14_T3;
+* @section: 8.4;
+* @assertion: When appears not closed double-quote program failes;
+* @description: Try to create variable using 4 double-quote;
+* @negative;
+*/
+
+var str = """";
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A2.js
new file mode 100644
index 000000000..86dd73d47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_A2;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Empty string has type string;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A3.js
new file mode 100644
index 000000000..e8640efac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A3;
+* @section: 8.4;
+* @assertion: String type has a length property;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A4.js
new file mode 100644
index 000000000..a4097254a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A4;
+* @section: 8.4;
+* @assertion: Empty string variable has a length property;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A5.js
new file mode 100644
index 000000000..a8e3f256e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_A5;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Zero "\0" not terminates the string(C string);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A6.1.js
new file mode 100644
index 000000000..50cf9c68c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A6.1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_A6.1;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Large string 4096 bytes;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A6.2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A6.2.js
new file mode 100644
index 000000000..0ab78538d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A6.2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_A6.2;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Large string 8192 bytes;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.1.js
new file mode 100644
index 000000000..fb981444e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_A7.1;
+ * @section: 8.4, 7.8.4;
+ * @assertion: <LF> between chunks of one string not allowed;
+ * @description: Insert <LF> between chunks of one string;
+ * @negative
+*/
+
+eval("var x = asdf\u000Aghjk");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.2.js
new file mode 100644
index 000000000..fa24f8792
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A7.2;
+* @section: 8.4, 7.8.4;
+* @assertion: <CR> between chunks of one string not allowed;
+* @description: Insert <CR> between chunks of one string;
+* @negative;
+*/
+
+eval("var x = asdf\u000Dghjk");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.3.js
new file mode 100644
index 000000000..f8ebad68b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A7.3;
+* @section: 8.4, 7.8.4;
+* @assertion: <PS> between chunks of one string not allowed;
+* @description: Insert <PS> between chunks of one string;
+* @negative;
+*/
+
+eval("var x = asdf\u2028ghjk");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.4.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.4.js
new file mode 100644
index 000000000..8752e3ffd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A7.4.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_A7.4;
+* @section: 8.4, 7.8.4;
+* @assertion: <LS> between chunks of one string not allowed;
+* @description: Insert <LS> between chunks of one string;
+* @negative;
+*/
+
+eval("var x = asdf\u2029ghjk");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A8.js
new file mode 100644
index 000000000..1559562ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A8.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_A8;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Empty string, 0, false are all equal (==) to each other, since they all evaluate to 0;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T1.js
new file mode 100644
index 000000000..c92719b2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_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.
+
+/**
+ * @name: S8.4_A9_T1;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Assignment to string literals calls String constructor;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T2.js
new file mode 100644
index 000000000..a215f38be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_A9_T2;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Assignment to string literals calls String constructor;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T3.js
new file mode 100644
index 000000000..3709817c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.4_The_String_Type/S8.4_A9_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_A9_T3;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Assignment to string literals calls String constructor;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A1.js
new file mode 100644
index 000000000..75c264505
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_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.
+
+/**
+ * @name: S8.5_A1;
+ * @section: 8.5, 7.8.3;
+ * @assertion: NaN !== NaN;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A10.js
new file mode 100644
index 000000000..3a9168cf9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A10.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A10;
+ * @section: 8.5, 7.8.3;
+ * @assertion: Infinity is not a keyword;
+ * @description: Create variable entitled Infinity;
+*/
+
+var Infinity=1.0;
+Infinity='asdf';
+Infinity=true;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A11_T1.js
new file mode 100644
index 000000000..764bbd959
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A11_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A11_T1;
+ * @section: 8.5, 7.8.3;
+ * @assertion: The integer 0 has two representations, +0 and -0;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A11_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A11_T2.js
new file mode 100644
index 000000000..a0d0e29f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A11_T2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A11_T2;
+ * @section: 8.5, 7.8.3;
+ * @assertion: The integer 0 has two representations, +0 and -0;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A12.1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A12.1.js
new file mode 100644
index 000000000..91f95620e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/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.
+
+/**
+ * @name: S8.5_A12.1;
+ * @section: 8.5, 7.8.3;
+ * @assertion: +Infinity and Infinity are the same as Number.POSITIVE_INFINITY;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A12.2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A12.2.js
new file mode 100644
index 000000000..068910add
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/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.
+
+/**
+ * @name: S8.5_A12.2;
+ * @section: 8.5, 7.8.3;
+ * @assertion: -Infinity is the same as Number.NEGATIVE_INFINITY;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A13_T1.js
new file mode 100644
index 000000000..b3f09697f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A13_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A13_T1;
+ * @section: 8.5, 7.8.3;
+ * @assertion: 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;
+ * @description: Finite Non zero values where e is -1074;
+*/
+
+//CHECK #1
+if ((1*((Math.pow(2,53))-1)*(Math.pow(2,-1074))) !== 4.4501477170144023e-308){
+ $ERROR('#1: (1*((Math.pow(2,53))-1)*(Math.pow(2,-1074))) === 4.4501477170144023e-308. Actual: ' + ((1*((Math.pow(2,53))-1)*(Math.pow(2,-1074)))));
+}
+
+//CHECK #2
+if ((1*(Math.pow(2,52))*(Math.pow(2,-1074))) !== 2.2250738585072014e-308){
+ $ERROR('#2: (1*(Math.pow(2,52))*(Math.pow(2,-1074))) === 2.2250738585072014e-308. Actual: ' + ((1*(Math.pow(2,52))*(Math.pow(2,-1074)))));
+}
+
+//CHECK #3
+if ((-1*(Math.pow(2,52))*(Math.pow(2,-1074))) !== -2.2250738585072014e-308){
+ $ERROR('#3: (-1*(Math.pow(2,52))*(Math.pow(2,-1074))) === -2.2250738585072014e-308. Actual: ' + ((-1*(Math.pow(2,52))*(Math.pow(2,-1074)))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A13_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A13_T2.js
new file mode 100644
index 000000000..4101d243a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A13_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A13_T2;
+ * @section: 8.5, 7.8.3;
+ * @assertion: 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;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A14_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A14_T1.js
new file mode 100644
index 000000000..4106de7ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A14_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A14_T1;
+ * @section: 8.5, 7.8.3;
+ * @assertion: When number absolute value is bigger of 2**1024 should convert to Infinity;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A14_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A14_T2.js
new file mode 100644
index 000000000..6717d8630
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A14_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A14_T2;
+ * @section: 8.5, 7.8.3;
+ * @assertion: When number absolute value is bigger of 2**1024 should convert to Infinity;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A2.1.js
new file mode 100644
index 000000000..b96e7b4eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A2.1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A2.1;
+ * @section: 8.5, 7.8.3;
+ * @assertion: Number type represented as the double precision 64-bit format IEEE 754;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A2.2.js
new file mode 100644
index 000000000..8a1dd4f4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A2.2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A2.2;
+ * @section: 8.5, 7.8.3;
+ * @assertion: Number type represented as the extended precision 64-bit format IEEE 754;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A3.js
new file mode 100644
index 000000000..e728e38ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A3;
+ * @section: 8.5, 7.8.3;
+ * @assertion: NaN expression has a type Number;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A4.js
new file mode 100644
index 000000000..6f94e1144
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A4;
+ * @section: 8.5, 7.8.3;
+ * @assertion: NaN is not a keyword;
+ * @description: Create variable entitled NaN;
+*/
+
+var NaN=1.0;
+NaN='asdf';
+NaN=true;
+NaN=Number.NaN;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A5.js
new file mode 100644
index 000000000..759d10de8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A5.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A5;
+ * @section: 8.5, 7.8.3;
+ * @assertion: NaN not greater or equal zero;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A6.js
new file mode 100644
index 000000000..a9fc601a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_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.
+
+/**
+ * @name: S8.5_A6;
+ * @section: 8.5, 7.8.3;
+ * @assertion: -Infinity expression has a type Number;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A7.js
new file mode 100644
index 000000000..c54eea77b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A7.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A7;
+ * @section: 8.5, 7.8.3;
+ * @assertion: +Infinity expression has a type Number;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A8.js
new file mode 100644
index 000000000..c29714b6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.5_A8;
+ * @section: 8.5, 7.8.3;
+ * @assertion: Infinity is the same as +Infinity;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A9.js
new file mode 100644
index 000000000..d6bd46ce2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.5_The_Number_Type/S8.5_A9.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.
+
+/**
+ * @name: S8.5_A9;
+ * @section: 8.5, 7.8.3;
+ * @assertion: Globally defined variable NaN has not been altered by program execution;
+ * @description: Try alter globally defined variable NaN;
+ * @strict_mode_negative
+*/
+
+Number.NaN = 1;
+
+if (Number.NaN === 1) {
+ $ERROR('#1: Globally defined variable NaN has not been altered by program execution');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A1.js
new file mode 100644
index 000000000..491ba09fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A1.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.
+
+/**
+ * @name: S8.6.1_A1;
+ * @section: 8.6.1, 15.2.2, 15.8;
+ * @assertion: A property can have attribute ReadOnly like E in Math;
+ * @description: Try change Math.E property;
+ * @strict_mode_negative
+*/
+
+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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A2.js
new file mode 100644
index 000000000..9fe75e01a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A2.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.
+
+/**
+ * @name: S8.6.1_A2;
+ * @section: 8.6.1, 12.6.4, 15.7;
+ * @assertion: A property can have attribute DontEnum like all properties of Number;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A3.js
new file mode 100644
index 000000000..26e2bb2b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.1_Property_Attributes/S8.6.1_A3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.6.1_A3;
+ * @section: 8.6.1, 15.7;
+ * @assertion: A property can have attribute DontDelete like NaN propertie of Number object;
+ * @description: Try to delete Number.NaN;
+ * @strict_mode_negative
+*/
+//////////////////////////////////////////////////////////////////////////////
+//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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A1.js
new file mode 100644
index 000000000..18dfaa0df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.1_A1;
+* @section: 8.6.2.1;
+* @assertion: [[Get]](P) method should return value when property P does not exist in instance but prototype contain it;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A2.js
new file mode 100644
index 000000000..5897e1d54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.1_A2;
+* @section: 8.6.2.1;
+* @assertion: [[Get]](P) method should return undefined when property P does not exist both in instance and prototype;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A3.js
new file mode 100644
index 000000000..4fb8b89cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.1_A3.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.1_A3;
+* @section: 8.6.2.1;
+* @assertion: When the [[Get]] method of O is called with property name P value of P returns;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.2_A1.js
new file mode 100644
index 000000000..d8637b3c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.2_A1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.2_A1;
+* @section: 8.6.2.2;
+* @assertion: 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;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.2_A2.js
new file mode 100644
index 000000000..932a2d1b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.2_A2.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.2_A2;
+* @section: 8.6.2.2;
+* @assertion: 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;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.3_A1.js
new file mode 100644
index 000000000..bbc0218ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.3_A1.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.
+
+/**
+ * @name: S8.6.2.3_A1;
+ * @section: 8.6.2.3, 8.6.2.2, 8.6.1;
+ * @assertion: If the property has the ReadOnly attribute, [[CanPut]](P) return false;
+ * @description: Try put other value for Math.E property;
+ * @strict_mode_negative
+*/
+
+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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A1.js
new file mode 100644
index 000000000..e479b8d41
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.4_A1;
+* @section: 8.6.2.4, 12.6.4;
+* @assertion: When the [[HasProperty]] method of O is called with property name P and if O has a property with name P, return true;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A2_T1.js
new file mode 100644
index 000000000..95d53195e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A2_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.4_A2_T1;
+* @section: 8.6.2.4, 12.6.4;
+* @assertion: 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;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A2_T2.js
new file mode 100644
index 000000000..6f44a9de5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A2_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.4_A2_T2;
+* @section: 8.6.2.4, 12.6.4;
+* @assertion: 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;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A3.js
new file mode 100644
index 000000000..57270a317
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.4_A3.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.4_A3;
+* @section: 8.6.2.4, 12.6.4;
+* @assertion: [[hasProperty]] is sensitive to property existence but [[Get]] is not;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A1.js
new file mode 100644
index 000000000..a37abc474
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_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.
+
+/**
+* @name: S8.6.2.5_A1;
+* @section: 8.6.2.5, 15.8, 11.4.1;
+* @assertion: When the [[Delete]] method of O is called with property name P,
+* and If the property has the DontDelete attribute, return false;
+* @description: Try to delete Math.E, that has the DontDelete attribute;
+* @strict_mode_negative
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A2_T1.js
new file mode 100644
index 000000000..8bbf7fd93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A2_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.5_A2_T1;
+* @section: 8.6.2.5, 11.4.1;
+* @assertion: 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;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A2_T2.js
new file mode 100644
index 000000000..2fa6bd1ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_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.
+
+/**
+* @name: S8.6.2.5_A2_T2;
+* @section: 8.6.2.5, 11.4.1;
+* @assertion: 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;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A3.js
new file mode 100644
index 000000000..489756e55
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.5_A3.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.5_A3;
+* @section: 8.6.2.5, 11.4.1;
+* @assertion: When the [[Delete]] method of O is called with property name P,
+* removes the property with name P from O and return true;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A1.js
new file mode 100644
index 000000000..34bbd8e35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.6_A1;
+* @section: 8.6.2.6, 8.6.2, 9.8, 11.8.6;
+* @assertion: 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;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A2.js
new file mode 100644
index 000000000..f3e93b790
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.6_A2;
+* @section: 8.6.2.6, 8.6.2, 9.8;
+* @assertion: 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;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A3.js
new file mode 100644
index 000000000..0c9281e42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_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.
+
+/**
+* @name: S8.6.2.6_A3;
+* @section: 8.6.2.6, 8.6.2;
+* @assertion: We overload valueOf method so it return non Primitive value
+* Thus [[DefaultValue]] must return Object.toString() value;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A4.js
new file mode 100644
index 000000000..2430b62cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2.6_A4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2.6_A4;
+* @section: 8.6.2.6, 8.6.2;
+* @assertion: 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;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A1.js
new file mode 100644
index 000000000..c100d69da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A1.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.6.2_A1;
+ * @section: 8.6.2, 15.2.4;
+ * @assertion: 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;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A2.js
new file mode 100644
index 000000000..46545f627
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/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.
+
+/**
+ * @name: S8.6.2_A2;
+ * @section: 8.6.2, 15.2.4;
+ * @assertion: Properties of the [[Prototype]] object
+ * are visible as properties of the child object for the purposes of get access, but not for put access;
+ * @description: Check visibility properties of the child object for the purposes of get access, but not for put access;
+ * @strict_mode_negative
+*/
+
+//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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A3.js
new file mode 100644
index 000000000..678559f03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2_A3;
+* @section: 8.6.2, 15.2.4.2;
+* @assertion: The specification does not provide any means for a program to access [[class]] value except through Object.prototype.toString;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A4.js
new file mode 100644
index 000000000..5faa5ca4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A4.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2_A4;
+* @section: 8.6.2, 11.8.6;
+* @assertion: [[HasInstance]] returns a boolean value indicating whether Value delegates behaviour to this object;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T1.js
new file mode 100644
index 000000000..d99ed5717
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2_A5_T1;
+* @section: 8.6.2, 13.1, 13.2;
+* @assertion: [[Call]] executes code associated with the object;
+* @description: Call function-property of object, property defined
+* as screen = {touch:function(){count++}};
+*/
+
+this.count=0;
+
+screen = {touch:function(){count++}};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+screen.touch();
+if (count !==1) {
+ $ERROR('#1: this.count=0; screen = {touch:function(){count++}}; screen.touch(); count === 1. Actual: ' + (count));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+screen['touch']();
+if (count !==2) {
+ $ERROR('#2: this.count=0; screen = {touch:function(){count++}}; screen.touch(); screen[\'touch\'](); count === 2. Actual: ' + (count));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T2.js
new file mode 100644
index 000000000..18603376e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2_A5_T2;
+* @section: 8.6.2, 13.1, 13.2;
+* @assertion: [[Call]] executes code associated with the object;
+* @description: Call function-property of object, property defined
+* as seat['move']=function(){position++};
+*/
+
+this.position=0;
+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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T3.js
new file mode 100644
index 000000000..01f3b0e33
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2_A5_T3;
+* @section: 8.6.2, 13.1, 13.2;
+* @assertion: [[Call]] executes code associated with the object;
+* @description: Call function-property of global object, property defined
+* as knock=function(){count++};
+*/
+
+count=0;
+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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T4.js
new file mode 100644
index 000000000..80389e5e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A5_T4.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6.2_A5_T4;
+* @section: 8.6.2, 13.1, 13.2;
+* @assertion: [[Call]] executes code associated with the object;
+* @description: Call function-property of global object, property defined
+* as this['beep']=function(){__count++};
+*/
+
+__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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A6.js
new file mode 100644
index 000000000..e635e7382
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_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.
+
+/**
+* @name: S8.6.2_A6;
+* @section: 8.6.2, 15.2.2;
+* @assertion: [[Construct]] constructs an object. Invoked via the new operator. Objects that implement this internal method are called constructors;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A7.js
new file mode 100644
index 000000000..5fd42b8dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A7.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.
+
+/**
+* @name: S8.6.2_A7;
+* @section: 8.6.2, 15.8;
+* @assertion: Objects that implement internal method [[Construct]] are called constructors. Math object is NOT constructor;
+* @description: Checking if execution of "var objMath=new Math" passes;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var objMath=new Math;
+
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A2_T1.js
new file mode 100644
index 000000000..e50bb3ab4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A2_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6_A2_T1;
+* @section: 8.6, 11.3.1;
+* @assertion: Do not crash with postincrement custom property;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A2_T2.js
new file mode 100644
index 000000000..a0b68bfb6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_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.
+
+/**
+* @name: S8.6_A2_T2;
+* @section: 8.6, 11.3.1;
+* @assertion: Do not crash with postincrement custom property;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A3_T1.js
new file mode 100644
index 000000000..51a6d24b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A3_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6_A3_T1;
+* @section: 8.6, 11.4.4;
+* @assertion: Do not crash with pefixincrement custom property;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A3_T2.js
new file mode 100644
index 000000000..b57f94469
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A3_T2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6_A3_T2;
+* @section: 8.6, 11.4.4;
+* @assertion: Do not crash with pefixincrement custom property;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A4_T1.js
new file mode 100644
index 000000000..4ae85c114
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.6_The_Object_Type/S8.6_A4_T1.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.6_A4_T1;
+ * @section: 8.6, 8.6.1, 15.2.2, 12.6.4;
+ * @assertion: An Object is an unordered collection of properties;
+ * @description: Simple using a few custom properties;
+*/
+
+///////////////////////////////////////////////////////
+// CHECK#1
+obj = {bar:true, some:1, foo:"a"};
+
+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
+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
+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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.1_A1.js
new file mode 100644
index 000000000..282d76a89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.1_A1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7.1_A1;
+* @section: 8.7.1, 11.4.1;
+* @assertion: Delete operator deletes pure property, so it returns true to be applyed to this.property;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.1_A2.js
new file mode 100644
index 000000000..c013f9283
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.1_A2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7.1_A2;
+* @section: 8.7.1;
+* @assertion: Delete operator can't delete reference, so it returns false to be applyed to reference;
+* @description: Try to delete y, where y is var y=1;
+*/
+
+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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A1_T1.js
new file mode 100644
index 000000000..ca5722a9d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A1_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7.2_A1_T1;
+* @section: 8.7.2;
+* @assertion: GetValue(V) mast fail;
+* @description: Checking if execution of "'litera'=1;" fails;
+* @negative;
+*/
+
+'litera'=1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A1_T2.js
new file mode 100644
index 000000000..d09a063d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A1_T2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7.2_A1_T2;
+* @section: 8.7.2;
+* @assertion: GetValue(V) mast fail;
+* @description: Checking if execution of "1=1" fails;
+* @negative;
+*/
+
+1=1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A2.js
new file mode 100644
index 000000000..900786a16
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7.2_A2;
+* @section: 8.7.2;
+* @assertion: x++ calls GetValue then PutValue so after applying postfix increment(actually conrete operator type is unimportant)
+* we must have reference to defined value;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A3.js
new file mode 100644
index 000000000..d86917983
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7.2_A3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7.2_A3;
+* @section: 8.7.2;
+* @assertion: this.x++ calls GetValue then PutValue so after applying postfix increment(actually conrete operator type is unimportan)
+* we must have reference to defined value;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A1.js
new file mode 100644
index 000000000..28fa746c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.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.
+
+/**
+* @name: S8.7_A1;
+* @section: 8.7;
+* @assertion: Multiple Variables should Referring to a Single Object;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A2.js
new file mode 100644
index 000000000..bcb7ab1d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7_A2;
+* @section: 8.7;
+* @assertion: Reference to Self-Modifying Object remain the integrity;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A3.js
new file mode 100644
index 000000000..0f5bd2cd8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_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.
+
+/**
+* @name: S8.7_A3;
+* @section: 8.7;
+* @assertion: Changing the Reference of an Object While Maintaining Integrity;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A4.js
new file mode 100644
index 000000000..1a6ebc852
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A4.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7_A4;
+* @section: 8.7;
+* @assertion: Object Modification Resulting in a New Object for Not a Self-Modified Object leads to loss of integrity;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A5_T1.js
new file mode 100644
index 000000000..2729eaa0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A5_T1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7_A5_T1;
+* @section: 8.7;
+* @assertion: Delete unary operator can't delete object to be referenced;
+* @description: Delete referenced object, var __ref = obj;
+* @strict_mode_negative
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A5_T2.js
new file mode 100644
index 000000000..c8bce189a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A5_T2.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7_A5_T2;
+* @section: 8.7, 11.4.1;
+* @assertion: Delete unary operator can't delete object to be referenced;
+* @description: Delete referenced object, __ref = obj;
+* @strict_mode_negative
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//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(); __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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A6.js
new file mode 100644
index 000000000..2dcc88c0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A6.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7_A6;
+* @section: 8.7;
+* @assertion: Passing arguments by value differs from by reference and do not change values to be passed;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A7.js
new file mode 100644
index 000000000..da269cdbd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.7_The_Reference_Type/S8.7_A7.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.7_A7;
+* @section: 8.7;
+* @assertion: Passing arguments by reference do change values of reference to be passed;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T1.js
new file mode 100644
index 000000000..77ebc215e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.8_A2_T1;
+* @section: 8.8;
+* @assertion: Values of the List type are simply ordered sequences of values;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T2.js
new file mode 100644
index 000000000..f00a6f89e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.8_A2_T2;
+* @section: 8.8;
+* @assertion: Values of the List type are simply ordered sequences of values;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T3.js
new file mode 100644
index 000000000..88cd24ae6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/08_Types/8.8_The_List_Type/S8.8_A2_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.8_A2_T3;
+* @section: 8.8;
+* @assertion: Values of the List type are simply ordered sequences of values;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T1.js
new file mode 100644
index 000000000..ee3de33af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.1_A1_T1;
+ * @section: 9.1;
+ * @assertion: Result of primitive conversion from object is a default value for the Object;
+ * @description: Using operator Number. The operator calls ToPrimitive with hint Number;
+*/
+
+// CHECK#1
+var object = {valueOf: function() {return "1"}, toString: function() {return 0}};
+if (Number(object) !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return "1"}, toString: function() {return 0}}; Number(object) === 1. Actual: ' + (Number(object)));
+}
+
+// CHECK#2
+var object = {valueOf: function() {return {}}, toString: function() {return "0"}};
+if (Number(object) !== 0) {
+ $ERROR('#2: var object = {valueOf: function() {return {}}, toString: function() {return "0"}}; Number(object) === 0. Actual: ' + (Number(object)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T2.js
new file mode 100644
index 000000000..173ef644a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.1_A1_T2;
+ * @section: 9.1;
+ * @assertion: Result of primitive conversion from object is a default value for the Object;
+ * @description: Using operator Number. This operator calls ToPrimitive with hint Number;
+*/
+
+// CHECK#1
+var object = {valueOf: function() {return 0}, toString: function() {return 1}};
+if (String(object) !== "1") {
+ $ERROR('#1: var object = {valueOf: function() {return 0}, toString: function() {return 1}}; String(object) === "1". Actual: ' + (String(object)));
+}
+
+// CHECK#2
+var object = {valueOf: function() {return 0}, toString: function() {return {}}};
+if (String(object) !== "0") {
+ $ERROR('#2: var object = {valueOf: function() {return 0}, toString: function() {return {}}}; String(object) === "0". Actual: ' + (String(object)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T3.js
new file mode 100644
index 000000000..1cd3f43b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.1_A1_T3;
+ * @section: 9.1;
+ * @assertion: Result of primitive conversion from object is a default value for the Object;
+ * @description: Using operator "+". This operator firstly calls ToPrimitive and then calls ToString or ToNumber;
+*/
+
+// CHECK#1
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (object + "" !== "1") {
+ $ERROR('#1: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; object + "" === "1". Actual: ' + (object + ""));
+}
+
+// CHECK#2
+var object = {valueOf: function() {return "1"}, toString: function() {return 0}};
+if (object + 0 !== "10") {
+ $ERROR('#2: var object = {valueOf: function() {return "1"}, toString: function() {return 0}}; object + 0 === "10". Actual: ' + (object + 0));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T4.js
new file mode 100644
index 000000000..2cceed535
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.1_ToPrimitive/S9.1_A1_T4.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.1_A1_T4;
+ * @section: 9.1;
+ * @assertion: Result of primitive conversion from object is a default value for the Object;
+ * @description: Using operator "<". The operator firstly calls ToPrimitive and then calls ToString or ToNumber;
+*/
+
+// CHECK#1
+var object = {valueOf: function() {return -2}, toString: function() {return "-2"}};
+if ("-1" < object) {
+ $ERROR('#1: var object = {valueOf: function() {return -2}, toString: function() {return "-2"}}; "-1" < object');
+}
+
+// CHECK#2
+var object = {valueOf: function() {return "-2"}, toString: function() {return -2}};
+if (object < "-1") {
+ $ERROR('#2: var object = {valueOf: function() {return "-2"}, toString: function() {return -2}}; object < "-1"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A1_T1.js
new file mode 100644
index 000000000..206a5dd42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A1_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A1_T1;
+ * @section: 9.2, 15.6.1;
+ * @assertion: Result of boolean conversion from undefined value is false;
+ * @description: Undefined, void and others are converted to Boolean by explicit transformation;
+*/
+
+// CHECK#1
+if (Boolean(undefined) !== false) {
+ $ERROR('#1: Boolean(undefined) === false. Actual: ' + (Boolean(undefined)));
+}
+
+// CHECK#2
+if (Boolean(void 0) !== false) {
+ $ERROR('#2: Boolean(undefined) === false. Actual: ' + (Boolean(undefined)));
+}
+
+// CHECK#3
+if (Boolean(eval("var x")) !== false) {
+ $ERROR('#3: Boolean(eval("var x")) === false. Actual: ' + (Boolean(eval("var x"))));
+}
+
+// CHECK#4
+if (Boolean() !== false) {
+ $ERROR('#4: Boolean() === false. Actual: ' + (Boolean()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A1_T2.js
new file mode 100644
index 000000000..33484189f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A1_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A1_T2;
+ * @section: 9.2, 11.4.9;
+ * @assertion: Result of boolean conversion from undefined value is false;
+ * @description: Undefined, void and others are converted to Boolean by implicit transformation;
+*/
+
+// CHECK#1
+if (!(undefined) !== true) {
+ $ERROR('#1: !(undefined) === true. Actual: ' + (!(undefined)));
+}
+
+// CHECK#2
+if (!(void 0) !== true) {
+ $ERROR('#2: !(undefined) === true. Actual: ' + (!(undefined)));
+}
+
+// CHECK#3
+if (!(eval("var x")) !== true) {
+ $ERROR('#3: !(eval("var x")) === true. Actual: ' + (!(eval("var x"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A2_T1.js
new file mode 100644
index 000000000..0e2ab850a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A2_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A2_T1;
+ * @section: 9.2, 15.6.1;
+ * @assertion: Result of boolean conversion from null value is false;
+ * @description: null convert to Boolean by explicit transformation;
+*/
+
+// CHECK#1
+if (Boolean(null) !== false) {
+ $ERROR('#1: Boolean(null) === false. Actual: ' + (Boolean(null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A2_T2.js
new file mode 100644
index 000000000..c8c90438e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A2_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A2_T2;
+ * @section: 9.2, 11.4.9;
+ * @assertion: Result of boolean conversion from null value is false;
+ * @description: null convert to Boolean by implicit transformation;
+*/
+
+// CHECK#1
+if (!(null) !== true) {
+ $ERROR('#1: !(null) === true. Actual: ' + (!(null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A3_T1.js
new file mode 100644
index 000000000..7d3d0326f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A3_T1;
+ * @section: 9.2, 15.6.1;
+ * @assertion: Result of boolean conversion from boolean value is no conversion;
+ * @description: true and false convert to Boolean by explicit transformation;
+*/
+
+// CHECK#1
+if (Boolean(true) !== true) {
+ $ERROR('#1: Boolean(true) === true. Actual: ' + (Boolean(true)));
+}
+
+// CHECK#2
+if (Boolean(false) !== false) {
+ $ERROR('#2: Boolean(false) === false. Actual: ' + (Boolean(false)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A3_T2.js
new file mode 100644
index 000000000..728d567a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A3_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A3_T2;
+ * @section: 9.2, 11.4.9;
+ * @assertion: Result of boolean conversion from boolean value is no conversion;
+ * @description: true and false convert to Boolean by implicit transformation;
+*/
+
+// CHECK#1
+if (!(true) !== false) {
+ $ERROR('#1: !(true) === false. Actual: ' + (!(true)));
+}
+
+// CHECK#2
+if (!(false) !== true) {
+ $ERROR('#2: !(false) === true. Actual: ' + (!(false)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T1.js
new file mode 100644
index 000000000..a07eac31e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A4_T1;
+ * @section: 9.2, 15.6.1;
+ * @assertion: Result of boolean conversion from number value is false if the argument is +0, -0, or NaN; otherwise, is true;
+ * @description: +0, -0 and NaN convert to Boolean by explicit transformation;
+*/
+
+// CHECK#1
+if (Boolean(+0) !== false) {
+ $ERROR('#1: Boolean(+0) === false. Actual: ' + (Boolean(+0)));
+}
+
+// CHECK#2
+if (Boolean(-0) !== false) {
+ $ERROR('#2: Boolean(-0) === false. Actual: ' + (Boolean(-0)));
+}
+
+// CHECK#3
+if (Boolean(Number.NaN) !== false) {
+ $ERROR('#3: Boolean(Number.NaN) === false. Actual: ' + (Boolean(Number.NaN)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T2.js
new file mode 100644
index 000000000..feece6042
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A4_T2;
+ * @section: 9.2, 11.4.9;
+ * @assertion: Result of boolean conversion from number value is false if the argument is +0, -0, or NaN; otherwise, is true;
+ * @description: +0, -0 and NaN convert to Boolean by implicit transformation;
+*/
+
+// CHECK#1
+if (!(+0) !== true) {
+ $ERROR('#1: !(+0) === true. Actual: ' + (!(+0)));
+}
+
+// CHECK#2
+if (!(-0) !== true) {
+ $ERROR('#2: !(-0) === true. Actual: ' + (!(-0)));
+}
+
+// CHECK#3
+if (!(Number.NaN) !== true) {
+ $ERROR('#3: !(Number.NaN) === true. Actual: ' + (!(Number.NaN)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T3.js
new file mode 100644
index 000000000..e0b8042be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T3.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A4_T3;
+ * @section: 9.2, 15.6.1;
+ * @assertion: Result of boolean conversion from number value is false if the argument is +0, -0, or NaN; otherwise, is true;
+ * @description: Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY,
+ * Number.MAX_VALUE, Number.MIN_VALUE and some numbers convert to Boolean by explicit transformation;
+ */
+
+// CHECK#1
+if (Boolean(Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: Boolean(+Infinity) === true. Actual: ' + (Boolean(+Infinity)));
+}
+
+// CHECK#2;
+if (Boolean(Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: Boolean(-Infinity) === true. Actual: ' + (Boolean(-Infinity)));
+}
+
+// CHECK#3
+if (Boolean(Number.MAX_VALUE) !== true) {
+ $ERROR('#3: Boolean(Number.MAX_VALUE) === true. Actual: ' + (Boolean(Number.MAX_VALUE)));
+}
+
+// CHECK#4
+if (Boolean(Number.MIN_VALUE) !== true) {
+ $ERROR('#4: Boolean(Number.MIN_VALUE) === true. Actual: ' + (Boolean(Number.MIN_VALUE)));
+}
+
+// CHECK#5
+if (Boolean(13) !== true) {
+ $ERROR('#5: Boolean(13) === true. Actual: ' + (Boolean(13)));
+}
+
+// CHECK#6
+if (Boolean(-13) !== true) {
+ $ERROR('#6: Boolean(-13) === true. Actual: ' + (Boolean(-13)));
+}
+
+// CHECK#7
+if (Boolean(1.3) !== true) {
+ $ERROR('#7: Boolean(1.3) === true. Actual: ' + (Boolean(1.3)));
+}
+
+// CHECK#8
+if (Boolean(-1.3) !== true) {
+ $ERROR('#8: Boolean(-1.3) === true. Actual: ' + (Boolean(-1.3)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T4.js
new file mode 100644
index 000000000..036d8197a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A4_T4.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A4_T4;
+ * @section: 9.2, 11.4.9;
+ * @assertion: Result of boolean conversion from number value is false if the argument is +0, -0, or NaN; otherwise, is true;
+ * @description: Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY,
+ * Number.MAX_VALUE, Number.MIN_VALUE and some other numbers are converted to Boolean by implicit transformation;
+ */
+
+// CHECK#1
+if (!(Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#1: !(+Infinity) === false. Actual: ' + (!(+Infinity)));
+}
+
+// CHECK#2;
+if (!(Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#2: !(-Infinity) === false. Actual: ' + (!(-Infinity)));
+}
+
+// CHECK#3
+if (!(Number.MAX_VALUE) !== false) {
+ $ERROR('#3: !(Number.MAX_VALUE) === false. Actual: ' + (!(Number.MAX_VALUE)));
+}
+
+// CHECK#4
+if (!(Number.MIN_VALUE) !== false) {
+ $ERROR('#4: !(Number.MIN_VALUE) === false. Actual: ' + (!(Number.MIN_VALUE)));
+}
+
+// CHECK#5
+if (!(13) !== false) {
+ $ERROR('#5: !(13) === false. Actual: ' + (!(13)));
+}
+
+// CHECK#6
+if (!(-13) !== false) {
+ $ERROR('#6: !(-13) === false. Actual: ' + (!(-13)));
+}
+
+// CHECK#7
+if (!(1.3) !== false) {
+ $ERROR('#7: !(1.3) === false. Actual: ' + (!(1.3)));
+}
+
+// CHECK#8
+if (!(-1.3) !== false) {
+ $ERROR('#8: !(-1.3) === false. Actual: ' + (!(-1.3)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T1.js
new file mode 100644
index 000000000..aff1af952
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A5_T1;
+ * @section: 9.2, 15.6.1;
+ * @assertion: Result of boolean conversion from nonempty string value (length is not zero) is true; from empty String (length is zero) is false;
+ * @description: "" is converted to Boolean by explicit transformation;
+*/
+
+// CHECK#1
+if (Boolean("") !== false) {
+ $ERROR('#1: Boolean("") === false. Actual: ' + (Boolean("")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T2.js
new file mode 100644
index 000000000..319a0b115
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A5_T2;
+ * @section: 9.2, 11.4.9;
+ * @assertion: Result of boolean conversion from nonempty string value (length is not zero) is true; from empty String (length is zero) is false;
+ * @description: "" convert to Boolean by implicit transformation;
+*/
+
+// CHECK#1
+if (!("") !== true) {
+ $ERROR('#1: !("") === true. Actual: ' + (!("")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T3.js
new file mode 100644
index 000000000..5d23db0de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A5_T3;
+ * @section: 9.2, 15.6.1;
+ * @assertion: Result of boolean conversion from nonempty string value (length is not zero) is true; from empty String (length is zero) is false;
+ * @description: Any nonempty string convert to Boolean by explicit transformation;
+*/
+
+// CHECK#1
+if (Boolean(" ") !== true) {
+ $ERROR('#1: Boolean(" ") === true. Actual: ' + (Boolean(" ")));
+}
+
+// CHECK#2
+if (Boolean("Nonempty String") !== true) {
+ $ERROR('#2: Boolean("Nonempty String") === true. Actual: ' + (Boolean("Nonempty String")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T4.js
new file mode 100644
index 000000000..b7fbc0698
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A5_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A5_T4;
+ * @section: 9.2, 11.4.9;
+ * @assertion: Result of boolean conversion from nonempty string value (length is not zero) is true; from empty String (length is zero) is false;
+ * @description: Any nonempty string convert to Boolean by implicit transformation;
+*/
+
+// CHECK#1
+if (!(" ") !== false) {
+ $ERROR('#1: !(" ") === false. Actual: ' + (!(" ")));
+}
+
+// CHECK#2
+if (!("Nonempty String") !== false) {
+ $ERROR('#2: !("Nonempty String") === false. Actual: ' + (!("Nonempty String")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A6_T1.js
new file mode 100644
index 000000000..30f15a9b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A6_T1.js
@@ -0,0 +1,104 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A6_T1;
+ * @section: 9.2, 15.6.1;
+ * @assertion: Result of boolean conversion from object is true;
+ * @description: Different objects convert to Boolean by explicit transformation;
+*/
+
+// CHECK#1
+if (Boolean(new Object()) !== true) {
+ $ERROR('#1: Boolean(new Object()) === true. Actual: ' + (Boolean(new Object())));
+}
+
+// CHECK#2
+if (Boolean(new String("")) !== true) {
+ $ERROR('#2: Boolean(new String("")) === true. Actual: ' + (Boolean(new String(""))));
+}
+
+// CHECK#3
+if (Boolean(new String()) !== true) {
+ $ERROR('#3: Boolean(new String()) === true. Actual: ' + (Boolean(new String())));
+}
+
+// CHECK#4
+if (Boolean(new Boolean(true)) !== true) {
+ $ERROR('#4: Boolean(new Boolean(true)) === true. Actual: ' + (Boolean(new Boolean(true))));
+}
+
+// CHECK#5
+if (Boolean(new Boolean(false)) !== true) {
+ $ERROR('#5: Boolean(new Boolean(false)) === true. Actual: ' + (Boolean(new Boolean(false))));
+}
+
+// CHECK#6
+if (Boolean(new Boolean()) !== true) {
+ $ERROR('#6: Boolean(new Boolean()) === true. Actual: ' + (Boolean(new Boolean())));
+}
+
+// CHECK#7
+if (Boolean(new Array()) !== true) {
+ $ERROR('#7: Boolean(new Array()) === true. Actual: ' + (Boolean(new Array())));
+}
+
+// CHECK#8
+if (Boolean(new Number()) !== true) {
+ $ERROR('#8: Boolean(new Number()) === true. Actual: ' + (Boolean(new Number())));
+}
+
+// CHECK#9
+if (Boolean(new Number(-0)) !== true) {
+ $ERROR('#9: Boolean(new Number(-0)) === true. Actual: ' + (Boolean(new Number(-0))));
+}
+
+// CHECK#10
+if (Boolean(new Number(0)) !== true) {
+ $ERROR('#10: Boolean(new Number(0)) === true. Actual: ' + (Boolean(new Number(0))));
+}
+
+// CHECK#11
+if (Boolean(new Number()) !== true) {
+ $ERROR('#11: Boolean(new Number()) === true. Actual: ' + (Boolean(new Number())));
+}
+
+// CHECK#12
+if (Boolean(new Number(Number.NaN)) !== true) {
+ $ERROR('#12: Boolean(new Number(Number.NaN)) === true. Actual: ' + (Boolean(new Number(Number.NaN))));
+}
+
+// CHECK#13
+if (Boolean(new Number(-1)) !== true) {
+ $ERROR('#13: Boolean(new Number(-1)) === true. Actual: ' + (Boolean(new Number(-1))));
+}
+
+// CHECK#14
+if (Boolean(new Number(1)) !== true) {
+ $ERROR('#14: Boolean(new Number(1)) === true. Actual: ' + (Boolean(new Number(1))));
+}
+
+// CHECK#15
+if (Boolean(new Number(Number.POSITIVE_INFINITY)) !== true) {
+ $ERROR('#15: Boolean(new Number(Number.POSITIVE_INFINITY)) === true. Actual: ' + (Boolean(new Number(Number.POSITIVE_INFINITY))));
+}
+
+// CHECK#16
+if (Boolean(new Number(Number.NEGATIVE_INFINITY)) !== true) {
+ $ERROR('#16: Boolean(new Number(Number.NEGATIVE_INFINITY)) === true. Actual: ' + (Boolean(new Number(Number.NEGATIVE_INFINITY))));
+}
+
+// CHECK#17
+if (Boolean(new Function()) !== true) {
+ $ERROR('#17: Boolean(new Function()) === true. Actual: ' + (Boolean(new Function())));
+}
+
+// CHECK#18
+if (Boolean(new Date()) !== true) {
+ $ERROR('#18: Boolean(new Date()) === true. Actual: ' + (Boolean(new Date())));
+}
+
+// CHECK#19
+if (Boolean(new Date(0)) !== true) {
+ $ERROR('#19: Boolean(new Date(0)) === true. Actual: ' + (Boolean(new Date(0))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A6_T2.js
new file mode 100644
index 000000000..38c791a79
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.2_ToBoolean/S9.2_A6_T2.js
@@ -0,0 +1,104 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.2_A6_T2;
+ * @section: 9.2, 11.4.9;
+ * @assertion: Result of boolean conversion from object is true;
+ * @description: Different objects convert to Boolean by implicit transformation;
+*/
+
+// CHECK#1
+if (!(new Object()) !== false) {
+ $ERROR('#1: !(new Object()) === false. Actual: ' + (!(new Object())));
+}
+
+// CHECK#2
+if (!(new String("")) !== false) {
+ $ERROR('#2: !(new String("")) === false. Actual: ' + (!(new String(""))));
+}
+
+// CHECK#3
+if (!(new String()) !== false) {
+ $ERROR('#3: !(new String()) === false. Actual: ' + (!(new String())));
+}
+
+// CHECK#4
+if (!(new Boolean(true)) !== false) {
+ $ERROR('#4: !(new Boolean(true)) === false. Actual: ' + (!(new Boolean(true))));
+}
+
+// CHECK#5
+if (!(new Boolean(false)) !== false) {
+ $ERROR('#5: !(new Boolean(false)) === false. Actual: ' + (!(new Boolean(false))));
+}
+
+// CHECK#6
+if (!(new Boolean()) !== false) {
+ $ERROR('#6: !(new Boolean()) === false. Actual: ' + (!(new Boolean())));
+}
+
+// CHECK#7
+if (!(new Array()) !== false) {
+ $ERROR('#7: !(new Array()) === false. Actual: ' + (!(new Array())));
+}
+
+// CHECK#8
+if (!(new Number()) !== false) {
+ $ERROR('#8: !(new Number()) === false. Actual: ' + (!(new Number())));
+}
+
+// CHECK#9
+if (!(new Number(-0)) !== false) {
+ $ERROR('#9: !(new Number(-0)) === false. Actual: ' + (!(new Number(-0))));
+}
+
+// CHECK#10
+if (!(new Number(0)) !== false) {
+ $ERROR('#10: !(new Number(0)) === false. Actual: ' + (!(new Number(0))));
+}
+
+// CHECK#11
+if (!(new Number()) !== false) {
+ $ERROR('#11: !(new Number()) === false. Actual: ' + (!(new Number())));
+}
+
+// CHECK#12
+if (!(new Number(Number.NaN)) !== false) {
+ $ERROR('#12: !(new Number(Number.NaN)) === false. Actual: ' + (!(new Number(Number.NaN))));
+}
+
+// CHECK#13
+if (!(new Number(-1)) !== false) {
+ $ERROR('#13: !(new Number(-1)) === false. Actual: ' + (!(new Number(-1))));
+}
+
+// CHECK#14
+if (!(new Number(1)) !== false) {
+ $ERROR('#14: !(new Number(1)) === false. Actual: ' + (!(new Number(1))));
+}
+
+// CHECK#15
+if (!(new Number(Number.POSITIVE_INFINITY)) !== false) {
+ $ERROR('#15: !(new Number(Number.POSITIVE_INFINITY)) === false. Actual: ' + (!(new Number(Number.POSITIVE_INFINITY))));
+}
+
+// CHECK#16
+if (!(new Number(Number.NEGATIVE_INFINITY)) !== false) {
+ $ERROR('#16: !(new Number(Number.NEGATIVE_INFINITY)) === false. Actual: ' + (!(new Number(Number.NEGATIVE_INFINITY))));
+}
+
+// CHECK#17
+if (!(new Function()) !== false) {
+ $ERROR('#17: !(new Function()) === false. Actual: ' + (!(new Function())));
+}
+
+// CHECK#18
+if (!(new Date()) !== false) {
+ $ERROR('#18: !(new Date()) === false. Actual: ' + (!(new Date())));
+}
+
+// CHECK#19
+if (!(new Date(0)) !== false) {
+ $ERROR('#19: !(new Date(0)) === false. Actual: ' + (!(new Date(0))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A1.js
new file mode 100644
index 000000000..50d235b1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A1;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StringNumericLiteral ::: [empty] is 0;
+ * @description: Number('') convert to Number by explicit transformation;
+*/
+
+// CHECK#1
+if (Number("") !== 0) {
+ $ERROR('#1.1: Number("") === 0. Actual: ' + (Number("")));
+} else {
+ if (1/Number("") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number("") == +0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A10.js
new file mode 100644
index 000000000..31bad3828
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A10.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.
+
+/**
+ * @name: S9.3.1_A10;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrUnsignedDecimalLiteral:::. DecimalDigits is the
+ * MV of DecimalDigits times 10<sup><small>-n</small></sup>, where n is the
+ * number of characters in DecimalDigits;
+ * @description: Compare Number('.12345') with +('12345')*1e-5;
+*/
+
+// CHECK#1
+if (Number(".12345") !== +("12345")*1e-5) {
+ $ERROR('#1: Number(".12345") === +("12345")*1e-5');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A11.js
new file mode 100644
index 000000000..29434387e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A11.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A11;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrUnsignedDecimalLiteral:::. DecimalDigits ExponentPart
+ * is the MV of DecimalDigits times 10<sup><small>e-n</small></sup>, where n is
+ * the number of characters in DecimalDigits and e is the MV of ExponentPart;
+ * @description: Compare Number('.12345e6') with +('12345')*1e1,
+ * and Number('.12345e-3') !== Number('12345')*1e-8;
+*/
+
+// CHECK#1
+if (Number(".12345e6") !== +("12345")*1e1) {
+ $ERROR('#1: Number(".12345e6") === +("12345")*1e1');
+}
+
+// CHECK#2
+if (Number(".12345e-3") !== Number("12345")*1e-8) {
+ $ERROR('#2: Number(".12345e-3") === Number("12345")*1e-8');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A12.js
new file mode 100644
index 000000000..e051a4578
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A12.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A12;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrUnsignedDecimalLiteral::: DecimalDigits ExponentPart
+ * is the MV of DecimalDigits times 10<sup><small>e</small></sup>, where e is the MV of ExponentPart;
+ * @description: Compare Number('12345e6') with +('12345')*1e1,
+ * and Number('12345e-6') !== Number('12345')*1e-6;
+*/
+
+// CHECK#1
+if (Number("12345e6") !== +("12345")*1e6) {
+ $ERROR('#1: Number("12345e6") === +("12345")*1e6');
+}
+
+// CHECK#2
+if (Number("12345e-6") !== Number("12345")*1e-6) {
+ $ERROR('#2: Number("12345e-6") === Number("12345")*1e-6');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A13.js
new file mode 100644
index 000000000..d2ce42bb9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A13.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A13;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigits ::: DecimalDigits DecimalDigit is
+ * (the MV of DecimalDigits times 10) plus the MV of DecimalDigit;
+ * @description: Compare '12' with Number("1")*10+Number("2") and analogous;
+*/
+
+// CHECK#1
+if (+("12") !== Number("1")*10+Number("2")) {
+ $ERROR('#1: +("12") === Number("1")*10+Number("2")');
+}
+
+// CHECK#2
+if (Number("123") !== Number("12")*10+Number("3")) {
+ $ERROR('#2: Number("123") === Number("12")*10+Number("3")');
+}
+
+// CHECK#2
+if (Number("1234") !== Number("123")*10+Number("4")) {
+ $ERROR('#2: Number("1234") === Number("123")*10+Number("4")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A14.js
new file mode 100644
index 000000000..60ca3816b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A14.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A14;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of SignedInteger ::: + DecimalDigits is the MV of DecimalDigits;
+ * @description: Compare Number('+1234567890') with +('1234567890');
+*/
+
+// CHECK#1
+if (Number("+1234567890") !== +("1234567890")) {
+ $ERROR('#1: Number("+1234567890") === +("1234567890")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A15.js
new file mode 100644
index 000000000..aa004c64b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A15.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A15;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of SignedInteger ::: - DecimalDigits is the negative of the MV of DecimalDigits;
+ * @description: Compare -Number('1234567890') with ('-1234567890');
+*/
+
+// CHECK#1
+if (+("-1234567890") !== -Number("1234567890")) {
+ $ERROR('#1: +("-1234567890") === -Number("1234567890")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A16.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A16.js
new file mode 100644
index 000000000..a73a8d8e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A16.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A16;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 0 or of HexDigit ::: 0 is 0;
+ * @description: Compare Number('0x0') and Number('0X0') with 0;
+*/
+
+// CHECK#1
+if (Number("0") !== 0) {
+ $ERROR('#1: Number("0") === 0. Actual: ' + (Number("0")));
+}
+
+// CHECK#2
+if (+("0x0") !== 0) {
+ $ERROR('#2: +("0x0") === 0. Actual: ' + (+("0x0")));
+}
+
+// CHECK#3
+if (Number("0X0") !== 0) {
+ $ERROR('#3: Number("0X0") === 0. Actual: ' + (Number("0X0")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A17.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A17.js
new file mode 100644
index 000000000..edd79d567
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A17.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A17;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 1 or of HexDigit ::: 1 is 1;
+ * @description: Compare Number('0x1') and Number('0X1') with 1;
+*/
+
+// CHECK#1
+if (Number("1") !== 1) {
+ $ERROR('#1: Number("1") === 1. Actual: ' + (Number("1")));
+}
+
+// CHECK#2
+if (Number("0x1") !== 1) {
+ $ERROR('#2: Number("0x1") === 1. Actual: ' + (Number("0x1")));
+}
+
+// CHECK#3
+if (+("0X1") !== 1) {
+ $ERROR('#3: +("0X1") === 1. Actual: ' + (+("0X1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A18.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A18.js
new file mode 100644
index 000000000..861440504
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A18.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A18;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 2 or of HexDigit ::: 2 is 2;
+ * @description: Compare Number('0x2') and Number('0X2') with 2;
+*/
+
+// CHECK#1
+if (+("2") !== 2) {
+ $ERROR('#1: +("2") === 2. Actual: ' + (+("2")));
+}
+
+// CHECK#2
+if (Number("0x2") !== 2) {
+ $ERROR('#2: Number("0x2") === 2. Actual: ' + (Number("0x2")));
+}
+
+// CHECK#3
+if (Number("0X2") !== 2) {
+ $ERROR('#3: Number("0X2") === 2. Actual: ' + (Number("0X2")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A19.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A19.js
new file mode 100644
index 000000000..8aec46f1b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A19.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A19;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 3 or of HexDigit ::: 3 is 3;
+ * @description: Compare Number('0x3') and Number('0X3') with 3;
+*/
+
+// CHECK#1
+if (Number("3") !== 3) {
+ $ERROR('#1: Number("3") === 3. Actual: ' + (Number("3")));
+}
+
+// CHECK#2
+if (+("0x3") !== 3) {
+ $ERROR('#2: +("0x3") === 3. Actual: ' + (+("0x3")));
+}
+
+// CHECK#3
+if (Number("0X3") !== 3) {
+ $ERROR('#3: Number("0X3") === 3. Actual: ' + (Number("0X3")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A2.js
new file mode 100644
index 000000000..8cc2a7025
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A2.js
@@ -0,0 +1,288 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A2;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StringNumericLiteral ::: StrWhiteSpace is 0;
+ * @description: Strings with various WhiteSpaces convert to Number by explicit transformation;
+ */
+
+// CHECK#1
+if (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== 0) {
+ $ERROR('#1.1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === 0. Actual: ' + (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")));
+} else {
+ if (1/Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === +0. Actual: -0');
+ }
+}
+
+// CHECK#2
+if (Number(" ") !== 0) {
+ $ERROR('#2.1: Number(" ") === 0. Actual: ' + (Number(" ")));
+} else {
+ if (1/Number(" ") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: Number(" ") === +0. Actual: -0');
+ }
+}
+
+// CHECK#3
+if (Number("\t") !== 0) {
+ $ERROR('#3.1: Number("\\t") === 0. Actual: ' + (Number("\t")));
+} else {
+ if (1/Number("\t") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: Number("\\t") === +0. Actual: -0');
+ }
+}
+
+// CHECK#4
+if (Number("\r") !== 0) {
+ $ERROR('#4.1: Number("\\r") === 0. Actual: ' + (Number("\r")));
+} else {
+ if (1/Number("\r") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: Number("\\r") === +0. Actual: -0');
+ }
+}
+
+// CHECK#5
+if (Number("\n") !== 0) {
+ $ERROR('#5.1: Number("\\n") === 0. Actual: ' + (Number("\n")));
+} else {
+ if (1/Number("\n") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: Number("\\n") === +0. Actual: -0');
+ }
+}
+
+// CHECK#6
+if (Number("\f") !== 0) {
+ $ERROR('#6.1: Number("\\f") === 0. Actual: ' + (Number("\f")));
+} else {
+ if (1/Number("\f") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6.2: Number("\\f") === +0. Actual: -0');
+ }
+}
+
+// CHECK#7
+if (Number("\u0009") !== 0) {
+ $ERROR('#7.1: Number("\\u0009") === 0. Actual: ' + (Number("\u0009")));
+} else {
+ if (1/Number("\u0009") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7.2: Number("\\u0009") === +0. Actual: -0');
+ }
+}
+
+// CHECK#8
+if (Number("\u000A") !== 0) {
+ $ERROR('#8.1: Number("\\u000A") === 0. Actual: ' + (Number("\u000A")));
+} else {
+ if (1/Number("\u000A") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8.2: Number("\\u000A") === +0. Actual: -0');
+ }
+}
+
+// CHECK#9
+if (Number("\u000B") !== 0) {
+ $ERROR('#9.1: Number("\\u000B") === 0. Actual: ' + (Number("\u000B")));
+} else {
+ if (1/Number("\u000B") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9.1.2: Number("\\u000B") === +0. Actual: -0');
+ }
+}
+
+// CHECK#10
+if (Number("\u000C") !== 0) {
+ $ERROR('#10.1: Number("\\u000C") === 0. Actual: ' + (Number("\u000C")));
+} else {
+ if (1/Number("\u000C") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#10.2: Number("\\u000C") === +0. Actual: -0');
+ }
+}
+
+// CHECK#11
+if (Number("\u000D") !== 0) {
+ $ERROR('#11.1: Number("\\u000D") === 0. Actual: ' + (Number("\u000D")));
+} else {
+ if (1/Number("\u000D") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#11.2: Number("\\u000D") === +0. Actual: -0');
+ }
+}
+
+// CHECK#12
+if (Number("\u00A0") !== 0) {
+ $ERROR('#12.1: Number("\\u00A0") === 0. Actual: ' + (Number("\u00A0")));
+} else {
+ if (1/Number("\u00A0") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#12.2: Number("\\u00A0") === +0. Actual: -0');
+ }
+}
+
+// CHECK#13
+if (Number("\u0020") !== 0) {
+ $ERROR('#13.1: Number("\\u0020") === 0. Actual: ' + (Number("\u0020")));
+} else {
+ if (1/Number("\u0020") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#13.2: Number("\\u0020") === +0. Actual: -0');
+ }
+}
+
+// CHECK#14
+if (Number("\u2028") !== 0) {
+ $ERROR('#14.1: Number("\\u2028") === 0. Actual: ' + (Number("\u2028")));
+} else {
+ if (1/Number("\u2028") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#14.2: Number("\\u2028") === +0. Actual: -0');
+ }
+}
+
+// CHECK#15
+if (Number("\u2029") !== 0) {
+ $ERROR('#15.1: Number("\\u2029") === 0. Actual: ' + (Number("\u2029")));
+} else {
+ if (1/Number("\u2029") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#15.2: Number("\\u2029") === +0. Actual: -0');
+ }
+}
+
+// CHECK#16
+if (Number("\u1680") !== 0) {
+ $ERROR('#16.1: Number("\\u1680") === 0. Actual: ' + (Number("\u1680")));
+} else {
+ if (1/Number("\u1680") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#16.2: Number("\\u1680") === +0. Actual: -0');
+ }
+}
+
+// CHECK#17
+if (Number("\u180E") !== 0) {
+ $ERROR('#17.1: Number("\\u180E") === 0. Actual: ' + (Number("\u180E")));
+} else {
+ if (1/Number("\u180E") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#17.2: Number("\\u180E") === +0. Actual: -0');
+ }
+}
+
+// CHECK#18
+if (Number("\u2000") !== 0) {
+ $ERROR('#18.1: Number("\\u2000") === 0. Actual: ' + (Number("\u2000")));
+} else {
+ if (1/Number("\u2000") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#18.2: Number("\\u2000") === +0. Actual: -0');
+ }
+}
+
+// CHECK#19
+if (Number("\u2001") !== 0) {
+ $ERROR('#19.1: Number("\\u2001") === 0. Actual: ' + (Number("\u2001")));
+} else {
+ if (1/Number("\u2001") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#19.2: Number("\\u2001") === +0. Actual: -0');
+ }
+}
+
+// CHECK#20
+if (Number("\u2002") !== 0) {
+ $ERROR('#20.1: Number("\\u2002") === 0. Actual: ' + (Number("\u2002")));
+} else {
+ if (1/Number("\u2002") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#20.2: Number("\\u2002") === +0. Actual: -0');
+ }
+}
+
+// CHECK#21
+if (Number("\u2003") !== 0) {
+ $ERROR('#21.1: Number("\\u2003") === 0. Actual: ' + (Number("\u2003")));
+} else {
+ if (1/Number("\u2003") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#21.2: Number("\\u2003") === +0. Actual: -0');
+ }
+}
+
+// CHECK#22
+if (Number("\u2004") !== 0) {
+ $ERROR('#22.1: Number("\\u2004") === 0. Actual: ' + (Number("\u2004")));
+} else {
+ if (1/Number("\u2004") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#22.2: Number("\\u2004") === +0. Actual: -0');
+ }
+}
+
+// CHECK#23
+if (Number("\u2005") !== 0) {
+ $ERROR('#23.1: Number("\\u2005") === 0. Actual: ' + (Number("\u2005")));
+} else {
+ if (1/Number("\u2005") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#23.2: Number("\\u2005") === +0. Actual: -0');
+ }
+}
+
+// CHECK#24
+if (Number("\u2006") !== 0) {
+ $ERROR('#24.1: Number("\\u2006") === 0. Actual: ' + (Number("\u2006")));
+} else {
+ if (1/Number("\u2006") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#24.2: Number("\\u2006") === +0. Actual: -0');
+ }
+}
+
+// CHECK#25
+if (Number("\u2007") !== 0) {
+ $ERROR('#25.1: Number("\\u2007") === 0. Actual: ' + (Number("\u2007")));
+} else {
+ if (1/Number("\u2007") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#25.2: Number("\\u2007") === +0. Actual: -0');
+ }
+}
+
+// CHECK#26
+if (Number("\u2008") !== 0) {
+ $ERROR('#26.1: Number("\\u2008") === 0. Actual: ' + (Number("\u2008")));
+} else {
+ if (1/Number("\u2008") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#26.2: Number("\\u2008") === +0. Actual: -0');
+ }
+}
+
+// CHECK#27
+if (Number("\u2009") !== 0) {
+ $ERROR('#27.1: Number("\\u2009") === 0. Actual: ' + (Number("\u2009")));
+} else {
+ if (1/Number("\u2009") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#27.2: Number("\\u2009") === +0. Actual: -0');
+ }
+}
+
+// CHECK#28
+if (Number("\u200A") !== 0) {
+ $ERROR('#28.1: Number("\\u200A") === 0. Actual: ' + (Number("\u200A")));
+} else {
+ if (1/Number("\u200A") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#28.2: Number("\\u200A") === +0. Actual: -0');
+ }
+}
+
+// CHECK#29
+if (Number("\u202F") !== 0) {
+ $ERROR('#29.1: Number("\\u202F") === 0. Actual: ' + (Number("\u202F")));
+} else {
+ if (1/Number("\u202F") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#29.2: Number("\\u202F") === +0. Actual: -0');
+ }
+}
+
+// CHECK#30
+if (Number("\u205F") !== 0) {
+ $ERROR('#30.1: Number("\\u205F") === 0. Actual: ' + (Number("\u205F")));
+} else {
+ if (1/Number("\u205F") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#30.2: Number("\\u205F") === +0. Actual: -0');
+ }
+}
+
+// CHECK#31
+if (Number("\u3000") !== 0) {
+ $ERROR('#31.1: Number("\\u3000") === 0. Actual: ' + (Number("\u3000")));
+} else {
+ if (1/Number("\u3000") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#31.2: Number("\\u3000") === +0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A20.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A20.js
new file mode 100644
index 000000000..3f0d55681
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A20.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A20;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 4 or of HexDigit ::: 4 is 4;
+ * @description: Compare Number('0x4') and Number('0X4') with 4;
+*/
+
+// CHECK#1
+if (Number("4") !== 4) {
+ $ERROR('#1: Number("4") === 4. Actual: ' + (Number("4")));
+}
+
+// CHECK#2
+if (Number("0x4") !== 4) {
+ $ERROR('#2: Number("0x4") === 4. Actual: ' + (Number("0x4")));
+}
+
+// CHECK#3
+if (+("0X4") !== 4) {
+ $ERROR('#3: +("0X4") === 4. Actual: ' + (+("0X4")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A21.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A21.js
new file mode 100644
index 000000000..23d9ddf2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A21.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A21;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 5 or of HexDigit ::: 5 is 5;
+ * @description: Compare Number('0x5') and Number('0X5') with 5;
+*/
+
+// CHECK#1
+if (+("5") !== 5) {
+ $ERROR('#1: +("5") === 5. Actual: ' + (+("5")));
+}
+
+// CHECK#2
+if (Number("0x5") !== 5) {
+ $ERROR('#2: Number("0x5") === 5. Actual: ' + (Number("0x5")));
+}
+
+// CHECK#3
+if (Number("0X5") !== 5) {
+ $ERROR('#3: Number("0X5") === 5. Actual: ' + (Number("0X5")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A22.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A22.js
new file mode 100644
index 000000000..44182adf7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A22.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A22;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 6 or of HexDigit ::: 6 is 6;
+ * @description: Compare Number('0x6') and Number('0X6') with 6;
+*/
+
+// CHECK#1
+if (Number("6") !== 6) {
+ $ERROR('#1: Number("6") === 6. Actual: ' + (Number("6")));
+}
+
+// CHECK#2
+if (+("0x6") !== 6) {
+ $ERROR('#2: +("0x6") === 6. Actual: ' + (+("0x6")));
+}
+
+// CHECK#3
+if (Number("0X6") !== 6) {
+ $ERROR('#3: Number("0X6") === 6. Actual: ' + (Number("0X6")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A23.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A23.js
new file mode 100644
index 000000000..24e73d1f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A23.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A23;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 7 or of HexDigit ::: 7 is 7;
+ * @description: Compare Number('0x7') and Number('0X7') with 7;
+*/
+
+// CHECK#1
+if (Number("7") !== 7) {
+ $ERROR('#1: Number("7") === 7. Actual: ' + (Number("7")));
+}
+
+// CHECK#2
+if (Number("0x7") !== 7) {
+ $ERROR('#2: Number("0x7") === 7. Actual: ' + (Number("0x7")));
+}
+
+// CHECK#3
+if (+("0X7") !== 7) {
+ $ERROR('#3: +("0X7") === 7. Actual: ' + (+("0X7")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A24.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A24.js
new file mode 100644
index 000000000..64d4de30c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A24.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A24;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 8 or of HexDigit ::: 8 is 8;
+ * @description: Compare Number('0x8') and Number('0X8') with 8;
+*/
+
+// CHECK#1
+if (+("8") !== 8) {
+ $ERROR('#1: +("8") === 8. Actual: ' + (+("8")));
+}
+
+// CHECK#2
+if (Number("0x8") !== 8) {
+ $ERROR('#2: Number("0x8") === 8. Actual: ' + (Number("0x8")));
+}
+
+// CHECK#3
+if (Number("0X8") !== 8) {
+ $ERROR('#3: Number("0X8") === 8. Actual: ' + (Number("0X8")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A25.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A25.js
new file mode 100644
index 000000000..799762656
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A25.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A25;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of DecimalDigit ::: 9 or of HexDigit ::: 9 is 9;
+ * @description: Compare Number('0x9') and Number('0X9') with 9;
+*/
+
+// CHECK#1
+if (Number("9") !== 9) {
+ $ERROR('#1: Number("9") === 9. Actual: ' + (Number("9")));
+}
+
+// CHECK#2
+if (+("0x9") !== 9) {
+ $ERROR('#2: +("0x9") === 9. Actual: ' + (+("0x9")));
+}
+
+// CHECK#3
+if (Number("0X9") !== 9) {
+ $ERROR('#3: Number("0X9") === 9. Actual: ' + (Number("0X9")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A26.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A26.js
new file mode 100644
index 000000000..df803ef72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A26.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A26;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of HexDigit ::: a or of HexDigit ::: A is 10;
+ * @description: Compare Number('0xA'), Number('0XA'), Number('0xa') and Number('0Xa') with 10;
+*/
+
+// CHECK#1
+if (Number("0xa") !== 10) {
+ $ERROR('#1: Number("0xa") === 10. Actual: ' + (Number("0xa")));
+}
+
+// CHECK#2
+if (Number("0xA") !== 10) {
+ $ERROR('#2: Number("0xA") === 10. Actual: ' + (Number("0xA")));
+}
+
+// CHECK#3
+if (Number("0Xa") !== 10) {
+ $ERROR('#3: Number("0Xa") === 10. Actual: ' + (Number("0Xa")));
+}
+
+// CHECK#4
+if (+("0XA") !== 10) {
+ $ERROR('#4: +("0XA") === 10. Actual: ' + (+("0XA")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A27.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A27.js
new file mode 100644
index 000000000..16393d40f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A27.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A27;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of HexDigit ::: b or of HexDigit ::: B is 11;
+ * @description: Compare Number('0xB'), Number('0XB'), Number('0xb') and Number('0Xb') with 11;
+*/
+
+// CHECK#1
+if (Number("0xb") !== 11) {
+ $ERROR('#1: Number("0xb") === 11. Actual: ' + (Number("0xb")));
+}
+
+// CHECK#2
+if (Number("0xB") !== 11) {
+ $ERROR('#2: Number("0xB") === 11. Actual: ' + (Number("0xB")));
+}
+
+// CHECK#3
+if (+("0Xb") !== 11) {
+ $ERROR('#3: +("0Xb") === 11. Actual: ' + (+("0Xb")));
+}
+
+// CHECK#4
+if (Number("0XB") !== 11) {
+ $ERROR('#4: Number("0XB") === 11. Actual: ' + (Number("0XB")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A28.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A28.js
new file mode 100644
index 000000000..a4399c547
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A28.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A28;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of HexDigit ::: c or of HexDigit ::: C is 12;
+ * @description: Compare Number('0xC'), Number('0XC'), Number('0xc') and Number('0Xc') with 12;
+*/
+
+// CHECK#1
+if (Number("0xc") !== 12) {
+ $ERROR('#1: Number("0xc") === 12. Actual: ' + (Number("0xc")));
+}
+
+// CHECK#2
+if (+("0xC") !== 12) {
+ $ERROR('#2: +("0xC") === 12. Actual: ' + (+("0xC")));
+}
+
+// CHECK#3
+if (Number("0Xc") !== 12) {
+ $ERROR('#3: Number("0Xc") === 12. Actual: ' + (Number("0Xc")));
+}
+
+// CHECK#4
+if (Number("0XC") !== 12) {
+ $ERROR('#4: Number("0XC") === 12. Actual: ' + (Number("0XC")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A29.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A29.js
new file mode 100644
index 000000000..5a373d70b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A29.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A29;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of HexDigit ::: d or of HexDigit ::: D is 13;
+ * @description: Compare Number('0xD'), Number('0XD'), Number('0xd') and Number('0Xd') with 13;
+*/
+
+// CHECK#1
+if (+("0xd") !== 13) {
+ $ERROR('#1: +("0xd") === 13. Actual: ' + (+("0xd")));
+}
+
+// CHECK#2
+if (Number("0xD") !== 13) {
+ $ERROR('#2: Number("0xD") === 13. Actual: ' + (Number("0xD")));
+}
+
+// CHECK#3
+if (Number("0Xd") !== 13) {
+ $ERROR('#3: Number("0Xd") === 13. Actual: ' + (Number("0Xd")));
+}
+
+// CHECK#4
+if (Number("0XD") !== 13) {
+ $ERROR('#4: Number("0XD") === 13. Actual: ' + (Number("0XD")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A30.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A30.js
new file mode 100644
index 000000000..e57f828e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A30.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A30;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of HexDigit ::: e or of HexDigit ::: E is 14;
+ * @description: Compare Number('0xE'), Number('0XE'), Number('0xe') and Number('0Xe') with 14;
+*/
+
+// CHECK#1
+if (Number("0xe") !== 14) {
+ $ERROR('#1: Number("0xe") === 14. Actual: ' + (Number("0xe")));
+}
+
+// CHECK#2
+if (Number("0xE") !== 14) {
+ $ERROR('#2: Number("0xE") === 14. Actual: ' + (Number("0xE")));
+}
+
+// CHECK#3
+if (Number("0Xe") !== 14) {
+ $ERROR('#3: Number("0Xe") === 14. Actual: ' + (Number("0Xe")));
+}
+
+// CHECK#4
+if (+("0XE") !== 14) {
+ $ERROR('#4: +("0XE") === 14. Actual: ' + (+("0XE")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A31.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A31.js
new file mode 100644
index 000000000..26d0f83e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A31.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A31;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of HexDigit ::: f or of HexDigit ::: F is 15;
+ * @description: Compare Number('0xF'), Number('0XF'), Number('0xf') and Number('0Xf') with 15;
+*/
+
+// CHECK#1
+if (Number("0xf") !== 15) {
+ $ERROR('#1: Number("0xf") === 15. Actual: ' + (Number("0xf")));
+}
+
+// CHECK#2
+if (Number("0xF") !== 15) {
+ $ERROR('#2: Number("0xF") === 15. Actual: ' + (Number("0xF")));
+}
+
+// CHECK#3
+if (+("0Xf") !== 15) {
+ $ERROR('#3: +("0Xf") === 15. Actual: ' + (+("0Xf")));
+}
+
+// CHECK#4
+if (Number("0XF") !== 15) {
+ $ERROR('#4: Number("0XF") === 15. Actual: ' + (Number("0XF")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A32.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A32.js
new file mode 100644
index 000000000..d86a97742
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A32.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A32;
+ * @section: 9.3.1;
+ * @assertion: Once the exact MV for a string numeric literal has been
+ * determined, it is then rounded to a value of the Number type with 20
+ * significant digits by replacing each significant digit after the 20th
+ * with a 0 digit or the number value;
+ * @description: Use various long numbers, for example, 1234567890.1234567890;
+*/
+
+// CHECK#1
+if (Number("1234567890.1234567890") !== 1234567890.1234567890) {
+ $ERROR('#1: Number("1234567890.1234567890") === 1234567890.1234567890. Actual: ' + (Number("1234567890.1234567890")));
+}
+
+// CHECK#2
+if (Number("1234567890.1234567890") !== 1234567890.1234567000) {
+ $ERROR('#2: Number("1234567890.1234567890") === 1234567890.1234567000. Actual: ' + (Number("1234567890.1234567890")));
+}
+
+// CHECK#3
+if (+("1234567890.1234567890") === 1234567890.123456) {
+ $ERROR('#3: +("1234567890.1234567890") !== 1234567890.123456');
+}
+
+// CHECK#4
+if (Number("0.12345678901234567890") !== 0.123456789012345678) {
+ $ERROR('#4: Number("0.12345678901234567890") === 0.123456789012345678. Actual: ' + (Number("0.12345678901234567890")));
+}
+
+// CHECK#4
+if (Number("00.12345678901234567890") !== 0.123456789012345678) {
+ $ERROR('#4: Number("00.12345678901234567890") === 0.123456789012345678. Actual: ' + (Number("00.12345678901234567890")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A3_T1.js
new file mode 100644
index 000000000..19535315c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A3_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A3_T1;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StringNumericLiteral ::: StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt is the MV of StrNumericLiteral, no matter whether white space is present or not;
+ * @description: static string;
+*/
+
+// CHECK#1
+if (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number("")) {
+ $ERROR('#1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("")');
+}
+
+// CHECK#2
+if (Number("\u0009\u000C\u0020\u00A0\u000A\u000D\u2028\u2029\u000B\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u30001234567890\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number("1234567890")) {
+ $ERROR('#2: Number("\\u0009\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029\\u000B\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u30001234567890\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("1234567890")');
+}
+
+// CHECK#3
+if (!(+("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000Infinity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") == Number("Infinity"))) {
+ $ERROR('#3: +("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000Infinity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("Infinity")');
+}
+
+// CHECK#4
+if (!(Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000-Infinity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") == Number(-"Infinity"))) {
+ $ERROR('#4: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000-Infinity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("-Infinity")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A3_T2.js
new file mode 100644
index 000000000..d554efa0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A3_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A3_T2;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StringNumericLiteral ::: StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt is the MV of StrNumericLiteral, no matter whether white space is present or not;
+ * @description: dynamic string;
+*/
+function dynaString(s1, s2){
+ return String(s1)+String(s2);
+}
+
+// CHECK#1
+if (Number(dynaString("\u0009\u000C\u0020\u00A0\u000B", "\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) !== Number("")) {
+ $ERROR('#1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B"+"\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("")');
+}
+
+// CHECK#2
+if (+(dynaString("\u0009\u000C\u0020\u00A0\u000A\u000D\u2028\u2029\u000B12345", "67890\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) !== Number("1234567890")) {
+ $ERROR('#2: +("\\u0009\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029\\u000B12345"+"67890\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("1234567890")');
+}
+
+// CHECK#3
+if (!(Number(dynaString("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029Infi", "nity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) == Number("Infinity"))) {
+ $ERROR('#3: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029Infi"+"nity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("Infinity")');
+}
+
+// CHECK#4
+if (!(Number(dynaString("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029-Infi", "nity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) == Number(-"Infinity"))) {
+ $ERROR('#4: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029-Infi"+"nity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("-Infinity")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A4_T1.js
new file mode 100644
index 000000000..c361d486c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A4_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A4_T1;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrDecimalLiteral::: + StrUnsignedDecimalLiteral is the MV of StrUnsignedDecimalLiteral;
+ * @description: Compare Number('+any_number') with Number('any_number');
+*/
+
+// CHECK#1
+if (Number("+0") !== Number("0")) {
+ $ERROR('#1.1: Number("+0") === Number("0")');
+} else {
+ // CHECK#2
+ if (1/Number("+0") !== 1/Number("0")) {
+ $ERROR('#2.2: 1/Number("+0") === 1/Number("0")');
+ }
+}
+
+// CHECK#3
+if (Number("+Infinity") !== Number("Infinity")) {
+ $ERROR('#3: Number("+Infinity") === Number("Infinity")');
+}
+
+// CHECK#4
+if (Number("+1234.5678") !== Number("1234.5678")) {
+ $ERROR('#4: Number("+1234.5678") === Number("1234.5678")');
+}
+
+// CHECK#5
+if (Number("+1234.5678e90") !== Number("1234.5678e90")) {
+ $ERROR('#5: Number("+1234.5678e90") === Number("1234.5678e90")');
+}
+
+// CHECK#6
+if (Number("+1234.5678E90") !== Number("1234.5678E90")) {
+ $ERROR('#6: Number("+1234.5678E90") === Number("1234.5678E90")');
+}
+
+// CHECK#7
+if (Number("+1234.5678e-90") !== Number("1234.5678e-90")) {
+ $ERROR('#7: Number("+1234.5678e-90") === Number("1234.5678e-90")');
+}
+
+// CHECK#8
+if (Number("+1234.5678E-90") !== Number("1234.5678E-90")) {
+ $ERROR('#8: Number("+1234.5678E-90") === Number("1234.5678E-90")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A4_T2.js
new file mode 100644
index 000000000..a2847b91c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A4_T2.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A4_T2;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrDecimalLiteral::: + StrUnsignedDecimalLiteral is the MV of StrUnsignedDecimalLiteral;
+ * @description: Compare Number('+' + 'any_number') with Number('any_number');
+*/
+
+function dynaString(s1, s2){
+ return String(s1)+String(s2);
+}
+
+// CHECK#1
+if (Number(dynaString("+", "0")) !== Number("0")) {
+ $ERROR('#1: Number("+"+"0") === Number("0")');
+} else {
+ // CHECK#2
+ if (1/Number(dynaString("+", "0")) !== 1/Number("0")) {
+ $ERROR('#2: 1/Number("+"+"0") === 1/Number("0")');
+ }
+}
+
+// CHECK#3
+if (Number(dynaString("+Infi", "nity")) !== Number("Infinity")) {
+ $ERROR('#3: Number("+Infin"+"ity") === Number("Infinity")');
+}
+
+// CHECK#4
+if (Number(dynaString("+1234.", "5678")) !== Number("1234.5678")) {
+ $ERROR('#4: Number("+1234."+"5678") === Number("1234.5678")');
+}
+
+// CHECK#5
+if (Number(dynaString("+1234.", "5678e90")) !== Number("1234.5678e90")) {
+ $ERROR('#5: Number("+1234."+"5678e90") === Number("1234.5678e90")');
+}
+
+// CHECK#6
+if (Number(dynaString("+1234.", "5678E90")) !== Number("1234.5678E90")) {
+ $ERROR('#6: Number("+1234."+"5678E90") === Number("1234.5678E90")');
+}
+
+// CHECK#7
+if (Number(dynaString("+1234.", "5678e-90")) !== Number("1234.5678e-90")) {
+ $ERROR('#7: Number("+1234."+"5678e-90") === Number("1234.5678e-90")');
+}
+
+// CHECK#8
+if (Number(dynaString("+1234.", "5678E-90")) !== Number("1234.5678E-90")) {
+ $ERROR('#8: Number("+1234."+"5678E-90") === Number("1234.5678E-90")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T1.js
new file mode 100644
index 000000000..76072c280
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A5_T1;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrDecimalLiteral::: - StrUnsignedDecimalLiteral is the negative
+ * of the MV of StrUnsignedDecimalLiteral. (the negative of this 0 is also 0);
+ * @description: Compare Number('-any_number') with -Number('any_number');
+*/
+
+// CHECK#1
+if (Number("-0") !== -Number("0")) {
+ $ERROR('#1: Number("-0") === -Number("0")');
+} else {
+ // CHECK#2
+ if (1/Number("-0") !== -1/Number("0")) {
+ $ERROR('#2: 1/Number("-0") === -1/Number("0")');
+ }
+}
+
+// CHECK#3
+if (Number("-Infinity") !== -Number("Infinity")) {
+ $ERROR('#3: Number("-Infinity") === -Number("Infinity")');
+}
+
+// CHECK#4
+if (Number("-1234567890") !== -Number("1234567890")) {
+ $ERROR('#4: Number("-1234567890") === -Number("1234567890")');
+}
+
+// CHECK#5
+if (Number("-1234.5678") !== -Number("1234.5678")) {
+ $ERROR('#5: Number("-1234.5678") === -Number("1234.5678")');
+}
+
+// CHECK#6
+if (Number("-1234.5678e90") !== -Number("1234.5678e90")) {
+ $ERROR('#6: Number("-1234.5678e90") === -Number("1234.5678e90")');
+}
+
+// CHECK#7
+if (Number("-1234.5678E90") !== -Number("1234.5678E90")) {
+ $ERROR('#6: Number("-1234.5678E90") === -Number("1234.5678E90")');
+}
+
+// CHECK#8
+if (Number("-1234.5678e-90") !== -Number("1234.5678e-90")) {
+ $ERROR('#6: Number("-1234.5678e-90") === -Number("1234.5678e-90")');
+}
+
+// CHECK#9
+if (Number("-1234.5678E-90") !== -Number("1234.5678E-90")) {
+ $ERROR('#6: Number("-1234.5678E-90") === -Number("1234.5678E-90")');
+}
+
+// CHECK#10
+if (Number("-Infinity") !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: Number("-Infinity") === Number.NEGATIVE_INFINITY');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T2.js
new file mode 100644
index 000000000..008f92589
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T2.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A5_T2;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrDecimalLiteral::: - StrUnsignedDecimalLiteral is the negative
+ * of the MV of StrUnsignedDecimalLiteral. (the negative of this 0 is also 0);
+ * @description: Compare Number('-[or +]any_number') with -[or without -]any_number);
+*/
+
+// CHECK#1
+if (Number("1") !== 1) {
+ $ERROR('#1: Number("1") === 1');
+}
+
+// CHECK#2
+if (Number("+1") !== 1) {
+ $ERROR('#3: Number("+1") === 1');
+}
+
+// CHECK#3
+if (Number("-1") !== -1) {
+ $ERROR('#3: Number("-1") === -1');
+}
+
+// CHECK#4
+if (Number("2") !== 2) {
+ $ERROR('#4: Number("2") === 2');
+}
+
+// CHECK#5
+if (Number("+2") !== 2) {
+ $ERROR('#5: Number("+2") === 2');
+}
+
+// CHECK#6
+if (Number("-2") !== -2) {
+ $ERROR('#6: Number("-2") === -2');
+}
+
+// CHECK#7
+if (Number("3") !== 3) {
+ $ERROR('#7: Number("3") === 3');
+}
+
+// CHECK#8
+if (Number("+3") !== 3) {
+ $ERROR('#8: Number("+3") === 3');
+}
+
+// CHECK#9
+if (Number("-3") !== -3) {
+ $ERROR('#9: Number("-3") === -3');
+}
+
+// CHECK#10
+if (Number("4") !== 4) {
+ $ERROR('#10: Number("4") === 4');
+}
+
+// CHECK#11
+if (Number("+4") !== 4) {
+ $ERROR('#11: Number("+4") === 4');
+}
+
+// CHECK#12
+if (Number("-4") !== -4) {
+ $ERROR('#12: Number("-4") === -4');
+}
+
+// CHECK#13
+if (Number("5") !== 5) {
+ $ERROR('#13: Number("5") === 5');
+}
+
+// CHECK#14
+if (Number("+5") !== 5) {
+ $ERROR('#14: Number("+5") === 5');
+}
+
+// CHECK#15
+if (Number("-5") !== -5) {
+ $ERROR('#15: Number("-5") === -5');
+}
+
+// CHECK#16
+if (Number("6") !== 6) {
+ $ERROR('#16: Number("6") === 6');
+}
+
+// CHECK#17
+if (Number("+6") !== 6) {
+ $ERROR('#17: Number("+6") === 6');
+}
+
+// CHECK#18
+if (Number("-6") !== -6) {
+ $ERROR('#18: Number("-6") === -6');
+}
+
+// CHECK#19
+if (Number("7") !== 7) {
+ $ERROR('#19: Number("7") === 7');
+}
+
+// CHECK#20
+if (Number("+7") !== 7) {
+ $ERROR('#20: Number("+7") === 7');
+}
+
+// CHECK#21
+if (Number("-7") !== -7) {
+ $ERROR('#21: Number("-7") === -7');
+}
+
+// CHECK#22
+if (Number("8") !== 8) {
+ $ERROR('#22: Number("8") === 8');
+}
+
+// CHECK#23
+if (Number("+8") !== 8) {
+ $ERROR('#23: Number("+8") === 8');
+}
+
+// CHECK#24
+if (Number("-8") !== -8) {
+ $ERROR('#24: Number("-8") === -8');
+}
+
+// CHECK#25
+if (Number("9") !== 9) {
+ $ERROR('#25: Number("9") === 9');
+}
+
+// CHECK#26
+if (Number("+9") !== 9) {
+ $ERROR('#26: Number("+9") === 9');
+}
+
+// CHECK#27
+if (Number("-9") !== -9) {
+ $ERROR('#27: Number("-9") === -9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T3.js
new file mode 100644
index 000000000..09c4d2a15
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A5_T3.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A5_T3;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrDecimalLiteral::: - StrUnsignedDecimalLiteral is the negative
+ * of the MV of StrUnsignedDecimalLiteral. (the negative of this 0 is also 0);
+ * @description: Compare Number('-' + 'any_number') with -Number('any_number');
+*/
+
+function dynaString(s1, s2){
+ return String(s1)+String(s2);
+}
+
+// CHECK#1
+if (Number(dynaString("-", "0")) !== -Number("0")) {
+ $ERROR('#1: Number("-"+"0") === -Number("0")');
+} else {
+ // CHECK#2
+ if (1/Number(dynaString("-", "0")) !== -1/Number("0")) {
+ $ERROR('#2: 1/Number("-"+"0") === -1/Number("0")');
+ }
+}
+
+// CHECK#3
+if (Number(dynaString("-Infi", "nity")) !== -Number("Infinity")) {
+ $ERROR('#3: Number("-Infi"+"nity") === -Number("Infinity")');
+}
+
+// CHECK#4
+if (Number(dynaString("-12345", "67890")) !== -Number("1234567890")) {
+ $ERROR('#4: Number("-12345"+"67890") === -Number("1234567890")');
+}
+
+// CHECK#5
+if (Number(dynaString("-1234.", "5678")) !== -Number("1234.5678")) {
+ $ERROR('#5: Number("-1234."+"5678") === -Number("1234.5678")');
+}
+
+// CHECK#6
+if (Number(dynaString("-1234.", "5678e90")) !== -Number("1234.5678e90")) {
+ $ERROR('#6: Number("-1234."+"5678e90") === -Number("1234.5678e90")');
+}
+
+// CHECK#7
+if (Number(dynaString("-1234.", "5678E90")) !== -Number("1234.5678E90")) {
+ $ERROR('#6: Number("-1234."+"5678E90") === -Number("1234.5678E90")');
+}
+
+// CHECK#8
+if (Number(dynaString("-1234.", "5678e-90")) !== -Number("1234.5678e-90")) {
+ $ERROR('#6: Number("-1234."+"5678e-90") === -Number("1234.5678e-90")');
+}
+
+// CHECK#9
+if (Number(dynaString("-1234.", "5678E-90")) !== -Number("1234.5678E-90")) {
+ $ERROR('#6: Number("-1234."+"5678E-90") === -Number("1234.5678E-90")');
+}
+
+// CHECK#10
+if (Number(dynaString("-Infi", "nity")) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: Number("-Infi"+"nity") === Number.NEGATIVE_INFINITY');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A6_T1.js
new file mode 100644
index 000000000..d8aaf862a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A6_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.
+
+/**
+ * @name: S9.3.1_A6_T1;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrUnsignedDecimalLiteral::: Infinity is 10<sup><small>10000</small></sup>
+ * (a value so large that it will round to <b><tt>+&infin;</tt></b>);
+ * @description: Compare Number('Infinity') with Number.POSITIVE_INFINITY, 10e10000, 10E10000 and Number("10e10000");
+*/
+
+// CHECK#1
+if (Number("Infinity") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number("Infinity") === Number.POSITIVE_INFINITY');
+}
+
+// CHECK#2
+if (Number("Infinity") !== 10e10000) {
+ $ERROR('#2: Number("Infinity") === 10e10000');
+}
+
+// CHECK#3
+if (Number("Infinity") !== 10E10000) {
+ $ERROR('#3: Number("Infinity") === 10E10000');
+}
+
+// CHECK#4
+if (Number("Infinity") !== Number("10e10000")) {
+ $ERROR('#4: Number("Infinity") === Number("10e10000")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A6_T2.js
new file mode 100644
index 000000000..59aa4f56a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A6_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A6_T2;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrUnsignedDecimalLiteral::: Infinity is 10<sup><small>10000</small></sup>
+ * (a value so large that it will round to <b><tt>+&infin;</tt></b>);
+ * @description: Compare Number('Infi'+'nity') with Number.POSITIVE_INFINITY, 10e10000, 10E10000 and Number("10e10000");
+*/
+
+function dynaString(s1, s2){
+ return String(s1)+String(s2);
+}
+
+
+// CHECK#1
+if (Number(dynaString("Infi", "nity")) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number("Infi"+"nity") === Number.POSITIVE_INFINITY');
+}
+
+// CHECK#2
+if (Number(dynaString("Infi", "nity")) !== 10e10000) {
+ $ERROR('#2: Number("Infi"+"nity") === 10e10000');
+}
+
+// CHECK#3
+if (Number(dynaString("Infi", "nity")) !== 10E10000) {
+ $ERROR('#3: Number("Infi"+"nity") === 10E10000');
+}
+
+// CHECK#4
+if (Number(dynaString("Infi", "nity")) !== Number("10e10000")) {
+ $ERROR('#4: Number("Infi"+"nity") === Number("10e10000")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A7.js
new file mode 100644
index 000000000..e9aeb9a65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A7.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.
+
+/**
+ * @name: S9.3.1_A7;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrUnsignedDecimalLiteral::: DecimalDigits. DecimalDigits
+ * is the MV of the first DecimalDigits plus the MV of the second DecimalDigits times
+ * 10<sup><small>-n</small></sup>, where n is the number of characters in the second DecimalDigits;
+ * @description: Compare Number('1234.5678') with Number('1234')+(+('5678')*1e-4);
+*/
+
+// CHECK#1
+if (Number("1234.5678") !== Number("1234")+(+("5678")*1e-4)) {
+ $ERROR('#1: Number("1234.5678") === Number("1234")+(+("5678")*1e-4)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A8.js
new file mode 100644
index 000000000..4e08141e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A8;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrUnsignedDecimalLiteral::: DecimalDigits. ExponentPart
+ * is the MV of DecimalDigits times 10<sup><small>e</small></sup> , where e is the MV of ExponentPart;
+ * @description: Compare Number('1234e5') and Number('1234.e5') with Number('1234')*1e5;
+*/
+
+// CHECK#1
+if (Number("1234e5") !== Number("1234")*1e5) {
+ $ERROR('#1: Number("1234e5") === Number("1234")*1e5');
+}
+
+// CHECK#2
+if (Number("1234.e5") !== +("1234")*1e5) {
+ $ERROR('#2: Number("1234.e5") === +("1234")*1e5');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A9.js
new file mode 100644
index 000000000..256133ec3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/9.3.1_ToNumber_from_String/S9.3.1_A9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3.1_A9;
+ * @section: 9.3.1, 15.7.1;
+ * @assertion: The MV of StrUnsignedDecimalLiteral::: DecimalDigits. DecimalDigits ExponentPart
+ * is (the MV of the first DecimalDigits plus (the MV of the second DecimalDigits times
+ * 10<sup><small>-n</small></sup>)) times 10<sup><small>e</small></sup>, where n is the number
+ * of characters in the second DecimalDigits and e is the MV of ExponentPart;
+ * @description: Compare Number('1234.5678e9') with (Number('1234')+(Number('5678')*1e-4))*1e9,
+ * and +('1234.5678e-9') with (Number('1234')+(Number('5678')*1e-4))*1e-9;
+*/
+
+// CHECK#1
+if (Number("1234.5678e9") !== (Number("1234")+(Number("5678")*1e-4))*1e9) {
+ $ERROR('#1: Number("1234.5678e9") === (Number("1234")+(Number("5678")*1e-4))*1e9');
+}
+
+// CHECK#2
+if (+("1234.5678e-9") !== (Number("1234")+(Number("5678")*1e-4))*1e-9) {
+ $ERROR('#2: +("1234.5678e-9") === (Number("1234")+(Number("5678")*1e-4))*1e-9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A1_T1.js
new file mode 100644
index 000000000..3ecf4f482
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A1_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A1_T1;
+ * @section: 9.3, 15.7.1;
+ * @assertion: Result of number conversion from undefined value is NaN;
+ * @description: Undefined convert to Number by explicit transformation;
+*/
+
+// CHECK#1
+if (isNaN(Number(undefined)) !== true) {
+ $ERROR('#1: Number(undefined) === Not-a-Number. Actual: ' + (Number(undefined)));
+}
+
+// CHECK#2
+if (isNaN(Number(void 0)) !== true) {
+ $ERROR('#2: Number(void 0) === Not-a-Number. Actual: ' + (Number(void 0)));
+}
+
+// CHECK#3
+if (isNaN(Number(eval("var x"))) !== true) {
+ $ERROR('#3: Number(eval("var x")) === Not-a-Number. Actual: ' + (Number(eval("var x"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A1_T2.js
new file mode 100644
index 000000000..93d906de9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A1_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A1_T2;
+ * @section: 9.3, 11.6.1;
+ * @assertion: Result of number conversion from undefined value is NaN;
+ * @description: Undefined convert to Number by implicit transformation;
+*/
+
+// CHECK#1
+if (isNaN(+(undefined)) !== true) {
+ $ERROR('#1: +(undefined) === Not-a-Number. Actual: ' + (+(undefined)));
+}
+
+// CHECK#2
+if (isNaN(+(void 0)) !== true) {
+ $ERROR('#2: +(void 0) === Not-a-Number. Actual: ' + (+(void 0)));
+}
+
+// CHECK#3
+if (isNaN(+(eval("var x"))) !== true) {
+ $ERROR('#3: +(eval("var x")) === Not-a-Number. Actual: ' + (+(eval("var x"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A2_T1.js
new file mode 100644
index 000000000..d570ad476
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A2_T1;
+ * @section: 9.3, 15.7.1;
+ * @assertion: Result of number conversion from null value is +0;
+ * @description: null convert to Number by explicit transformation;
+ */
+
+// CHECK #1
+if (Number(null) !== 0) {
+ $ERROR('#1.1: Number(null) === 0. Actual: ' + (Number(null)));
+} else {
+ if (1/Number(null) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number(null) === +0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A2_T2.js
new file mode 100644
index 000000000..b070680fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A2_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A2_T2;
+ * @section: 9.3, 11.6.1;
+ * @assertion: Result of number conversion from null value is +0;
+ * @description: null convert to Number by implicit transformation;
+ */
+
+// CHECK #1
+if (+(null) !== 0) {
+ $ERROR('#1.1: +(null) === 0. Actual: ' + (+(null)));
+} else {
+ if (1/+(null) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: +(null) === +0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A3_T1.js
new file mode 100644
index 000000000..ac06f0cdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A3_T1;
+ * @section: 9.3, 15.7.1;
+ * @assertion: Result of number conversion from boolean value is 1 if the argument is true, else is +0;
+ * @description: False and true convert to Number by explicit transformation;
+ */
+
+// CHECK#1
+if (Number(false) !== +0) {
+ $ERROR('#1.1: Number(false) === 0. Actual: ' + (Number(false)));
+} else {
+ if (1/Number(false) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number(false) === +0. Actual: -0');
+ }
+}
+
+// CHECK#2
+if (Number(true) !== 1) {
+ $ERROR('#2: Number(true) === 1. Actual: ' + (Number(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A3_T2.js
new file mode 100644
index 000000000..5ca55fc76
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A3_T2;
+ * @section: 9.3, 11.6.1;
+ * @assertion: Result of number conversion from boolean value is 1 if the argument is true, else is +0;
+ * @description: False and true convert to Number by implicit transformation;
+ */
+
+// CHECK#1
+if (+(false) !== +0) {
+ $ERROR('#1.1: +(false) === 0. Actual: ' + (+(false)));
+} else {
+ if (1/+(false) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: +(false) === +0. Actual: -0');
+ }
+}
+
+// CHECK#2
+if (+(true) !== 1) {
+ $ERROR('#2: +(true) === 1. Actual: ' + (+(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.1_T1.js
new file mode 100644
index 000000000..3fb8a9ef6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.1_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A4.1_T1;
+ * @section: 9.3, 15.7.1;
+ * @assertion: Result of number conversion from number value equals to the input argument (no conversion);
+ * @description: Some numbers including Number.MAX_VALUE and Number.MIN_VALUE are converted to Number with explicit transformation;
+*/
+
+// CHECK#1
+if (Number(13) !== 13) {
+ $ERROR('#1: Number(13) === 13. Actual: ' + (Number(13)));
+}
+
+// CHECK#2
+if (Number(-13) !== -13) {
+ $ERROR('#2: Number(-13) === -13. Actual: ' + (Number(-13)));
+}
+
+// CHECK#3
+if (Number(1.3) !== 1.3) {
+ $ERROR('#3: Number(1.3) === 1.3. Actual: ' + (Number(1.3)));
+}
+
+// CHECK#4
+if (Number(-1.3) !== -1.3) {
+ $ERROR('#4: Number(-1.3) === -1.3. Actual: ' + (Number(-1.3)));
+}
+
+// CHECK#5
+if (Number(Number.MAX_VALUE) !== 1.7976931348623157e308) {
+ $ERROR('#5: Number(Number.MAX_VALUE) === 1.7976931348623157e308. Actual: ' + (Number(Number.MAX_VALUE)));
+}
+
+// CHECK#6
+if (Number(Number.MIN_VALUE) !== 5e-324) {
+ $ERROR('#6: Number(Number.MIN_VALUE) === 5e-324. Actual: ' + (Number(Number.MIN_VALUE)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.1_T2.js
new file mode 100644
index 000000000..c8530e8e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.1_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A4.1_T2;
+ * @section: 9.3, 11.6.1;
+ * @assertion: Result of number conversion from number value equals to the input argument (no conversion);
+ * @description: Some numbers including Number.MAX_VALUE and Number.MIN_VALUE are converted to Number with implicit transformation;
+*/
+
+// CHECK#1
+if (+(13) !== 13) {
+ $ERROR('#1: +(13) === 13. Actual: ' + (+(13)));
+}
+
+// CHECK#2
+if (+(-13) !== -13) {
+ $ERROR('#2: +(-13) === -13. Actual: ' + (+(-13)));
+}
+
+// CHECK#3
+if (+(1.3) !== 1.3) {
+ $ERROR('#3: +(1.3) === 1.3. Actual: ' + (+(1.3)));
+}
+
+// CHECK#4
+if (+(-1.3) !== -1.3) {
+ $ERROR('#4: +(-1.3) === -1.3. Actual: ' + (+(-1.3)));
+}
+
+// CHECK#5
+if (+(Number.MAX_VALUE) !== 1.7976931348623157e308) {
+ $ERROR('#5: +(Number.MAX_VALUE) === 1.7976931348623157e308. Actual: ' + (+(Number.MAX_VALUE)));
+}
+
+// CHECK#6
+if (+(Number.MIN_VALUE) !== 5e-324) {
+ $ERROR('#6: +(Number.MIN_VALUE) === 5e-324. Actual: ' + (+(Number.MIN_VALUE)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.2_T1.js
new file mode 100644
index 000000000..277a439e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.2_T1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A4.2_T1;
+ * @section: 9.3, 15.7.1;
+ * @assertion: Result of number conversion from number value equals to the input argument (no conversion);
+ * @description: Number.NaN, +0, -0, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY,
+ * Number.MAX_VALUE and Number.MIN_VALUE convert to Number by explicit transformation;
+ */
+
+// CHECK#1
+if (isNaN(Number(Number.NaN)) !== true) {
+ $ERROR('#1: Number(NaN) === Not-a-Number. Actual: ' + (Number(NaN)));
+}
+
+// CHECK#2
+if (Number(+0) !== +0) {
+ $ERROR('#2.1: Number(+0) === 0. Actual: ' + (Number(+0)));
+} else {
+ if (1/Number(+0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: Number(+0) === +0. Actual: -0');
+ }
+}
+
+// CHECK#3
+if (Number(-0) !== -0) {
+ $ERROR('#3.1: Number(-0) === 0. Actual: ' + (Number(-0)));
+} else {
+ if (1/Number(-0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: Number(-0) === -0. Actual: +0');
+ }
+}
+
+// CHECK#4
+if (Number(Number.POSITIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: Number(+Infinity) === +Infinity. Actual: ' + (Number(+Infinity)));
+}
+
+// CHECK#5
+if (Number(Number.NEGATIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#5: Number(-Infinity) === -Infinity. Actual: ' + (Number(-Infinity)));
+}
+
+// CHECK#6
+if (Number(Number.MAX_VALUE) !== Number.MAX_VALUE) {
+ $ERROR('#6: Number(Number.MAX_VALUE) === Number.MAX_VALUE. Actual: ' + (Number(Number.MAX_VALUE)));
+}
+
+// CHECK#7
+if (Number(Number.MIN_VALUE) !== Number.MIN_VALUE) {
+ $ERROR('#7: Number(Number.MIN_VALUE) === Number.MIN_VALUE. Actual: ' + (Number(Number.MIN_VALUE)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.2_T2.js
new file mode 100644
index 000000000..514eea777
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A4.2_T2.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A4.2_T2;
+ * @section: 9.3, 11.6.1;
+ * @assertion: Result of number conversion from number value equals to the input argument (no conversion);
+ * @description: Number.NaN, +0, -0, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY,
+ * Number.MAX_VALUE and Number.MIN_VALUE convert to Number by implicit transformation;
+ */
+
+// CHECK#1
+if (isNaN(+(Number.NaN)) !== true) {
+ $ERROR('#1: +(NaN) === Not-a-Number. Actual: ' + (+(NaN)));
+}
+
+// CHECK#2
+if (+(+0) !== +0) {
+ $ERROR('#2.1: +(+0) === 0. Actual: ' + (+(+0)));
+} else {
+ if (1/+(+0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: +(+0) === +0. Actual: -0');
+ }
+}
+
+// CHECK#3
+if (+(-0) !== -0) {
+ $ERROR('#3.1: +(-0) === 0. Actual: ' + (+(-0)));
+} else {
+ if (1/+(-0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: +(-0) === -0. Actual: +0');
+ }
+}
+
+// CHECK#4
+if (+(Number.POSITIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: +(+Infinity) === +Infinity. Actual: ' + (+(+Infinity)));
+}
+
+// CHECK#5
+if (+(Number.NEGATIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#5: +(-Infinity) === -Infinity. Actual: ' + (+(-Infinity)));
+}
+
+// CHECK#6
+if (+(Number.MAX_VALUE) !== Number.MAX_VALUE) {
+ $ERROR('#6: +(Number.MAX_VALUE) === Number.MAX_VALUE. Actual: ' + (+(Number.MAX_VALUE)));
+}
+
+// CHECK#7
+if (+(Number.MIN_VALUE) !== Number.MIN_VALUE) {
+ $ERROR('#7: +(Number.MIN_VALUE) === Number.MIN_VALUE. Actual: ' + (+(Number.MIN_VALUE)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A5_T1.js
new file mode 100644
index 000000000..a6333165b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A5_T1.js
@@ -0,0 +1,125 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A5_T1;
+ * @section: 9.3, 15.7.1;
+ * @assertion: Result of number conversion from object value is the result
+ * of conversion from primitive value;
+ * @description: new Number(), new Number(0), new Number(Number.NaN), new Number(null),
+ * new Number(void 0) and others convert to Number by explicit transformation;
+*/
+
+// CHECK#1
+if (Number(new Number()) !== 0) {
+ $ERROR('#1: Number(new Number()) === 0. Actual: ' + (Number(new Number())));
+}
+
+// CHECK#2
+if (Number(new Number(0)) !== 0) {
+ $ERROR('#2: Number(new Number(0)) === 0. Actual: ' + (Number(new Number(0))));
+}
+
+// CHECK#3
+if (isNaN(Number(new Number(Number.NaN)) !== true)) {
+ $ERROR('#3: Number(new Number(Number.NaN)) === Not-a-Number. Actual: ' + (Number(new Number(Number.NaN))));
+}
+
+// CHECK#4
+if (Number(new Number(null)) !== 0) {
+ $ERROR('#4.1: Number(new Number(null)) === 0. Actual: ' + (Number(new Number(null))));
+} else {
+ if (1/Number(new Number(null)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: Number(new Number(null)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#5
+if (isNaN(Number(new Number(void 0)) !== true)) {
+ $ERROR('#5: Number(new Number(void 0)) === Not-a-Number. Actual: ' + (Number(new Number(void 0))));
+}
+
+// CHECK#6
+if (Number(new Number(true)) !== 1) {
+ $ERROR('#6: Number(new Number(true)) === 1. Actual: ' + (Number(new Number(true))));
+}
+
+// CHECK#7
+if (Number(new Number(false)) !== +0) {
+ $ERROR('#7.1: Number(new Number(false)) === 0. Actual: ' + (Number(new Number(false))));
+} else {
+ if (1/Number(new Number(false)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7.2: Number(new Number(false)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#8
+if (Number(new Boolean(true)) !== 1) {
+ $ERROR('#8: Number(new Boolean(true)) === 1. Actual: ' + (Number(new Boolean(true))));
+}
+
+// CHECK#9
+if (Number(new Boolean(false)) !== +0) {
+ $ERROR('#9.1: Number(new Boolean(false)) === 0. Actual: ' + (Number(new Boolean(false))));
+} else {
+ if (1/Number(new Boolean(false)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9.2: Number(new Boolean(false)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#10
+if (isNaN(Number(new Array(2,4,8,16,32))) !== true) {
+ $ERROR('#10: Number(new Array(2,4,8,16,32)) === Not-a-Number. Actual: ' + (Number(new Array(2,4,8,16,32))));
+}
+
+// CHECK#11
+var myobj1 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (isNaN(Number(myobj1)) !== true){
+ $ERROR("#11: Number(myobj1) calls ToPrimitive with hint Number. Actual: " + (Number(myobj1)));
+}
+
+// CHECK#12
+var myobj2 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";},
+ valueOf : function(){return "9876543210";}
+ };
+
+if (Number(myobj2) !== 9876543210){
+ $ERROR("#12: Number(myobj2) calls ToPrimitive with hint Number. Exptected: 9876543210. Actual: " + (Number(myobj2)));
+}
+
+
+// CHECK#13
+var myobj3 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "[object MyObj]";}
+ };
+
+if (isNaN(Number(myobj3)) !== true){
+ $ERROR("#13: Number(myobj3) calls ToPrimitive with hint Number. Exptected: Not-a-Number. Actual: " + (Number(myobj3)));
+}
+
+// CHECK#14
+var myobj4 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";}
+ };
+
+if (Number(myobj4) !== 67890){
+ $ERROR("#14: Number(myobj4) calls ToPrimitive with hint Number. Exptected: 67890. Actual: " + (Number(myobj4)));
+}
+
+// CHECK#15
+var myobj5 = {
+ ToNumber : function(){return 12345;}
+ };
+
+if (isNaN(Number(myobj5)) !== true){
+ $ERROR("#15: Number(myobj5) calls ToPrimitive with hint Number. Exptected: Not-a-Number. Actual: " + (Number(myobj5)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A5_T2.js
new file mode 100644
index 000000000..539654e18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.3_ToNumber/S9.3_A5_T2.js
@@ -0,0 +1,125 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.3_A5_T2;
+ * @section: 9.3, 11.6.1;
+ * @assertion: Result of number conversion from object value is the result
+ * of conversion from primitive value;
+ * @description: new Number(), new Number(0), new Number(Number.NaN), new Number(null),
+ * new Number(void 0) and others convert to Number by implicit transformation;
+*/
+
+// CHECK#1
+if (+(new Number()) !== 0) {
+ $ERROR('#1: +(new Number()) === 0. Actual: ' + (+(new Number())));
+}
+
+// CHECK#2
+if (+(new Number(0)) !== 0) {
+ $ERROR('#2: +(new Number(0)) === 0. Actual: ' + (+(new Number(0))));
+}
+
+// CHECK#3
+if (isNaN(+(new Number(Number.NaN)) !== true)) {
+ $ERROR('#3: +(new Number(Number.NaN)) === Not-a-Number. Actual: ' + (+(new Number(Number.NaN))));
+}
+
+// CHECK#4
+if (+(new Number(null)) !== 0) {
+ $ERROR('#4.1: +(new Number(null)) === 0. Actual: ' + (+(new Number(null))));
+} else {
+ if (1/+(new Number(null)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: +(new Number(null)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#5
+if (isNaN(+(new Number(void 0)) !== true)) {
+ $ERROR('#5: +(new Number(void 0)) === Not-a-Number. Actual: ' + (+(new Number(void 0))));
+}
+
+// CHECK#6
+if (+(new Number(true)) !== 1) {
+ $ERROR('#6: +(new Number(true)) === 1. Actual: ' + (+(new Number(true))));
+}
+
+// CHECK#7
+if (+(new Number(false)) !== +0) {
+ $ERROR('#7.1: +(new Number(false)) === 0. Actual: ' + (+(new Number(false))));
+} else {
+ if (1/+(new Number(false)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7.2: +(new Number(false)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#8
+if (+(new Boolean(true)) !== 1) {
+ $ERROR('#8: +(new Boolean(true)) === 1. Actual: ' + (+(new Boolean(true))));
+}
+
+// CHECK#9
+if (+(new Boolean(false)) !== +0) {
+ $ERROR('#9.1: +(new Boolean(false)) === 0. Actual: ' + (+(new Boolean(false))));
+} else {
+ if (1/+(new Boolean(false)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9.2: +(new Boolean(false)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#10
+if (isNaN(+(new Array(2,4,8,16,32))) !== true) {
+ $ERROR('#10: +(new Array(2,4,8,16,32)) === Not-a-Number. Actual: ' + (+(new Array(2,4,8,16,32))));
+}
+
+// CHECK#11
+var myobj1 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (isNaN(+(myobj1)) !== true){
+ $ERROR("#11: +(myobj1) calls ToPrimitive with hint +. Exptected: Not-a-Number. Actual: " + (+(myobj1)));
+}
+
+// CHECK#12
+var myobj2 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";},
+ valueOf : function(){return "9876543210";}
+ };
+
+if (+(myobj2) !== 9876543210){
+ $ERROR("#12: +(myobj2) calls ToPrimitive with hint +. Exptected: 9876543210. Actual: " + (+(myobj2)));
+}
+
+
+// CHECK#13
+var myobj3 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "[object MyObj]";}
+ };
+
+if (isNaN(+(myobj3)) !== true){
+ $ERROR("#13: +(myobj3) calls ToPrimitive with hint +. Exptected: Not-a-Number. Actual: " + (+(myobj3)));
+}
+
+// CHECK#14
+var myobj4 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";}
+ };
+
+if (+(myobj4) !== 67890){
+ $ERROR("#14: +(myobj4) calls ToPrimitive with hint +. Exptected: 67890. Actual: " + (+(myobj4)));
+}
+
+// CHECK#15
+var myobj5 = {
+ ToNumber : function(){return 12345;}
+ };
+
+if (isNaN(+(myobj5)) !== true){
+ $ERROR("#15: +(myobj5) calls ToPrimitive with hint +. Exptected: 12345. Actual: " + (+(myobj5)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A1.js
new file mode 100644
index 000000000..64c54f266
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.4_A1;
+ * @section: 9.4, 15.5;
+ * @assertion: If ToNumber(value) is NaN, ToInteger(value) returns +0;
+ * @description: Check what position is defined by Number.NaN in string "abc": "abc".charAt(Number.NaN);
+*/
+
+// CHECK#1
+if ("abc".charAt(Number.NaN) !== "a") {
+ $ERROR('#1: "abc".charAt(Number.NaN) === "a". Actual: ' + ("abc".charAt(Number.NaN)));
+}
+
+// CHECK#2
+if ("abc".charAt("x") !== "a") {
+ $ERROR('#2: "abc".charAt("x") === "a". Actual: ' + ("abc".charAt("x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A2.js
new file mode 100644
index 000000000..e51bcdc9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.4_A2;
+ * @section: 9.4, 15.5;
+ * @assertion: If ToNumber(value) is +0, -0, +Infinity, or -Infinity,
+ * return ToNumber(value);
+ * @description: Check what position is defined by Number.NaN in string "abc": "abc".charAt(Number.NaN);
+*/
+
+// CHECK#1
+if ("abc".charAt(0.0) !== "a") {
+ $ERROR('#1: "abc".charAt(0.0) === "a". Actual: ' + ("abc".charAt(0.0)));
+}
+
+// CHECK#2
+if ("abc".charAt(-0.0) !== "a") {
+ $ERROR('#2: "abc".charAt(-0.0) === "a". Actual: ' + ("abc".charAt(-0.0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A3_T1.js
new file mode 100644
index 000000000..d56ed853f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A3_T1.js
@@ -0,0 +1,82 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.4_A3_T1;
+ * @section: 9.4, 15.9;
+ * @assertion: Result of ToInteger(value) conversion is the result of computing
+ * sign(ToNumber(value)) * floor(abs(ToNumber(value)));
+ * @description: For testing constructor Date(Number) is used;
+*/
+
+// CHECK#1
+var d1 = new Date(6.54321);
+if (d1.valueOf() !== 6) {
+ $ERROR('#1: var d1 = new Date(6.54321); d1.valueOf() === 6;');
+}
+
+// CHECK#2
+var d2 = new Date(-6.54321);
+if (d2.valueOf() !== -6) {
+ $ERROR('#2: var d2 = new Date(-6.54321); d2.valueOf() === -6;');
+}
+
+// CHECK#3
+var d3 = new Date(6.54321e2);
+if (d3.valueOf() !== 654) {
+ $ERROR('#3: var d3 = new Date(6.54321e2); d3.valueOf() === 654;');
+}
+
+// CHECK#4
+var d4 = new Date(-6.54321e2);
+if (d4.valueOf() !== -654) {
+ $ERROR('#4: var d4 = new Date(-6.54321e2); d4.valueOf() === -654;');
+}
+
+// CHECK#5
+var d5 = new Date(0.654321e1);
+if (d5.valueOf() !== 6) {
+ $ERROR('#5: var d5 = new Date(0.654321e1); d5.valueOf() === 6;');
+}
+
+// CHECK#6
+var d6 = new Date(-0.654321e1);
+if (d6.valueOf() !== -6) {
+ $ERROR('#6: var d6 = new Date(-0.654321e1); d6.valueOf() === -6;');
+}
+
+// CHECK#7
+var d7 = new Date(true);
+if (d7.valueOf() !== 1) {
+ $ERROR('#7: var d7 = new Date(true); d7.valueOf() === 1;');
+}
+
+// CHECK#8
+var d8 = new Date(false);
+if (d8.valueOf() !== 0) {
+ $ERROR('#8: var d8 = new Date(false); d8.valueOf() === 0;');
+}
+
+// CHECK#9
+var d9 = new Date(1.23e15);
+if (d9.valueOf() !== 1.23e15) {
+ $ERROR('#9: var d9 = new Date(1.23e15); d9.valueOf() === 1.23e15;');
+}
+
+// CHECK#10
+var d10 = new Date(-1.23e15);
+if (d10.valueOf() !== -1.23e15) {
+ $ERROR('#10: var d10 = new Date(-1.23e15); d10.valueOf() === -1.23e15;');
+}
+
+// CHECK#11
+var d11 = new Date(1.23e-15);
+if (d11.valueOf() !== 0) {
+ $ERROR('#11: var d11 = new Date(1.23e-15); d11.valueOf() === 0;');
+}
+
+// CHECK#12
+var d12 = new Date(-1.23e-15);
+if (d12.valueOf() !== -0) {
+ $ERROR('#12: var d12 = new Date(-1.23e-15); d12.valueOf() === -0;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A3_T2.js
new file mode 100644
index 000000000..729e07466
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.4_ToInteger/S9.4_A3_T2.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.4_A3_T2;
+ * @section: 9.4, 15.9;
+ * @assertion: Result of ToInteger(value) conversion is the result of computing
+ * sign(ToNumber(value)) * floor(abs(ToNumber(value)));
+ * @description: For testing constructor Date(NaN, Infinity, Infinity, +0 and -0) is used;
+*/
+
+// CHECK#1
+var d1 = new Date(Number.NaN);
+if (!isNaN(d1.valueOf())) {
+ $ERROR('#1: var d1 = new Date(Number.NaN); d1.valueOf() === Number.NaN;');
+}
+
+// CHECK#2
+var d2 = new Date(Infinity);
+if (!isNaN(d2.valueOf())) {
+ $ERROR('#2: var d2 = new Date(Infinity); d2.valueOf() === Number.NaN;');
+}
+
+// CHECK#3
+var d3 = new Date(-Infinity);
+if (!isNaN(d3.valueOf())) {
+ $ERROR('#3: var d3 = new Date(-Infinity); d3.valueOf() === Number.NaN;');
+}
+
+// CHECK#4
+var d4 = new Date(0);
+if (d4.valueOf() !== 0) {
+ $ERROR('#4: var d4 = new Date(0); d4.valueOf() === 0;');
+}
+
+// CHECK#5
+var d5 = new Date(-0);
+if (d5.valueOf() !== -0) {
+ $ERROR('#5: var d5 = new Date(-0); d5.valueOf() === -0;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A1_T1.js
new file mode 100644
index 000000000..6e6378a3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A1_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A1_T1;
+ * @section: 9.5, 11.7.1;
+ * @assertion: If value is NaN, +0, -0, +Infinity, or -Infinity, return +0;
+ * @description: For testing use operator <<0;
+*/
+
+// CHECK#1
+if ((Number.NaN << 0) !== +0) {
+ $ERROR('#1.1: (Number.NaN << 0) === 0. Actual: ' + ((Number.NaN << 0)));
+} else if (1/(Number.NaN << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: (Number.NaN << 0) === +0. Actual: -0');
+}
+
+// CHECK#2
+if ((Number("abc") << 0) !== +0) {
+ $ERROR('#2.1: (Number("abc") << 0) === 0. Actual: ' + ((Number("abc") << 0)));
+} else if (1/(0 << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: (0 << 0) === +0. Actual: -0');
+}
+
+// CHECK#3
+if ((0 << 0) !== +0) {
+ $ERROR('#3.1: (0 << 0) === 0. Actual: ' + ((0 << 0)));
+} else if (1/(0 << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: (0 << 0) === +0. Actual: -0');
+}
+
+// CHECK#4
+if ((-0 << 0) !== +0) {
+ $ERROR("#4.1: (-0 << 0) === 0");
+} else if (1/(-0 << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#4.2: (-0 << 0) === +0. Actual: -0");
+}
+
+// CHECK#5
+if ((Number.POSITIVE_INFINITY << 0) !== +0) {
+ $ERROR('#5.1: (Number.POSITIVE_INFINITY << 0) === 0. Actual: ' + ((Number.POSITIVE_INFINITY << 0)));
+} else if (1/(Number.POSITIVE_INFINITY << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: (Number.POSITIVE_INFINITY << 0) === +0. Actual: -0');
+}
+
+// CHECK#6
+if ((Number.NEGATIVE_INFINITY << 0) !== +0) {
+ $ERROR("#6.1: (Number.NEGATIVE_INFINITY << 0) === 0");
+} else if (1/(Number.NEGATIVE_INFINITY << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#6.2: (Number.NEGATIVE_INFINITY << 0) === +0. Actual: -0");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.1_T1.js
new file mode 100644
index 000000000..f4ba74694
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.1_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A2.1_T1;
+ * @section: 9.5, 11.7.1;
+ * @assertion: ToInt32 returns values between -2^31 and 2^31-1;
+ * @description: Converting some numbers, which are in\outside of Int32 scopes, with <<0 operator;
+*/
+
+// CHECK#1
+if ((-2147483647 << 0) !== -2147483647) {
+ $ERROR('#1: (-2147483647 << 0) === -2147483647. Actual: ' + ((-2147483647 << 0)));
+}
+
+// CHECK#2
+if ((-2147483648 << 0) !== -2147483648) {
+ $ERROR('#2: (-2147483648 << 0) === -2147483648. Actual: ' + ((-2147483648 << 0)));
+}
+
+// CHECK#3
+if ((-2147483649 << 0) !== 2147483647) {
+ $ERROR('#3: (-2147483649 << 0) === 2147483647. Actual: ' + ((-2147483649 << 0)));
+}
+
+// CHECK#4
+if ((-4294967296 << 0) !== 0) {
+ $ERROR('#4: (-4294967296 << 0) === 0. Actual: ' + ((-4294967296 << 0)));
+}
+
+// CHECK#5
+if ((2147483646 << 0) !== 2147483646) {
+ $ERROR('#5: (2147483646 << 0) === 2147483646. Actual: ' + ((2147483646 << 0)));
+}
+
+// CHECK#6
+if ((2147483647 << 0) !== 2147483647) {
+ $ERROR('#6: (2147483647 << 0) === 2147483647. Actual: ' + ((2147483647 << 0)));
+}
+
+// CHECK#7
+if ((2147483648 << 0) !== -2147483648) {
+ $ERROR('#7: (2147483648 << 0) === -2147483648. Actual: ' + ((2147483648 << 0)));
+}
+
+// CHECK#8
+if ((4294967296 << 0) !== 0) {
+ $ERROR('#8: (4294967296 << 0) === 0. Actual: ' + ((4294967296 << 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.1_T2.js
new file mode 100644
index 000000000..4957124bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.1_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A2.1_T2;
+ * @section: 9.5, 11.4.8;
+ * @assertion: ToInt32 returns values between -2^31 and 2^31-1;
+ * @description: Converting some numbers, which are in\outside of Int32 scopes, with ~ operator;
+*/
+
+// CHECK#1
+if (~-2147483649 !== ~2147483647) {
+ $ERROR('#1: ~-2147483649 === ~2147483647');
+}
+
+// CHECK#2
+if (~-4294967296 !== ~0) {
+ $ERROR('#2: ~-4294967296 === ~0');
+}
+
+// CHECK#3
+if (~2147483648 !== ~-2147483648) {
+ $ERROR('#3: ~2147483648 === ~-2147483648');
+}
+
+// CHECK#4
+if (~4294967296 !== ~0) {
+ $ERROR('#4: ~4294967296 === ~0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.2_T1.js
new file mode 100644
index 000000000..f7d50f410
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.2_T1.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A2.2_T1;
+ * @section: 9.5, 11.7.1;
+ * @assertion: Compute result modulo 2^32;
+ * @description: Use operator <<0;
+*/
+
+// CHECK#1
+if ((-2147483647 << 0) !== -2147483647) {
+ $ERROR('#1: (-2147483647 << 0) === -2147483647. Actual: ' + ((-2147483647 << 0)));
+}
+
+// CHECK#2
+if ((-2147483648 << 0) !== -2147483648) {
+ $ERROR('#2: (-2147483648 << 0) === -2147483648. Actual: ' + ((-2147483648 << 0)));
+}
+
+// CHECK#3
+if ((-2147483649 << 0) !== 2147483647) {
+ $ERROR('#3: (-2147483649 << 0) === 2147483647. Actual: ' + ((-2147483649 << 0)));
+}
+
+// CHECK#4
+if ((4294967295 << 0) !== -1) {
+ $ERROR('#4: (4294967295 << 0) === -1. Actual: ' + ((4294967295 << 0)));
+}
+
+// CHECK#5
+if ((4294967296 << 0) !== 0) {
+ $ERROR('#5: (4294967296 << 0) === 0. Actual: ' + ((4294967296 << 0)));
+}
+
+// CHECK#6
+if ((4294967297 << 0) !== 1) {
+ $ERROR('#6: (4294967297 << 0) === 1. Actual: ' + ((4294967297 << 0)));
+}
+
+// CHECK#7
+if ((-4294967295 << 0) !== 1) {
+ $ERROR('#7: (-4294967295 << 0) === 1. Actual: ' + ((-4294967295 << 0)));
+}
+
+// CHECK#8
+if ((-4294967296 << 0) !== 0) {
+ $ERROR('#8: (-4294967296 << 0) === 0. Actual: ' + ((-4294967296 << 0)));
+}
+
+// CHECK#9
+if ((-4294967297 << 0) !== -1) {
+ $ERROR('#9: (-4294967297 << 0) === -1. Actual: ' + ((-4294967297 << 0)));
+}
+
+// CHECK#10
+if ((8589934591 << 0) !== -1) {
+ $ERROR('#10: (8589934591 << 0) === -1. Actual: ' + ((8589934591 << 0)));
+}
+
+// CHECK#11
+if ((8589934592 << 0) !== 0) {
+ $ERROR('#11: (8589934592 << 0) === 0. Actual: ' + ((8589934592 << 0)));
+}
+
+// CHECK#12
+if ((8589934593 << 0) !== 1) {
+ $ERROR('#12: (8589934593 << 0) === 1. Actual: ' + ((8589934593 << 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.2_T2.js
new file mode 100644
index 000000000..385a0e196
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.2_T2.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A2.2_T2;
+ * @section: 9.5, 11.4.8;
+ * @assertion: Compute result modulo 2^32;
+ * @description: Use operator ~;
+*/
+
+// CHECK#1
+if (~-2147483647 !== 2147483646) {
+ $ERROR('#1: ~-2147483647 === 2147483646)');
+}
+
+// CHECK#2
+if (~-2147483648 !== ~-2147483648) {
+ $ERROR('#2: ~-2147483648 ==== ~-2147483648)');
+}
+
+// CHECK#3
+if (~-2147483649 !== ~2147483647) {
+ $ERROR('#3: ~-2147483649 ==== ~2147483647)');
+}
+
+// CHECK#4
+if ((~4294967295 << 0) !== ~-1) {
+ $ERROR('#4: (~4294967295 << 0) === ~-1)');
+}
+
+// CHECK#5
+if ((~4294967296 << 0) !== ~0) {
+ $ERROR('#5: (~4294967296 << 0) === ~0)');
+}
+
+// CHECK#6
+if ((~4294967297 << 0) !== ~1) {
+ $ERROR('#6: (~4294967297 << 0) === ~1)');
+}
+
+// CHECK#7
+if ((~-4294967295 << 0) !== ~1) {
+ $ERROR('#7: (~-4294967295 << 0) === ~1)');
+}
+
+// CHECK#8
+if ((~-4294967296 << 0) !== ~0) {
+ $ERROR('#8: (~-4294967296 << 0) === ~0)');
+}
+
+// CHECK#9
+if ((~-4294967297 << 0) !== ~-1) {
+ $ERROR('#9: (~-4294967297 << 0) === ~-1)');
+}
+
+// CHECK#10
+if ((~8589934591 << 0) !== ~-1) {
+ $ERROR('#10: (~8589934591 << 0) === ~-1)');
+}
+
+// CHECK#11
+if ((~8589934592 << 0) !== ~0) {
+ $ERROR('#11: (~8589934592 << 0) === ~0)');
+}
+
+// CHECK#12
+if ((~8589934593 << 0) !== ~1) {
+ $ERROR('#12: (~8589934593 << 0) === ~1)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.3_T1.js
new file mode 100644
index 000000000..de1143441
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.3_T1.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A2.3_T1;
+ * @section: 9.5, 11.7.1;
+ * @assertion: If result is greater than or equal to 2^31, return result -2^32;
+ * @description: Use operator <<0;
+*/
+
+// CHECK#1
+if ((2147483647 << 0) !== 2147483647) {
+ $ERROR('#1: (2147483647 << 0) === 2147483647. Actual: ' + ((2147483647 << 0)));
+}
+
+// CHECK#2
+if ((2147483648 << 0) !== -2147483648) {
+ $ERROR('#2: (2147483648 << 0) === -2147483648. Actual: ' + ((2147483648 << 0)));
+}
+
+// CHECK#3
+if ((2147483649 << 0) !== -2147483647) {
+ $ERROR('#3: (2147483649 << 0) === -2147483647. Actual: ' + ((2147483649 << 0)));
+}
+
+// CHECK#4
+if ((4294967295 << 0) !== -1) {
+ $ERROR('#4: (4294967295 << 0) === -1. Actual: ' + ((4294967295 << 0)));
+}
+
+// CHECK#5
+if ((4294967296 << 0) !== 0) {
+ $ERROR('#5: (4294967296 << 0) === 0. Actual: ' + ((4294967296 << 0)));
+}
+
+// CHECK#6
+if ((4294967297 << 0) !== 1) {
+ $ERROR('#6: (4294967297 << 0) === 1. Actual: ' + ((4294967297 << 0)));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.3_T2.js
new file mode 100644
index 000000000..1ee2bc911
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A2.3_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A2.3_T2;
+ * @section: 9.5, 11.4.8;
+ * @assertion: If result is greater than or equal to 2^31, return result -2^32;
+ * @description: Use operator ~;
+*/
+
+// CHECK#1
+if (~2147483647 !== -2147483648) {
+ $ERROR('#1: ~2147483647 ==== -2147483648)');
+}
+
+// CHECK#2
+if (~2147483648 !== ~-2147483648) {
+ $ERROR('#2: ~2147483648 ==== ~-2147483648)');
+}
+
+// CHECK#3
+if (~2147483649 !== ~-2147483647) {
+ $ERROR('#3: ~2147483649 ==== ~-2147483647)');
+}
+
+// CHECK#4
+if (~4294967295 !== ~-1) {
+ $ERROR('#4: ~4294967295 ==== ~-1)');
+}
+
+// CHECK#5
+if (~4294967296 !== ~0) {
+ $ERROR('#5: ~4294967296 ==== ~0)');
+}
+
+// CHECK#6
+if (~4294967297 !== ~1) {
+ $ERROR('#6: ~4294967297 ==== ~1)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T1.js
new file mode 100644
index 000000000..0138ec4d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A3.1_T1;
+ * @section: 9.5;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is Boolean;
+*/
+
+// CHECK#1
+if ((new Boolean(true) << 0) !== 1) {
+ $ERROR('#1: (new Boolean(true) << 0) === 1. Actual: ' + ((new Boolean(true) << 0)));
+}
+
+// CHECK#2
+if ((false << 0) !== 0) {
+ $ERROR('#2: (false << 0) === 0. Actual: ' + ((false << 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T2.js
new file mode 100644
index 000000000..1f53d67f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A3.1_T2;
+ * @section: 9.5;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is Number;
+*/
+
+// CHECK#1
+if ((new Number(1) << 0) !== 1) {
+ $ERROR('#1: (new Number(1) << 0) === 1. Actual: ' + ((new Number(1) << 0)));
+}
+
+// CHECK#2
+if ((-1.234 << 0) !== -1) {
+ $ERROR('#2: (-1.234 << 0) === -1. Actual: ' + ((-1.234 << 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T3.js
new file mode 100644
index 000000000..232b59603
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A3.1_T3;
+ * @section: 9.5;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is String;
+*/
+
+// CHECK#1
+if ((new String(1) << 0) !== 1) {
+ $ERROR('#1: (new String(1) << 0) === 1. Actual: ' + ((new String(1) << 0)));
+}
+
+// CHECK#2
+if (("-1.234" << 0) !== -1) {
+ $ERROR('#2: ("-1.234" << 0) === -1. Actual: ' + (("-1.234" << 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T4.js
new file mode 100644
index 000000000..1c1542545
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.1_T4.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A3.1_T4;
+ * @section: 9.5;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is Object;
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (~object !== ~1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; ~object === ~1');
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (~object !== ~1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ~object === ~1');
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (~object !== ~1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ~object === ~1');
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (~object !== ~1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object === ~1');
+ }
+}
+catch (e) {
+ if (e === ~"error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (~object !== ~1) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; ~object === ~1');
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (~object !== ~1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ~object === ~1');
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ ~object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ~object throw "error". Actual: ' + (~object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ~object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ ~object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ~object throw TypeError. Actual: ' + (~object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ~object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.2_T1.js
new file mode 100644
index 000000000..8beac1c72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A3.2_T1;
+ * @section: 9.5;
+ * @assertion: Operator uses floor, abs;
+ * @description: Use operator <<0;
+*/
+
+// CHECK#1
+if ((1.2345 << 0) !== 1) {
+ $ERROR('#1: (1.2345 << 0) === 1. Actual: ' + ((1.2345 << 0)));
+}
+
+// CHECK#2
+if ((-5.4321 << 0) !== -5) {
+ $ERROR('#2: (-5.4321 << 0) === -5. Actual: ' + ((-5.4321 << 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.2_T2.js
new file mode 100644
index 000000000..319e482df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.5_ToInt32/S9.5_A3.2_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.5_A3.2_T2;
+ * @section: 9.5;
+ * @assertion: Operator uses floor, abs;
+ * @description: Use operator ~;
+*/
+
+// CHECK#1
+if (~1.2345 !== ~1) {
+ $ERROR('#1: ~1.2345 === ~1)');
+}
+
+// CHECK#2
+if (~-5.4321 !== ~-5) {
+ $ERROR('#2: ~-5.4321 === ~-5)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A1.js
new file mode 100644
index 000000000..9b4496f0c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.6_A1;
+ * @section: 9.6, 11.7.3;
+ * @assertion: If value is NaN, +0, -0, +Infinity, or -Infinity, return +0;
+ * @description: For testing use operator >>>0;
+*/
+
+// CHECK#1
+if ((Number.NaN >>> 0) !== +0) {
+ $ERROR('#1.1: (Number.NaN >>> 0) === 0. Actual: ' + ((Number.NaN >>> 0)));
+} else if (1/(Number.NaN >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: (Number.NaN >>> 0) === +0. Actual: -0');
+}
+
+// CHECK#2
+if ((Number("abc") >>> 0) !== +0) {
+ $ERROR('#2.1: (Number("abc") >>> 0) === 0. Actual: ' + ((Number("abc") >>> 0)));
+} else if (1/(0 >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: (0 >>> 0) === +0. Actual: -0');
+}
+
+// CHECK#3
+if ((0 >>> 0) !== +0) {
+ $ERROR('#3.1: (0 >>> 0) === 0. Actual: ' + ((0 >>> 0)));
+} else if (1/(0 >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: (0 >>> 0) === +0. Actual: -0');
+}
+
+// CHECK#4
+if ((-0 >>> 0) !== +0) {
+ $ERROR("#4.1: (-0 >>> 0) === 0");
+} else if (1/(-0 >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#4.2: (-0 >>> 0) === +0. Actual: -0");
+}
+
+// CHECK#5
+if ((Number.POSITIVE_INFINITY >>> 0) !== +0) {
+ $ERROR('#5.1: (Number.POSITIVE_INFINITY >>> 0) === 0. Actual: ' + ((Number.POSITIVE_INFINITY >>> 0)));
+} else if (1/(Number.POSITIVE_INFINITY >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: (Number.POSITIVE_INFINITY >>> 0) === +0. Actual: -0');
+}
+
+// CHECK#6
+if ((Number.NEGATIVE_INFINITY >>> 0) !== +0) {
+ $ERROR("#6.1: (Number.NEGATIVE_INFINITY >>> 0) === 0");
+} else if (1/(Number.NEGATIVE_INFINITY >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#6.2: (Number.NEGATIVE_INFINITY >>> 0) === +0. Actual: -0");
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A2.1.js
new file mode 100644
index 000000000..06c476fdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A2.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.6_A2.1;
+ * @section: 9.6, 11.7.3;
+ * @assertion: ToUint32 returns values between 0 and 2^32-1;
+ * @description: Converting numbers, which are in\outside of Uint32 scopes, with >>>0 operator;
+*/
+
+// CHECK#1
+if ((0 >>> 0) !== 0) {
+ $ERROR('#1: (0 >>> 0) === 0. Actual: ' + ((0 >>> 0)));
+}
+
+// CHECK#2
+if ((1 >>> 0) !== 1) {
+ $ERROR('#2: (1 >>> 0) === 1. Actual: ' + ((1 >>> 0)));
+}
+
+// CHECK#3
+if ((-1 >>> 0) !== 4294967295) {
+ $ERROR('#3: (-1 >>> 0) === 4294967295. Actual: ' + ((-1 >>> 0)));
+}
+
+// CHECK#4
+if ((4294967295 >>> 0) !== 4294967295) {
+ $ERROR('#4: (4294967295 >>> 0) === 4294967295. Actual: ' + ((4294967295 >>> 0)));
+}
+
+// CHECK#5
+if ((4294967294 >>> 0) !== 4294967294) {
+ $ERROR('#5: (4294967294 >>> 0) === 4294967294. Actual: ' + ((4294967294 >>> 0)));
+}
+
+// CHECK#6
+if ((4294967296 >>> 0) !== 0) {
+ $ERROR('#6: (4294967296 >>> 0) === 0. Actual: ' + ((4294967296 >>> 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A2.2.js
new file mode 100644
index 000000000..003a64bfe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A2.2.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.6_A2.2;
+ * @section: 9.6, 11.7.3;
+ * @assertion: Compute result modulo 2^32;
+ * @description: Use operator >>>0;
+*/
+
+// CHECK#1
+if ((-2147483647 >>> 0) !== 2147483649) {
+ $ERROR('#1: (-2147483647 >>> 0) === 2147483649. Actual: ' + ((-2147483647 >>> 0)));
+}
+
+// CHECK#2
+if ((-2147483648 >>> 0) !== 2147483648) {
+ $ERROR('#2: (-2147483648 >>> 0) === 2147483648. Actual: ' + ((-2147483648 >>> 0)));
+}
+
+// CHECK#3
+if ((-2147483649 >>> 0) !== 2147483647) {
+ $ERROR('#3: (-2147483649 >>> 0) === 2147483647. Actual: ' + ((-2147483649 >>> 0)));
+}
+
+// CHECK#4
+if ((-4294967295 >>> 0) !== 1) {
+ $ERROR('#4: (-4294967295 >>> 0) === 1. Actual: ' + ((-4294967295 >>> 0)));
+}
+
+// CHECK#5
+if ((-4294967296 >>> 0) !== 0) {
+ $ERROR('#5: (-4294967296 >>> 0) === 0. Actual: ' + ((-4294967296 >>> 0)));
+}
+
+// CHECK#6
+if ((-4294967297 >>> 0) !== 4294967295) {
+ $ERROR('#6: (-4294967297 >>> 0) === 4294967295. Actual: ' + ((-4294967297 >>> 0)));
+}
+
+// CHECK#7
+if ((4294967295 >>> 0) !== 4294967295) {
+ $ERROR('#7: (4294967295 >>> 0) === 4294967295. Actual: ' + ((4294967295 >>> 0)));
+}
+
+// CHECK#8
+if ((4294967296 >>> 0) !== 0) {
+ $ERROR('#8: (4294967296 >>> 0) === 0. Actual: ' + ((4294967296 >>> 0)));
+}
+
+// CHECK#9
+if ((4294967297 >>> 0) !== 1) {
+ $ERROR('#9: (4294967297 >>> 0) === 1. Actual: ' + ((4294967297 >>> 0)));
+}
+
+// CHECK#10
+if ((8589934591 >>> 0) !== 4294967295) {
+ $ERROR('#10: (8589934591 >>> 0) === 4294967295. Actual: ' + ((8589934591 >>> 0)));
+}
+
+// CHECK#11
+if ((8589934592 >>> 0) !== 0) {
+ $ERROR('#11: (8589934592 >>> 0) === 0. Actual: ' + ((8589934592 >>> 0)));
+}
+
+// CHECK#12
+if ((8589934593 >>> 0) !== 1) {
+ $ERROR('#12: (8589934593 >>> 0) === 1. Actual: ' + ((8589934593 >>> 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T1.js
new file mode 100644
index 000000000..5e723add4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.6_A3.1_T1;
+ * @section: 9.6;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is Boolean;
+*/
+
+// CHECK#1
+if ((new Boolean(true) >>> 0) !== 1) {
+ $ERROR('#1: (new Boolean(true) >>> 0) === 1. Actual: ' + ((new Boolean(true) >>> 0)));
+}
+
+// CHECK#2
+if ((false >>> 0) !== 0) {
+ $ERROR('#2: (false >>> 0) === 0. Actual: ' + ((false >>> 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T2.js
new file mode 100644
index 000000000..518d9c148
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.6_A3.1_T2;
+ * @section: 9.6;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is Number;
+*/
+
+// CHECK#1
+if ((new Number(1) >>> 0) !== 1) {
+ $ERROR('#1: (new Number(1) >>> 0) === 1. Actual: ' + ((new Number(1) >>> 0)));
+}
+
+// CHECK#2
+if ((-1.234 >>> 0) !== 4294967295) {
+ $ERROR('#2: (-1.234 >>> 0) === 4294967295. Actual: ' + ((-1.234 >>> 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T3.js
new file mode 100644
index 000000000..2fc5d9d6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.6_A3.1_T3;
+ * @section: 9.6;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is String;
+*/
+
+// CHECK#1
+if ((new String(1) >>> 0) !== 1) {
+ $ERROR('#1: (new String(1) >>> 0) === 1. Actual: ' + ((new String(1) >>> 0)));
+}
+
+// CHECK#2
+if (("-1.234" >>> 0) !== 4294967295) {
+ $ERROR('#2: ("-1.234" >>> 0) === 4294967295. Actual: ' + (("-1.234" >>> 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T4.js
new file mode 100644
index 000000000..4929b3c31
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.1_T4.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.6_A3.1_T4;
+ * @section: 9.6;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is Object;
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if ((object >>> 0) !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if ((object >>> 0) !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if ((object >>> 0) !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if ((object >>> 0) !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if ((object >>> 0) !== 1) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if ((object >>> 0) !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ object >>> 0;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object throw "error". Actual: ' + (object >>> 0));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ object >>> 0;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object throw TypeError. Actual: ' + (object >>> 0));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.2_T1.js
new file mode 100644
index 000000000..4c24e6ba2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.6_ToUint32/S9.6_A3.2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.6_A3.2_T1;
+ * @section: 9.6;
+ * @assertion: Operator uses floor, abs;
+ * @description: Use operator >>>0;
+*/
+
+// CHECK#1
+if ((1.2345 >>> 0) !== 1) {
+ $ERROR('#1: (1.2345 >>> 0) === 1. Actual: ' + ((1.2345 >>> 0)));
+}
+
+// CHECK#2
+if ((-5.4321 >>> 0) !== 4294967291) {
+ $ERROR('#2: (-5.4321 >>> 0) === 4294967291. Actual: ' + ((-5.4321 >>> 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A1.js
new file mode 100644
index 000000000..2b4fa4a14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.7_A1;
+ * @section: 9.7, 15.5.3.2, 15.5.4.5;
+ * @assertion: If value is NaN, +0, -0, +Infinity, or -Infinity, return +0;
+ * @description: For testing use String.fromCharCode(Number).charCodeAt(0) construction;
+*/
+
+// CHECK#1
+if (String.fromCharCode(Number.NaN).charCodeAt(0) !== +0) {
+ $ERROR('#1.1: String.fromCharCode(Number.NaN).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(Number.NaN).charCodeAt(0)));
+} else if (1/String.fromCharCode(Number.NaN).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: String.fromCharCode(Number.NaN).charCodeAt(0) === +0. Actual: -0');
+}
+
+// CHECK#2
+if (String.fromCharCode(Number("abc")).charCodeAt(0) !== +0) {
+ $ERROR('#2.1: String.fromCharCode(Number("abc")).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(Number("abc")).charCodeAt(0)));
+} else if (1/String.fromCharCode(0).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: String.fromCharCode(0).charCodeAt(0) === +0. Actual: -0');
+}
+
+// CHECK#3
+if (String.fromCharCode(0).charCodeAt(0) !== +0) {
+ $ERROR('#3.1: String.fromCharCode(0).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(0).charCodeAt(0)));
+} else if (1/String.fromCharCode(0).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: String.fromCharCode(0).charCodeAt(0) === +0. Actual: -0');
+}
+
+// CHECK#4
+if (String.fromCharCode(-0).charCodeAt(0) !== +0) {
+ $ERROR("#4.1: String.fromCharCode(-0).charCodeAt(0) === +0");
+} else if (1/String.fromCharCode(-0).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#4.2: String.fromCharCode(-0).charCodeAt(0) === +0. Actual: -0");
+}
+
+// CHECK#5
+if (String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0) !== +0) {
+ $ERROR('#5.1: String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0)));
+} else if (1/String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0) === +0. Actual: -0');
+}
+
+// CHECK#6
+if (String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0) !== +0) {
+ $ERROR("#6.1: String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0) === +0");
+} else if (1/String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#6.2: String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0) === +0. Actual: -0");
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A2.1.js
new file mode 100644
index 000000000..15d7d7e4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A2.1.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.7_A2.1;
+ * @section: 9.7, 11.7.3;
+ * @assertion: ToUint16 returns values between 0 and 2^16-1;
+ * @description: Converting numbers, which are in\outside of Uint16 scopes, with String.fromCharCode(Number).charCodeAt(0) construction;
+*/
+
+// CHECK#1
+if (String.fromCharCode(0).charCodeAt(0) !== 0) {
+ $ERROR('#1: String.fromCharCode(0).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(0).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(1).charCodeAt(0) !== 1) {
+ $ERROR('#2: String.fromCharCode(1).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(1).charCodeAt(0)));
+}
+
+// CHECK#3
+if (String.fromCharCode(-1).charCodeAt(0) !== 65535) {
+ $ERROR('#3: String.fromCharCode(-1).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(-1).charCodeAt(0)));
+}
+
+// CHECK#4
+if (String.fromCharCode(65535).charCodeAt(0) !== 65535) {
+ $ERROR('#4: String.fromCharCode(65535).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(65535).charCodeAt(0)));
+}
+
+// CHECK#5
+if (String.fromCharCode(65534).charCodeAt(0) !== 65534) {
+ $ERROR('#5: String.fromCharCode(65534).charCodeAt(0) === 65534. Actual: ' + (String.fromCharCode(65534).charCodeAt(0)));
+}
+
+// CHECK#6
+if (String.fromCharCode(65536).charCodeAt(0) !== 0) {
+ $ERROR('#6: String.fromCharCode(65536).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(65536).charCodeAt(0)));
+}
+
+// CHECK#7
+if (String.fromCharCode(4294967295).charCodeAt(0) !== 65535) {
+ $ERROR('#7: String.fromCharCode(4294967295).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(4294967295).charCodeAt(0)));
+}
+
+// CHECK#8
+if (String.fromCharCode(4294967294).charCodeAt(0) !== 65534) {
+ $ERROR('#8: String.fromCharCode(4294967294).charCodeAt(0) === 65534. Actual: ' + (String.fromCharCode(4294967294).charCodeAt(0)));
+}
+
+// CHECK#9
+if (String.fromCharCode(4294967296).charCodeAt(0) !== 0) {
+ $ERROR('#9: String.fromCharCode(4294967296).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(4294967296).charCodeAt(0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A2.2.js
new file mode 100644
index 000000000..df02882bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A2.2.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.7_A2.2;
+ * @section: 9.7, 11.7.3;
+ * @assertion: Compute result modulo 2^16;
+ * @description: For testing use String.fromCharCode(Number).charCodeAt(0) construction;
+*/
+
+// CHECK#1
+if (String.fromCharCode(-32767).charCodeAt(0) !== 32769) {
+ $ERROR('#1: String.fromCharCode(-32767).charCodeAt(0) === 32769. Actual: ' + (String.fromCharCode(-32767).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(-32768).charCodeAt(0) !== 32768) {
+ $ERROR('#2: String.fromCharCode(-32768).charCodeAt(0) === 32768. Actual: ' + (String.fromCharCode(-32768).charCodeAt(0)));
+}
+
+// CHECK#3
+if (String.fromCharCode(-32769).charCodeAt(0) !== 32767) {
+ $ERROR('#3: String.fromCharCode(-32769).charCodeAt(0) === 32767. Actual: ' + (String.fromCharCode(-32769).charCodeAt(0)));
+}
+
+// CHECK#4
+if (String.fromCharCode(-65535).charCodeAt(0) !== 1) {
+ $ERROR('#4: String.fromCharCode(-65535).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(-65535).charCodeAt(0)));
+}
+
+// CHECK#5
+if (String.fromCharCode(-65536).charCodeAt(0) !== 0) {
+ $ERROR('#5: String.fromCharCode(-65536).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(-65536).charCodeAt(0)));
+}
+
+// CHECK#6
+if (String.fromCharCode(-65537).charCodeAt(0) !== 65535) {
+ $ERROR('#6: String.fromCharCode(-65537).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(-65537).charCodeAt(0)));
+}
+
+// CHECK#7
+if (String.fromCharCode(65535).charCodeAt(0) !== 65535) {
+ $ERROR('#7: String.fromCharCode(65535).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(65535).charCodeAt(0)));
+}
+
+// CHECK#8
+if (String.fromCharCode(65536).charCodeAt(0) !== 0) {
+ $ERROR('#8: String.fromCharCode(65536).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(65536).charCodeAt(0)));
+}
+
+// CHECK#9
+if (String.fromCharCode(65537).charCodeAt(0) !== 1) {
+ $ERROR('#9: String.fromCharCode(65537).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(65537).charCodeAt(0)));
+}
+
+// CHECK#10
+if (String.fromCharCode(131071).charCodeAt(0) !== 65535) {
+ $ERROR('#10: String.fromCharCode(131071).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(131071).charCodeAt(0)));
+}
+
+// CHECK#11
+if (String.fromCharCode(131072).charCodeAt(0) !== 0) {
+ $ERROR('#11: String.fromCharCode(131072).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(131072).charCodeAt(0)));
+}
+
+// CHECK#12
+if (String.fromCharCode(131073).charCodeAt(0) !== 1) {
+ $ERROR('#12: String.fromCharCode(131073).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(131073).charCodeAt(0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T1.js
new file mode 100644
index 000000000..27a090881
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.7_A3.1_T1;
+ * @section: 9.7;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is Boolean;
+*/
+
+// CHECK#1
+if (String.fromCharCode(new Boolean(true)).charCodeAt(0) !== 1) {
+ $ERROR('#1: String.fromCharCode(new Boolean(true)).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(new Boolean(true)).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(false).charCodeAt(0) !== 0) {
+ $ERROR('#2: String.fromCharCode(false).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(false).charCodeAt(0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T2.js
new file mode 100644
index 000000000..1e3a0a743
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.7_A3.1_T2;
+ * @section: 9.7;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is Number;
+*/
+
+// CHECK#1
+if (String.fromCharCode(new Number(1)).charCodeAt(0) !== 1) {
+ $ERROR('#1: String.fromCharCode(new Number(1)).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(new Number(1)).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(-1.234).charCodeAt(0) !== 65535) {
+ $ERROR('#2: String.fromCharCode(-1.234).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(-1.234).charCodeAt(0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T3.js
new file mode 100644
index 000000000..60c2c4740
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.7_A3.1_T3;
+ * @section: 9.7;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is String;
+*/
+
+// CHECK#1
+if (String.fromCharCode(new String(1)).charCodeAt(0) !== 1) {
+ $ERROR('#1: String.fromCharCode(new String(1)).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(new String(1)).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode("-1.234").charCodeAt(0) !== 65535) {
+ $ERROR('#2: String.fromCharCode("-1.234").charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode("-1.234").charCodeAt(0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T4.js
new file mode 100644
index 000000000..da8610cd7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.1_T4.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.7_A3.1_T4;
+ * @section: 9.7;
+ * @assertion: Operator uses ToNumber;
+ * @description: Type(x) is Object;
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ object >>> 0;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object throw "error". Actual: ' + (object >>> 0));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ object >>> 0;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object throw TypeError. Actual: ' + (object >>> 0));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.2_T1.js
new file mode 100644
index 000000000..f0bc0e50f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.7_ToUint16/S9.7_A3.2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.7_A3.2_T1;
+ * @section: 9.7;
+ * @assertion: Operator uses floor, abs;
+ * @description: For testing use String.fromCharCode(Number).charCodeAt(0) construction;
+*/
+
+// CHECK#1
+if (String.fromCharCode(1.2345).charCodeAt(0) !== 1) {
+ $ERROR('#1: String.fromCharCode(1.2345).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(1.2345).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(-5.4321).charCodeAt(0) !== 65531) {
+ $ERROR('#2: String.fromCharCode(-5.4321).charCodeAt(0) === 65531. Actual: ' + (String.fromCharCode(-5.4321).charCodeAt(0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A1.js
new file mode 100644
index 000000000..75549707d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A1;
+ * @section: 9.8.1;
+ * @assertion: If m is NaN, return the string "NaN";
+ * @description: NaN convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(NaN) !== "NaN") {
+ $ERROR('#1: String(NaN) === Not-a-Number Actual: ' + (String(NaN)));
+}
+
+// CHECK#2
+if (String(Number.NaN) !== "NaN") {
+ $ERROR('#2: String(Number.NaN) === Not-a-Number Actual: ' + (String(Number.NaN)));
+}
+
+// CHECK#3
+if (String(Number("asasa")) !== "NaN") {
+ $ERROR('#3: String(Number("asasa")) === Not-a-Number Actual: ' + (String(Number("asasa"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A10.js
new file mode 100644
index 000000000..13408bee6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A10.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A10;
+ * @section: 9.8.1;
+ * @assertion: Return the string consisting of the most significant
+ * digit of the decimal representation of s, followed by a decimal point '.',
+ * followed by the remaining k-1 digits of the decimal representation of s,
+ * followed by the lowercase character 'e', followed by a plus sign '+' or
+ * minus sign '-' according to whether n-1 is positive or negative, followed
+ * by the decimal representation of the integer abs(n-1) (with no leading zeros);
+ * @description: Various float numbers convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(1.2345) !== "1.2345") {
+ $ERROR('#1: String(1.2345) === "1.2345". Actual: ' + (String(1.2345)));
+}
+
+// CHECK#2
+if (String(1.234567890) !== "1.23456789") {
+ $ERROR('#2: String(1.234567890) === "1.23456789". Actual: ' + (String(1.234567890)));
+}
+
+// CHECK#3
+if (String(0.12345) !== "0.12345") {
+ $ERROR('#3: String(0.12345) === "0.12345". Actual: ' + (String(0.12345)));
+}
+
+// CHECK#4
+if (String(.012345) !== "0.012345") {
+ $ERROR('#4: String(.012345) === "0.012345". Actual: ' + (String(.012345)));
+}
+
+// CHECK#5
+if (String(.0012345) !== "0.0012345") {
+ $ERROR('#5: String(.0012345) === "0.0012345". Actual: ' + (String(.0012345)));
+}
+
+// CHECK#6
+if (String(.00012345) !== "0.00012345") {
+ $ERROR('#6: String(.00012345) === "0.00012345". Actual: ' + (String(.00012345)));
+}
+
+// CHECK#7
+if (String(.000012345) !== "0.000012345") {
+ $ERROR('#7: String(.000012345) === "0.000012345". Actual: ' + (String(.000012345)));
+}
+
+// CHECK#8
+if (String(.0000012345) !== "0.0000012345") {
+ $ERROR('#8: String(.0000012345) === "0.0000012345". Actual: ' + (String(.0000012345)));
+}
+
+// CHECK#9
+if (String(.00000012345) !== "1.2345e-7") {
+ $ERROR('#9: String(.00000012345) === "1.2345e-7". Actual: ' + (String(.00000012345)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A2.js
new file mode 100644
index 000000000..878e2ae4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A2;
+ * @section: 9.8.1;
+ * @assertion: If m is +0 or -0, return the string "0";
+ * @description: +0 and -0 convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(+0) !== "0") {
+ $ERROR('#1: String(+0) === "0". Actual: ' + (String(+0)));
+}
+
+// CHECK#2
+if (String(-0) !== "0") {
+ $ERROR('#2: String(-0) === "0". Actual: ' + (String(-0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A3.js
new file mode 100644
index 000000000..87666fc93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A3;
+ * @section: 9.8.1;
+ * @assertion: If m is less than zero, return the string concatenation of the
+ * string "-" and ToString(-m);
+ * @description: -1234567890 convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(-1234567890) !== "-1234567890") {
+ $ERROR('#1: String(-1234567890) === "-1234567890". Actual: ' + (String(-1234567890)));
+}
+
+// CHECK#2
+if ("-"+String(-(-1234567890)) !== "-1234567890") {
+ $ERROR('#2: "-"+String(-(-1234567890)) === "-1234567890". Actual: ' + ("-"+String(-(-1234567890))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A4.js
new file mode 100644
index 000000000..2e3435f43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A4;
+ * @section: 9.8.1;
+ * @assertion: If m is infinity, return the string "Infinity";
+ * @description: +/-Infinity convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(Infinity) !== "Infinity") {
+ $ERROR('#1: String(Infinity) === "Infinity". Actual: ' + (String(Infinity)));
+}
+
+// CHECK#2
+if (String(Number.POSITIVE_INFINITY) !== "Infinity") {
+ $ERROR('#2: String(Number.POSITIVE_INFINITY) === "Infinity". Actual: ' + (String(Number.POSITIVE_INFINITY)));
+}
+
+// CHECK#3
+if (String(-Infinity) !== "-Infinity") {
+ $ERROR('#3: String(-Infinity) === "-Infinity". Actual: ' + (String(-Infinity)));
+}
+
+// CHECK#4
+if (String(Number.NEGATIVE_INFINITY) !== "-Infinity") {
+ $ERROR('#4: String(Number.NEGATIVE_INFINITY) === "-Infinity". Actual: ' + (String(Number.NEGATIVE_INFINITY)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A6.js
new file mode 100644
index 000000000..55d51fa0f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A6.js
@@ -0,0 +1,92 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A6;
+ * @section: 9.8.1;
+ * @assertion: If 1 <= s < 1e21 or -1e21 s < -1, return the string
+ * consisting of the k digits of the decimal representation of s (in order,
+ * with no leading zeroes), followed by n-k occurrences of the character '0';
+ * @description: Various integer numbers convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(1) !== "1") {
+ $ERROR('#1: String(1) === "1". Actual: ' + (String(1)));
+}
+
+// CHECK#2
+if (String(10) !== "10") {
+ $ERROR('#2: String(10) === "10". Actual: ' + (String(10)));
+}
+
+// CHECK#3
+if (String(100) !== "100") {
+ $ERROR('#3: String(100) === "100". Actual: ' + (String(100)));
+}
+
+// CHECK#4
+if (String(100000000000000000000) !== "100000000000000000000") {
+ $ERROR('#4: String(100000000000000000000) === "100000000000000000000". Actual: ' + (String(100000000000000000000)));
+}
+
+// CHECK#5
+if (String(1e20) !== "100000000000000000000") {
+ $ERROR('#5: String(1e20) === "100000000000000000000". Actual: ' + (String(1e20)));
+}
+
+// CHECK#6
+if (String(12345) !== "12345") {
+ $ERROR('#6: String(12345) === "12345". Actual: ' + (String(12345)));
+}
+
+// CHECK#7
+if (String(12345000) !== "12345000") {
+ $ERROR('#7: String(12345000) === "12345000". Actual: ' + (String(12345000)));
+}
+
+// CHECK#8
+if (String(-1) !== "-1") {
+ $ERROR('#8: String(-1) === "-1". Actual: ' + (String(-1)));
+}
+
+// CHECK#9
+if (String(-10) !== "-10") {
+ $ERROR('#9: String(-10) === "-10". Actual: ' + (String(-10)));
+}
+
+// CHECK#10
+if (String(-100) !== "-100") {
+ $ERROR('#3: String(-100) === "-100". Actual: ' + (String(-100)));
+}
+
+// CHECK#10
+if (String(-100000000000000000000) !== "-100000000000000000000") {
+ $ERROR('#10: String(-100000000000000000000) === "-100000000000000000000". Actual: ' + (String(-100000000000000000000)));
+}
+
+// CHECK#11
+if (String(-1e20) !== "-100000000000000000000") {
+ $ERROR('#11: String(-1e20) === "-100000000000000000000". Actual: ' + (String(-1e20)));
+}
+
+// CHECK#12
+if (String(-12345) !== "-12345") {
+ $ERROR('#12: String(-12345) === "-12345". Actual: ' + (String(-12345)));
+}
+
+// CHECK#13
+if (String(-12345000) !== "-12345000") {
+ $ERROR('#13: String(-12345000) === "-12345000". Actual: ' + (String(-12345000)));
+}
+
+// CHECK#14
+if (String(1E20) !== "100000000000000000000") {
+ $ERROR('#14: String(1E20) === "100000000000000000000". Actual: ' + (String(1E20)));
+}
+
+// CHECK#15
+if (String(-1E20) !== "-100000000000000000000") {
+ $ERROR('#15: String(-1E20) === "-100000000000000000000". Actual: ' + (String(-1E20)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A7.js
new file mode 100644
index 000000000..296326e8e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A7.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A7;
+ * @section: 9.8.1;
+ * @assertion: If 1 <= s < 1e21 or -1e21 s < -1 and s has a fractional
+ * component, return the string consisting of the most significant n digits of
+ * the decimal representation of s, followed by a decimal point '.',
+ * followed by the remaining k-n digits of the decimal representation of s;
+ * @description: 1.0000001 and -1.0000001 convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(1.0000001) !== "1.0000001") {
+ $ERROR('#1: String(1.0000001) === "1.0000001". Actual: ' + (String(1.0000001)));
+}
+
+// CHECK#2
+if (String(-1.0000001) !== "-1.0000001") {
+ $ERROR('#2: String(-1.0000001) === "-1.0000001". Actual: ' + (String(-1.0000001)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A8.js
new file mode 100644
index 000000000..3f57113b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A8.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A8;
+ * @section: 9.8.1;
+ * @assertion: If 1 > s > -1, and -6 < n <= 0, return the string consisting of the
+ * character '0', followed by a decimal point '.', followed by -n occurrences
+ * of the character '0', followed by the k digits of the decimal
+ * representation of s;
+ * @description: Various float numbers convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(0.1) !== "0.1") {
+ $ERROR('#1: String(0.1) === "0.1". Actual: ' + (String(0.1)));
+}
+
+// CHECK#2
+if (String(0.000001) !== "0.000001") {
+ $ERROR('#2: String(0.000001) === "0.000001". Actual: ' + (String(0.000001)));
+}
+
+// CHECK#3
+if (String(1e-6) !== "0.000001") {
+ $ERROR('#3: String(1e-6) === "0.000001". Actual: ' + (String(1e-6)));
+}
+
+// CHECK#4
+if (String(1E-6) !== "0.000001") {
+ $ERROR('#4: String(1E-6) === "0.000001". Actual: ' + (String(1E-6)));
+}
+
+// CHECK#5
+if (String(-0.1) !== "-0.1") {
+ $ERROR('#5: String(-0.1) === "-0.1". Actual: ' + (String(-0.1)));
+}
+
+// CHECK#6
+if (String(-0.000001) !== "-0.000001") {
+ $ERROR('#6: String(-0.000001) === "-0.000001". Actual: ' + (String(-0.000001)));
+}
+
+// CHECK#7
+if (String(-1e-6) !== "-0.000001") {
+ $ERROR('#7: String(-1e-6) === "0.000001". Actual: ' + (String(-1e-6)));
+}
+
+// CHECK#8
+if (String(-1E-6) !== "-0.000001") {
+ $ERROR('#8: String(-1E-6) === "0.000001". Actual: ' + (String(-1E-6)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A9_T1.js
new file mode 100644
index 000000000..f400b8996
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A9_T1.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A9_T1;
+ * @section: 9.8.1;
+ * @assertion: Return the string consisting of the single digit of s,
+ * followed by lowercase character 'e', followed by a plus sign '+' or minus
+ * sign '-' according to whether n-1 is positive or negative, followed by the
+ * decimal representation of the integer abs(n-1) (with no leading zeros);
+ * @description: Various big numbers convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(1000000000000000000000) !== "1e+21") {
+ $ERROR('#1: String(1000000000000000000000) === "1e+21". Actual: ' + (String(1000000000000000000000)));
+}
+
+// CHECK#2
+if (String(10000000000000000000000) !== "1e+22") {
+ $ERROR('#2: String(10000000000000000000000) === "1e+22". Actual: ' + (String(10000000000000000000000)));
+}
+
+// CHECK#3
+if (String(1e21) !== "1e+21") {
+ $ERROR('#3: String(1e21) === "1e+21". Actual: ' + (String(1e21)));
+}
+
+// CHECK#4
+if (String(1.0e22) !== "1e+22") {
+ $ERROR('#4: String(1.0e22) === "1e+22". Actual: ' + (String(1.0e22)));
+}
+
+// CHECK#5
+if (String(1E21) !== "1e+21") {
+ $ERROR('#5: String(1E21) === "1e+21". Actual: ' + (String(1E21)));
+}
+
+// CHECK#6
+if (String(1.0E22) !== "1e+22") {
+ $ERROR('#6: String(1.0E22) === "1e+22". Actual: ' + (String(1.0E22)));
+}
+
+// CHECK#7
+if (String(-1000000000000000000000) !== "-1e+21") {
+ $ERROR('#7: String(-1000000000000000000000) === "-1e+21". Actual: ' + (String(-1000000000000000000000)));
+}
+
+// CHECK#8
+if (String(-10000000000000000000000) !== "-1e+22") {
+ $ERROR('#8: String(-10000000000000000000000) === "-1e+22". Actual: ' + (String(-10000000000000000000000)));
+}
+
+// CHECK#9
+if (String(-1e21) !== "-1e+21") {
+ $ERROR('#9: String(-1e21) === "-1e+21". Actual: ' + (String(-1e21)));
+}
+
+// CHECK#10
+if (String(-1.0e22) !== "-1e+22") {
+ $ERROR('#10: String(-1.0e22) === "-1e+22". Actual: ' + (String(-1.0e22)));
+}
+
+// CHECK#11
+if (String(-1E21) !== "-1e+21") {
+ $ERROR('#11: String(-1E21) === "-1e+21". Actual: ' + (String(-1E21)));
+}
+
+// CHECK#12
+if (String(-1.0E22) !== "-1e+22") {
+ $ERROR('#12: String(-1.0E22) === "-1e+22". Actual: ' + (String(-1.0E22)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A9_T2.js
new file mode 100644
index 000000000..7e62553b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/9.8.1_ToString_Applied_to_the_Number_Type/S9.8.1_A9_T2.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8.1_A9_T2;
+ * @section: 9.8.1;
+ * @assertion: Return the string consisting of the single digit of s,
+ * followed by lowercase character 'e', followed by a plus sign '+' or minus
+ * sign '-' according to whether n-1 is positive or negative, followed by the
+ * decimal representation of the integer abs(n-1) (with no leading zeros);
+ * @description: Various float numbers with many zeros convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(0.0000001) !== "1e-7") {
+ $ERROR('#1: String(0.0000001) === "1e-7". Actual: ' + (String(0.0000001)));
+}
+
+// CHECK#2
+if (String(0.000000000100000000000) !== "1e-10") {
+ $ERROR('#2: String(0.000000000100000000000) === "1e-10". Actual: ' + (String(0.000000000100000000000)));
+}
+
+// CHECK#3
+if (String(1e-7) !== "1e-7") {
+ $ERROR('#3: String(1e-7) === "1e-7". Actual: ' + (String(1e-7)));
+}
+
+// CHECK#4
+if (String(1.0e-10) !== "1e-10") {
+ $ERROR('#4: String(1.0e-10) === "1e-10". Actual: ' + (String(1.0e-10)));
+}
+
+// CHECK#5
+if (String(1E-7) !== "1e-7") {
+ $ERROR('#5: String(1E-7) === "1e-7". Actual: ' + (String(1E-7)));
+}
+
+// CHECK#6
+if (String(1.0E-10) !== "1e-10") {
+ $ERROR('#6: String(1.0E-10) === "1e-10". Actual: ' + (String(1.0E-10)));
+}
+
+// CHECK#7
+if (String(-0.0000001) !== "-1e-7") {
+ $ERROR('#7: String(-0.0000001) === "1e-7". Actual: ' + (String(-0.0000001)));
+}
+
+// CHECK#8
+if (String(-0.000000000100000000000) !== "-1e-10") {
+ $ERROR('#8: String(-0.000000000100000000000) === "1e-10". Actual: ' + (String(-0.000000000100000000000)));
+}
+
+// CHECK#9
+if (String(-1e-7) !== "-1e-7") {
+ $ERROR('#9: String(-1e-7) === "-1e-7". Actual: ' + (String(-1e-7)));
+}
+
+// CHECK#10
+if (String(-1.0e-10) !== "-1e-10") {
+ $ERROR('#10: String(-1.0e-10) === "-1e-10". Actual: ' + (String(-1.0e-10)));
+}
+
+// CHECK#11
+if (String(-1E-7) !== "-1e-7") {
+ $ERROR('#11: String(-1E-7) === "-1e-7". Actual: ' + (String(-1E-7)));
+}
+
+// CHECK#12
+if (String(-1.0E-10) !== "-1e-10") {
+ $ERROR('#12: String(-1.0E-10) === "-1e-10". Actual: ' + (String(-1.0E-10)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A1_T1.js
new file mode 100644
index 000000000..efdde7224
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A1_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A1_T1;
+ * @section: 9.8;
+ * @assertion: Result of ToString conversion from undefined value is "undefined";
+ * @description: Undefined values is undefined, void 0 and eval("var x"). Use explicit transformation;
+*/
+
+// CHECK#1
+if (String(undefined) !== "undefined") {
+ $ERROR('#1: String(undefined) === "undefined". Actual: ' + (String(undefined)));
+}
+
+// CHECK#2
+if (String(void 0) !== "undefined") {
+ $ERROR('#2: String(void 0) === "undefined". Actual: ' + (String(void 0)));
+}
+
+// CHECK#3
+if (String(eval("var x")) !== "undefined") {
+ $ERROR('#3: String(eval("var x")) === "undefined" . Actual: ' + (String(eval("var x"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A1_T2.js
new file mode 100644
index 000000000..d41b5f06d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A1_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A1_T2;
+ * @section: 9.8;
+ * @assertion: Result of ToString conversion from undefined value is "undefined";
+ * @description: Undefined values is undefined, void 0 and eval("var x"). Use implicit transformation;
+*/
+
+// CHECK#1
+if (undefined + "" !== "undefined") {
+ $ERROR('#1: undefined + "" === "undefined". Actual: ' + (undefined + ""));
+}
+
+// CHECK#2
+if (void 0 + "" !== "undefined") {
+ $ERROR('#2: void 0 + "" === "undefined". Actual: ' + (void 0 + ""));
+}
+
+// CHECK#3
+if (eval("var x") + "" !== "undefined") {
+ $ERROR('#3: eval("var x") + "" === "undefined". Actual: ' + (eval("var x") + ""));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A2_T1.js
new file mode 100644
index 000000000..bb8391afa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A2_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A2_T1;
+ * @section: 9.8;
+ * @assertion: Result of ToString conversion from null value is "null";
+ * @description: null convert to String by explicit transformation;
+ */
+
+// CHECK#1
+if (String(null) !== "null") {
+ $ERROR('#1: String(null) === "null". Actual: ' + (String(null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A2_T2.js
new file mode 100644
index 000000000..3c5f5cab4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A2_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A2_T2;
+ * @section: 9.8;
+ * @assertion: Result of ToString conversion from null value is "null";
+ * @description: null convert to String by implicit transformation;
+ */
+
+// CHECK#1
+if (null + "" !== "null") {
+ $ERROR('#1: null + "" === "null". Actual: ' + (null + ""));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A3_T1.js
new file mode 100644
index 000000000..7749ab0cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A3_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A3_T1;
+ * @section: 9.8;
+ * @assertion: Result of ToString conversion from boolean value is "true" if
+ * the argument is "true", else is "false";
+ * @description: True and false convert to String by explicit transformation;
+ */
+
+// CHECK#1
+if (String(false) !== "false") {
+ $ERROR('#1: String(false) === "false". Actual: ' + (String(false)));
+}
+
+// CHECK#2
+if (String(true) !== "true") {
+ $ERROR('#2: String(true) === "true". Actual: ' + (String(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A3_T2.js
new file mode 100644
index 000000000..668801c19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A3_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A3_T2;
+ * @section: 9.8;
+ * @assertion: Result of ToString conversion from boolean value is "true" if
+ * the argument is "true", else is "false";
+ * @description: True and false convert to String by implicit transformation;
+ */
+
+// CHECK#1
+if (false + "" !== "false") {
+ $ERROR('#1: false + "" === "false". Actual: ' + (false + ""));
+}
+
+// CHECK#2
+if (true + "" !== "true") {
+ $ERROR('#2: true + "" === "true". Actual: ' + (true + ""));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A4_T1.js
new file mode 100644
index 000000000..fd359ac12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A4_T1;
+ * @section: 9.8;
+ * @assertion: Result of String conversion from string value is the input argument (no conversion);
+ * @description: Some strings convert to String with explicit transformation;
+*/
+
+// CHECK#1
+var x1 = "abc";
+if (String(x1) !== x1) {
+ $ERROR('#1: String("abc") === "abc". Actual: ' + (String("abc")));
+}
+
+// CHECK#2
+var x2 = "abc";
+if (typeof String(x2) !== typeof x2) {
+ $ERROR('#2: typeof String("abc") === "string". Actual: ' + (typeof String("abc")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A4_T2.js
new file mode 100644
index 000000000..536fdd3c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A4_T2;
+ * @section: 9.8;
+ * @assertion: Result of String conversion from string value is the input argument (no conversion);
+ * @description: Some strings convert to String by implicit transformation;
+*/
+
+// CHECK#1
+var x1 = "abc";
+if (x1 + "" !== x1) {
+ $ERROR('#1: "abc" + "" === "abc". Actual: ' + ("abc" + ""));
+}
+
+// CHECK#2
+var x2 = "abc";
+if (typeof x2 + "" !== typeof x2) {
+ $ERROR('#2: typeof "abc" + "" === "string". Actual: ' + (typeof "abc" + ""));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A5_T1.js
new file mode 100644
index 000000000..4c678e157
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A5_T1.js
@@ -0,0 +1,92 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A5_T1;
+ * @section: 9.8;
+ * @assertion: Result of String conversion from Object value is conversion
+ * from primitive value;
+ * @description: Some objects convert to String by explicit transformation;
+*/
+
+// CHECK#1
+if (String(new Number()) !== "0") {
+ $ERROR('#1: String(new Number()) === "0". Actual: ' + (String(new Number())));
+}
+
+// CHECK#2
+if (String(new Number(0)) !== "0") {
+ $ERROR('#2: String(new Number(0)) === "0". Actual: ' + (String(new Number(0))));
+}
+
+// CHECK#3
+if (String(new Number(Number.NaN)) !== "NaN") {
+ $ERROR('#3: String(new Number(Number.NaN)) === Not-a-Number. Actual: ' + (String(new Number(Number.NaN))));
+}
+
+// CHECK#4
+if (String(new Number(null)) !== "0") {
+ $ERROR('#4: String(new Number(null)) === "0". Actual: ' + (String(new Number(null))));
+}
+
+// CHECK#5
+if (String(new Number(void 0)) !== "NaN") {
+ $ERROR('#5: String(new Number(void 0)) === Not-a-Number. Actual: ' + (String(new Number(void 0))));
+}
+
+// CHECK#6
+if (String(new Number(true)) !== "1") {
+ $ERROR('#6: String(new Number(true)) === "1". Actual: ' + (String(new Number(true))));
+}
+
+// CHECK#7
+if (String(new Number(false)) !== "0") {
+ $ERROR('#7: String(new Number(false)) === "0". Actual: ' + (String(new Number(false))));
+}
+
+// CHECK#8
+if (String(new Boolean(true)) !== "true") {
+ $ERROR('#8: String(new Boolean(true)) === "true". Actual: ' + (String(new Boolean(true))));
+}
+
+// CHECK#9
+if (String(new Boolean(false)) !== "false") {
+ $ERROR('#9: Number(new Boolean(false)) === "false". Actual: ' + (Number(new Boolean(false))));
+}
+
+// CHECK#10
+if (String(new Array(2,4,8,16,32)) !== "2,4,8,16,32") {
+ $ERROR('#10: String(new Array(2,4,8,16,32)) === "2,4,8,16,32". Actual: ' + (String(new Array(2,4,8,16,32))));
+}
+
+// CHECK#11
+var myobj1 = {
+ toNumber : function(){return 12345;},
+ toString : function(){return 67890;},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (String(myobj1) !== "67890"){
+ $ERROR("#11: String(myobj) calls ToPrimitive with hint String");
+}
+
+// CHECK#12
+var myobj2 = {
+ toNumber : function(){return 12345;},
+ toString : function(){return {}},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (String(myobj2) !== "[object MyObj]"){
+ $ERROR("#12: String(myobj) calls ToPrimitive with hint String");
+}
+
+// CHECK#13
+var myobj3 = {
+ toNumber : function(){return 12345;},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (String(myobj3) !== "[object Object]"){
+ $ERROR("#13: String(myobj) calls ToPrimitive with hint String");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A5_T2.js
new file mode 100644
index 000000000..dfdf0e597
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.8_ToString/S9.8_A5_T2.js
@@ -0,0 +1,91 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.8_A5_T2;
+ * @section: 9.8;
+ * @assertion: Result of String conversion from Object value is conversion
+ * from primitive value;
+ * @description: Some objects convert to String by implicit transformation;
+*/
+
+// CHECK#1
+if (new Number() + "" !== "0") {
+ $ERROR('#1: new Number() + "" === "0". Actual: ' + (new Number() + ""));
+}
+
+// CHECK#2
+if (new Number(0) + "" !== "0") {
+ $ERROR('#2: new Number(0) + "" === "0". Actual: ' + (new Number(0) + ""));
+}
+
+// CHECK#3
+if (new Number(Number.NaN) + "" !== "NaN") {
+ $ERROR('#3: new Number(Number.NaN) + "" === "NaN". Actual: ' + (new Number(Number.NaN) + ""));
+}
+
+// CHECK#4
+if (new Number(null) + "" !== "0") {
+ $ERROR('#4: new Number(null) + "" === "0". Actual: ' + (new Number(null) + ""));
+}
+
+// CHECK#5
+if (new Number(void 0) + "" !== "NaN") {
+ $ERROR('#5: new Number(void 0) + "" === "NaN. Actual: ' + (new Number(void 0) + ""));
+}
+
+// CHECK#6
+if (new Number(true) + "" !== "1") {
+ $ERROR('#6: new Number(true) + "" === "1". Actual: ' + (new Number(true) + ""));
+}
+
+// CHECK#7
+if (new Number(false) + "" !== "0") {
+ $ERROR('#7: new Number(false) + "" === "0". Actual: ' + (new Number(false) + ""));
+}
+
+// CHECK#8
+if (new Boolean(true) + "" !== "true") {
+ $ERROR('#8: new Boolean(true) + "" === "true". Actual: ' + (new Boolean(true) + ""));
+}
+
+// CHECK#9
+if (new Boolean(false) + "" !== "false") {
+ $ERROR('#9: Number(new Boolean(false)) === "false". Actual: ' + (Number(new Boolean(false))));
+}
+
+// CHECK#10
+if (new Array(2,4,8,16,32) + "" !== "2,4,8,16,32") {
+ $ERROR('#10: new Array(2,4,8,16,32) + "" === "2,4,8,16,32". Actual: ' + (new Array(2,4,8,16,32) + ""));
+}
+
+// CHECK#11
+var myobj1 = {
+ toNumber : function(){return 12345;},
+ toString : function(){return 67890;},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (myobj1 + "" !== "[object MyObj]"){
+ $ERROR('#11: myobj1 + "" calls ToPrimitive with hint Number. Exptected: "[object MyObj]". Actual: ' + (myobj1 + ""));
+}
+
+// CHECK#12
+var myobj2 = {
+ toNumber : function(){return 12345;},
+ toString : function(){return 67890},
+ valueOf : function(){return {}}
+ };
+
+if (myobj2 + "" !== "67890"){
+ $ERROR('#12: myobj2 + "" calls ToPrimitive with hint Number. Exptected: "67890". Actual: ' + (myobj2 + ""));
+}
+
+// CHECK#13
+var myobj3 = {
+ toNumber : function(){return 12345;}
+ };
+
+if (myobj3 + "" !== "[object Object]"){
+ $ERROR('#13: myobj3 + "" calls ToPrimitive with hint Number. Exptected: "[object Object]". Actual: ' + (myobj3 + ""));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A1.js
new file mode 100644
index 000000000..790006af8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.9_A1;
+ * @section: 9.9;
+ * @assertion: ToObject conversion from undefined value must throw TypeError;
+ * @description: Trying to convert undefined to Object;
+*/
+
+// CHECK#1
+try{
+ undefined['foo'];
+ $ERROR('#1.1: undefined[\'foo\'] must throw TypeError. Actual: ' + (undefined['foo']));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#1.2: undefined[\'foo\'] must throw TypeError. Actual: ' + (e));
+ }
+}
+
+// CHECK#2
+try{
+ with(undefined) x = 2;
+ $ERROR('#2.1: with(undefined) x = 2 must throw TypeError. Actual: x === ' + (x));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#2.2: with(undefined) x = 2 must throw TypeError. Actual: ' + (e));
+ }
+}
+
+// CHECK#3
+try{
+ for(var y in undefined) y = 2;
+ $ERROR('#3.1: for(var y in undefined) y = 2 must throw TypeError. Actual: y === ' + (y));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#3.2: for(var y in undefined) y = 2 must throw TypeError. Actual: ' + (e));
+ }
+}
+
+// CHECK#4
+try{
+ for(var z in this.foo) z = 2;
+ $ERROR('#4.1: for(var z in this.foo) z = 2 must throw TypeError. Actual: z === ' + (z));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#4.2: for(var z in this.foo) z = 2 must throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A2.js
new file mode 100644
index 000000000..c5ab3c501
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A2.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.9_A2;
+ * @section: 9.9;
+ * @assertion: ToObject conversion from null value must throw TypeError;
+ * @description: Trying to convert null to Object;
+*/
+
+// CHECK#1
+try{
+ null['foo'];
+ $ERROR('#1.1: null[\'foo\'] throw TypeError. Actual: ' + (null['foo']));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#1.2: null[\'foo\'] must throw TypeError. Actual: ' + (e));
+ }
+}
+
+// CHECK#2
+try{
+ with(null) x = 2;
+ $ERROR('#2.1: with(null) x = 2 must throw TypeError. Actual: x === . Actual: ' + (x));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#2.2: with(null) x = 2 must throw TypeError. Actual: ' + (e));
+ }
+}
+
+// CHECK#3
+try{
+ for(var y in null) y = 2;
+ $ERROR('#3.1: for(var y in null) y = 2 must throw TypeError. Actual: y === . Actual: ' + (y));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#3.2: for(var y in null) y = 2 must throw TypeError. Actual: ' + (e));
+ }
+}
+
+// CHECK#4
+try{
+ for(var z in 'bbb'.match(/aaa/)) z = 2;
+ $ERROR('#4.1: for(var z in \'bbb\'.match(/aaa/)) z = 2 must throw TypeError. Actual: z === . Actual: ' + (z));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#4.2: for(var z in \'bbb\'.match(/aaa/)) z = 2 must throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A3.js
new file mode 100644
index 000000000..3b7f9955f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.9_A3;
+ * @section: 9.9;
+ * @assertion: ToObject conversion from Boolean: create a new Boolean object
+ * whose [[value]] property is set to the value of the boolean;
+ * @description: Trying to convert from Boolean to Object;
+*/
+
+// CHECK#1
+if (Object(true).valueOf() !== true){
+ $ERROR('#1: Object(true).valueOf() === true. Actual: ' + (Object(true).valueOf()));
+}
+
+// CHECK#2
+if (typeof Object(true) !== "object"){
+ $ERROR('#2: typeof Object(true) === "object". Actual: ' + (typeof Object(true)));
+}
+
+// CHECK#3
+if (Object(true).constructor.prototype !== Boolean.prototype){
+ $ERROR('#3: Object(true).constructor.prototype === Boolean.prototype. Actual: ' + (Object(true).constructor.prototype));
+}
+
+// CHECK#4
+if (Object(false).valueOf() !== false){
+ $ERROR('#4: Object(false).valueOf() === false. Actual: ' + (Object(false).valueOf()));
+}
+
+// CHECK#5
+if (typeof Object(false) !== "object"){
+ $ERROR('#5: typeof Object(false) === "object". Actual: ' + (typeof Object(false)));
+}
+
+// CHECK#6
+if (Object(false).constructor.prototype !== Boolean.prototype){
+ $ERROR('#6: Object(false).constructor.prototype === Boolean.prototype. Actual: ' + (Object(false).constructor.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A4.js
new file mode 100644
index 000000000..ee573ffe7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A4.js
@@ -0,0 +1,177 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.9_A4;
+ * @section: 9.9;
+ * @assertion: ToObject conversion from Number: create a new Number object
+ * whose [[value]] property is set to the value of the number;
+ * @description: Converting from various numbers to Object;
+*/
+
+// CHECK#1
+if (Object(0).valueOf() !== 0){
+ $ERROR('#1: Object(0).valueOf() === 0. Actual: ' + (Object(0).valueOf()));
+}
+
+// CHECK#2
+if (typeof Object(0) !== "object"){
+ $ERROR('#2: typeof Object(0) === "object". Actual: ' + (typeof Object(0)));
+}
+
+// CHECK#3
+if (Object(0).constructor.prototype !== Number.prototype){
+ $ERROR('#3: Object(0).constructor.prototype === Number.prototype. Actual: ' + (Object(0).constructor.prototype));
+}
+
+// CHECK#4
+if (Object(-0).valueOf() !== -0){
+ $ERROR('#4.1: Object(-0).valueOf() === 0. Actual: ' + (Object(-0).valueOf()));
+} else if (1/Object(-0).valueOf() !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: Object(-0).valueOf() === -0. Actual: +0');
+}
+
+// CHECK#5
+if (typeof Object(-0) !== "object"){
+ $ERROR('#5: typeof Object(-0) === "object". Actual: ' + (typeof Object(-0)));
+}
+
+// CHECK#6
+if (Object(-0).constructor.prototype !== Number.prototype){
+ $ERROR('#6: Object(-0).constructor.prototype === Number.prototype. Actual: ' + (Object(-0).constructor.prototype));
+}
+
+// CHECK#7
+if (Object(1).valueOf() !== 1){
+ $ERROR('#7: Object(1).valueOf() === 1. Actual: ' + (Object(1).valueOf()));
+}
+
+// CHECK#8
+if (typeof Object(1) !== "object"){
+ $ERROR('#8: typeof Object(1) === "object". Actual: ' + (typeof Object(1)));
+}
+
+// CHECK#9
+if (Object(1).constructor.prototype !== Number.prototype){
+ $ERROR('#9: Object(1).constructor.prototype === Number.prototype. Actual: ' + (Object(1).constructor.prototype));
+}
+
+// CHECK#10
+if (Object(-1).valueOf() !== -1){
+ $ERROR('#10: Object(-1).valueOf() === -1. Actual: ' + (Object(-1).valueOf()));
+}
+
+// CHECK#11
+if (typeof Object(-1) !== "object"){
+ $ERROR('#11: typeof Object(-1) === "object". Actual: ' + (typeof Object(-1)));
+}
+
+// CHECK#12
+if (Object(-1).constructor.prototype !== Number.prototype){
+ $ERROR('#12: Object(-1).constructor.prototype === Number.prototype. Actual: ' + (Object(-1).constructor.prototype));
+}
+
+// CHECK#13
+if (Object(Number.MIN_VALUE).valueOf() !== Number.MIN_VALUE){
+ $ERROR('#13: Object(Number.MIN_VALUE).valueOf() === Number.MIN_VALUE. Actual: ' + (Object(Number.MIN_VALUE).valueOf()));
+}
+
+// CHECK#14
+if (typeof Object(Number.MIN_VALUE) !== "object"){
+ $ERROR('#14: typeof Object(Number.MIN_VALUE) === "object". Actual: ' + (typeof Object(Number.MIN_VALUE)));
+}
+
+// CHECK#15
+if (Object(Number.MIN_VALUE).constructor.prototype !== Number.prototype){
+ $ERROR('#15: Object(Number.MIN_VALUE).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.MIN_VALUE).constructor.prototype));
+}
+
+// CHECK#16
+if (Object(Number.MAX_VALUE).valueOf() !== Number.MAX_VALUE){
+ $ERROR('#16: Object(Number.MAX_VALUE).valueOf() === Number.MAX_VALUE. Actual: ' + (Object(Number.MAX_VALUE).valueOf()));
+}
+
+// CHECK#17
+if (typeof Object(Number.MAX_VALUE) !== "object"){
+ $ERROR('#17: typeof Object(Number.MAX_VALUE) === "object". Actual: ' + (typeof Object(Number.MAX_VALUE)));
+}
+
+// CHECK#18
+if (Object(Number.MAX_VALUE).constructor.prototype !== Number.prototype){
+ $ERROR('#18: Object(Number.MAX_VALUE).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.MAX_VALUE).constructor.prototype));
+}
+
+// CHECK#19
+if (Object(Number.POSITIVE_INFINITY).valueOf() !== Number.POSITIVE_INFINITY){
+ $ERROR('#19: Object(Number.POSITIVE_INFINITY).valueOf() === Number.POSITIVE_INFINITY. Actual: ' + (Object(Number.POSITIVE_INFINITY).valueOf()));
+}
+
+// CHECK#20
+if (typeof Object(Number.POSITIVE_INFINITY) !== "object"){
+ $ERROR('#20: typeof Object(Number.POSITIVE_INFINITY) === "object". Actual: ' + (typeof Object(Number.POSITIVE_INFINITY)));
+}
+
+// CHECK#21
+if (Object(Number.POSITIVE_INFINITY).constructor.prototype !== Number.prototype){
+ $ERROR('#21: Object(Number.POSITIVE_INFINITY).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.POSITIVE_INFINITY).constructor.prototype));
+}
+
+// CHECK#22
+if (Object(Number.NEGATIVE_INFINITY).valueOf() !== Number.NEGATIVE_INFINITY){
+ $ERROR('#22: Object(Number.NEGATIVE_INFINITY).valueOf() === Number.NEGATIVE_INFINITY. Actual: ' + (Object(Number.NEGATIVE_INFINITY).valueOf()));
+}
+
+// CHECK#23
+if (typeof Object(Number.NEGATIVE_INFINITY) !== "object"){
+ $ERROR('#23: typeof Object(Number.NEGATIVE_INFINITY) === "object". Actual: ' + (typeof Object(Number.NEGATIVE_INFINITY)));
+}
+
+// CHECK#24
+if (Object(Number.NEGATIVE_INFINITY).constructor.prototype !== Number.prototype){
+ $ERROR('#24: Object(Number.NEGATIVE_INFINITY).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.NEGATIVE_INFINITY).constructor.prototype));
+}
+
+// CHECK#25
+if (isNaN(Object(Number.NaN).valueOf()) !== true){
+ $ERROR('#25: Object(Number.NaN).valueOf() === Not-a-Number. Actual: ' + (Object(Number.NaN).valueOf()));
+}
+
+// CHECK#26
+if (typeof Object(Number.NaN) !== "object"){
+ $ERROR('#26: typeof Object(Number.NaN) === "object". Actual: ' + (typeof Object(Number.NaN)));
+}
+
+// CHECK#27
+if (Object(Number.NaN).constructor.prototype !== Number.prototype){
+ $ERROR('#27: Object(Number.NaN).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.NaN).constructor.prototype));
+}
+
+// CHECK#28
+if (Object(1.2345).valueOf() !== 1.2345){
+ $ERROR('#28: Object(1.2345).valueOf() === 1.2345. Actual: ' + (Object(1.2345).valueOf()));
+}
+
+// CHECK#29
+if (typeof Object(1.2345) !== "object"){
+ $ERROR('#29: typeof Object(1.2345) === "object". Actual: ' + (typeof Object(1.2345)));
+}
+
+// CHECK#30
+if (Object(1.2345).constructor.prototype !== Number.prototype){
+ $ERROR('#30: Object(1.2345).constructor.prototype === Number.prototype. Actual: ' + (Object(1.2345).constructor.prototype));
+}
+
+// CHECK#31
+if (Object(-1.2345).valueOf() !== -1.2345){
+ $ERROR('#31: Object(-1.2345).valueOf() === -1.2345. Actual: ' + (Object(-1.2345).valueOf()));
+}
+
+// CHECK#32
+if (typeof Object(-1.2345) !== "object"){
+ $ERROR('#32: typeof Object(-1.2345) === "object". Actual: ' + (typeof Object(-1.2345)));
+}
+
+// CHECK#33
+if (Object(-1.2345).constructor.prototype !== Number.prototype){
+ $ERROR('#33: Object(-1.2345).constructor.prototype === Number.prototype. Actual: ' + (Object(-1.2345).constructor.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A5.js
new file mode 100644
index 000000000..374f6d155
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A5.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.9_A5;
+ * @section: 9.9;
+ * @assertion: ToObject conversion from String: create a new String object
+ * whose [[value]] property is set to the value of the string;
+ * @description: Converting from various strings to Object;
+*/
+
+// CHECK#1
+if (Object("some string").valueOf() !== "some string"){
+ $ERROR('#1: Object("some string").valueOf() === "some string". Actual: ' + (Object("some string").valueOf()));
+}
+
+// CHECK#2
+if (typeof Object("some string") !== "object"){
+ $ERROR('#2: typeof Object("some string") === "object". Actual: ' + (typeof Object("some string")));
+}
+
+// CHECK#3
+if (Object("some string").constructor.prototype !== String.prototype){
+ $ERROR('#3: Object("some string").constructor.prototype === String.prototype. Actual: ' + (Object("some string").constructor.prototype));
+}
+
+// CHECK#4
+if (Object("").valueOf() !== ""){
+ $ERROR('#4: Object("").valueOf() === false. Actual: ' + (Object("").valueOf()));
+}
+
+// CHECK#5
+if (typeof Object("") !== "object"){
+ $ERROR('#5: typeof Object("") === "object". Actual: ' + (typeof Object("")));
+}
+
+// CHECK#6
+if (Object("").constructor.prototype !== String.prototype){
+ $ERROR('#6: Object("").constructor.prototype === String.prototype. Actual: ' + (Object("").constructor.prototype));
+}
+
+// CHECK#7
+if (Object("\r\t\b\n\v\f").valueOf() !== "\r\t\b\n\v\f"){
+ $ERROR('#7: Object("\\r\\t\\b\\n\\v\\f").valueOf() === false. Actual: ' + (Object("\r\t\b\n\v\f").valueOf()));
+}
+
+// CHECK#8
+if (typeof Object("\r\t\b\n\v\f") !== "object"){
+ $ERROR('#8: typeof Object("\\r\\t\\b\\n\\v\\f") === "object". Actual: ' + (typeof Object("\r\t\b\n\v\f")));
+}
+
+// CHECK#9
+if (Object("\r\t\b\n\v\f").constructor.prototype !== String.prototype){
+ $ERROR('#9: Object("\\r\\t\\b\\n\\v\\f").constructor.prototype === String.prototype. Actual: ' + (Object("\r\t\b\n\v\f").constructor.prototype));
+}
+
+// CHECK#10
+if (Object(String(10)).valueOf() !== "10"){
+ $ERROR('#10: Object(String(10)).valueOf() === false. Actual: ' + (Object(String(10)).valueOf()));
+}
+
+// CHECK#11
+if (typeof Object(String(10)) !== "object"){
+ $ERROR('#11: typeof Object(String(10)) === "object". Actual: ' + (typeof Object(String(10))));
+}
+
+// CHECK#12
+if (Object(String(10)).constructor.prototype !== String.prototype){
+ $ERROR('#12: Object(String(10)).constructor.prototype === String.prototype. Actual: ' + (Object(String(10)).constructor.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A6.js
new file mode 100644
index 000000000..15dfd8e62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/09_Type_Conversion/9.9_ToObject/S9.9_A6.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S9.9_A6;
+ * @section: 9.9;
+ * @assertion: ToObject conversion from Object: The result is the input
+ * argument (no conversion);
+ * @description: Converting from Objects to Object;
+*/
+
+function MyObject( val ) {
+ this.value = val;
+ this.valueOf = function (){ return this.value; }
+}
+
+var x = new MyObject(1);
+var y = Object(x);
+
+// CHECK#1
+if (y.valueOf() !== x.valueOf()){
+ $ERROR('#1: Object(obj).valueOf() === obj.valueOf(). Actual: ' + (Object(obj).valueOf()));
+}
+
+// CHECK#2
+if (typeof y !== typeof x){
+ $ERROR('#2: typeof Object(obj) === typeof obj. Actual: ' + (typeof Object(obj)));
+}
+
+// CHECK#3
+if (y.constructor.prototype !== x.constructor.prototype){
+ $ERROR('#3: Object(obj).constructor.prototype === obj.constructor.prototype. Actual: ' + (Object(obj).constructor.prototype));
+}
+
+
+// CHECK#4
+if (y !== x){
+ $ERROR('#4: Object(obj) === obj');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A1.js
new file mode 100644
index 000000000..f2aa5c164
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_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.
+
+/**
+ * @name: S10.1.3_A1;
+ * @section: 10.1.3;
+ * @assertion: If the caller supplies fewer parameter values than there are
+ * formal parameters, the extra formal parameters have value undefined;
+ * @description: Calling function excluding a few parameters;
+*/
+
+//CHECK#1
+function f1(a, b){
+ return (b === undefined);
+}
+if(!(f1(1, 2) === false)){
+ $ERROR('#1: f1(1, 2) === false');
+} else if(!(f1(1) === true)){
+ $ERROR('#1: f1(1) === true');
+}
+
+//CHECK#2
+function f2(a, b, c){
+ return (b === undefined) && (c === undefined);
+}
+if(!(f2(1) === true)){
+ $ERROR('#2: f2(1, 2) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A2.js
new file mode 100644
index 000000000..ff5c3ac61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.3_A2;
+ * @section: 10.1.3;
+ * @assertion: If two or more formal parameters share the same name, hence
+ * the same property, the corresponding property is given the value that was
+ * supplied for the last parameter with this name;
+ * @description: Creating functions initialized with two or more formal parameters, which have the same name;
+*/
+
+//CHECK#1
+function f1(x, x) {
+ return x;
+}
+if(!(f1(1, 2) === 2)) {
+ $ERROR("#1: f1(1, 2) === 2");
+}
+
+//CHECK#2
+function f2(x, x, x){
+ return x*x*x;
+}
+if(!(f2(1, 2, 3) === 27)){
+ $ERROR("f2(1, 2, 3) === 27");
+}
+
+//CHECK#3
+function f3(x, x) {
+ return 'a' + x;
+}
+if(!(f3(1, 2) === 'a2')){
+ $ERROR("#3: f3(1, 2) === 'a2'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A3.js
new file mode 100644
index 000000000..da923f14b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.3_A3;
+ * @section: 10.1.3;
+ * @assertion: If the value of this last parameter (which has the same
+ * name as some previous parameters do) was not supplied by the
+ * caller, the value of the corresponding property is undefined;
+ * @description: Creating functions with two or more formal parameters,
+ * that have the same name. Calling this function excluding a few last parameters;
+*/
+
+//CHECK#1
+function f1(x, a, b, x){
+ return x;
+}
+if(!(f1(1, 2) === undefined)){
+ $ERROR('#1: f1(1, 2) === undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A4_T1.js
new file mode 100644
index 000000000..bc556a80d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A4_T1.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.3_A4_T1;
+ * @section: 10.1.3;
+ * @assertion: Function declaration in function code - If the variable object
+ * already has a property with the name of Function Identifier, replace its
+ * value and attributes. Semantically, this step must follow the creation of
+ * FormalParameterList properties;
+ * @description: Checking existence of a function with passed parameter;
+*/
+
+//CHECK#1
+function f1(x){
+ return x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f1().constructor.prototype === Function.prototype)){
+ $ERROR('#1: f1() returns function');
+}
+
+//CHECK#2
+function f2(x){
+ return typeof x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f2() === "function")){
+ $ERROR('#2: f2() === "function"');
+}
+
+//CHECK#3
+function f3() {
+ return typeof arguments;
+ function arguments() {
+ return 7;
+ }
+}
+if (!(f3() === "function")){
+ $ERROR('#3: f3() === "function"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A4_T2.js
new file mode 100644
index 000000000..9f0fcf281
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A4_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.
+
+/**
+ * @name: S10.1.3_A4_T2;
+ * @section: 10.1.3;
+ * @assertion: Function declaration in function code - If the variable object
+ * already has a property with the name of Function Identifier, replace its
+ * value and attributes. Semantically, this step must follow the creation of
+ * FormalParameterList properties;
+ * @description: Checking existence of a function with declared variable;
+*/
+
+//CHECK#1
+function f1(){
+ var x;
+
+ return x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f1().constructor.prototype === Function.prototype)){
+ $PRINT('#1: f1() returns function');
+}
+
+//CHECK#2
+function f2(){
+ var x;
+
+ return typeof x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f2() === "function")){
+ $PRINT('#2: f2() === "function"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.1_T1.js
new file mode 100644
index 000000000..a2a487e4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.1_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.3_A5.1_T1;
+ * @section: 10.1.3;
+ * @assertion: For each VariableDeclaration or VariableDeclarationNoIn in the
+ * code, create a property of the variable object whose name is the Identifier
+ * in the VariableDeclaration or VariableDeclarationNoIn, whose value is
+ * undefined and whose attributes are determined by the type of code;
+ * @description: Checking variable existence only;
+*/
+
+//CHECK#1
+function f1(){
+ var x;
+
+ return typeof x;
+}
+
+if(!(f1() === "undefined")){
+ $PRINT('#1: f1() === "undefined"');
+}
+
+//CHECK#2
+function f2(){
+ var x;
+
+ return x;
+}
+
+if(!(f2() === undefined)){
+ $PRINT('#1: f2() === undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.1_T2.js
new file mode 100644
index 000000000..2325854d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.1_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.3_A5.1_T2;
+ * @section: 10.1.3;
+ * @assertion: For each VariableDeclaration or VariableDeclarationNoIn in the
+ * code, create a property of the variable object whose name is the Identifier
+ * in the VariableDeclaration or VariableDeclarationNoIn, whose value is
+ * undefined and whose attributes are determined by the type of code;
+ * @description: Checking existence of the variable object property with formal parameter;
+*/
+
+//CHECK#1
+function f1(x){
+ var x;
+
+ return typeof x;
+}
+
+if(!(f1() === "undefined")){
+ $PRINT('#1: f1(1) === "undefined"');
+}
+
+//CHECK#2
+function f2(x){
+ var x;
+
+ return x;
+}
+
+if(!(f2() === undefined)){
+ $PRINT('#1: f2(1) === undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.2_T1.js
new file mode 100644
index 000000000..f681058c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.3_Variable_Instantiation/S10.1.3_A5.2_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.3_A5.2_T1;
+ * @section: 10.1.3;
+ * @assertion: If there is already a property of the variable object with the
+ * name of a declared variable, the value of the property and its attributes
+ * are not changed;
+ * @description: Checking existence of the variable object property with formal parameter;
+*/
+
+//CHECK#1
+function f1(x){
+ var x;
+
+ return typeof x;
+}
+
+if(!(f1(1) === "number")){
+ $PRINT('#1: f1(1) === "number"');
+}
+
+//CHECK#2
+function f2(x){
+ var x;
+
+ return x;
+}
+
+if(!(f2(1) === 1)){
+ $PRINT('#1: f2(1) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T1.js
new file mode 100644
index 000000000..9b3366270
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.4_A1_T1;
+ * @section: 10.1.4;
+ * @assertion: Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier;
+ * @description: Checking scope chain containing function declarations;
+*/
+
+var x = 0;
+
+function f1(){
+ var x = 1;
+ function f2(){
+ return x;
+ };
+ return f2();
+}
+
+if(!(f1() === 1)){
+ $ERROR("#1: Scope chain disturbed");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T2.js
new file mode 100644
index 000000000..b73e3467a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.4_A1_T2;
+ * @section: 10.1.4;
+ * @assertion: Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier;
+ * @description: Checking scope chain containing function declarations;
+*/
+
+var x = 0;
+
+function f1(){
+ function f2(){
+ return x;
+ };
+ return f2();
+}
+
+if(!(f1() === 0)){
+ $ERROR("#1: Scope chain disturbed");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T3.js
new file mode 100644
index 000000000..4d6e17dd1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.4_A1_T3;
+ * @section: 10.1.4;
+ * @assertion: Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier;
+ * @description: Checking scope chain containing function declarations;
+*/
+
+var x = 0;
+
+function f1(){
+ function f2(){
+ return x;
+ };
+ return f2();
+
+ var x = 1;
+}
+
+if(!(f1() === undefined)){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T4.js
new file mode 100644
index 000000000..bbc27a27e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.4_A1_T4;
+ * @section: 10.1.4;
+ * @assertion: Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier;
+ * @description: Checking scope chain containing function declarations;
+*/
+
+var x = 0;
+
+function f1(){
+ function f2(){
+ return x;
+ };
+
+ var x = 1;
+ return f2();
+}
+
+if(!(f1() === 1)){
+ $ERROR("#1: Scope chain disturbed");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T5.js
new file mode 100644
index 000000000..4374e9832
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.4_A1_T5;
+ * @section: 10.1.4;
+ * @assertion: Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier;
+ * @description: Checking scope chain containing function declarations and "with";
+*/
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ var x = 1;
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+ return f2();
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T6.js
new file mode 100644
index 000000000..14f878114
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T6.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.4_A1_T6;
+ * @section: 10.1.4;
+ * @assertion: Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier;
+ * @description: Checking scope chain containing function declarations and "with";
+*/
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+ return f2();
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T7.js
new file mode 100644
index 000000000..2edd0c379
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T7.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.4_A1_T7;
+ * @section: 10.1.4;
+ * @assertion: Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier;
+ * @description: Checking scope chain containing function declarations and "with";
+*/
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+ return f2();
+
+ var x = 1;
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T8.js
new file mode 100644
index 000000000..0286c468d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T8.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.4_A1_T8;
+ * @section: 10.1.4;
+ * @assertion: Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier;
+ * @description: Checking scope chain containing function declarations and "with";
+*/
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+
+ var x = 1;
+ return f2();
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T9.js
new file mode 100644
index 000000000..173cb43da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.4_Scope_Chain_and_Identifier_Resolution/S10.1.4_A1_T9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.4_A1_T9;
+ * @section: 10.1.4;
+ * @assertion: Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier;
+ * @description: Checking scope chain containing function declarations and "with";
+*/
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ with(myObj){
+ return x;
+ }
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T1.js
new file mode 100644
index 000000000..49db4a2e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.1_T1;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Global execution context - Value Properties;
+*/
+
+//CHECK#1
+if ( NaN === null ) {
+ $ERROR("#1: NaN === null");
+}
+
+//CHECK#2
+if ( Infinity === null ) {
+ $ERROR("#2: Infinity === null");
+}
+
+//CHECK#3
+if ( undefined === null ) {
+ $ERROR("#3: undefined === null");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T2.js
new file mode 100644
index 000000000..dccfa891c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.1_T2;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Global execution context - Function Properties;
+*/
+
+//CHECK#4
+if ( eval === null ) {
+ $ERROR("#4: eval === null");
+}
+
+//CHECK#5
+if ( parseInt === null ) {
+ $ERROR("#5: parseInt === null");
+}
+
+//CHECK#6
+if ( parseFloat === null ) {
+ $ERROR("#6: parseFloat === null");
+}
+
+//CHECK#7
+if ( isNaN === null ) {
+ $ERROR("#7: isNaN === null");
+}
+
+//CHECK#8
+if ( isFinite === null ) {
+ $ERROR("#8: isFinite === null");
+}
+
+//CHECK#9
+if ( decodeURI === null ) {
+ $ERROR("#9: decodeURI === null");
+}
+
+//CHECK#10
+if ( decodeURIComponent === null ) {
+ $ERROR("#10: decodeURIComponent === null");
+}
+
+//CHECK#11
+if ( encodeURI === null ) {
+ $ERROR("#11: encodeURI === null");
+}
+
+//CHECK#12
+if ( encodeURIComponent === null ) {
+ $ERROR("#12: encodeURIComponent === null");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T3.js
new file mode 100644
index 000000000..6f48b7d55
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T3.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.1_T3;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Global execution context - Constructor Properties;
+*/
+
+//CHECK#13
+if ( Object === null ) {
+ $ERROR("#13: Object === null");
+}
+
+//CHECK#14
+if ( Function === null ) {
+ $ERROR("#14: Function === null");
+}
+
+//CHECK#15
+if ( String === null ) {
+ $ERROR("#15: String === null");
+}
+
+//CHECK#16
+if ( Number === null ) {
+ $ERROR("#16: Number === null");
+}
+
+//CHECK#17
+if ( Array === null ) {
+ $ERROR("#17: Array === null");
+}
+
+//CHECK#18
+if ( Boolean === null ) {
+ $ERROR("#20: Boolean === null");
+}
+
+//CHECK#18
+if ( Date === null ) {
+ $ERROR("#18: Date === null");
+}
+
+//CHECK#19
+if ( RegExp === null ) {
+ $ERROR("#19: RegExp === null");
+}
+
+//CHECK#20
+if ( Error === null ) {
+ $ERROR("#20: Error === null");
+}
+
+//CHECK#21
+if ( EvalError === null ) {
+ $ERROR("#21: EvalError === null");
+}
+
+//CHECK#22
+if ( RangeError === null ) {
+ $ERROR("#22: RangeError === null");
+}
+
+//CHECK#23
+if ( ReferenceError === null ) {
+ $ERROR("#23: ReferenceError === null");
+}
+
+//CHECK#24
+if ( SyntaxError === null ) {
+ $ERROR("#24: SyntaxError === null");
+}
+
+//CHECK#25
+if ( TypeError === null ) {
+ $ERROR("#25: TypeError === null");
+}
+
+//CHECK#26
+if ( URIError === null ) {
+ $ERROR("#26: URIError === null");
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T4.js
new file mode 100644
index 000000000..aecf44d86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.1_T4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.1_T4;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Global execution context - Other Properties;
+*/
+
+//CHECK#27
+if ( Math === null ) {
+ $ERROR("#27: Math === null");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T1.js
new file mode 100644
index 000000000..e89b59215
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.2_T1;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Function execution context - Value Properties;
+*/
+
+function test() {
+ //CHECK#1
+ if ( NaN === null ) {
+ $ERROR("#1: NaN === null");
+ }
+
+ //CHECK#2
+ if ( Infinity === null ) {
+ $ERROR("#2: Infinity === null");
+ }
+
+ //CHECK#3
+ if ( undefined === null ) {
+ $ERROR("#3: undefined === null");
+ }
+}
+
+test();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T2.js
new file mode 100644
index 000000000..464a53267
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.2_T2;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Function execution context - Function Properties;
+*/
+
+function test() {
+ //CHECK#4
+ if ( eval === null ) {
+ $ERROR("#4: eval === null");
+ }
+
+ //CHECK#5
+ if ( parseInt === null ) {
+ $ERROR("#5: parseInt === null");
+ }
+
+ //CHECK#6
+ if ( parseFloat === null ) {
+ $ERROR("#6: parseFloat === null");
+ }
+
+ //CHECK#7
+ if ( isNaN === null ) {
+ $ERROR("#7: isNaN === null");
+ }
+
+ //CHECK#8
+ if ( isFinite === null ) {
+ $ERROR("#8: isFinite === null");
+ }
+
+ //CHECK#9
+ if ( decodeURI === null ) {
+ $ERROR("#9: decodeURI === null");
+ }
+
+ //CHECK#10
+ if ( decodeURIComponent === null ) {
+ $ERROR("#10: decodeURIComponent === null");
+ }
+
+ //CHECK#11
+ if ( encodeURI === null ) {
+ $ERROR("#11: encodeURI === null");
+ }
+
+ //CHECK#12
+ if ( encodeURIComponent === null ) {
+ $ERROR("#12: encodeURIComponent === null");
+ }
+}
+
+test();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T3.js
new file mode 100644
index 000000000..174752415
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T3.js
@@ -0,0 +1,89 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.2_T3;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Function execution context - Constructor Properties;
+*/
+
+function test() {
+ //CHECK#13
+ if ( Object === null ) {
+ $ERROR("#13: Object === null");
+ }
+
+ //CHECK#14
+ if ( Function === null ) {
+ $ERROR("#14: Function === null");
+ }
+
+ //CHECK#15
+ if ( String === null ) {
+ $ERROR("#15: String === null");
+ }
+
+ //CHECK#16
+ if ( Number === null ) {
+ $ERROR("#16: Function === null");
+ }
+
+ //CHECK#17
+ if ( Array === null ) {
+ $ERROR("#17: Array === null");
+ }
+
+ //CHECK#18
+ if ( Boolean === null ) {
+ $ERROR("#20: Boolean === null");
+ }
+
+ //CHECK#18
+ if ( Date === null ) {
+ $ERROR("#18: Date === null");
+ }
+
+ //CHECK#19
+ if ( RegExp === null ) {
+ $ERROR("#19: RegExp === null");
+ }
+
+ //CHECK#20
+ if ( Error === null ) {
+ $ERROR("#20: Error === null");
+ }
+
+ //CHECK#21
+ if ( EvalError === null ) {
+ $ERROR("#21: EvalError === null");
+ }
+
+ //CHECK#22
+ if ( RangeError === null ) {
+ $ERROR("#22: RangeError === null");
+ }
+
+ //CHECK#23
+ if ( ReferenceError === null ) {
+ $ERROR("#23: ReferenceError === null");
+ }
+
+ //CHECK#24
+ if ( SyntaxError === null ) {
+ $ERROR("#24: SyntaxError === null");
+ }
+
+ //CHECK#25
+ if ( TypeError === null ) {
+ $ERROR("#25: TypeError === null");
+ }
+
+ //CHECK#26
+ if ( URIError === null ) {
+ $ERROR("#26: URIError === null");
+ }
+}
+
+test();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T4.js
new file mode 100644
index 000000000..bad81c43a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.2_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.2_T4;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Function execution context - Other Properties;
+*/
+
+function test() {
+ //CHECK#27
+ if ( Math === null ) {
+ $ERROR("#27: Math === null");
+ }
+}
+
+test();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T1.js
new file mode 100644
index 000000000..20e07d349
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.3_T1;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Eval execution context - Value Properties;
+*/
+
+var evalStr =
+'//CHECK#1\n'+
+'if ( NaN === null ) {\n'+
+' $ERROR("#1: NaN === null");\n'+
+'}\n'+
+
+'//CHECK#2\n'+
+'if ( Infinity === null ) {\n'+
+' $ERROR("#2: Infinity === null");\n'+
+'}\n'+
+
+'//CHECK#3\n'+
+'if ( undefined === null ) {\n'+
+' $ERROR("#3: undefined === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T2.js
new file mode 100644
index 000000000..8925b29be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.3_T2;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Eval execution context - Function Properties;
+*/
+
+var evalStr =
+'//CHECK#4\n'+
+'if ( eval === null ) {\n'+
+' $ERROR("#4: eval === null");\n'+
+'}\n'+
+
+'//CHECK#5\n'+
+'if ( parseInt === null ) {\n'+
+' $ERROR("#5: parseInt === null");\n'+
+'}\n'+
+
+'//CHECK#6\n'+
+'if ( parseFloat === null ) {\n'+
+' $ERROR("#6: parseFloat === null");\n'+
+'}\n'+
+
+'//CHECK#7\n'+
+'if ( isNaN === null ) {\n'+
+' $ERROR("#7: isNaN === null");\n'+
+'}\n'+
+
+'//CHECK#8\n'+
+'if ( isFinite === null ) {\n'+
+' $ERROR("#8: isFinite === null");\n'+
+'}\n'+
+
+'//CHECK#9\n'+
+'if ( decodeURI === null ) {\n'+
+' $ERROR("#9: decodeURI === null");\n'+
+'}\n'+
+
+'//CHECK#10\n'+
+'if ( decodeURIComponent === null ) {\n'+
+' $ERROR("#10: decodeURIComponent === null");\n'+
+'}\n'+
+
+'//CHECK#11\n'+
+'if ( encodeURI === null ) {\n'+
+' $ERROR("#11: encodeURI === null");\n'+
+'}\n'+
+
+'//CHECK#12\n'+
+'if ( encodeURIComponent === null ) {\n'+
+' $ERROR("#12: encodeURIComponent === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T3.js
new file mode 100644
index 000000000..050c8bfcf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T3.js
@@ -0,0 +1,89 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.3_T3;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Eval execution context - Constructor Properties;
+*/
+
+var evalStr =
+'//CHECK#13\n'+
+'if ( Object === null ) {\n'+
+' $ERROR("#13: Object === null");\n'+
+'}\n'+
+
+'//CHECK#14\n'+
+'if ( Function === null ) {\n'+
+' $ERROR("#14: Function === null");\n'+
+'}\n'+
+
+'//CHECK#15\n'+
+'if ( String === null ) {\n'+
+' $ERROR("#15: String === null");\n'+
+'}\n'+
+
+'//CHECK#16\n'+
+'if ( Number === null ) {\n'+
+' $ERROR("#16: Function === null");\n'+
+'}\n'+
+
+'//CHECK#17\n'+
+'if ( Array === null ) {\n'+
+' $ERROR("#17: Array === null");\n'+
+'}\n'+
+
+'//CHECK#18\n'+
+'if ( Boolean === null ) {\n'+
+' $ERROR("#20: Boolean === null");\n'+
+'}\n'+
+
+'//CHECK#18\n'+
+'if ( Date === null ) {\n'+
+' $ERROR("#18: Date === null");\n'+
+'}\n'+
+
+'//CHECK#19\n'+
+'if ( RegExp === null ) {\n'+
+' $ERROR("#19: RegExp === null");\n'+
+'}\n'+
+
+'//CHECK#20\n'+
+'if ( Error === null ) {\n'+
+' $ERROR("#20: Error === null");\n'+
+'}\n'+
+
+'//CHECK#21\n'+
+'if ( EvalError === null ) {\n'+
+' $ERROR("#21: EvalError === null");\n'+
+'}\n'+
+
+'//CHECK#22\n'+
+'if ( RangeError === null ) {\n'+
+' $ERROR("#22: RangeError === null");\n'+
+'}\n'+
+
+'//CHECK#23\n'+
+'if ( ReferenceError === null ) {\n'+
+' $ERROR("#23: ReferenceError === null");\n'+
+'}\n'+
+
+'//CHECK#24\n'+
+'if ( SyntaxError === null ) {\n'+
+' $ERROR("#24: SyntaxError === null");\n'+
+'}\n'+
+
+'//CHECK#25\n'+
+'if ( TypeError === null ) {\n'+
+' $ERROR("#25: TypeError === null");\n'+
+'}\n'+
+
+'//CHECK#26\n'+
+'if ( URIError === null ) {\n'+
+' $ERROR("#26: URIError === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T4.js
new file mode 100644
index 000000000..62418aad3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A1.3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A1.3_T4;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc;
+ * @description: Eval execution context - Other Properties;
+*/
+
+var evalStr =
+'//CHECK#27\n'+
+'if ( Math === null ) {\n'+
+' $ERROR("#27: Math === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T1.js
new file mode 100644
index 000000000..caa0d1ba1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.1_T1;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Global execution context - Value Properties;
+*/
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'NaN' ) {
+ $ERROR("#1: 'NaN' have attribute DontEnum");
+ } else if ( x === 'Infinity' ) {
+ $ERROR("#1: 'Infinity' have attribute DontEnum");
+ } else if ( x === 'undefined' ) {
+ $ERROR("#1: 'undefined' have attribute DontEnum");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T2.js
new file mode 100644
index 000000000..f9fb53f23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.1_T2;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Global execution context - Function Properties;
+*/
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'eval' ) {
+ $ERROR("#1: 'eval' have attribute DontEnum");
+ } else if ( x === 'parseInt' ) {
+ $ERROR("#1: 'parseInt' have attribute DontEnum");
+ } else if ( x === 'parseFloat' ) {
+ $ERROR("#1: 'parseFloat' have attribute DontEnum");
+ } else if ( x === 'isNaN' ) {
+ $ERROR("#1: 'isNaN' have attribute DontEnum");
+ } else if ( x === 'isFinite' ) {
+ $ERROR("#1: 'isFinite' have attribute DontEnum");
+ } else if ( x === 'decodeURI' ) {
+ $ERROR("#1: 'decodeURI' have attribute DontEnum");
+ } else if ( x === 'decodeURIComponent' ) {
+ $ERROR("#1: 'decodeURIComponent' have attribute DontEnum");
+ } else if ( x === 'encodeURI' ) {
+ $ERROR("#1: 'encodeURI' have attribute DontEnum");
+ } else if ( x === 'encodeURIComponent' ) {
+ $ERROR("#1: 'encodeURIComponent' have attribute DontEnum");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T3.js
new file mode 100644
index 000000000..d341c9247
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T3.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.1_T3;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Global execution context - Constructor Properties;
+*/
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'Object' ) {
+ $ERROR("#1: 'property 'Object' have attribute DontEnum");
+ } else if ( x === 'Function') {
+ $ERROR("#1: 'Function' have attribute DontEnum");
+ } else if ( x === 'String' ) {
+ $ERROR("#1: 'String' have attribute DontEnum");
+ } else if ( x === 'Number' ) {
+ $ERROR("#1: 'Number' have attribute DontEnum");
+ } else if ( x === 'Array' ) {
+ $ERROR("#1: 'Array' have attribute DontEnum");
+ } else if ( x === 'Boolean' ) {
+ $ERROR("#1: 'Boolean' have attribute DontEnum");
+ } else if ( x === 'Date' ) {
+ $ERROR("#1: 'Date' have attribute DontEnum");
+ } else if ( x === 'RegExp' ) {
+ $ERROR("#1: 'RegExp' have attribute DontEnum");
+ } else if ( x === 'Error' ) {
+ $ERROR("#1: 'Error' have attribute DontEnum");
+ } else if ( x === 'EvalError' ) {
+ $ERROR("#1: 'EvalError' have attribute DontEnum");
+ } else if ( x === 'RangeError' ) {
+ $ERROR("#1: 'RangeError' have attribute DontEnum");
+ } else if ( x === 'ReferenceError' ) {
+ $ERROR("#1: 'ReferenceError' have attribute DontEnum");
+ } else if ( x === 'SyntaxError' ) {
+ $ERROR("#1: 'SyntaxError' have attribute DontEnum");
+ } else if ( x === 'TypeError' ) {
+ $ERROR("#1: 'TypeError' have attribute DontEnum");
+ } else if ( x === 'URIError' ) {
+ $ERROR("#1: 'URIError' have attribute DontEnum");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T4.js
new file mode 100644
index 000000000..d26b2c5ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.1_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.1_T4;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Global execution context - Other Properties;
+*/
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'Math' ) {
+ $ERROR("#1: 'Math' have attribute DontEnum");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T1.js
new file mode 100644
index 000000000..ab90dba4f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.2_T1;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Function execution context - Value Properties;
+*/
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'NaN' ) {
+ $ERROR("#1: 'NaN' have attribute DontEnum");
+ } else if ( x === 'Infinity' ) {
+ $ERROR("#1: 'Infinity' have attribute DontEnum");
+ } else if ( x === 'undefined' ) {
+ $ERROR("#1: 'undefined' have attribute DontEnum");
+ }
+ }
+}
+
+test();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T2.js
new file mode 100644
index 000000000..115edc89c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T2.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.2_T2;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Function execution context - Function Properties;
+*/
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'eval' ) {
+ $ERROR("#1: 'eval' have attribute DontEnum");
+ } else if ( x === 'parseInt' ) {
+ $ERROR("#1: 'parseInt' have attribute DontEnum");
+ } else if ( x === 'parseFloat' ) {
+ $ERROR("#1: 'parseFloat' have attribute DontEnum");
+ } else if ( x === 'isNaN' ) {
+ $ERROR("#1: 'isNaN' have attribute DontEnum");
+ } else if ( x === 'isFinite' ) {
+ $ERROR("#1: 'isFinite' have attribute DontEnum");
+ } else if ( x === 'decodeURI' ) {
+ $ERROR("#1: 'decodeURI' have attribute DontEnum");
+ } else if ( x === 'decodeURIComponent' ) {
+ $ERROR("#1: 'decodeURIComponent' have attribute DontEnum");
+ } else if ( x === 'encodeURI' ) {
+ $ERROR("#1: 'encodeURI' have attribute DontEnum");
+ } else if ( x === 'encodeURIComponent' ) {
+ $ERROR("#1: 'encodeURIComponent' have attribute DontEnum");
+ }
+ }
+}
+
+test();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T3.js
new file mode 100644
index 000000000..c200c7488
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T3.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.2_T3;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Function execution context - Constructor Properties;
+*/
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'Object' ) {
+ $ERROR("#1: 'property 'Object' have attribute DontEnum");
+ } else if ( x === 'Function') {
+ $ERROR("#1: 'Function' have attribute DontEnum");
+ } else if ( x === 'String' ) {
+ $ERROR("#1: 'String' have attribute DontEnum");
+ } else if ( x === 'Number' ) {
+ $ERROR("#1: 'Number' have attribute DontEnum");
+ } else if ( x === 'Array' ) {
+ $ERROR("#1: 'Array' have attribute DontEnum");
+ } else if ( x === 'Boolean' ) {
+ $ERROR("#1: 'Boolean' have attribute DontEnum");
+ } else if ( x === 'Date' ) {
+ $ERROR("#1: 'Date' have attribute DontEnum");
+ } else if ( x === 'RegExp' ) {
+ $ERROR("#1: 'RegExp' have attribute DontEnum");
+ } else if ( x === 'Error' ) {
+ $ERROR("#1: 'Error' have attribute DontEnum");
+ } else if ( x === 'EvalError' ) {
+ $ERROR("#1: 'EvalError' have attribute DontEnum");
+ } else if ( x === 'RangeError' ) {
+ $ERROR("#1: 'RangeError' have attribute DontEnum");
+ } else if ( x === 'ReferenceError' ) {
+ $ERROR("#1: 'ReferenceError' have attribute DontEnum");
+ } else if ( x === 'SyntaxError' ) {
+ $ERROR("#1: 'SyntaxError' have attribute DontEnum");
+ } else if ( x === 'TypeError' ) {
+ $ERROR("#1: 'TypeError' have attribute DontEnum");
+ } else if ( x === 'URIError' ) {
+ $ERROR("#1: 'URIError' have attribute DontEnum");
+ }
+ }
+}
+
+test();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T4.js
new file mode 100644
index 000000000..0b1519040
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.2_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.2_T4;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Function execution context - Other Properties;
+*/
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'Math' ) {
+ $ERROR("#1: 'Math' have attribute DontEnum");
+ }
+ }
+}
+
+test();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T1.js
new file mode 100644
index 000000000..c0979bada
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.3_T1;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Global execution context - Value Properties;
+*/
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'NaN\' ) {\n'+
+' $ERROR("#1: \'NaN\' have attribute DontEnum");\n'+
+' } else if ( x === \'Infinity\' ) {\n'+
+' $ERROR("#1: \'Infinity\' have attribute DontEnum");\n'+
+' } else if ( x === \'undefined\' ) {\n'+
+' $ERROR("#1: \'undefined\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T2.js
new file mode 100644
index 000000000..0bc4bbd63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.3_T2;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Global execution context - Function Properties;
+*/
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'eval\' ) {\n'+
+' $ERROR("#1: \'eval\' have attribute DontEnum");\n'+
+' } else if ( x === \'parseInt\' ) {\n'+
+' $ERROR("#1: \'parseInt\' have attribute DontEnum");\n'+
+' } else if ( x === \'parseFloat\' ) {\n'+
+' $ERROR("#1: \'parseFloat\' have attribute DontEnum");\n'+
+' } else if ( x === \'isNaN\' ) {\n'+
+' $ERROR("#1: \'isNaN\' have attribute DontEnum");\n'+
+' } else if ( x === \'isFinite\' ) {\n'+
+' $ERROR("#1: \'isFinite\' have attribute DontEnum");\n'+
+' } else if ( x === \'decodeURI\' ) {\n'+
+' $ERROR("#1: \'decodeURI\' have attribute DontEnum");\n'+
+' } else if ( x === \'decodeURIComponent\' ) {\n'+
+' $ERROR("#1: \'decodeURIComponent\' have attribute DontEnum");\n'+
+' } else if ( x === \'encodeURI\' ) {\n'+
+' $ERROR("#1: \'encodeURI\' have attribute DontEnum");\n'+
+' } else if ( x === \'encodeURIComponent\' ) {\n'+
+' $ERROR("#1: \'encodeURIComponent\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T3.js
new file mode 100644
index 000000000..aadefec4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T3.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.3_T3;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Global execution context - Constructor Properties;
+*/
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'Object\' ) {\n'+
+' $ERROR("#1: \'Object\' have attribute DontEnum");\n'+
+' } else if ( x === \'Function\') {\n'+
+' $ERROR("#1: \'Function\' have attribute DontEnum");\n'+
+' } else if ( x === \'String\' ) {\n'+
+' $ERROR("#1: \'String\' have attribute DontEnum");\n'+
+' } else if ( x === \'Number\' ) {\n'+
+' $ERROR("#1: \'Number\' have attribute DontEnum");\n'+
+' } else if ( x === \'Array\' ) {\n'+
+' $ERROR("#1: \'Array\' have attribute DontEnum");\n'+
+' } else if ( x === \'Boolean\' ) {\n'+
+' $ERROR("#1: \'Boolean\' have attribute DontEnum");\n'+
+' } else if ( x === \'Date\' ) {\n'+
+' $ERROR("#1: \'Date\' have attribute DontEnum");\n'+
+' } else if ( x === \'RegExp\' ) {\n'+
+' $ERROR("#1: \'RegExp\' have attribute DontEnum");\n'+
+' } else if ( x === \'Error\' ) {\n'+
+' $ERROR("#1: \'Error\' have attribute DontEnum");\n'+
+' } else if ( x === \'EvalError\' ) {\n'+
+' $ERROR("#1: \'EvalError\' have attribute DontEnum");\n'+
+' } else if ( x === \'RangeError\' ) {\n'+
+' $ERROR("#1: \'RangeError\' have attribute DontEnum");\n'+
+' } else if ( x === \'ReferenceError\' ) {\n'+
+' $ERROR("#1: \'ReferenceError\' have attribute DontEnum");\n'+
+' } else if ( x === \'SyntaxError\' ) {\n'+
+' $ERROR("#1: \'SyntaxError\' have attribute DontEnum");\n'+
+' } else if ( x === \'TypeError\' ) {\n'+
+' $ERROR("#1: \'TypeError\' have attribute DontEnum");\n'+
+' } else if ( x === \'URIError\' ) {\n'+
+' $ERROR("#1: \'URIError\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T4.js
new file mode 100644
index 000000000..c74bcd02b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.5_Global_Object/S10.1.5_A2.3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.5_A2.3_T4;
+ * @section: 10.1.5, 15.1;
+ * @assertion: Global object properties have attributes { DontEnum };
+ * @description: Global execution context - Other Properties;
+*/
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'Math\' ) {\n'+
+' $ERROR("#1: \'Math\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A1.js
new file mode 100644
index 000000000..030d57d74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A1;
+ * @section: 10.1.8;
+ * @assertion: When control enters an execution context for function code,
+ * an arguments object is created and initialised;
+ * @description: Executing function which uses arguments object;
+*/
+
+//CHECK#1
+function f1(){
+ return arguments;
+}
+
+try{
+ var x = f1();
+}
+catch(e){
+ $ERROR("#1: arguments doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ return arguments;
+}
+
+try{
+ var x = f2();
+}
+catch(e){
+ $ERROR("#2: arguments doesn't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A2.js
new file mode 100644
index 000000000..ad12b57e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A2;
+ * @section: 10.1.8;
+ * @assertion: The value of the internal [[Prototype]] property of the
+ * created arguments object is the original Object prototype object, the one
+ * that is the initial value of Object.prototype;
+ * @description: Checking arguments.constructor.prototype===Object.prototype;
+*/
+
+//CHECK#1
+function f1(){
+ return arguments.constructor.prototype;
+}
+try{
+ if(f1() !== Object.prototype){
+ $ERROR('#1: arguments.constructor.prototype === Object.prototype');
+ }
+}
+catch(e){
+ $ERROR("#1: arguments doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.constructor.prototype;};
+try{
+ if(f2() !== Object.prototype){
+ $ERROR('#2: arguments.constructor.prototype === Object.prototype');
+ }
+}
+catch(e){
+ $ERROR("#2: arguments doesn't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T1.js
new file mode 100644
index 000000000..4b970d33d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A3_T1;
+ * @section: 10.1.8;
+ * @assertion: A property is created with name callee with property
+ * attributes { DontEnum } and no others;
+ * @description: Checking existence of arguments.callee property;
+*/
+
+//CHECK#1
+function f1(){
+ return arguments.hasOwnProperty("callee");
+}
+try{
+ if(f1() !== true){
+ $ERROR("#1: arguments object doesn't contains property 'callee'");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.hasOwnProperty("callee");};
+try{
+ if(f2() !== true){
+ $ERROR("#2: arguments object doesn't contains property 'callee'");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object doesn't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T2.js
new file mode 100644
index 000000000..3c1bf9af5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T2.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A3_T2;
+ * @section: 10.1.8;
+ * @assertion: A property is created with name callee with property
+ * attributes { DontEnum } and no others;
+ * @description: Checking if enumerating the arguments.callee property fails;
+*/
+
+//CHECK#1
+function f1(){
+ for(var x in arguments){
+ if (x === "callee"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property callee don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ for(var x in arguments){
+ if (x === "callee"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property callee don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T3.js
new file mode 100644
index 000000000..4f0da4090
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A3_T3;
+ * @section: 10.1.8;
+ * @assertion: A property is created with name callee with property
+ * attributes { DontEnum } and no others;
+ * @description: Checking if deleting arguments.callee property fails;
+*/
+
+//CHECK#1
+function f1(){
+ return (delete arguments.callee);
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property callee have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ return (delete arguments.callee);
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property callee have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T4.js
new file mode 100644
index 000000000..b125a58e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A3_T4.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A3_T4;
+ * @section: 10.1.8;
+ * @assertion: A property is created with name callee with property
+ * attributes { DontEnum } and no others;
+ * @description: Overriding arguments.callee property;
+*/
+
+var str = "something different";
+//CHECK#1
+function f1(){
+ arguments.callee = str;
+ return arguments;
+}
+
+try{
+ if(f1().callee !== str){
+ $ERROR("#1: A property callee have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ arguments.callee = str;
+ return arguments;
+ }
+try{
+ if(f2().callee !== str){
+ $ERROR("#2: A property callee have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A4.js
new file mode 100644
index 000000000..181d8d749
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A4;
+ * @section: 10.1.8;
+ * @assertion: The initial value of the created property callee is the
+ * Function object being executed;
+ * @description: Checking that arguments.callee === function object;
+*/
+
+//CHECK#1
+function f1(){
+ return arguments.callee;
+}
+
+try{
+ if(f1 !== f1()){
+ $ERROR('#1: arguments.callee === f1');
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.callee;};
+
+try{
+ if(f2 !== f2()){
+ $ERROR('#2: arguments.callee === f2');
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T1.js
new file mode 100644
index 000000000..6b678821f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A5_T1;
+ * @section: 10.1.8;
+ * @assertion: A property is created with name length with property
+ * attributes { DontEnum } and no others;
+ * @description: Checking existence of arguments.length property;
+*/
+
+//CHECK#1
+function f1(){
+ return arguments.hasOwnProperty("length");
+}
+try{
+ if(f1() !== true){
+ $ERROR("#1: arguments object doesn't contains property 'length'");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.hasOwnProperty("length");};
+try{
+ if(f2() !== true){
+ $ERROR("#2: arguments object doesn't contains property 'length'");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object doesn't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T2.js
new file mode 100644
index 000000000..8a2556049
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A5_T2;
+ * @section: 10.1.8;
+ * @assertion: A property is created with name length with property
+ * attributes { DontEnum } and no others;
+ * @description: Checking if enumerating the arguments.length property fails;
+*/
+
+
+//CHECK#1
+function f1(){
+ for(var x in arguments){
+ if (x === "length"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property length don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ for(var x in arguments){
+ if (x === "length"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property length don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T3.js
new file mode 100644
index 000000000..2dc5c7b7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A5_T3;
+ * @section: 10.1.8;
+ * @assertion: A property is created with name length with property
+ * attributes { DontEnum } and no others;
+ * @description: Checking if deleting arguments.length property fails;
+*/
+
+//CHECK#1
+function f1(){
+ return (delete arguments.length);
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property length have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ return (delete arguments.length);
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property length have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T4.js
new file mode 100644
index 000000000..e3a66113a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A5_T4.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A5_T4;
+ * @section: 10.1.8;
+ * @assertion: A property is created with name length with property
+ * attributes { DontEnum } and no others;
+ * @description: Overriding arguments.length property;
+*/
+
+var str = "something different";
+//CHECK#1
+function f1(){
+ arguments.length = str;
+ return arguments;
+}
+
+try{
+ if(f1().length !== str){
+ $ERROR("#1: A property length have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ arguments.length = str;
+ return arguments;
+ }
+try{
+ if(f2().length !== str){
+ $ERROR("#2: A property length have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A6.js
new file mode 100644
index 000000000..e921368f1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A6.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A6;
+ * @section: 10.1.8;
+ * @assertion: The initial value of the created property length is the number
+ * of actual parameter values supplied by the caller;
+ * @description: Create function, that returned arguments.length;
+*/
+
+function f1(){
+ return arguments.length;
+}
+
+//CHECK#1
+if(!(f1() === 0)){
+ $ERROR('#1: argument.length === 0');
+}
+
+//CHECK#2
+if(!(f1(0) === 1)){
+ $ERROR('#2: argument.length === 1');
+}
+
+//CHECK#3
+if(!(f1(0, 1) === 2)){
+ $ERROR('#3: argument.length === 2');
+}
+
+//CHECK#4
+if(!(f1(0, 1, 2) === 3)){
+ $ERROR('#4: argument.length === 3');
+}
+
+//CHECK#5
+if(!(f1(0, 1, 2, 3) === 4)){
+ $ERROR('#5: argument.length === 4');
+}
+
+var f2 = function(){return arguments.length;};
+
+//CHECK#6
+if(!(f2() === 0)){
+ $ERROR('#6: argument.length === 0');
+}
+
+//CHECK#7
+if(!(f2(0) === 1)){
+ $ERROR('#7: argument.length === 1');
+}
+
+//CHECK#8
+if(!(f2(0, 1) === 2)){
+ $ERROR('#8: argument.length === 2');
+}
+
+//CHECK#9
+if(!(f2(0, 1, 2) === 3)){
+ $ERROR('#9: argument.length === 3');
+}
+
+//CHECK#10
+if(!(f2(0, 1, 2, 3) === 4)){
+ $ERROR('#10: argument.length === 4');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A7.js
new file mode 100644
index 000000000..2c595596c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/10.1.8_Arguments_Object/S10.1.8_A7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.8_A7;
+ * @section: 10.1.8;
+ * @assertion: Get arguments of function;
+ * @description: Use property arguments;
+*/
+
+function f1() {
+ return arguments;
+}
+
+//CHECK#1-5
+for(var i = 1; i < 5; i++){
+if (f1(1,2,3,4,5)[i] !== (i+1))
+ $ERROR("#"+i+": Returning function's arguments work wrong, f1(1,2,3,4,5)["+i+"] !== "+(i+1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T1.js
new file mode 100644
index 000000000..1fc260895
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_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.
+
+/**
+ * @name: S10.1.1_A1_T1;
+ * @section: 10.1.1;
+ * @assertion: Program functions are defined in source text by a FunctionDeclaration or created dynamically either
+ * by using a FunctionExpression or by using the built-in Function object as a constructor;
+ * @description: Defining function by a FunctionDeclaration;
+*/
+
+//CHECK#1
+function f1(){
+ return 1;
+}
+if(typeof(f1)!=="function")
+ $ERROR('#1: typeof(f1)!=="function"');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T2.js
new file mode 100644
index 000000000..8ca5142fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_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.
+
+/**
+ * @name: S10.1.1_A1_T2;
+ * @section: 10.1.1;
+ * @assertion: Program functions are defined in source text by a FunctionDeclaration or created dynamically either
+ * by using a FunctionExpression or by using the built-in Function object as a constructor;
+ * @description: Creating function dynamically by using a FunctionExpression;
+*/
+
+//CHECK#1
+var x=function f1(){return 1;}();
+if(x!==1)
+ $ERROR('#1: Create function dynamically either by using a FunctionExpression');
+
+//CHECK#2
+var y=function (){return 2;}();
+if(y!==2){
+ $ERROR('#2: Create an anonymous function dynamically either by using a FunctionExpression');
+}
+
+//CHECK#2
+var z = (function(){return 3;})();
+if(z!==3){
+ $ERROR('#3: Create an anonymous function dynamically either by using a FunctionExpression wrapped in a group operator');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T3.js
new file mode 100644
index 000000000..8570ed957
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A1_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.1_A1_T3;
+ * @section: 10.1.1;
+ * @assertion: Program functions are defined in source text by a FunctionDeclaration or created dynamically either
+ * by using a FunctionExpression or by using the built-in Function object as a constructor;
+ * @description: Creating function dynamically by using the built-in Function object as a constructor;
+*/
+
+//CHECK#1
+var x=new function f1(){return 1;};
+if(typeof(x.constructor)!=="function")
+ $ERROR('#1: typeof(x.constructor)!=="function"');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_A2_T1.js
new file mode 100644
index 000000000..894043f40
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.1_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.
+
+/**
+ * @name: S10.1.1_A2_T1;
+ * @section: 10.1.1;
+ * @assertion: There are two types of Function objects. Internal functions
+ * are built-in objects of the language, such as parseInt and Math.exp;
+ * @description: Checking types of parseInt and Math.exp;
+*/
+
+//CHECK#1
+if(typeof(Math.exp)!=="function")
+ $ERROR('#1: typeof(Math.exp(10))!=="function" '+typeof(Math.exp()));
+
+//CHECK#2
+if(typeof(parseInt)!=="function")
+ $ERROR('#2: typeof(parseInt())!=="function" '+typeof(parseInt()));
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T1.js
new file mode 100644
index 000000000..f15b5715d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.6_A1_T1;
+ * @section: 10.1.6;
+ * @assertion: The activation object is initialised with a property with name arguments and attributes {DontDelete};
+ * @description: Checking ifdeleting function parameter is possible;
+*/
+
+//CHECK#1
+function f1(a){
+ delete a;
+ return a;
+}
+if (f1(1) !== 1)
+ $ERROR('#1: Function parameter was deleted');
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T2.js
new file mode 100644
index 000000000..b59480047
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.6_A1_T2;
+ * @section: 10.1.6;
+ * @assertion: The activation object is initialised with a property with name arguments and attributes {DontDelete};
+ * @description: Checking funtion which returns property "arguments";
+*/
+
+var ARG_STRING = "value of the argument property";
+
+function f1() {
+ this.constructor.prototype.arguments = ARG_STRING;
+ return arguments;
+}
+
+//CHECK#1
+if ((new f1(1,2,3,4,5)).length !== 5)
+ $ERROR('#1: (new f1(1,2,3,4,5)).length===5, where f1 returns "arguments" that is set to "'+ ARG_STRING + '"');
+
+//CHECK#2
+if ((new f1(1,2,3,4,5))[3] !== 4)
+ $ERROR('#2: (new f1(1,2,3,4,5))[3]===4, where f1 returns "arguments" that is set to "'+ ARG_STRING + '"');
+
+//CHECK#3
+var x = new f1(1,2,3,4,5);
+if (delete x[3] !== true)
+ $ERROR('#3.1: Function parameters have attribute {DontDelete}');
+
+if (x[3] === 4)
+ $ERROR('#3.2: Function parameters have attribute {DontDelete}');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T3.js
new file mode 100644
index 000000000..e6b754c41
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.6_A1_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.6_A1_T3;
+ * @section: 10.1.6;
+ * @assertion: The activation object is initialised with a property with name arguments and attributes {DontDelete};
+ * @description: Checking function which returns "this";
+*/
+
+function f1() {
+ if (delete arguments) {
+ $ERROR("#1: Function parameters have attribute {DontDelete}" + arguments);
+ }
+ return arguments;
+}
+
+f1();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.7_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.7_A1_T1.js
new file mode 100644
index 000000000..60409325f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.1_Definitions/S10.1.7_A1_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.1.7_A1_T1;
+ * @section: 10.1.7;
+ * @assertion: The this value associated with an executioncontext is immutable;
+ * @description: Checking if deleting "this" fails;
+*/
+
+//CHECK#1
+if (delete this !== true)
+ $ERROR('#1: The this value associated with an executioncontext is immutable. Actual: this was deleted');
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.1_Global_Code/S10.2.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.1_Global_Code/S10.2.1_A1_T1.js
new file mode 100644
index 000000000..52198e725
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.1_Global_Code/S10.2.1_A1_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.1_A1_T1;
+ * @section: 10.2.1;
+ * @assertion: Variable instantiation is performed using the global object as
+ * the variable object and using property attributes { DontDelete };
+ * @description: Checking if deleting variable x, that is defined as var x = 1, fails;
+*/
+
+var x = 1;
+
+if (this.x !== 1) {
+ $ERROR("#1: variable x is a property of global object");
+}
+
+if(delete this.x !== false){
+ $ERROR("#2: variable x has property attribute DontDelete");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.1_Global_Code/S10.2.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.1_Global_Code/S10.2.1_A1_T2.js
new file mode 100644
index 000000000..5ec31f18f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.1_Global_Code/S10.2.1_A1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.1_A1_T2;
+ * @section: 10.2.1;
+ * @assertion: Variable instantiation is performed using the global object as
+ * the variable object and using property attributes { DontDelete };
+ * @description: Checking if deleting variable x, that is defined as x = 1, fails;
+*/
+
+x = 1;
+
+if (this.x !== 1) {
+ $ERROR("#1: variable x is a property of global object");
+}
+
+if(delete this.x !== true){
+ $ERROR("#2: variable x has property attribute DontDelete");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T1.js
new file mode 100644
index 000000000..d174b1b5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T1;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+x = 1;
+y = 2;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T10.js
new file mode 100644
index 000000000..8243b05dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T10.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T10;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+var x = 1;
+var y = 2;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T11.js
new file mode 100644
index 000000000..302fbc3b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T11.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T11;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+this.x = 1;
+this.y = 2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T2.js
new file mode 100644
index 000000000..fdb02d921
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T2;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var x = 1;
+var y = 2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T3.js
new file mode 100644
index 000000000..c0be2c2b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T3;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+this.x = 1;
+this.y = 2;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T4.js
new file mode 100644
index 000000000..eee21fc51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T4.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T4;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+y = 2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T5.js
new file mode 100644
index 000000000..79082fc33
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T5;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+var x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var y = 2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T6.js
new file mode 100644
index 000000000..26bd87d7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T6.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T6;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+this.x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+this.y = 2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T7.js
new file mode 100644
index 000000000..5bb3be36a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T7.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T7;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var y = 2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T8.js
new file mode 100644
index 000000000..52154c363
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T8.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T8;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+this.x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var y = 2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T9.js
new file mode 100644
index 000000000..87ceef7e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.1_T9.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.1_T9;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+x = 1;
+y = 2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T1.js
new file mode 100644
index 000000000..33b9e6a77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T1.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T1;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ x = 1;
+ y = 2;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+ return (str1 === str2);
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T10.js
new file mode 100644
index 000000000..a0791a786
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T10.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T10;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ var x = 1;
+ var y = 2;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T11.js
new file mode 100644
index 000000000..20254f94a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T11.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T11;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ this.x = 1;
+ this.y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T2.js
new file mode 100644
index 000000000..06b36402d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T2;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+ var x = 1;
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T3.js
new file mode 100644
index 000000000..34e1d1291
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_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.
+
+/**
+ * @name: S10.2.2_A1.2_T3;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ this.x = 1;
+ this.y = 2;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T4.js
new file mode 100644
index 000000000..c41fea7f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T4.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T4;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T5.js
new file mode 100644
index 000000000..153374b82
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T5.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T5;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ var x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T6.js
new file mode 100644
index 000000000..c8f34aa97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T6.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T6;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ this.x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ this.y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T7.js
new file mode 100644
index 000000000..13c9544f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T7.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T7;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T8.js
new file mode 100644
index 000000000..073d1689c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T8.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T8;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ this.x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T9.js
new file mode 100644
index 000000000..568685266
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code/S10.2.2_A1.2_T9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2.2_A1.2_T9;
+ * @section: 10.2.2;
+ * @assertion: The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain;
+ * @description: eval within global execution context;
+*/
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ x = 1;
+ y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/S10.2_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/S10.2_A1.1_T1.js
new file mode 100644
index 000000000..cf100d15c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/S10.2_A1.1_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.
+
+/**
+ * @name: S10.2_A1.1_T1;
+ * @section: 10.2;
+ * @assertion: Every function call enters a new execution context;
+ * @description: Sequence of function calls;
+*/
+
+var y;
+
+function f(){
+ var x;
+
+ if(x === undefined) {
+ x = 0;
+ } else {
+ x = 1;
+ }
+
+ return x;
+}
+
+y = f();
+y = f();
+
+if(!(y === 0)){
+ $ERROR("#1: Sequenced function calls shares execution context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/S10.2_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/S10.2_A1.1_T2.js
new file mode 100644
index 000000000..46e0380e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/S10.2_A1.1_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S10.2_A1.1_T2;
+ * @section: 10.2;
+ * @assertion: Every function call enters a new execution context;
+ * @description: Recursive function call;
+*/
+
+var y;
+
+function f(a){
+ var x;
+
+ if (a === 1)
+ return x;
+ else {
+ if(x === undefined) {
+ x = 0;
+ } else {
+ x = 1;
+ }
+ return f(1);
+ }
+}
+
+y = f(0);
+
+if(!(y === undefined)){
+ $ERROR("#1: Recursive function calls shares execution context");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A1.js
new file mode 100644
index 000000000..39a2df261
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.10.1_A1;
+* @section: 11.10.1;
+* @assertion: White Space and Line Terminator between BitwiseANDExpression and "&" or between "&" and EqualityExpression are allowed;
+* @description: Checking uses eval;
+*/
+
+//CHECK#1
+if ((eval("1\u0009&\u00091")) !== 1) {
+ $ERROR('#1: (1\\u0009&\\u00091) === 1');
+}
+
+//CHECK#2
+if ((eval("1\u000B&\u000B1")) !== 1) {
+ $ERROR('#2: (1\\u000B&\\u000B1) === 1');
+}
+
+//CHECK#3
+if ((eval("1\u000C&\u000C1")) !== 1) {
+ $ERROR('#3: (1\\u000C&\\u000C1) === 1');
+}
+
+//CHECK#4
+if ((eval("1\u0020&\u00201")) !== 1) {
+ $ERROR('#4: (1\\u0020&\\u00201) === 1');
+}
+
+//CHECK#5
+if ((eval("1\u00A0&\u00A01")) !== 1) {
+ $ERROR('#5: (1\\u00A0&\\u00A01) === 1');
+}
+
+//CHECK#6
+if ((eval("1\u000A&\u000A1")) !== 1) {
+ $ERROR('#6: (1\\u000A&\\u000A1) === 1');
+}
+
+//CHECK#7
+if ((eval("1\u000D&\u000D1")) !== 1) {
+ $ERROR('#7: (1\\u000D&\\u000D1) === 1');
+}
+
+//CHECK#8
+if ((eval("1\u2028&\u20281")) !== 1) {
+ $ERROR('#8: (1\\u2028&\\u20281) === 1');
+}
+
+//CHECK#9
+if ((eval("1\u2029&\u20291")) !== 1) {
+ $ERROR('#9: (1\\u2029&\\u20291) === 1');
+}
+
+
+//CHECK#10
+if ((eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029&\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T1.js
new file mode 100644
index 000000000..0cb8479a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.1_T1;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 & 1) !== 1) {
+ $ERROR('#1: (1 & 1) === 1. Actual: ' + ((1 & 1)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x & 1) !== 1) {
+ $ERROR('#2: var x = 1; (x & 1) === 1. Actual: ' + ((x & 1)));
+}
+
+//CHECK#3
+var y = 1;
+if ((1 & y) !== 1) {
+ $ERROR('#3: var y = 1; (1 & y) === 1. Actual: ' + ((1 & y)));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if ((x & y) !== 1) {
+ $ERROR('#4: var x = 1; var y = 1; (x & y) === 1. Actual: ' + ((x & y)));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if ((objectx.prop & objecty.prop) !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop & objecty.prop) === 1. Actual: ' + ((objectx.prop & objecty.prop)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T2.js
new file mode 100644
index 000000000..6863c2c8a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.1_T2;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x & 1;
+ $ERROR('#1.1: x & 1 throw ReferenceError. Actual: ' + (x & 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x & 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T3.js
new file mode 100644
index 000000000..fb06c6dc2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.1_T3;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 & y;
+ $ERROR('#1.1: 1 & y throw ReferenceError. Actual: ' + (1 & y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 & y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.2_T1.js
new file mode 100644
index 000000000..5f1e0ab00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.2_T1;
+ * @section: 11.10.1, 8.6.2.6;
+ * @assertion: Operator x & y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if (({valueOf: function() {return 1}} & 1) !== 1) {
+ $ERROR('#1: ({valueOf: function() {return 1}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}} & 1)));
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} & 1) !== 1) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return 0}} & 1)));
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} & 1) !== 1) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return {}}} & 1)));
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) !== 1) {
+ $ERROR('#4.1: ({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((1 & {toString: function() {return 1}}) !== 1) {
+ $ERROR('#5.1: (1 & {toString: function() {return 1}}) === 1. Actual: ' + ((1 & {toString: function() {return 1}})));
+}
+
+//CHECK#6
+if ((1 & {valueOf: function() {return {}}, toString: function() {return 1}}) !== 1) {
+ $ERROR('#6: (1 & {valueOf: function() {return {}}, toString: function() {return 1}}) === 1. Actual: ' + ((1 & {valueOf: function() {return {}}, toString: function() {return 1}})));
+}
+
+//CHECK#7
+try {
+ 1 & {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 & {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 & {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 & {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 & {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 & {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 & {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 & {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.3_T1.js
new file mode 100644
index 000000000..5d226b3a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.3_T1;
+ * @section: 11.10.1;
+ * @assertion: ToInt32(first expression) is called first, and then ToInt32(second expression);
+ * @description: Checking by using "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x & y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x & y throw "x". Actual: ' + (x & y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToInt32(first expression) is called first, and then ToInt32(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x & y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T1.js
new file mode 100644
index 000000000..73bc10536
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.4_T1;
+ * @section: 11.10.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if (((x = 1) & x) !== 1) {
+ $ERROR('#1: var x = 0; ((x = 1) & x) === 1. Actual: ' + (((x = 1) & x)));
+}
+
+//CHECK#2
+var x = 0;
+if ((x & (x = 1)) !== 0) {
+ $ERROR('#2: var x = 0; (x & (x = 1)) === 0. Actual: ' + ((x & (x = 1))));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T2.js
new file mode 100644
index 000000000..44ad93487
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.4_T2;
+ * @section: 11.10.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() & y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() & y() throw "x". Actual: ' + (x() & y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() & y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T3.js
new file mode 100644
index 000000000..4abf60cc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.4_T3;
+ * @section: 11.10.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x & (x = 1);
+ $ERROR('#1.1: x & (x = 1) throw ReferenceError. Actual: ' + (x & (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x & (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) & y) !== 1) {
+ $ERROR('#2: ((y = 1) & y) === 1. Actual: ' + (((y = 1) & y)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.1.js
new file mode 100644
index 000000000..1153fa443
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.1;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if ((true & true) !== 1) {
+ $ERROR('#1: (true & true) === 1. Actual: ' + ((true & true)));
+}
+
+//CHECK#2
+if ((new Boolean(true) & true) !== 1) {
+ $ERROR('#2: (new Boolean(true) & true) === 1. Actual: ' + ((new Boolean(true) & true)));
+}
+
+//CHECK#3
+if ((true & new Boolean(true)) !== 1) {
+ $ERROR('#3: (true & new Boolean(true)) === 1. Actual: ' + ((true & new Boolean(true))));
+}
+
+//CHECK#4
+if ((new Boolean(true) & new Boolean(true)) !== 1) {
+ $ERROR('#4: (new Boolean(true) & new Boolean(true)) === 1. Actual: ' + ((new Boolean(true) & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.2.js
new file mode 100644
index 000000000..38d434616
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.2;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive number and Number object;
+*/
+
+//CHECK#1
+if ((1 & 1) !== 1) {
+ $ERROR('#1: (1 & 1) === 1. Actual: ' + ((1 & 1)));
+}
+
+//CHECK#2
+if ((new Number(1) & 1) !== 1) {
+ $ERROR('#2: (new Number(1) & 1) === 1. Actual: ' + ((new Number(1) & 1)));
+}
+
+//CHECK#3
+if ((1 & new Number(1)) !== 1) {
+ $ERROR('#3: (1 & new Number(1)) === 1. Actual: ' + ((1 & new Number(1))));
+}
+
+//CHECK#4
+if ((new Number(1) & new Number(1)) !== 1) {
+ $ERROR('#4: (new Number(1) & new Number(1)) === 1. Actual: ' + ((new Number(1) & new Number(1))));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.3.js
new file mode 100644
index 000000000..67865a4c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.3;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive string and String object;
+*/
+
+//CHECK#1
+if (("1" & "1") !== 1) {
+ $ERROR('#1: ("1" & "1") === 1. Actual: ' + (("1" & "1")));
+}
+
+//CHECK#2
+if ((new String("1") & "1") !== 1) {
+ $ERROR('#2: (new String("1") & "1") === 1. Actual: ' + ((new String("1") & "1")));
+}
+
+//CHECK#3
+if (("1" & new String("1")) !== 1) {
+ $ERROR('#3: ("1" & new String("1")) === 1. Actual: ' + (("1" & new String("1"))));
+}
+
+//CHECK#4
+if ((new String("1") & new String("1")) !== 1) {
+ $ERROR('#4: (new String("1") & new String("1")) === 1. Actual: ' + ((new String("1") & new String("1"))));
+}
+
+//CHECK#5
+if (("x" & "1") !== 0) {
+ $ERROR('#5: ("x" & "1") === 0. Actual: ' + (("x" & "1")));
+}
+
+//CHECK#6
+if (("1" & "x") !== 0) {
+ $ERROR('#6: ("1" & "x") === 0. Actual: ' + (("1" & "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.4.js
new file mode 100644
index 000000000..0b8ba8776
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.4;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are null and undefined;
+*/
+
+//CHECK#1
+if ((null & undefined) !== 0) {
+ $ERROR('#1: (null & undefined) === 0. Actual: ' + ((null & undefined)));
+}
+
+//CHECK#2
+if ((undefined & null) !== 0) {
+ $ERROR('#2: (undefined & null) === 0. Actual: ' + ((undefined & null)));
+}
+
+//CHECK#3
+if ((undefined & undefined) !== 0) {
+ $ERROR('#3: (undefined & undefined) === 0. Actual: ' + ((undefined & undefined)));
+}
+
+//CHECK#4
+if ((null & null) !== 0) {
+ $ERROR('#4: (null & null) === 0. Actual: ' + ((null & null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.5.js
new file mode 100644
index 000000000..43820e22d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.5;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are Object object and Function object;
+ */
+
+//CHECK#1
+if (({} & function(){return 1}) !== 0) {
+ $ERROR('#1: ({} & function(){return 1}) === 0. Actual: ' + (({} & function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} & {}) !== 0) {
+ $ERROR('#2: (function(){return 1} & {}) === 0. Actual: ' + ((function(){return 1} & {})));
+}
+
+//CHECK#3
+if ((function(){return 1} & function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} & function(){return 1}) === 0. Actual: ' + ((function(){return 1} & function(){return 1})));
+}
+
+//CHECK#4
+if (({} & {}) !== 0) {
+ $ERROR('#4: ({} & {}) === 0. Actual: ' + (({} & {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.1.js
new file mode 100644
index 000000000..2955d2bdf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.1;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if ((true & 1) !== 1) {
+ $ERROR('#1: (true & 1) === 1. Actual: ' + ((true & 1)));
+}
+
+//CHECK#2
+if ((1 & true) !== 1) {
+ $ERROR('#2: (1 & true) === 1. Actual: ' + ((1 & true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) & 1) !== 1) {
+ $ERROR('#3: (new Boolean(true) & 1) === 1. Actual: ' + ((new Boolean(true) & 1)));
+}
+
+//CHECK#4
+if ((1 & new Boolean(true)) !== 1) {
+ $ERROR('#4: (1 & new Boolean(true)) === 1. Actual: ' + ((1 & new Boolean(true))));
+}
+
+//CHECK#5
+if ((true & new Number(1)) !== 1) {
+ $ERROR('#5: (true & new Number(1)) === 1. Actual: ' + ((true & new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) & true) !== 1) {
+ $ERROR('#6: (new Number(1) & true) === 1. Actual: ' + ((new Number(1) & true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) & new Number(1)) !== 1) {
+ $ERROR('#7: (new Boolean(true) & new Number(1)) === 1. Actual: ' + ((new Boolean(true) & new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) & new Boolean(true)) !== 1) {
+ $ERROR('#8: (new Number(1) & new Boolean(true)) === 1. Actual: ' + ((new Number(1) & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.2.js
new file mode 100644
index 000000000..92f7dc058
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.2;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if (("1" & 1) !== 1) {
+ $ERROR('#1: ("1" & 1) === 1. Actual: ' + (("1" & 1)));
+}
+
+//CHECK#2
+if ((1 & "1") !== 1) {
+ $ERROR('#2: (1 & "1") === 1. Actual: ' + ((1 & "1")));
+}
+
+//CHECK#3
+if ((new String("1") & 1) !== 1) {
+ $ERROR('#3: (new String("1") & 1) === 1. Actual: ' + ((new String("1") & 1)));
+}
+
+//CHECK#4
+if ((1 & new String("1")) !== 1) {
+ $ERROR('#4: (1 & new String("1")) === 1. Actual: ' + ((1 & new String("1"))));
+}
+
+//CHECK#5
+if (("1" & new Number(1)) !== 1) {
+ $ERROR('#5: ("1" & new Number(1)) === 1. Actual: ' + (("1" & new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) & "1") !== 1) {
+ $ERROR('#6: (new Number(1) & "1") === 1. Actual: ' + ((new Number(1) & "1")));
+}
+
+//CHECK#7
+if ((new String("1") & new Number(1)) !== 1) {
+ $ERROR('#7: (new String("1") & new Number(1)) === 1. Actual: ' + ((new String("1") & new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) & new String("1")) !== 1) {
+ $ERROR('#8: (new Number(1) & new String("1")) === 1. Actual: ' + ((new Number(1) & new String("1"))));
+}
+
+//CHECK#9
+if (("x" & 1) !== 0) {
+ $ERROR('#9: ("x" & 1) === 0. Actual: ' + (("x" & 1)));
+}
+
+//CHECK#10
+if ((1 & "x") !== 0) {
+ $ERROR('#10: (1 & "x") === 0. Actual: ' + ((1 & "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.3.js
new file mode 100644
index 000000000..2e7acb90d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.3;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((1 & null) !== 0) {
+ $ERROR('#1: (1 & null) === 0. Actual: ' + ((1 & null)));
+}
+
+//CHECK#2
+if ((null & 1) !== 0) {
+ $ERROR('#2: (null & 1) === 0. Actual: ' + ((null & 1)));
+}
+
+//CHECK#3
+if ((new Number(1) & null) !== 0) {
+ $ERROR('#3: (new Number(1) & null) === 0. Actual: ' + ((new Number(1) & null)));
+}
+
+//CHECK#4
+if ((null & new Number(1)) !== 0) {
+ $ERROR('#4: (null & new Number(1)) === 0. Actual: ' + ((null & new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.4.js
new file mode 100644
index 000000000..bf7529670
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.4;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((1 & undefined) !== 0) {
+ $ERROR('#1: (1 & undefined) === 0. Actual: ' + ((1 & undefined)));
+}
+
+//CHECK#2
+if ((undefined & 1) !== 0) {
+ $ERROR('#2: (undefined & 1) === 0. Actual: ' + ((undefined & 1)));
+}
+
+//CHECK#3
+if ((new Number(1) & undefined) !== 0) {
+ $ERROR('#3: (new Number(1) & undefined) === 0. Actual: ' + ((new Number(1) & undefined)));
+}
+
+//CHECK#4
+if ((undefined & new Number(1)) !== 0) {
+ $ERROR('#4: (undefined & new Number(1)) === 0. Actual: ' + ((undefined & new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.5.js
new file mode 100644
index 000000000..6ec95b067
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.5;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) us different from Type(y) and both types are String (primitive or object) or Boolean (primitive and object);
+*/
+
+//CHECK#1
+if ((true & "1") !== 1) {
+ $ERROR('#1: (true & "1") === 1. Actual: ' + ((true & "1")));
+}
+
+//CHECK#2
+if (("1" & true) !== 1) {
+ $ERROR('#2: ("1" & true) === 1. Actual: ' + (("1" & true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) & "1") !== 1) {
+ $ERROR('#3: (new Boolean(true) & "1") === 1. Actual: ' + ((new Boolean(true) & "1")));
+}
+
+//CHECK#4
+if (("1" & new Boolean(true)) !== 1) {
+ $ERROR('#4: ("1" & new Boolean(true)) === 1. Actual: ' + (("1" & new Boolean(true))));
+}
+
+//CHECK#5
+if ((true & new String("1")) !== 1) {
+ $ERROR('#5: (true & new String("1")) === 1. Actual: ' + ((true & new String("1"))));
+}
+
+//CHECK#6
+if ((new String("1") & true) !== 1) {
+ $ERROR('#6: (new String("1") & true) === 1. Actual: ' + ((new String("1") & true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) & new String("1")) !== 1) {
+ $ERROR('#7: (new Boolean(true) & new String("1")) === 1. Actual: ' + ((new Boolean(true) & new String("1"))));
+}
+
+//CHECK#8
+if ((new String("1") & new Boolean(true)) !== 1) {
+ $ERROR('#8: (new String("1") & new Boolean(true)) === 1. Actual: ' + ((new String("1") & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.6.js
new file mode 100644
index 000000000..a9d0ac863
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.6;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (("1" & undefined) !== 0) {
+ $ERROR('#1: ("1" & undefined) === 0. Actual: ' + (("1" & undefined)));
+}
+
+//CHECK#2
+if ((undefined & "1") !== 0) {
+ $ERROR('#2: (undefined & "1") === 0. Actual: ' + ((undefined & "1")));
+}
+
+//CHECK#3
+if ((new String("1") & undefined) !== 0) {
+ $ERROR('#3: (new String("1") & undefined) === 0. Actual: ' + ((new String("1") & undefined)));
+}
+
+//CHECK#4
+if ((undefined & new String("1")) !== 0) {
+ $ERROR('#4: (undefined & new String("1")) === 0. Actual: ' + ((undefined & new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.7.js
new file mode 100644
index 000000000..83c8fc5fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.7;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (("1" & null) !== 0) {
+ $ERROR('#1: ("1" & null) === 0. Actual: ' + (("1" & null)));
+}
+
+//CHECK#2
+if ((null & "1") !== 0) {
+ $ERROR('#2: (null & "1") === 0. Actual: ' + ((null & "1")));
+}
+
+//CHECK#3
+if ((new String("1") & null) !== 0) {
+ $ERROR('#3: (new String("1") & null) === 0. Actual: ' + ((new String("1") & null)));
+}
+
+//CHECK#4
+if ((null & new String("1")) !== 0) {
+ $ERROR('#4: (null & new String("1")) === 0. Actual: ' + ((null & new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.8.js
new file mode 100644
index 000000000..24b70fff8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.8;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((true & undefined) !== 0) {
+ $ERROR('#1: (true & undefined) === 0. Actual: ' + ((true & undefined)));
+}
+
+//CHECK#2
+if ((undefined & true) !== 0) {
+ $ERROR('#2: (undefined & true) === 0. Actual: ' + ((undefined & true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) & undefined) !== 0) {
+ $ERROR('#3: (new Boolean(true) & undefined) === 0. Actual: ' + ((new Boolean(true) & undefined)));
+}
+
+//CHECK#4
+if ((undefined & new Boolean(true)) !== 0) {
+ $ERROR('#4: (undefined & new Boolean(true)) === 0. Actual: ' + ((undefined & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.9.js
new file mode 100644
index 000000000..d90a0d253
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.9;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((true & null) !== 0) {
+ $ERROR('#1: (true & null) === 0. Actual: ' + ((true & null)));
+}
+
+//CHECK#2
+if ((null & true) !== 0) {
+ $ERROR('#2: (null & true) === 0. Actual: ' + ((null & true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) & null) !== 0) {
+ $ERROR('#3: (new Boolean(true) & null) === 0. Actual: ' + ((new Boolean(true) & null)));
+}
+
+//CHECK#4
+if ((null & new Boolean(true)) !== 0) {
+ $ERROR('#4: (null & new Boolean(true)) === 0. Actual: ' + ((null & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A1.js
new file mode 100644
index 000000000..92564d01f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.10.2_A1;
+* @section: 11.10.2;
+* @assertion: White Space and Line Terminator between BitwiseXORExpression and "^" or between "^" and BitwiseANDExpression are allowed;
+* @description: The check uses eval;
+*/
+
+//CHECK#1
+if ((eval("1\u0009^\u00091")) !== 0) {
+ $ERROR('#1: (1\\u0009^\\u00091) === 0');
+}
+
+//CHECK#2
+if ((eval("1\u000B^\u000B1")) !== 0) {
+ $ERROR('#2: (1\\u000B^\\u000B1) === 0');
+}
+
+//CHECK#3
+if ((eval("1\u000C^\u000C1")) !== 0) {
+ $ERROR('#3: (1\\u000C^\\u000C1) === 0');
+}
+
+//CHECK#4
+if ((eval("1\u0020^\u00201")) !== 0) {
+ $ERROR('#4: (1\\u0020^\\u00201) === 0');
+}
+
+//CHECK#5
+if ((eval("1\u00A0^\u00A01")) !== 0) {
+ $ERROR('#5: (1\\u00A0^\\u00A01) === 0');
+}
+
+//CHECK#6
+if ((eval("1\u000A^\u000A1")) !== 0) {
+ $ERROR('#6: (1\\u000A^\\u000A1) === 0');
+}
+
+//CHECK#7
+if ((eval("1\u000D^\u000D1")) !== 0) {
+ $ERROR('#7: (1\\u000D^\\u000D1) === 0');
+}
+
+//CHECK#8
+if ((eval("1\u2028^\u20281")) !== 0) {
+ $ERROR('#8: (1\\u2028^\\u20281) === 0');
+}
+
+//CHECK#9
+if ((eval("1\u2029^\u20291")) !== 0) {
+ $ERROR('#9: (1\\u2029^\\u20291) === 0');
+}
+
+
+//CHECK#10
+if ((eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029^\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 0) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029^\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T1.js
new file mode 100644
index 000000000..5fa165284
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.1_T1;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 ^ 1) !== 0) {
+ $ERROR('#1: (1 ^ 1) === 0. Actual: ' + ((1 ^ 1)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x ^ 1) !== 0) {
+ $ERROR('#2: var x = 1; (x ^ 1) === 0. Actual: ' + ((x ^ 1)));
+}
+
+//CHECK#3
+var y = 1;
+if ((1 ^ y) !== 0) {
+ $ERROR('#3: var y = 1; (1 ^ y) === 0. Actual: ' + ((1 ^ y)));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if ((x ^ y) !== 0) {
+ $ERROR('#4: var x = 1; var y = 1; (x ^ y) === 0. Actual: ' + ((x ^ y)));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if ((objectx.prop ^ objecty.prop) !== 0) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop ^ objecty.prop) === 0. Actual: ' + ((objectx.prop ^ objecty.prop)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T2.js
new file mode 100644
index 000000000..cb735e892
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.1_T2;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+
+//CHECK#1
+try {
+ x ^ 1;
+ $ERROR('#1.1: x ^ 1 throw ReferenceError. Actual: ' + (x ^ 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x ^ 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T3.js
new file mode 100644
index 000000000..c1dc39da4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.1_T3;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 ^ y;
+ $ERROR('#1.1: 1 ^ y throw ReferenceError. Actual: ' + (1 ^ y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 ^ y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.2_T1.js
new file mode 100644
index 000000000..e81202462
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.2_T1.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.2_T1;
+ * @section: 11.10.2, 8.6.2.6;
+ * @assertion: Operator x ^ y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+
+//CHECK#1
+if (({valueOf: function() {return 1}} ^ 1) !== 0) {
+ $ERROR('#1: ({valueOf: function() {return 1}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}} ^ 1)));
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} ^ 1) !== 0) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return 0}} ^ 1)));
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} ^ 1) !== 0) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return {}}} ^ 1)));
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) !== 0) {
+ $ERROR('#4.1: ({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((1 ^ {toString: function() {return 1}}) !== 0) {
+ $ERROR('#5: (1 ^ {toString: function() {return 1}}) === 0. Actual: ' + ((1 ^ {toString: function() {return 1}})));
+}
+
+//CHECK#6
+if ((1 ^ {valueOf: function() {return {}}, toString: function() {return 1}}) !== 0) {
+ $ERROR('#6: (1 ^ {valueOf: function() {return {}}, toString: function() {return 1}}) === 0. Actual: ' + ((1 ^ {valueOf: function() {return {}}, toString: function() {return 1}})));
+}
+
+//CHECK#7
+try {
+ 1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 ^ {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 ^ {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 ^ {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 ^ {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.3_T1.js
new file mode 100644
index 000000000..9f615d22d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.3_T1;
+ * @section: 11.10.2;
+ * @assertion: ToInt32(first expression) is called first, and then ToInt32(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x ^ y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x ^ y throw "x". Actual: ' + (x ^ y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToInt32(first expression) is called first, and then ToInt32(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x ^ y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T1.js
new file mode 100644
index 000000000..54fd2067f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.4_T1;
+ * @section: 11.10.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 1;
+if (((x = 0) ^ x) !== 0) {
+ $ERROR('#1: var x = 0; ((x = 1) ^ x) === 0. Actual: ' + (((x = 1) ^ x)));
+}
+
+//CHECK#2
+var x = 0;
+if ((x ^ (x = 1)) !== 1) {
+ $ERROR('#2: var x = 0; (x ^ (x = 1)) === 1. Actual: ' + ((x ^ (x = 1))));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T2.js
new file mode 100644
index 000000000..bf9bef30b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.4_T2;
+ * @section: 11.10.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() ^ y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() ^ y() throw "x". Actual: ' + (x() ^ y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() ^ y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T3.js
new file mode 100644
index 000000000..f6a9a4d61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.4_T3;
+ * @section: 11.10.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x ^ (x = 1);
+ $ERROR('#1.1: x ^ (x = 1) throw ReferenceError. Actual: ' + (x ^ (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x ^ (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) ^ y) !== 0) {
+ $ERROR('#2: ((y = 1) ^ y) === 0. Actual: ' + (((y = 1) ^ y)));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.1.js
new file mode 100644
index 000000000..2816f2c1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.1;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if ((true ^ true) !== 0) {
+ $ERROR('#1: (true ^ true) === 0. Actual: ' + ((true ^ true)));
+}
+
+//CHECK#2
+if ((new Boolean(true) ^ true) !== 0) {
+ $ERROR('#2: (new Boolean(true) ^ true) === 0. Actual: ' + ((new Boolean(true) ^ true)));
+}
+
+//CHECK#3
+if ((true ^ new Boolean(true)) !== 0) {
+ $ERROR('#3: (true ^ new Boolean(true)) === 0. Actual: ' + ((true ^ new Boolean(true))));
+}
+
+//CHECK#4
+if ((new Boolean(true) ^ new Boolean(true)) !== 0) {
+ $ERROR('#4: (new Boolean(true) ^ new Boolean(true)) === 0. Actual: ' + ((new Boolean(true) ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.2.js
new file mode 100644
index 000000000..bbda75d01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.2;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive number and Number object;
+*/
+
+//CHECK#1
+if ((1 ^ 1) !== 0) {
+ $ERROR('#1: (1 ^ 1) === 0. Actual: ' + ((1 ^ 1)));
+}
+
+//CHECK#2
+if ((new Number(1) ^ 1) !== 0) {
+ $ERROR('#2: (new Number(1) ^ 1) === 0. Actual: ' + ((new Number(1) ^ 1)));
+}
+
+//CHECK#3
+if ((1 ^ new Number(1)) !== 0) {
+ $ERROR('#3: (1 ^ new Number(1)) === 0. Actual: ' + ((1 ^ new Number(1))));
+}
+
+//CHECK#4
+if ((new Number(1) ^ new Number(1)) !== 0) {
+ $ERROR('#4: (new Number(1) ^ new Number(1)) === 0. Actual: ' + ((new Number(1) ^ new Number(1))));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.3.js
new file mode 100644
index 000000000..363dd5709
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.3;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive string and String object;
+*/
+
+//CHECK#1
+if (("1" ^ "1") !== 0) {
+ $ERROR('#1: ("1" ^ "1") === 0. Actual: ' + (("1" ^ "1")));
+}
+
+//CHECK#2
+if ((new String("1") ^ "1") !== 0) {
+ $ERROR('#2: (new String("1") ^ "1") === 0. Actual: ' + ((new String("1") ^ "1")));
+}
+
+//CHECK#3
+if (("1" ^ new String("1")) !== 0) {
+ $ERROR('#3: ("1" ^ new String("1")) === 0. Actual: ' + (("1" ^ new String("1"))));
+}
+
+//CHECK#4
+if ((new String("1") ^ new String("1")) !== 0) {
+ $ERROR('#4: (new String("1") ^ new String("1")) === 0. Actual: ' + ((new String("1") ^ new String("1"))));
+}
+
+//CHECK#5
+if (("x" ^ "1") !== 1) {
+ $ERROR('#5: ("x" ^ "1") === 1. Actual: ' + (("x" ^ "1")));
+}
+
+//CHECK#6
+if (("1" ^ "x") !== 1) {
+ $ERROR('#6: ("1" ^ "x") === 1. Actual: ' + (("1" ^ "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.4.js
new file mode 100644
index 000000000..aa7ada0ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.4;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are null and undefined;
+ */
+
+//CHECK#1
+if ((null ^ undefined) !== 0) {
+ $ERROR('#1: (null ^ undefined) === 0. Actual: ' + ((null ^ undefined)));
+}
+
+//CHECK#2
+if ((undefined ^ null) !== 0) {
+ $ERROR('#2: (undefined ^ null) === 0. Actual: ' + ((undefined ^ null)));
+}
+
+//CHECK#3
+if ((undefined ^ undefined) !== 0) {
+ $ERROR('#3: (undefined ^ undefined) === 0. Actual: ' + ((undefined ^ undefined)));
+}
+
+//CHECK#4
+if ((null ^ null) !== 0) {
+ $ERROR('#4: (null ^ null) === 0. Actual: ' + ((null ^ null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.5.js
new file mode 100644
index 000000000..27454bc22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.5;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are Object object and Function object;
+ */
+
+//CHECK#1
+if (({} ^ function(){return 1}) !== 0) {
+ $ERROR('#1: ({} ^ function(){return 1}) === 0. Actual: ' + (({} ^ function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} ^ {}) !== 0) {
+ $ERROR('#2: (function(){return 1} ^ {}) === 0. Actual: ' + ((function(){return 1} ^ {})));
+}
+
+//CHECK#3
+if ((function(){return 1} ^ function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} ^ function(){return 1}) === 0. Actual: ' + ((function(){return 1} ^ function(){return 1})));
+}
+
+//CHECK#4
+if (({} ^ {}) !== 0) {
+ $ERROR('#4: ({} ^ {}) === 0. Actual: ' + (({} ^ {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.1.js
new file mode 100644
index 000000000..714fd5589
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.1;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if ((true ^ 1) !== 0) {
+ $ERROR('#1: (true ^ 1) === 0. Actual: ' + ((true ^ 1)));
+}
+
+//CHECK#2
+if ((1 ^ true) !== 0) {
+ $ERROR('#2: (1 ^ true) === 0. Actual: ' + ((1 ^ true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) ^ 1) !== 0) {
+ $ERROR('#3: (new Boolean(true) ^ 1) === 0. Actual: ' + ((new Boolean(true) ^ 1)));
+}
+
+//CHECK#4
+if ((1 ^ new Boolean(true)) !== 0) {
+ $ERROR('#4: (1 ^ new Boolean(true)) === 0. Actual: ' + ((1 ^ new Boolean(true))));
+}
+
+//CHECK#5
+if ((true ^ new Number(1)) !== 0) {
+ $ERROR('#5: (true ^ new Number(1)) === 0. Actual: ' + ((true ^ new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) ^ true) !== 0) {
+ $ERROR('#6: (new Number(1) ^ true) === 0. Actual: ' + ((new Number(1) ^ true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) ^ new Number(1)) !== 0) {
+ $ERROR('#7: (new Boolean(true) ^ new Number(1)) === 0. Actual: ' + ((new Boolean(true) ^ new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) ^ new Boolean(true)) !== 0) {
+ $ERROR('#8: (new Number(1) ^ new Boolean(true)) === 0. Actual: ' + ((new Number(1) ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.2.js
new file mode 100644
index 000000000..915be36d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.2;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if (("1" ^ 1) !== 0) {
+ $ERROR('#1: ("1" ^ 1) === 0. Actual: ' + (("1" ^ 1)));
+}
+
+//CHECK#2
+if ((1 ^ "1") !== 0) {
+ $ERROR('#2: (1 ^ "1") === 0. Actual: ' + ((1 ^ "1")));
+}
+
+//CHECK#3
+if ((new String("1") ^ 1) !== 0) {
+ $ERROR('#3: (new String("1") ^ 1) === 0. Actual: ' + ((new String("1") ^ 1)));
+}
+
+//CHECK#4
+if ((1 ^ new String("1")) !== 0) {
+ $ERROR('#4: (1 ^ new String("1")) === 0. Actual: ' + ((1 ^ new String("1"))));
+}
+
+//CHECK#5
+if (("1" ^ new Number(1)) !== 0) {
+ $ERROR('#5: ("1" ^ new Number(1)) === 0. Actual: ' + (("1" ^ new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) ^ "1") !== 0) {
+ $ERROR('#6: (new Number(1) ^ "1") === 0. Actual: ' + ((new Number(1) ^ "1")));
+}
+
+//CHECK#7
+if ((new String("1") ^ new Number(1)) !== 0) {
+ $ERROR('#7: (new String("1") ^ new Number(1)) === 0. Actual: ' + ((new String("1") ^ new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) ^ new String("1")) !== 0) {
+ $ERROR('#8: (new Number(1) ^ new String("1")) === 0. Actual: ' + ((new Number(1) ^ new String("1"))));
+}
+
+//CHECK#9
+if (("x" ^ 1) !== 1) {
+ $ERROR('#9: ("x" ^ 1) === 1. Actual: ' + (("x" ^ 1)));
+}
+
+//CHECK#10
+if ((1 ^ "x") !== 1) {
+ $ERROR('#10: (1 ^ "x") === 1. Actual: ' + ((1 ^ "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.3.js
new file mode 100644
index 000000000..65f4f73df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.3;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((1 ^ null) !== 1) {
+ $ERROR('#1: (1 ^ null) === 1. Actual: ' + ((1 ^ null)));
+}
+
+//CHECK#2
+if ((null ^ 1) !== 1) {
+ $ERROR('#2: (null ^ 1) === 1. Actual: ' + ((null ^ 1)));
+}
+
+//CHECK#3
+if ((new Number(1) ^ null) !== 1) {
+ $ERROR('#3: (new Number(1) ^ null) === 1. Actual: ' + ((new Number(1) ^ null)));
+}
+
+//CHECK#4
+if ((null ^ new Number(1)) !== 1) {
+ $ERROR('#4: (null ^ new Number(1)) === 1. Actual: ' + ((null ^ new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.4.js
new file mode 100644
index 000000000..0e430b035
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.4;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((1 ^ undefined) !== 1) {
+ $ERROR('#1: (1 ^ undefined) === 1. Actual: ' + ((1 ^ undefined)));
+}
+
+//CHECK#2
+if ((undefined ^ 1) !== 1) {
+ $ERROR('#2: (undefined ^ 1) === 1. Actual: ' + ((undefined ^ 1)));
+}
+
+//CHECK#3
+if ((new Number(1) ^ undefined) !== 1) {
+ $ERROR('#3: (new Number(1) ^ undefined) === 1. Actual: ' + ((new Number(1) ^ undefined)));
+}
+
+//CHECK#4
+if ((undefined ^ new Number(1)) !== 1) {
+ $ERROR('#4: (undefined ^ new Number(1)) === 1. Actual: ' + ((undefined ^ new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.5.js
new file mode 100644
index 000000000..1232df83e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.5;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if ((true ^ "1") !== 0) {
+ $ERROR('#1: (true ^ "1") === 0. Actual: ' + ((true ^ "1")));
+}
+
+//CHECK#2
+if (("1" ^ true) !== 0) {
+ $ERROR('#2: ("1" ^ true) === 0. Actual: ' + (("1" ^ true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) ^ "1") !== 0) {
+ $ERROR('#3: (new Boolean(true) ^ "1") === 0. Actual: ' + ((new Boolean(true) ^ "1")));
+}
+
+//CHECK#4
+if (("1" ^ new Boolean(true)) !== 0) {
+ $ERROR('#4: ("1" ^ new Boolean(true)) === 0. Actual: ' + (("1" ^ new Boolean(true))));
+}
+
+//CHECK#5
+if ((true ^ new String("1")) !== 0) {
+ $ERROR('#5: (true ^ new String("1")) === 0. Actual: ' + ((true ^ new String("1"))));
+}
+
+//CHECK#6
+if ((new String("1") ^ true) !== 0) {
+ $ERROR('#6: (new String("1") ^ true) === 0. Actual: ' + ((new String("1") ^ true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) ^ new String("1")) !== 0) {
+ $ERROR('#7: (new Boolean(true) ^ new String("1")) === 0. Actual: ' + ((new Boolean(true) ^ new String("1"))));
+}
+
+//CHECK#8
+if ((new String("1") ^ new Boolean(true)) !== 0) {
+ $ERROR('#8: (new String("1") ^ new Boolean(true)) === 0. Actual: ' + ((new String("1") ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.6.js
new file mode 100644
index 000000000..1d6f0fc08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.6;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (("1" ^ undefined) !== 1) {
+ $ERROR('#1: ("1" ^ undefined) === 1. Actual: ' + (("1" ^ undefined)));
+}
+
+//CHECK#2
+if ((undefined ^ "1") !== 1) {
+ $ERROR('#2: (undefined ^ "1") === 1. Actual: ' + ((undefined ^ "1")));
+}
+
+//CHECK#3
+if ((new String("1") ^ undefined) !== 1) {
+ $ERROR('#3: (new String("1") ^ undefined) === 1. Actual: ' + ((new String("1") ^ undefined)));
+}
+
+//CHECK#4
+if ((undefined ^ new String("1")) !== 1) {
+ $ERROR('#4: (undefined ^ new String("1")) === 1. Actual: ' + ((undefined ^ new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.7.js
new file mode 100644
index 000000000..18dca7f68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.7;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (("1" ^ null) !== 1) {
+ $ERROR('#1: ("1" ^ null) === 1. Actual: ' + (("1" ^ null)));
+}
+
+//CHECK#2
+if ((null ^ "1") !== 1) {
+ $ERROR('#2: (null ^ "1") === 1. Actual: ' + ((null ^ "1")));
+}
+
+//CHECK#3
+if ((new String("1") ^ null) !== 1) {
+ $ERROR('#3: (new String("1") ^ null) === 1. Actual: ' + ((new String("1") ^ null)));
+}
+
+//CHECK#4
+if ((null ^ new String("1")) !== 1) {
+ $ERROR('#4: (null ^ new String("1")) === 1. Actual: ' + ((null ^ new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.8.js
new file mode 100644
index 000000000..e24fc783c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.8;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((true ^ undefined) !== 1) {
+ $ERROR('#1: (true ^ undefined) === 1. Actual: ' + ((true ^ undefined)));
+}
+
+//CHECK#2
+if ((undefined ^ true) !== 1) {
+ $ERROR('#2: (undefined ^ true) === 1. Actual: ' + ((undefined ^ true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) ^ undefined) !== 1) {
+ $ERROR('#3: (new Boolean(true) ^ undefined) === 1. Actual: ' + ((new Boolean(true) ^ undefined)));
+}
+
+//CHECK#4
+if ((undefined ^ new Boolean(true)) !== 1) {
+ $ERROR('#4: (undefined ^ new Boolean(true)) === 1. Actual: ' + ((undefined ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.9.js
new file mode 100644
index 000000000..438c7a27e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.9;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((true ^ null) !== 1) {
+ $ERROR('#1: (true ^ null) === 1. Actual: ' + ((true ^ null)));
+}
+
+//CHECK#2
+if ((null ^ true) !== 1) {
+ $ERROR('#2: (null ^ true) === 1. Actual: ' + ((null ^ true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) ^ null) !== 1) {
+ $ERROR('#3: (new Boolean(true) ^ null) === 1. Actual: ' + ((new Boolean(true) ^ null)));
+}
+
+//CHECK#4
+if ((null ^ new Boolean(true)) !== 1) {
+ $ERROR('#4: (null ^ new Boolean(true)) === 1. Actual: ' + ((null ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A1.js
new file mode 100644
index 000000000..ed3129958
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.10.3_A1;
+* @section: 11.10.3;
+* @assertion: White Space and Line Terminator between BitwiseORExpression and "|" or between "|" and BitwiseXORExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("0\u0009|\u00091")) !== 1) {
+ $ERROR('#1: (0\\u0009|\\u00091) === 1');
+}
+
+//CHECK#2
+if ((eval("0\u000B|\u000B1")) !== 1) {
+ $ERROR('#2: (0\\u000B|\\u000B1) === 1');
+}
+
+//CHECK#3
+if ((eval("0\u000C|\u000C1")) !== 1) {
+ $ERROR('#3: (0\\u000C|\\u000C1) === 1');
+}
+
+//CHECK#4
+if ((eval("0\u0020|\u00201")) !== 1) {
+ $ERROR('#4: (0\\u0020|\\u00201) === 1');
+}
+
+//CHECK#5
+if ((eval("0\u00A0|\u00A01")) !== 1) {
+ $ERROR('#5: (0\\u00A0|\\u00A01) === 1');
+}
+
+//CHECK#6
+if ((eval("0\u000A|\u000A1")) !== 1) {
+ $ERROR('#6: (0\\u000A|\\u000A1) === 1');
+}
+
+//CHECK#7
+if ((eval("0\u000D|\u000D1")) !== 1) {
+ $ERROR('#7: (0\\u000D|\\u000D1) === 1');
+}
+
+//CHECK#8
+if ((eval("0\u2028|\u20281")) !== 1) {
+ $ERROR('#8: (0\\u2028|\\u20281) === 1');
+}
+
+//CHECK#9
+if ((eval("0\u2029|\u20291")) !== 1) {
+ $ERROR('#9: (0\\u2029|\\u20291) === 1');
+}
+
+
+//CHECK#10
+if ((eval("0\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029|\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) {
+ $ERROR('#10: (0\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029|\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T1.js
new file mode 100644
index 000000000..2b475cad3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.1_T1;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 | 0) !== 1) {
+ $ERROR('#1: (1 | 0) === 1. Actual: ' + ((1 | 0)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x | 0) !== 1) {
+ $ERROR('#2: var x = 1; (x | 0) === 1. Actual: ' + ((x | 0)));
+}
+
+//CHECK#3
+var y = 0;
+if ((1 | y) !== 1) {
+ $ERROR('#3: var y = 0; (1 | y) === 1. Actual: ' + ((1 | y)));
+}
+
+//CHECK#4
+var x = 1;
+var y = 0;
+if ((x | y) !== 1) {
+ $ERROR('#4: var x = 1; var y = 0; (x | y) === 1. Actual: ' + ((x | y)));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 0;
+if ((objectx.prop | objecty.prop) !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 0; (objectx.prop | objecty.prop) === 1. Actual: ' + ((objectx.prop | objecty.prop)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T2.js
new file mode 100644
index 000000000..255be73ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.1_T2;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x | 1;
+ $ERROR('#1.1: x | 1 throw ReferenceError. Actual: ' + (x | 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x | 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T3.js
new file mode 100644
index 000000000..dc797d9f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.1_T3;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 | y;
+ $ERROR('#1.1: 1 | y throw ReferenceError. Actual: ' + (1 | y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 | y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.2_T1.js
new file mode 100644
index 000000000..7aa0c1e6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.2_T1;
+ * @section: 11.10.3, 8.6.2.6;
+ * @assertion: Operator x | y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if (({valueOf: function() {return 1}} | 0) !== 1) {
+ $ERROR('#1: ({valueOf: function() {return 1}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}} | 0)));
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} | 0) !== 1) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return 0}} | 0)));
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} | 0) !== 1) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return {}}} | 0)));
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) !== 1) {
+ $ERROR('#4.1: ({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((0 | {toString: function() {return 1}}) !== 1) {
+ $ERROR('#5: (0 | {toString: function() {return 1}}) === 1. Actual: ' + ((0 | {toString: function() {return 1}})));
+}
+
+//CHECK#6
+if ((0 | {valueOf: function() {return {}}, toString: function() {return 1}}) !== 1) {
+ $ERROR('#6: (0 | {valueOf: function() {return {}}, toString: function() {return 1}}) === 1. Actual: ' + ((0 | {valueOf: function() {return {}}, toString: function() {return 1}})));
+}
+
+//CHECK#7
+try {
+ 0 | {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 0 | {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (0 | {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 0 | {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 0 | {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 0 | {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (0 | {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 0 | {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.3_T1.js
new file mode 100644
index 000000000..725253588
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.3_T1;
+ * @section: 11.10.3;
+ * @assertion: ToInt32(first expression) is called first, and then ToInt32(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x | y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x | y throw "x". Actual: ' + (x | y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToInt32(first expression) is called first, and then ToInt32(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x | y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T1.js
new file mode 100644
index 000000000..cef7c2502
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.4_T1;
+ * @section: 11.10.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 1;
+if (((x = 0) | x) !== 0) {
+ $ERROR('#1: var x = 1; ((x = 0) | x) === 0. Actual: ' + (((x = 0) | x)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x | (x = 0)) !== 1) {
+ $ERROR('#2: var x = 1; (x | (x = 0)) === 1. Actual: ' + ((x | (x = 0))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T2.js
new file mode 100644
index 000000000..a528b2d61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.4_T2;
+ * @section: 11.10.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() | y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() | y() throw "x". Actual: ' + (x() | y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() | y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T3.js
new file mode 100644
index 000000000..bd9b401a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.4_T3;
+ * @section: 11.10.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x | (x = 1);
+ $ERROR('#1.1: x | (x = 1) throw ReferenceError. Actual: ' + (x | (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x | (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) | y) !== 1) {
+ $ERROR('#2: ((y = 1) | y) === 1. Actual: ' + (((y = 1) | y)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.1.js
new file mode 100644
index 000000000..9d651b232
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.1;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if ((true | true) !== 1) {
+ $ERROR('#1: (true | true) === 1. Actual: ' + ((true | true)));
+}
+
+//CHECK#2
+if ((new Boolean(true) | true) !== 1) {
+ $ERROR('#2: (new Boolean(true) | true) === 1. Actual: ' + ((new Boolean(true) | true)));
+}
+
+//CHECK#3
+if ((true | new Boolean(true)) !== 1) {
+ $ERROR('#3: (true | new Boolean(true)) === 1. Actual: ' + ((true | new Boolean(true))));
+}
+
+//CHECK#4
+if ((new Boolean(true) | new Boolean(true)) !== 1) {
+ $ERROR('#4: (new Boolean(true) | new Boolean(true)) === 1. Actual: ' + ((new Boolean(true) | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.2.js
new file mode 100644
index 000000000..1eb3d9851
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.2;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if ((1 | 1) !== 1) {
+ $ERROR('#1: (1 | 1) === 1. Actual: ' + ((1 | 1)));
+}
+
+//CHECK#2
+if ((new Number(1) | 1) !== 1) {
+ $ERROR('#2: (new Number(1) | 1) === 1. Actual: ' + ((new Number(1) | 1)));
+}
+
+//CHECK#3
+if ((1 | new Number(1)) !== 1) {
+ $ERROR('#3: (1 | new Number(1)) === 1. Actual: ' + ((1 | new Number(1))));
+}
+
+//CHECK#4
+if ((new Number(1) | new Number(1)) !== 1) {
+ $ERROR('#4: (new Number(1) | new Number(1)) === 1. Actual: ' + ((new Number(1) | new Number(1))));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.3.js
new file mode 100644
index 000000000..d754794d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.3;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("1" | "1") !== 1) {
+ $ERROR('#1: ("1" | "1") === 1. Actual: ' + (("1" | "1")));
+}
+
+//CHECK#2
+if ((new String("1") | "1") !== 1) {
+ $ERROR('#2: (new String("1") | "1") === 1. Actual: ' + ((new String("1") | "1")));
+}
+
+//CHECK#3
+if (("1" | new String("1")) !== 1) {
+ $ERROR('#3: ("1" | new String("1")) === 1. Actual: ' + (("1" | new String("1"))));
+}
+
+//CHECK#4
+if ((new String("1") | new String("1")) !== 1) {
+ $ERROR('#4: (new String("1") | new String("1")) === 1. Actual: ' + ((new String("1") | new String("1"))));
+}
+
+//CHECK#5
+if (("x" | "1") !== 1) {
+ $ERROR('#5: ("x" | "1") === 1. Actual: ' + (("x" | "1")));
+}
+
+//CHECK#6
+if (("1" | "x") !== 1) {
+ $ERROR('#6: ("1" | "x") === 1. Actual: ' + (("1" | "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.4.js
new file mode 100644
index 000000000..0aa619af9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.4;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if ((null | undefined) !== 0) {
+ $ERROR('#1: (null | undefined) === 0. Actual: ' + ((null | undefined)));
+}
+
+//CHECK#2
+if ((undefined | null) !== 0) {
+ $ERROR('#2: (undefined | null) === 0. Actual: ' + ((undefined | null)));
+}
+
+//CHECK#3
+if ((undefined | undefined) !== 0) {
+ $ERROR('#3: (undefined | undefined) === 0. Actual: ' + ((undefined | undefined)));
+}
+
+//CHECK#4
+if ((null | null) !== 0) {
+ $ERROR('#4: (null | null) === 0. Actual: ' + ((null | null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.5.js
new file mode 100644
index 000000000..91f712790
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.5;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} | function(){return 1}) !== 0) {
+ $ERROR('#1: ({} | function(){return 1}) === 0. Actual: ' + (({} | function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} | {}) !== 0) {
+ $ERROR('#2: (function(){return 1} | {}) === 0. Actual: ' + ((function(){return 1} | {})));
+}
+
+//CHECK#3
+if ((function(){return 1} | function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} | function(){return 1}) === 0. Actual: ' + ((function(){return 1} | function(){return 1})));
+}
+
+//CHECK#4
+if (({} | {}) !== 0) {
+ $ERROR('#4: ({} | {}) === 0. Actual: ' + (({} | {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.1.js
new file mode 100644
index 000000000..770aba721
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.1;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if ((true | 1) !== 1) {
+ $ERROR('#1: (true | 1) === 1. Actual: ' + ((true | 1)));
+}
+
+//CHECK#2
+if ((1 | true) !== 1) {
+ $ERROR('#2: (1 | true) === 1. Actual: ' + ((1 | true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) | 1) !== 1) {
+ $ERROR('#3: (new Boolean(true) | 1) === 1. Actual: ' + ((new Boolean(true) | 1)));
+}
+
+//CHECK#4
+if ((1 | new Boolean(true)) !== 1) {
+ $ERROR('#4: (1 | new Boolean(true)) === 1. Actual: ' + ((1 | new Boolean(true))));
+}
+
+//CHECK#5
+if ((true | new Number(1)) !== 1) {
+ $ERROR('#5: (true | new Number(1)) === 1. Actual: ' + ((true | new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) | true) !== 1) {
+ $ERROR('#6: (new Number(1) | true) === 1. Actual: ' + ((new Number(1) | true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) | new Number(1)) !== 1) {
+ $ERROR('#7: (new Boolean(true) | new Number(1)) === 1. Actual: ' + ((new Boolean(true) | new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) | new Boolean(true)) !== 1) {
+ $ERROR('#8: (new Number(1) | new Boolean(true)) === 1. Actual: ' + ((new Number(1) | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.2.js
new file mode 100644
index 000000000..33c5e40b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.2;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if (("1" | 1) !== 1) {
+ $ERROR('#1: ("1" | 1) === 1. Actual: ' + (("1" | 1)));
+}
+
+//CHECK#2
+if ((1 | "1") !== 1) {
+ $ERROR('#2: (1 | "1") === 1. Actual: ' + ((1 | "1")));
+}
+
+//CHECK#3
+if ((new String("1") | 1) !== 1) {
+ $ERROR('#3: (new String("1") | 1) === 1. Actual: ' + ((new String("1") | 1)));
+}
+
+//CHECK#4
+if ((1 | new String("1")) !== 1) {
+ $ERROR('#4: (1 | new String("1")) === 1. Actual: ' + ((1 | new String("1"))));
+}
+
+//CHECK#5
+if (("1" | new Number(1)) !== 1) {
+ $ERROR('#5: ("1" | new Number(1)) === 1. Actual: ' + (("1" | new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) | "1") !== 1) {
+ $ERROR('#6: (new Number(1) | "1") === 1. Actual: ' + ((new Number(1) | "1")));
+}
+
+//CHECK#7
+if ((new String("1") | new Number(1)) !== 1) {
+ $ERROR('#7: (new String("1") | new Number(1)) === 1. Actual: ' + ((new String("1") | new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) | new String("1")) !== 1) {
+ $ERROR('#8: (new Number(1) | new String("1")) === 1. Actual: ' + ((new Number(1) | new String("1"))));
+}
+
+//CHECK#9
+if (("x" | 1) !== 1) {
+ $ERROR('#9: ("x" | 1) === 1. Actual: ' + (("x" | 1)));
+}
+
+//CHECK#10
+if ((1 | "x") !== 1) {
+ $ERROR('#10: (1 | "x") === 1. Actual: ' + ((1 | "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.3.js
new file mode 100644
index 000000000..d581f0afa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.3;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((1 | null) !== 1) {
+ $ERROR('#1: (1 | null) === 1. Actual: ' + ((1 | null)));
+}
+
+//CHECK#2
+if ((null | 1) !== 1) {
+ $ERROR('#2: (null | 1) === 1. Actual: ' + ((null | 1)));
+}
+
+//CHECK#3
+if ((new Number(1) | null) !== 1) {
+ $ERROR('#3: (new Number(1) | null) === 1. Actual: ' + ((new Number(1) | null)));
+}
+
+//CHECK#4
+if ((null | new Number(1)) !== 1) {
+ $ERROR('#4: (null | new Number(1)) === 1. Actual: ' + ((null | new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.4.js
new file mode 100644
index 000000000..f8608ff6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.4;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((1 | undefined) !== 1) {
+ $ERROR('#1: (1 | undefined) === 1. Actual: ' + ((1 | undefined)));
+}
+
+//CHECK#2
+if ((undefined | 1) !== 1) {
+ $ERROR('#2: (undefined | 1) === 1. Actual: ' + ((undefined | 1)));
+}
+
+//CHECK#3
+if ((new Number(1) | undefined) !== 1) {
+ $ERROR('#3: (new Number(1) | undefined) === 1. Actual: ' + ((new Number(1) | undefined)));
+}
+
+//CHECK#4
+if ((undefined | new Number(1)) !== 1) {
+ $ERROR('#4: (undefined | new Number(1)) === 1. Actual: ' + ((undefined | new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.5.js
new file mode 100644
index 000000000..8c65d951f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.5;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if ((true | "1") !== 1) {
+ $ERROR('#1: (true | "1") === 1. Actual: ' + ((true | "1")));
+}
+
+//CHECK#2
+if (("1" | true) !== 1) {
+ $ERROR('#2: ("1" | true) === 1. Actual: ' + (("1" | true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) | "1") !== 1) {
+ $ERROR('#3: (new Boolean(true) | "1") === 1. Actual: ' + ((new Boolean(true) | "1")));
+}
+
+//CHECK#4
+if (("1" | new Boolean(true)) !== 1) {
+ $ERROR('#4: ("1" | new Boolean(true)) === 1. Actual: ' + (("1" | new Boolean(true))));
+}
+
+//CHECK#5
+if ((true | new String("1")) !== 1) {
+ $ERROR('#5: (true | new String("1")) === 1. Actual: ' + ((true | new String("1"))));
+}
+
+//CHECK#6
+if ((new String("1") | true) !== 1) {
+ $ERROR('#6: (new String("1") | true) === 1. Actual: ' + ((new String("1") | true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) | new String("1")) !== 1) {
+ $ERROR('#7: (new Boolean(true) | new String("1")) === 1. Actual: ' + ((new Boolean(true) | new String("1"))));
+}
+
+//CHECK#8
+if ((new String("1") | new Boolean(true)) !== 1) {
+ $ERROR('#8: (new String("1") | new Boolean(true)) === 1. Actual: ' + ((new String("1") | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.6.js
new file mode 100644
index 000000000..a5a04513f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.6;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (("1" | undefined) !== 1) {
+ $ERROR('#1: ("1" | undefined) === 1. Actual: ' + (("1" | undefined)));
+}
+
+//CHECK#2
+if ((undefined | "1") !== 1) {
+ $ERROR('#2: (undefined | "1") === 1. Actual: ' + ((undefined | "1")));
+}
+
+//CHECK#3
+if ((new String("1") | undefined) !== 1) {
+ $ERROR('#3: (new String("1") | undefined) === 1. Actual: ' + ((new String("1") | undefined)));
+}
+
+//CHECK#4
+if ((undefined | new String("1")) !== 1) {
+ $ERROR('#4: (undefined | new String("1")) === 1. Actual: ' + ((undefined | new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.7.js
new file mode 100644
index 000000000..1f65aa0cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.7;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (("1" | null) !== 1) {
+ $ERROR('#1: ("1" | null) === 1. Actual: ' + (("1" | null)));
+}
+
+//CHECK#2
+if ((null | "1") !== 1) {
+ $ERROR('#2: (null | "1") === 1. Actual: ' + ((null | "1")));
+}
+
+//CHECK#3
+if ((new String("1") | null) !== 1) {
+ $ERROR('#3: (new String("1") | null) === 1. Actual: ' + ((new String("1") | null)));
+}
+
+//CHECK#4
+if ((null | new String("1")) !== 1) {
+ $ERROR('#4: (null | new String("1")) === 1. Actual: ' + ((null | new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.8.js
new file mode 100644
index 000000000..4cf9d8747
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.8;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((true | undefined) !== 1) {
+ $ERROR('#1: (true | undefined) === 1. Actual: ' + ((true | undefined)));
+}
+
+//CHECK#2
+if ((undefined | true) !== 1) {
+ $ERROR('#2: (undefined | true) === 1. Actual: ' + ((undefined | true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) | undefined) !== 1) {
+ $ERROR('#3: (new Boolean(true) | undefined) === 1. Actual: ' + ((new Boolean(true) | undefined)));
+}
+
+//CHECK#4
+if ((undefined | new Boolean(true)) !== 1) {
+ $ERROR('#4: (undefined | new Boolean(true)) === 1. Actual: ' + ((undefined | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.9.js
new file mode 100644
index 000000000..5d5b56fb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.9;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((true | null) !== 1) {
+ $ERROR('#1: (true | null) === 1. Actual: ' + ((true | null)));
+}
+
+//CHECK#2
+if ((null | true) !== 1) {
+ $ERROR('#2: (null | true) === 1. Actual: ' + ((null | true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) | null) !== 1) {
+ $ERROR('#3: (new Boolean(true) | null) === 1. Actual: ' + ((new Boolean(true) | null)));
+}
+
+//CHECK#4
+if ((null | new Boolean(true)) !== 1) {
+ $ERROR('#4: (null | new Boolean(true)) === 1. Actual: ' + ((null | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A1.js
new file mode 100644
index 000000000..56331035c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A1;
+* @section: 11.11.1;
+* @assertion: White Space and Line Terminator between LogicalANDExpression and "&&" or between "&&" and BitwiseORExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("true\u0009&&\u0009true")) !== true) {
+ $ERROR('#1: (true\\u0009&&\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("true\u000B&&\u000Btrue")) !== true) {
+ $ERROR('#2: (true\\u000B&&\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("true\u000C&&\u000Ctrue")) !== true) {
+ $ERROR('#3: (true\\u000C&&\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("true\u0020&&\u0020true")) !== true) {
+ $ERROR('#4: (true\\u0020&&\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("true\u00A0&&\u00A0true")) !== true) {
+ $ERROR('#5: (true\\u00A0&&\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("true\u000A&&\u000Atrue")) !== true) {
+ $ERROR('#6: (true\\u000A&&\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("true\u000D&&\u000Dtrue")) !== true) {
+ $ERROR('#7: (true\\u000D&&\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("true\u2028&&\u2028true")) !== true) {
+ $ERROR('#8: (true\\u2028&&\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("true\u2029&&\u2029true")) !== true) {
+ $ERROR('#9: (true\\u2029&&\\u2029true) === true');
+}
+
+
+//CHECK#10
+if ((eval("true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&&\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (true\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029&&\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T1.js
new file mode 100644
index 000000000..16940f2cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A2.1_T1;
+* @section: 11.11.1, 8.7.1;
+* @assertion: Operator x && y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((false && true) !== false) {
+ $ERROR('#1: (false && true) === false');
+}
+
+//CHECK#2
+if ((true && false) !== false) {
+ $ERROR('#2: (true && false) === false');
+}
+
+//CHECK#3
+var x = false;
+if ((x && true) !== false) {
+ $ERROR('#3: var x = false; (x && true) === false');
+}
+
+//CHECK#4
+var y = new Boolean(false);
+if ((true && y) !== y) {
+ $ERROR('#4: var y = new Boolean(false); (true && y) === y');
+}
+
+//CHECK#5
+var x = false;
+var y = true;
+if ((x && y) !== false) {
+ $ERROR('#5: var x = false; var y = true; (x && y) === false');
+}
+
+//CHECK#6
+var x = true;
+var y = new Boolean(false);
+if ((x && y) !== y) {
+ $ERROR('#6: var x = true; var y = new Boolean(false); (x && y) === y');
+}
+
+//CHECK#7
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = true;
+objecty.prop = 1.1;
+if ((objectx.prop && objecty.prop) !== objecty.prop) {
+ $ERROR('#7: var objectx = new Object(); var objecty = new Object(); objectx.prop = true; objecty.prop = 1; (objectx.prop && objecty.prop) === objecty.prop');
+}
+
+//CHECK#8
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 0;
+objecty.prop = true;
+if ((objectx.prop && objecty.prop) !== objectx.prop) {
+ $ERROR('#8: var objectx = new Object(); var objecty = new Object(); objectx.prop = 0; objecty.prop = true; (objectx.prop && objecty.prop) === objectx.prop');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T2.js
new file mode 100644
index 000000000..68a1e2f54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A2.1_T2;
+* @section: 11.11.1, 8.7.1;
+* @assertion: Operator x && y uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x && true;
+ $ERROR('#1.1: x && true throw ReferenceError. Actual: ' + (x && true));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x && true throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T3.js
new file mode 100644
index 000000000..2293761cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A2.1_T3;
+* @section: 11.11.1, 8.7.1;
+* @assertion: Operator x && y uses GetValue;
+* @description: If ToBoolean(x) is true and GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ true && y;
+ $ERROR('#1.1: true && y throw ReferenceError. Actual: ' + (true && y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: true && y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T4.js
new file mode 100644
index 000000000..96378fd12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A2.1_T4;
+* @section: 11.11.1, 8.7.1, 16;
+* @assertion: Operator x && y uses GetValue;
+* @description: If ToBoolean(x) is false and GetBase(y) is null, return false;
+*/
+
+//CHECK#1
+if ((false && x) !== false) {
+ $ERROR('#1: (false && x) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T1.js
new file mode 100644
index 000000000..d8f764904
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.1_A2.4_T1;
+ * @section: 11.11.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = false;
+if (((x = true) && x) !== true) {
+ $ERROR('#1: var x = false; ((x = true) && x) === true');
+}
+
+//CHECK#2
+var x = false;
+if ((x && (x = true)) !== false) {
+ $ERROR('#2: var x = false; (x && (x = true)) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T2.js
new file mode 100644
index 000000000..1e317d248
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.1_A2.4_T2;
+ * @section: 11.11.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() && y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() && y() throw "x". Actual: ' + (x() && y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() && y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T3.js
new file mode 100644
index 000000000..2be5f21b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.1_A2.4_T3;
+ * @section: 11.11.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x && (x = true);
+ $ERROR('#1.1: x && (x = true) throw ReferenceError. Actual: ' + (x && (x = true)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x && (x = true) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = true) && y) !== true) {
+ $ERROR('#2: ((y = true) && y) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T1.js
new file mode 100644
index 000000000..4a93383fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A3_T1;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is false, return x;
+* @description: Type(x) is primitive boolean and Type(y) is changed between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if ((false && true) !== false) {
+ $ERROR('#1: (false && true) === false');
+}
+
+//CHECK#2
+if ((false && false) !== false) {
+ $ERROR('#2: (false && false) === false');
+}
+
+//CHECK#3
+if ((false && new Boolean(true)) !== false) {
+ $ERROR('#3: (false && new Boolean(true)) === false');
+}
+
+//CHECK#4
+if ((false && new Boolean(false)) !== false) {
+ $ERROR('#4: (false && new Boolean(false)) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T2.js
new file mode 100644
index 000000000..8eb71f0c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.1_A3_T2;
+ * @section: 11.11.1;
+ * @assertion: If ToBoolean(x) is false, return x;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+ */
+
+//CHECK#1
+if ((-0 && -1) !== 0) {
+ $ERROR('#1.1: (-0 && -1) === 0');
+} else {
+ if ((1 / (-0 && -1)) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: (-0 && -1) === -0');
+ }
+}
+
+//CHECK#2
+if ((0 && new Number(-1)) !== 0) {
+ $ERROR('#2.1: (0 && new Number(-1)) === 0');
+} else {
+ if ((1 / (0 && new Number(-1))) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: (0 && new Number(-1)) === +0');
+ }
+}
+
+//CHECK#3
+if ((isNaN(NaN && 1)) !== true) {
+ $ERROR('#3: (NaN && 1) === Not-a-Number');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T3.js
new file mode 100644
index 000000000..ba5e4b2b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A3_T3;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is false, return x;
+* @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("" && "1") !== "") {
+ $ERROR('#1: ("" && "1") === ""');
+}
+
+//CHECK#2
+if (("" && new String("1")) !== "") {
+ $ERROR('#2: ("" && new String("1")) === ""');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T4.js
new file mode 100644
index 000000000..cbb05d875
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A3_T4;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is false, return x;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((undefined && true) !== undefined) {
+ $ERROR('#1: (undefined && true) === undefined');
+}
+
+//CHECK#2
+if ((null && false) !== null) {
+ $ERROR('#2: (null && false) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T1.js
new file mode 100644
index 000000000..2858d5421
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A4_T1;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if ((true && true) !== true) {
+ $ERROR('#1: (true && true) === true');
+}
+
+//CHECK#2
+if ((true && false) !== false) {
+ $ERROR('#2: (true && false) === false');
+}
+
+//CHECK#3
+var y = new Boolean(true);
+if ((new Boolean(true) && y) !== y) {
+ $ERROR('#3: (var y = new Boolean(true); (new Boolean(true) && y) === y');
+}
+
+//CHECK#4
+var y = new Boolean(false);
+if ((new Boolean(true) && y) !== y) {
+ $ERROR('#4: (var y = new Boolean(false); (new Boolean(true) && y) === y');
+}
+
+//CHECK#5
+var y = new Boolean(true);
+if ((new Boolean(false) && y) !== y) {
+ $ERROR('#5: (var y = new Boolean(true); (new Boolean(false) && y) === y');
+}
+
+//CHECK#6
+var y = new Boolean(false);
+if ((new Boolean(false) && y) !== y) {
+ $ERROR('#6: (var y = new Boolean(false); (new Boolean(false) && y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T2.js
new file mode 100644
index 000000000..55b26f29e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A4_T2;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if ((-1 && -0) !== 0) {
+ $ERROR('#1.1: (-1 && -0) === 0');
+} else {
+ if ((1 / (-1 && -0)) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: (-1 && -0) === -0');
+ }
+}
+
+//CHECK#2
+if ((-1 && 0) !== 0) {
+ $ERROR('#2.1: (-1 && 0) === 0');
+} else {
+ if ((1 / (-1 && 0)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: (-1 && 0) === +0');
+ }
+}
+
+//CHECK#3
+if ((isNaN(0.1 && NaN)) !== true) {
+ $ERROR('#3: (0.1 && NaN) === Not-a-Number');
+}
+
+//CHECK#4
+var y = new Number(0);
+if ((new Number(-1) && y) !== y) {
+ $ERROR('#4: (var y = new Number(0); (new Number(-1) && y) === y');
+}
+
+//CHECK#5
+var y = new Number(NaN);
+if ((new Number(0) && y) !== y) {
+ $ERROR('#5: (var y = new Number(NaN); (new Number(0) && y) === y');
+}
+
+//CHECK#6
+var y = new Number(-1);
+if ((new Number(NaN) && y) !== y) {
+ $ERROR('#6: (var y = new Number(-1); (new Number(NaN) && y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T3.js
new file mode 100644
index 000000000..faf87656a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T3.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A4_T3;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("0" && "-1") !== "-1") {
+ $ERROR('#-1: ("0" && "-1") === "-1"');
+}
+
+//CHECK#2
+if (("-1" && "x") !== "x") {
+ $ERROR('#2: ("-1" && "x") === "x"');
+}
+
+//CHECK#3
+var y = new String(-1);
+if ((new String("-1") && y) !== y) {
+ $ERROR('#3: (var y = new String(-1); (new String("-1") && y) === y');
+}
+
+//CHECK#4
+var y = new String(NaN);
+if ((new String("0") && y) !== y) {
+ $ERROR('#4: (var y = new String(NaN); (new String("0") && y) === y');
+}
+
+//CHECK#5
+var y = new String("-x");
+if ((new String("x") && y) !== y) {
+ $ERROR('#5: (var y = new String("-x"); (new String("x") && y) === y');
+}
+
+//CHECK#6
+var y = new String(-1);
+if ((new String(NaN) && y) !== y) {
+ $ERROR('#6: (var y = new String(-1); (new String(NaN) && y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T4.js
new file mode 100644
index 000000000..f6e66e7ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A4_T4;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((true && undefined) !== undefined) {
+ $ERROR('#1: (true && undefined) === undefined');
+}
+
+//CHECK#2
+if ((true && null) !== null) {
+ $ERROR('#2: (true && null) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A1.js
new file mode 100644
index 000000000..243b6a399
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A1;
+* @section: 11.11.2;
+* @assertion: White Space and Line Terminator between LogicalORExpression and "||" or between "||" and LogicalANDExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("false\u0009||\u0009true")) !== true) {
+ $ERROR('#1: (false\\u0009||\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("false\u000B||\u000Btrue")) !== true) {
+ $ERROR('#2: (false\\u000B||\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("false\u000C||\u000Ctrue")) !== true) {
+ $ERROR('#3: (false\\u000C||\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("false\u0020||\u0020true")) !== true) {
+ $ERROR('#4: (false\\u0020||\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("false\u00A0||\u00A0true")) !== true) {
+ $ERROR('#5: (false\\u00A0||\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("false\u000A||\u000Atrue")) !== true) {
+ $ERROR('#6: (false\\u000A||\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("false\u000D||\u000Dtrue")) !== true) {
+ $ERROR('#7: (false\\u000D||\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("false\u2028||\u2028true")) !== true) {
+ $ERROR('#8: (false\\u2028||\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("false\u2029||\u2029true")) !== true) {
+ $ERROR('#9: (false\\u2029||\\u2029true) === true');
+}
+
+
+//CHECK#10
+if ((eval("false\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029||\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (false\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029||\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T1.js
new file mode 100644
index 000000000..8e07263ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A2.1_T1;
+* @section: 11.11.2, 8.7.1;
+* @assertion: Operator x || y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((true || false) !== true) {
+ $ERROR('#1: (true || false) === true');
+}
+
+//CHECK#2
+if ((false || true) !== true) {
+ $ERROR('#2: (false || true) === true');
+}
+
+//CHECK#3
+var x = new Boolean(false);
+if ((x || true) !== x) {
+ $ERROR('#3: var x = Boolean(false); (x || true) === x');
+}
+
+//CHECK#4
+var y = new Boolean(true);
+if ((false || y) !== y) {
+ $ERROR('#4: var y = Boolean(true); (false || y) === y');
+}
+
+//CHECK#5
+var x = new Boolean(false);
+var y = new Boolean(true);
+if ((x || y) !== x) {
+ $ERROR('#5: var x = new Boolean(false); var y = new Boolean(true); (x || y) === x');
+}
+
+//CHECK#6
+var x = false;
+var y = new Boolean(true);
+if ((x || y) !== y) {
+ $ERROR('#6: var x = false; var y = new Boolean(true); (x || y) === y');
+}
+
+//CHECK#7
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = false;
+objecty.prop = 1.1;
+if ((objectx.prop || objecty.prop) !== objecty.prop) {
+ $ERROR('#7: var objectx = new Object(); var objecty = new Object(); objectx.prop = false; objecty.prop = 1; (objectx.prop || objecty.prop) === objecty.prop');
+}
+
+//CHECK#8
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1.1;
+objecty.prop = false;
+if ((objectx.prop || objecty.prop) !== objectx.prop) {
+ $ERROR('#8: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1.1; objecty.prop = false; (objectx.prop || objecty.prop) === objectx.prop');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T2.js
new file mode 100644
index 000000000..e161582fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A2.1_T2;
+* @section: 11.11.2, 8.7.1;
+* @assertion: Operator x || y uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x || true;
+ $ERROR('#1.1: x || true throw ReferenceError. Actual: ' + (x || true));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x || true throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T3.js
new file mode 100644
index 000000000..8e238c45d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A2.1_T3;
+* @section: 11.11.2, 8.7.1;
+* @assertion: Operator x || y uses GetValue;
+* @description: If ToBoolean(x) is false and GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ false || y;
+ $ERROR('#1.1: false || y throw ReferenceError. Actual: ' + (false || y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: false || y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T4.js
new file mode 100644
index 000000000..7a9614879
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A2.1_T4;
+* @section: 11.11.2, 8.7.1, 16;
+* @assertion: Operator x || y uses GetValue;
+* @description: If ToBoolean(x) is true and GetBase(y) is null, return true;
+*/
+
+//CHECK#1
+if ((true || x) !== true) {
+ $ERROR('#1: (true || x) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T1.js
new file mode 100644
index 000000000..5080e90af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.2_A2.4_T1;
+ * @section: 11.11.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = true;
+if (((x = false) || x) !== false) {
+ $ERROR('#1: var x = true; ((x = false) || x) === false');
+}
+
+//CHECK#2
+var x = true;
+if ((x || (x = false)) !== true) {
+ $ERROR('#2: var x = true; (x || (x = false)) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T2.js
new file mode 100644
index 000000000..8aa181c25
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.2_A2.4_T2;
+ * @section: 11.11.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() || y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() || y() throw "x". Actual: ' + (x() || y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() || y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T3.js
new file mode 100644
index 000000000..49f5a3949
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.2_A2.4_T3;
+ * @section: 11.11.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x || (x = true);
+ $ERROR('#1.1: x || (x = true) throw ReferenceError. Actual: ' + (x || (x = true)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x || (x = true) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = true) || y) !== true) {
+ $ERROR('#2: ((y = true) || y) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T1.js
new file mode 100644
index 000000000..7200f99d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A3_T1;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is false, return y;
+* @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if ((false || true) !== true) {
+ $ERROR('#1: (false || true) === true');
+}
+
+//CHECK#2
+if ((false || false) !== false) {
+ $ERROR('#2: (false || false) === false');
+}
+
+//CHECK#3
+var y = new Boolean(true);
+if ((false || y) !== y) {
+ $ERROR('#3: (var y = new Boolean(true); false || y) === y');
+}
+
+//CHECK#4
+var y = new Boolean(false);
+if ((false || y) !== y) {
+ $ERROR('#4: (var y = new Boolean(false); false || y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T2.js
new file mode 100644
index 000000000..08f8cd4e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.2_A3_T2;
+ * @section: 11.11.2;
+ * @assertion: If ToBoolean(x) is false, return y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+ */
+
+//CHECK#1
+if ((0 || -0) !== 0) {
+ $ERROR('#1.1: (0 || -0) === 0');
+} else {
+ if ((1 / (0 || -0)) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: (0 || -0) === -0');
+ }
+}
+
+//CHECK#2
+if ((-0 || 0) !== 0) {
+ $ERROR('#2.1: (-0 || 0) === 0');
+} else {
+ if ((1 / (-0 || 0)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: (-0 || 0) === +0');
+ }
+}
+
+//CHECK#3
+var y = new Number(-1);
+if ((0 || y) !== y) {
+ $ERROR('#3: (var y = new Number(-1); 0 || y) === y');
+}
+
+//CHECK#4
+var y = new Number(0);
+if ((NaN || y) !== y) {
+ $ERROR('#4: (var y = new Number(0); NaN || y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T3.js
new file mode 100644
index 000000000..56a18ceff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A3_T3;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is false, return y;
+* @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("" || "1") !== "1") {
+ $ERROR('#1: ("" || "1") === "1"');
+}
+
+//CHECK#2
+var y = new String("1");
+if (("" || y) !== y) {
+ $ERROR('#2: (var y = new String("1"); "" || y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T4.js
new file mode 100644
index 000000000..bf45e48ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A3_T4;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is false, return y;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((false || undefined) !== undefined) {
+ $ERROR('#1: (false || undefined) === undefined');
+}
+
+//CHECK#2
+if ((false || null) !== null) {
+ $ERROR('#2: (false || null) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T1.js
new file mode 100644
index 000000000..c26fc64a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A4_T1;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is true, return x;
+* @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if (((true || true)) !== true) {
+ $ERROR('#1: (true || true) === true');
+}
+
+//CHECK#2
+if ((true || false) !== true) {
+ $ERROR('#2: (true || false) === true');
+}
+
+//CHECK#3
+var x = new Boolean(true);
+if ((x || new Boolean(true)) !== x) {
+ $ERROR('#3: (var x = new Boolean(true); (x || new Boolean(true)) === x');
+}
+
+//CHECK#4
+var x = new Boolean(true);
+if ((x || new Boolean(false)) !== x) {
+ $ERROR('#4: (var x = new Boolean(true); (x || new Boolean(false)) === x');
+}
+
+//CHECK#5
+var x = new Boolean(false);
+if ((x || new Boolean(true)) !== x) {
+ $ERROR('#5: (var x = new Boolean(false); (x || new Boolean(true)) === x');
+}
+
+//CHECK#6
+var x = new Boolean(false);
+if ((x || new Boolean(false)) !== x) {
+ $ERROR('#6: (var x = new Boolean(false); (x || new Boolean(false)) === x');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T2.js
new file mode 100644
index 000000000..684e0e293
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T2.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A4_T2;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is true, return x;
+* @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if ((-1 || 1) !== -1) {
+ $ERROR('#1: (-1 || 1) === -1');
+}
+
+//CHECK#2
+if ((1 || new Number(0)) !== 1) {
+ $ERROR('#2: (1 || new Number(0)) === 1');
+}
+
+//CHECK#3
+if ((-1 || NaN) !== -1) {
+ $ERROR('#3: (-1 || NaN) === -1');
+}
+
+//CHECK#4
+var x = new Number(-1);
+if ((x || new Number(0)) !== x) {
+ $ERROR('#4: (var x = new Number(-1); (x || new Number(-1)) === x');
+}
+
+//CHECK#5
+var x = new Number(NaN);
+if ((x || new Number(1)) !== x) {
+ $ERROR('#5: (var x = new Number(NaN); (x || new Number(1)) === x');
+}
+
+//CHECK#6
+var x = new Number(0);
+if ((x || new Number(NaN)) !== x) {
+ $ERROR('#6: (var x = new Number(0); (x || new Number(NaN)) === x');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T3.js
new file mode 100644
index 000000000..247722d21
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T3.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A4_T3;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is true, return x;
+* @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("-1" || "1") !== "-1") {
+ $ERROR('#-1: ("-1" || "1") === "-1"');
+}
+
+//CHECK#2
+if (("-1" || "x") !== "-1") {
+ $ERROR('#2: ("-1" || "x") === "-1"');
+}
+
+//CHECK#3
+var x = new String("-1");
+if ((x || new String(-1)) !== x) {
+ $ERROR('#3: (var x = new String("-1"); (x || new String(-1)) === x');
+}
+
+//CHECK#4
+var x = new String(NaN);
+if ((x || new String("1")) !== x) {
+ $ERROR('#4: (var x = new String(NaN); (x || new String("1")) === x');
+}
+
+//CHECK#5
+var x = new String("-x");
+if ((x || new String("x")) !== x) {
+ $ERROR('#5: (var x = new String("-x"); (x || new String("x")) === x');
+}
+
+//CHECK#6
+var x = new String(0);
+if ((x || new String(NaN)) !== x) {
+ $ERROR('#6: (var x = new String(0); (x || new String(NaN)) === x');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T4.js
new file mode 100644
index 000000000..8658881ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A4_T4;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is true, return x;
+* @description: Type(x) or Type(y) vary between Null and Undefined;
+*/
+
+//CHECK#1
+if ((true || undefined) !== true) {
+ $ERROR('#1: (true || undefined) === true');
+}
+
+//CHECK#2
+if ((true || null) !== true) {
+ $ERROR('#2: (true || null) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A1.js
new file mode 100644
index 000000000..2e4d3f23a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A1;
+* @section: 11.12;
+* @assertion: White Space and Line Terminator between LogicalORExpression and "?" or between "?" and AssignmentExpression or between AssignmentExpression and ":" or between ":" and AssignmentExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("false\u0009?\u0009true\u0009:\u0009true")) !== true) {
+ $ERROR('#1: (false\\u0009?\\u0009true\\u0009:\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("false\u000B?\u000Btrue\u000B:\u000Btrue")) !== true) {
+ $ERROR('#2: (false\\u000B?\\u000Btrue\\u000B:\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("false\u000C?\u000Ctrue\u000C:\u000Ctrue")) !== true) {
+ $ERROR('#3: (false\\u000C?\\u000Ctrue\\u000C:\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("false\u0020?\u0020true\u0020:\u0020true")) !== true) {
+ $ERROR('#4: (false\\u0020?\\u0020true\\u0020:\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("false\u00A0?\u00A0true\u00A0:\u00A0true")) !== true) {
+ $ERROR('#5: (false\\u00A0?\\u00A0true\\u00A0:\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("false\u000A?\u000Atrue\u000A:\u000Atrue")) !== true) {
+ $ERROR('#6: (false\\u000A?\\u000Atrue\\u000A:\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("false\u000D?\u000Dtrue\u000D:\u000Dtrue")) !== true) {
+ $ERROR('#7: (false\\u000D?\\u000Dtrue\\u000D:\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("false\u2028?\u2028true\u2028:\u2028true")) !== true) {
+ $ERROR('#8: (false\\u2028?\\u2028true\\u2028:\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("false\u2029?\u2029true\u2029:\u2029true")) !== true) {
+ $ERROR('#9: (false\\u2029?\\u2029true\\u2029:\\u2029true) === true');
+}
+
+//CHECK#10
+if ((eval("false\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029?\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029:\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (false\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029?\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029:\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T1.js
new file mode 100644
index 000000000..9dd3fb29b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T1.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T1;
+* @section: 11.12, 8.7.1;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((true ? false : true) !== false) {
+ $ERROR('#1: (true ? false : true) === false');
+}
+
+//CHECK#2
+if ((false ? false : true) !== true) {
+ $ERROR('#2: (false ? false : true) === true');
+}
+
+//CHECK#3
+var x = new Boolean(true);
+var y = new Boolean(false);
+if ((x ? y : true) !== y) {
+ $ERROR('#3: var x = new Boolean(true); var y = new Boolean(false); (x ? y : true) === y');
+}
+
+//CHECK#4
+var z = new Boolean(true);
+if ((false ? false : z) !== z) {
+ $ERROR('#4: var z = new Boolean(true); (false ? false : z) === z');
+}
+
+//CHECK#5
+var x = new Boolean(true);
+var y = new Boolean(false);
+var z = new Boolean(true);
+if ((x ? y : z) !== y) {
+ $ERROR('#5: var x = new Boolean(true); var y = new Boolean(false); var z = new Boolean(true); (x ? y : z) === y');
+}
+
+//CHECK#6
+var x = false;
+var y = new Boolean(false);
+var z = new Boolean(true);
+if ((x ? y : z) !== z) {
+ $ERROR('#6: var x = false; var y = new Boolean(false); var z = new Boolean(true); (x ? y : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T2.js
new file mode 100644
index 000000000..c800904f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T2;
+* @section: 11.12, 8.7.1;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x ? true : false;
+ $ERROR('#1.1: x ? true : false throw ReferenceError. Actual: ' + (x ? true : false));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x ? true : false throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T3.js
new file mode 100644
index 000000000..16d2e310b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T3;
+* @section: 11.12, 8.7.1;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If ToBoolean(x) is true and GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ true ? y : false;
+ $ERROR('#1.1: true ? y : false throw ReferenceError. Actual: ' + (true ? y : false));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: true ? y : false throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T4.js
new file mode 100644
index 000000000..44b969330
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T4;
+* @section: 11.12, 8.7.1;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If ToBoolean(x) is false and GetBase(z) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ false ? true : z;
+ $ERROR('#1.1: false ? true : z throw ReferenceError. Actual: ' + (false ? true : z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: false ? true : z throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T5.js
new file mode 100644
index 000000000..17263398d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T5.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T5;
+* @section: 11.12, 8.7.1, 16;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If ToBoolean(x) is true and GetBase(z) is null, return y;
+*/
+
+//CHECK#1
+var y = new Object();
+if ((true ? y : z) !== y) {
+ $ERROR('#1: var y = new Object(); (true ? y : z) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T6.js
new file mode 100644
index 000000000..d4c4ff2b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T6;
+* @section: 11.12, 8.7.1, 16;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If ToBoolean(x) is false and GetBase(y) is null, return z;
+*/
+
+//CHECK#1
+var z = new Object();
+if ((false ? y : z) !== z) {
+ $ERROR('#1: var z = new Object(); (false ? y : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T1.js
new file mode 100644
index 000000000..b3b02fa68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A3_T1;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is false, return z;
+* @description: Type(y) and Type(z) are boolean primitives;
+*/
+
+//CHECK#1
+if ((false ? false : true) !== true) {
+ $ERROR('#1: (false ? false : true) === true');
+}
+
+//CHECK#2
+var z = new Boolean(true);
+if ((false ? true : z) !== z) {
+ $ERROR('#2: (var y = new Boolean(true); (false ? true : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T2.js
new file mode 100644
index 000000000..3bfc4b563
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.12_A3_T2;
+ * @section: 11.12;
+ * @assertion: If ToBoolean(x) is false, return z;
+ * @description: Type(y) and Type(z) are number primitives;
+ */
+
+//CHECK#1
+if ((0 ? 0 : 1) !== 1) {
+ $ERROR('#1: (0 ? 0 : 1) === 1');
+}
+
+//CHECK#2
+var z = new Number(1);
+if ((0 ? 1 : z) !== z) {
+ $ERROR('#2: (var y = new Number(1); (0 ? 1 : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T3.js
new file mode 100644
index 000000000..45b2c5d0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A3_T3;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is false, return z;
+* @description: Type(y) and Type(z) are string primitives;
+*/
+
+//CHECK#1
+if (("" ? "" : "1") !== "1") {
+ $ERROR('#1: ("" ? "" : "1") === "1"');
+}
+
+//CHECK#2
+var z = new String("1");
+if (("" ? "1" : z) !== z) {
+ $ERROR('#2: (var y = new String("1"); ("" ? "1" : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T4.js
new file mode 100644
index 000000000..747795e0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A3_T4;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is false, return z;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((false ? true : undefined) !== undefined) {
+ $ERROR('#1: (false ? true : undefined) === undefined');
+}
+
+//CHECK#2
+if ((false ? true : null) !== null) {
+ $ERROR('#2: (false ? true : null) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T1.js
new file mode 100644
index 000000000..7c53a3ef6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A4_T1;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(y) and Type(z) are boolean primitives;
+*/
+
+//CHECK#1
+if ((true ? false : true) !== false) {
+ $ERROR('#1: (true ? false : true) === false');
+}
+
+//CHECK#2
+var y = new Boolean(true);
+if ((true ? y : false) !== y) {
+ $ERROR('#2: (var y = new Boolean(true); (true ? y : false) === y');
+}
+
+//CHECK#3
+var y = new Boolean(false);
+if ((y ? y : true) !== y) {
+ $ERROR('#3: (var y = new Boolean(false); (y ? y : true) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T2.js
new file mode 100644
index 000000000..6c4624cfb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A4_T2;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(y) and Type(z) are number primitives;
+*/
+
+//CHECK#1
+if ((1 ? 0 : 1) !== 0) {
+ $ERROR('#1: (1 ? 0 : 1) === 0');
+}
+
+//CHECK#2
+var y = new Number(1);
+if ((1 ? y : 0) !== y) {
+ $ERROR('#2: (var y = new Number(1); (1 ? y : 0) === y');
+}
+
+//CHECK#3
+var y = new Number(NaN);
+if ((y ? y : 1) !== y) {
+ $ERROR('#3: (var y = new Number(NaN); (y ? y : 1) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T3.js
new file mode 100644
index 000000000..450afd290
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A4_T3;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(y) and Type(z) are string primitives;
+*/
+
+//CHECK#1
+if (("1" ? "" : "1") !== "") {
+ $ERROR('#1: ("1" ? "" : "1") === ""');
+}
+
+//CHECK#2
+var y = new String("1");
+if (("1" ? y : "") !== y) {
+ $ERROR('#2: (var y = new String("1"); ("1" ? y : "") === y');
+}
+
+//CHECK#3
+var y = new String("y");
+if ((y ? y : "1") !== y) {
+ $ERROR('#3: (var y = new String("y"); (y ? y : "1") === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T4.js
new file mode 100644
index 000000000..011126a5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A4_T4;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((true ? undefined : true) !== undefined) {
+ $ERROR('#1: (true ? undefined : true) === undefined');
+}
+
+//CHECK#2
+if ((true ? null : true) !== null) {
+ $ERROR('#2: (true ? null : true) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A1.js
new file mode 100644
index 000000000..f0d31d204
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.1_A1;
+* @section: 11.13.1;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "=" or between "=" and AssignmentExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("x\u0009=\u0009true")) !== true) {
+ $ERROR('#1: (x\\u0009=\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("x\u000B=\u000Btrue")) !== true) {
+ $ERROR('#2: (x\\u000B=\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("x\u000C=\u000Ctrue")) !== true) {
+ $ERROR('#3: (x\\u000C=\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("x\u0020=\u0020true")) !== true) {
+ $ERROR('#4: (x\\u0020=\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("x\u00A0=\u00A0true")) !== true) {
+ $ERROR('#5: (x\\u00A0=\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("x\u000A=\u000Atrue")) !== true) {
+ $ERROR('#6: (x\\u000A=\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("x\u000D=\u000Dtrue")) !== true) {
+ $ERROR('#7: (x\\u000D=\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("x\u2028=\u2028true")) !== true) {
+ $ERROR('#8: (x\\u2028=\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("x\u2029=\u2029true")) !== true) {
+ $ERROR('#9: (x\\u2029=\\u2029true) === true');
+}
+
+
+//CHECK#10
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T1.js
new file mode 100644
index 000000000..ae8e978e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A2.1_T1;
+ * @section: 11.13.1;
+ * @assertion: Operator x = y uses GetValue and PutValue;
+ * @description: Either AssigmentExpression is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+x = 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = 1;
+if (x !== 1) {
+ $ERROR('#2: var x = 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+y = 1;
+x = y;
+if (x !== 1) {
+ $ERROR('#3: y = 1; x = y; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+var y = 1;
+var x = y;
+if (x !== 1) {
+ $ERROR('#4: var y = 1; var x = y; x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objecty.prop = 1.1;
+objectx.prop = objecty.prop;
+if (objectx.prop !== objecty.prop) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objecty.prop = 1; objectx.prop = objecty.prop; objectx.prop === objecty.prop. Actual: ' + (objectx.prop));
+} else {
+ if (objectx === objecty) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objecty.prop = 1; objectx.prop = objecty.prop; objectx !== objecty');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T2.js
new file mode 100644
index 000000000..3c8b7df6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A2.1_T2;
+ * @section: 11.13.1;
+ * @assertion: Operator x = y uses GetValue and PutValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x = y;
+ $ERROR('#1.1: x = y throw ReferenceError. Actual: ' + (x = y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x = y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T3.js
new file mode 100644
index 000000000..e427435b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A2.1_T3;
+ * @section: 11.13.1, 16;
+ * @assertion: Operator x = y uses GetValue and PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ 1 = 1;
+ $ERROR('#1.1: 1 = 1 throw ReferenceError (or SyntaxError). Actual: ' + (1 = 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 = 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ 1 = 1;
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.1.js
new file mode 100644
index 000000000..1d7dd4a8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A3.1;
+ * @section: 11.13.1;
+ * @assertion: Operator x = y PutValue(x, y);
+ * @description: Checking Expression and Variable statements;
+*/
+
+//CHECK#1
+var x = 1;
+if (x !== 1) {
+ $ERROR('#1: var x = 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+if (y !== 1) {
+ $ERROR('#2: y = 1; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.2.js
new file mode 100644
index 000000000..e03b08b21
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A3.2;
+ * @section: 11.13.1;
+ * @assertion: Operator x = y returns GetValue(y);
+ * @description: Checking Expression and Variable statements;
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) !== 1) {
+ $ERROR('#1: var x = 0; (x = 1) === 1. Actual: ' + ((x = 1)));
+}
+
+//CHECK#2
+x = 0;
+if ((x = 1) !== 1) {
+ $ERROR('#2: x = 0; (x = 1) === 1. Actual: ' + ((x = 1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T1.js
new file mode 100644
index 000000000..3497dce04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A4_T1;
+ * @section: 11.13.1;
+ * @assertion: AssignmentExpression : LeftHandSideExpression = AssignmentExpression;
+ * @description: Syntax check;
+*/
+
+//CHECK#1
+x = x = 1;
+if (x !== 1) {
+ $ERROR('#1: The expression x = x = 1 is the same x = (x = 1), not (x = x) = 1. Actual: ' + (x));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T2.js
new file mode 100644
index 000000000..6692f6335
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A4_T2;
+ * @section: 11.13.1;
+ * @assertion: AssignmentExpression : LeftHandSideExpression = AssignmentExpression;
+ * @description: Syntax check if "x = x" throws ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x = x;
+ $ERROR('#1.1: x = x throw ReferenceError. Actual: ' + (x = x));
+} catch(e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x = x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T1.js
new file mode 100644
index 000000000..49c929987
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T1;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x *= y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009*=\u0009-1")) !== 1) {
+ $ERROR('#1: x = -1; (x\\u0009*=\\u0009-1) === 1');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B*=\u000B-1")) !== 1) {
+ $ERROR('#2: x = -1; (x\\u000B*=\\u000B-1) === 1');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C*=\u000C-1")) !== 1) {
+ $ERROR('#3: x = -1; (x\\u000C*=\\u000C-1) === 1');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020*=\u0020-1")) !== 1) {
+ $ERROR('#4: x = -1; (x\\u0020*=\\u0020-1) === 1');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0*=\u00A0-1")) !== 1) {
+ $ERROR('#5: x = -1; (x\\u00A0*=\\u00A0-1) === 1');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A*=\u000A-1")) !== 1) {
+ $ERROR('#6: x = -1; (x\\u000A*=\\u000A-1) === 1');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D*=\u000D-1")) !== 1) {
+ $ERROR('#7: x = -1; (x\\u000D*=\\u000D-1) === 1');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028*=\u2028-1")) !== 1) {
+ $ERROR('#8: x = -1; (x\\u2028*=\\u2028-1) === 1');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029*=\u2029-1")) !== 1) {
+ $ERROR('#9: x = -1; (x\\u2029*=\\u2029-1) === 1');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029*=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1")) !== 1) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029*=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-1) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T10.js
new file mode 100644
index 000000000..cbbee8049
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T10.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T10;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x ^= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009^=\u00091")) !== 0) {
+ $ERROR('#1: x = 1; (x\\u0009^=\\u00091) === 0');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B^=\u000B1")) !== 0) {
+ $ERROR('#2: x = 1; (x\\u000B^=\\u000B1) === 0');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C^=\u000C1")) !== 0) {
+ $ERROR('#3: x = 1; (x\\u000C^=\\u000C1) === 0');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020^=\u00201")) !== 0) {
+ $ERROR('#4: x = 1; (x\\u0020^=\\u00201) === 0');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0^=\u00A01")) !== 0) {
+ $ERROR('#5: x = 1; (x\\u00A0^=\\u00A01) === 0');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A^=\u000A1")) !== 0) {
+ $ERROR('#6: x = 1; (x\\u000A^=\\u000A1) === 0');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D^=\u000D1")) !== 0) {
+ $ERROR('#7: x = 1; (x\\u000D^=\\u000D1) === 0');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028^=\u20281")) !== 0) {
+ $ERROR('#8: x = 1; (x\\u2028^=\\u20281) === 0');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029^=\u20291")) !== 0) {
+ $ERROR('#9: x = 1; (x\\u2029^=\\u20291) === 0');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029^=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 0) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029^=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T11.js
new file mode 100644
index 000000000..a3639e7aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T11.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T11;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x |= y;
+*/
+
+//CHECK#1
+x = 0;
+if ((eval("x\u0009|=\u00091")) !== 1) {
+ $ERROR('#1: x = 0; (x\\u0009|=\\u00091) === 1');
+}
+
+//CHECK#2
+x = 0;
+if ((eval("x\u000B|=\u000B1")) !== 1) {
+ $ERROR('#2: x = 0; (x\\u000B|=\\u000B1) === 1');
+}
+
+//CHECK#3
+x = 0;
+if ((eval("x\u000C|=\u000C1")) !== 1) {
+ $ERROR('#3: x = 0; (x\\u000C|=\\u000C1) === 1');
+}
+
+//CHECK#4
+x = 0;
+if ((eval("x\u0020|=\u00201")) !== 1) {
+ $ERROR('#4: x = 0; (x\\u0020|=\\u00201) === 1');
+}
+
+//CHECK#5
+x = 0;
+if ((eval("x\u00A0|=\u00A01")) !== 1) {
+ $ERROR('#5: x = 0; (x\\u00A0|=\\u00A01) === 1');
+}
+
+//CHECK#6
+x = 0;
+if ((eval("x\u000A|=\u000A1")) !== 1) {
+ $ERROR('#6: x = 0; (x\\u000A|=\\u000A1) === 1');
+}
+
+//CHECK#7
+x = 0;
+if ((eval("x\u000D|=\u000D1")) !== 1) {
+ $ERROR('#7: x = 0; (x\\u000D|=\\u000D1) === 1');
+}
+
+//CHECK#8
+x = 0;
+if ((eval("x\u2028|=\u20281")) !== 1) {
+ $ERROR('#8: x = 0; (x\\u2028|=\\u20281) === 1');
+}
+
+//CHECK#9
+x = 0;
+if ((eval("x\u2029|=\u20291")) !== 1) {
+ $ERROR('#9: x = 0; (x\\u2029|=\\u20291) === 1');
+}
+
+
+//CHECK#10
+x = 0;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029|=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) {
+ $ERROR('#10: x = 0; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029|=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T2.js
new file mode 100644
index 000000000..75fde9ee4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T2.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T2;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x /= y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009/=\u0009-1")) !== 1) {
+ $ERROR('#1: x = -1; (x\\u0009/=\\u0009-1) === 1');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B/=\u000B-1")) !== 1) {
+ $ERROR('#2: x = -1; (x\\u000B/=\\u000B-1) === 1');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C/=\u000C-1")) !== 1) {
+ $ERROR('#3: x = -1; (x\\u000C/=\\u000C-1) === 1');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020/=\u0020-1")) !== 1) {
+ $ERROR('#4: x = -1; (x\\u0020/=\\u0020-1) === 1');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0/=\u00A0-1")) !== 1) {
+ $ERROR('#5: x = -1; (x\\u00A0/=\\u00A0-1) === 1');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A/=\u000A-1")) !== 1) {
+ $ERROR('#6: x = -1; (x\\u000A/=\\u000A-1) === 1');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D/=\u000D-1")) !== 1) {
+ $ERROR('#7: x = -1; (x\\u000D/=\\u000D-1) === 1');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028/=\u2028-1")) !== 1) {
+ $ERROR('#8: x = -1; (x\\u2028/=\\u2028-1) === 1');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029/=\u2029-1")) !== 1) {
+ $ERROR('#9: x = -1; (x\\u2029/=\\u2029-1) === 1');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029/=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1")) !== 1) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029/=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-1) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T3.js
new file mode 100644
index 000000000..6b8381441
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T3.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T3;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x %= y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009%=\u0009-1")) !== 0) {
+ $ERROR('#1: x = -1; (x\\u0009%=\\u0009-1) === 0');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B%=\u000B-1")) !== 0) {
+ $ERROR('#2: x = -1; (x\\u000B%=\\u000B-1) === 0');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C%=\u000C-1")) !== 0) {
+ $ERROR('#3: x = -1; (x\\u000C%=\\u000C-1) === 0');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020%=\u0020-1")) !== 0) {
+ $ERROR('#4: x = -1; (x\\u0020%=\\u0020-1) === 0');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0%=\u00A0-1")) !== 0) {
+ $ERROR('#5: x = -1; (x\\u00A0%=\\u00A0-1) === 0');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A%=\u000A-1")) !== 0) {
+ $ERROR('#6: x = -1; (x\\u000A%=\\u000A-1) === 0');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D%=\u000D-1")) !== 0) {
+ $ERROR('#7: x = -1; (x\\u000D%=\\u000D-1) === 0');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028%=\u2028-1")) !== 0) {
+ $ERROR('#8: x = -1; (x\\u2028%=\\u2028-1) === 0');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029%=\u2029-1")) !== 0) {
+ $ERROR('#9: x = -1; (x\\u2029%=\\u2029-1) === 0');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029%=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1")) !== 0) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029%=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-1) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T4.js
new file mode 100644
index 000000000..8c31a7624
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T4.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T4;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x += y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009+=\u0009-1")) !== -2) {
+ $ERROR('#1: x = -1; (x\\u0009+=\\u0009-1) === -2');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B+=\u000B-1")) !== -2) {
+ $ERROR('#2: x = -1; (x\\u000B+=\\u000B-1) === -2');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C+=\u000C-1")) !== -2) {
+ $ERROR('#3: x = -1; (x\\u000C+=\\u000C-1) === -2');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020+=\u0020-1")) !== -2) {
+ $ERROR('#4: x = -1; (x\\u0020+=\\u0020-1) === -2');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0+=\u00A0-1")) !== -2) {
+ $ERROR('#5: x = -1; (x\\u00A0+=\\u00A0-1) === -2');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A+=\u000A-1")) !== -2) {
+ $ERROR('#6: x = -1; (x\\u000A+=\\u000A-1) === -2');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D+=\u000D-1")) !== -2) {
+ $ERROR('#7: x = -1; (x\\u000D+=\\u000D-1) === -2');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028+=\u2028-1")) !== -2) {
+ $ERROR('#8: x = -1; (x\\u2028+=\\u2028-1) === -2');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029+=\u2029-1")) !== -2) {
+ $ERROR('#9: x = -1; (x\\u2029+=\\u2029-1) === -2');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029+=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1")) !== -2) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029+=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-1) === -2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T5.js
new file mode 100644
index 000000000..29acfef08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T5.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T5;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x -= y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009-=\u00091")) !== -2) {
+ $ERROR('#1: x = -1; (x\\u0009-=\\u00091) === -2');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B-=\u000B1")) !== -2) {
+ $ERROR('#2: x = -1; (x\\u000B-=\\u000B1) === -2');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C-=\u000C1")) !== -2) {
+ $ERROR('#3: x = -1; (x\\u000C-=\\u000C1) === -2');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020-=\u00201")) !== -2) {
+ $ERROR('#4: x = -1; (x\\u0020-=\\u00201) === -2');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0-=\u00A01")) !== -2) {
+ $ERROR('#5: x = -1; (x\\u00A0-=\\u00A01) === -2');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A-=\u000A1")) !== -2) {
+ $ERROR('#6: x = -1; (x\\u000A-=\\u000A1) === -2');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D-=\u000D1")) !== -2) {
+ $ERROR('#7: x = -1; (x\\u000D-=\\u000D1) === -2');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028-=\u20281")) !== -2) {
+ $ERROR('#8: x = -1; (x\\u2028-=\\u20281) === -2');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029-=\u20291")) !== -2) {
+ $ERROR('#9: x = -1; (x\\u2029-=\\u20291) === -2');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== -2) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === -2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T6.js
new file mode 100644
index 000000000..64d79188b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T6.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T6;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x <<= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009<<=\u00091")) !== 2) {
+ $ERROR('#1: x = 1; (x\\u0009<<=\\u00091) === 2');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B<<=\u000B1")) !== 2) {
+ $ERROR('#2: x = 1; (x\\u000B<<=\\u000B1) === 2');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C<<=\u000C1")) !== 2) {
+ $ERROR('#3: x = 1; (x\\u000C<<=\\u000C1) === 2');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020<<=\u00201")) !== 2) {
+ $ERROR('#4: x = 1; (x\\u0020<<=\\u00201) === 2');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0<<=\u00A01")) !== 2) {
+ $ERROR('#5: x = 1; (x\\u00A0<<=\\u00A01) === 2');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A<<=\u000A1")) !== 2) {
+ $ERROR('#6: x = 1; (x\\u000A<<=\\u000A1) === 2');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D<<=\u000D1")) !== 2) {
+ $ERROR('#7: x = 1; (x\\u000D<<=\\u000D1) === 2');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028<<=\u20281")) !== 2) {
+ $ERROR('#8: x = 1; (x\\u2028<<=\\u20281) === 2');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029<<=\u20291")) !== 2) {
+ $ERROR('#9: x = 1; (x\\u2029<<=\\u20291) === 2');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<<=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 2) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029<<=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T7.js
new file mode 100644
index 000000000..9e66bc81f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T7.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T7;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x >>= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009>>=\u00091")) !== 0) {
+ $ERROR('#1: x = 1; (x\\u0009>>=\\u00091) === 0');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B>>=\u000B1")) !== 0) {
+ $ERROR('#2: x = 1; (x\\u000B>>=\\u000B1) === 0');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C>>=\u000C1")) !== 0) {
+ $ERROR('#3: x = 1; (x\\u000C>>=\\u000C1) === 0');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020>>=\u00201")) !== 0) {
+ $ERROR('#4: x = 1; (x\\u0020>>=\\u00201) === 0');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0>>=\u00A01")) !== 0) {
+ $ERROR('#5: x = 1; (x\\u00A0>>=\\u00A01) === 0');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A>>=\u000A1")) !== 0) {
+ $ERROR('#6: x = 1; (x\\u000A>>=\\u000A1) === 0');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D>>=\u000D1")) !== 0) {
+ $ERROR('#7: x = 1; (x\\u000D>>=\\u000D1) === 0');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028>>=\u20281")) !== 0) {
+ $ERROR('#8: x = 1; (x\\u2028>>=\\u20281) === 0');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029>>=\u20291")) !== 0) {
+ $ERROR('#9: x = 1; (x\\u2029>>=\\u20291) === 0');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 0) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>>=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T8.js
new file mode 100644
index 000000000..4835d3d01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T8.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T8;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x >>>= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009>>>=\u00091")) !== 0) {
+ $ERROR('#1: x = 1; (x\\u0009>>>=\\u00091) === 0');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B>>>=\u000B1")) !== 0) {
+ $ERROR('#2: x = 1; (x\\u000B>>>=\\u000B1) === 0');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C>>>=\u000C1")) !== 0) {
+ $ERROR('#3: x = 1; (x\\u000C>>>=\\u000C1) === 0');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020>>>=\u00201")) !== 0) {
+ $ERROR('#4: x = 1; (x\\u0020>>>=\\u00201) === 0');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0>>>=\u00A01")) !== 0) {
+ $ERROR('#5: x = 1; (x\\u00A0>>>=\\u00A01) === 0');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A>>>=\u000A1")) !== 0) {
+ $ERROR('#6: x = 1; (x\\u000A>>>=\\u000A1) === 0');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D>>>=\u000D1")) !== 0) {
+ $ERROR('#7: x = 1; (x\\u000D>>>=\\u000D1) === 0');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028>>>=\u20281")) !== 0) {
+ $ERROR('#8: x = 1; (x\\u2028>>>=\\u20281) === 0');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029>>>=\u20291")) !== 0) {
+ $ERROR('#9: x = 1; (x\\u2029>>>=\\u20291) === 0');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 0) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>>>=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T9.js
new file mode 100644
index 000000000..ee3413223
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T9.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T9;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x &= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009&=\u00091")) !== 1) {
+ $ERROR('#1: x = 1; (x\\u0009&=\\u00091) === 1');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B&=\u000B1")) !== 1) {
+ $ERROR('#2: x = 1; (x\\u000B&=\\u000B1) === 1');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C&=\u000C1")) !== 1) {
+ $ERROR('#3: x = 1; (x\\u000C&=\\u000C1) === 1');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020&=\u00201")) !== 1) {
+ $ERROR('#4: x = 1; (x\\u0020&=\\u00201) === 1');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0&=\u00A01")) !== 1) {
+ $ERROR('#5: x = 1; (x\\u00A0&=\\u00A01) === 1');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A&=\u000A1")) !== 1) {
+ $ERROR('#6: x = 1; (x\\u000A&=\\u000A1) === 1');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D&=\u000D1")) !== 1) {
+ $ERROR('#7: x = 1; (x\\u000D&=\\u000D1) === 1');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028&=\u20281")) !== 1) {
+ $ERROR('#8: x = 1; (x\\u2028&=\\u20281) === 1');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029&=\u20291")) !== 1) {
+ $ERROR('#9: x = 1; (x\\u2029&=\\u20291) === 1');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029&=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.1.js
new file mode 100644
index 000000000..c06a6950d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.1;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x *= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x *= -1);
+if (z !== -1) {
+ $ERROR('#1: var x = 1; var z = (x *= -1); z === -1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = -1;
+var z = (x *= y);
+if (z !== -1) {
+ $ERROR('#2: var x = 1; var y = -1; var z = (x *= y); z === -1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.10.js
new file mode 100644
index 000000000..eb5c46ff3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.10.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.10;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x ^= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x ^= 1);
+if (z !== 0) {
+ $ERROR('#1: var x = 1; var z = (x ^= 1); z === 0. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x ^= y);
+if (z !== 0) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x ^= y); z === 0. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.11.js
new file mode 100644
index 000000000..55af9fc77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.11;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x |= y";
+*/
+
+//CHECK#1
+var x = 0;
+var z = (x |= 1);
+if (z !== 1) {
+ $ERROR('#1: var x = 0; var z = (x |= 1); z === 1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 0;
+var y = 1;
+var z = (x |= y);
+if (z !== 1) {
+ $ERROR('#2: var x = 0; var y = 1; var z = (x |= y); z === 1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.2.js
new file mode 100644
index 000000000..3483945e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.2;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x /= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x /= -1);
+if (z !== -1) {
+ $ERROR('#1: var x = 1; var z = (x /= -1); z === -1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = -1;
+var z = (x /= y);
+if (z !== -1) {
+ $ERROR('#2: var x = 1; var y = -1; var z = (x /= y); z === -1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.3.js
new file mode 100644
index 000000000..fd148ed24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.3;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x %= y";
+*/
+
+//CHECK#1
+var x = -1;
+var z = (x %= 2);
+if (z !== -1) {
+ $ERROR('#1: var x = -1; var z = (x %= 2); z === -1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = -1;
+var y = 2;
+var z = (x %= y);
+if (z !== -1) {
+ $ERROR('#2: var x = -1; var y = 2; var z = (x %= y); z === -1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.4.js
new file mode 100644
index 000000000..776dbfdd5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.4;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x += y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x += 1);
+if (z !== 2) {
+ $ERROR('#1: var x = 1; var z = (x += 1); z === 2. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x += y);
+if (z !== 2) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x += y); z === 2. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.5.js
new file mode 100644
index 000000000..371f2462d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.5;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x -= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x -= 1);
+if (z !== 0) {
+ $ERROR('#1: var x = 1; var z = (x -= 1); z === 0. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x -= y);
+if (z !== 0) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x -= y); z === 0. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.6.js
new file mode 100644
index 000000000..6ce2671d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.6;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x <<= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x <<= 1);
+if (z !== 2) {
+ $ERROR('#1: var x = 1; var z = (x <<= 1); z === 2. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x <<= y);
+if (z !== 2) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x <<= y); z === 2. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.7.js
new file mode 100644
index 000000000..24832642c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.7.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.7;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x >>= y";
+*/
+
+//CHECK#1
+var x = 4;
+var z = (x >>= 1);
+if (z !== 2) {
+ $ERROR('#1: var x = 4; var z = (x >>= 1); z === 2. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 4;
+var y = 1;
+var z = (x >>= y);
+if (z !== 2) {
+ $ERROR('#2: var x = 4; var y = 1; var z = (x >>= y); z === 2. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.8.js
new file mode 100644
index 000000000..614b5c6c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.8.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.8;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x >>>= y";
+*/
+
+//CHECK#1
+var x = 4;
+var z = (x >>>= 1);
+if (z !== 2) {
+ $ERROR('#1: var x = 4; var z = (x >>>= 1); z === 2. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 4;
+var y = 1;
+var z = (x >>>= y);
+if (z !== 2) {
+ $ERROR('#2: var x = 4; var y = 1; var z = (x >>>= y); z === 2. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.9.js
new file mode 100644
index 000000000..eaec2b218
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.9;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x &= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x &= 1);
+if (z !== 1) {
+ $ERROR('#1: var x = 1; var z = (x &= 1); z === 1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x &= y);
+if (z !== 1) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x &= y); z === 1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.1.js
new file mode 100644
index 000000000..1c01d09b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.1;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x *= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x *= y);
+ $ERROR('#1.1: var x = 1; x *= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x *= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.10.js
new file mode 100644
index 000000000..c876cd464
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.10.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.10;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x ^= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x ^= y);
+ $ERROR('#1.1: var x = 1; x ^= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x ^= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.11.js
new file mode 100644
index 000000000..82f7c979d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.11.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.11;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x |= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x |= y);
+ $ERROR('#1.1: var x = 1; x |= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x |= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.2.js
new file mode 100644
index 000000000..80a072ded
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.2;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x /= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x /= y);
+ $ERROR('#1.1: var x = 1; x /= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x /= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.3.js
new file mode 100644
index 000000000..27a5e4add
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.3;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x %= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x %= y);
+ $ERROR('#1.1: var x = 1; x %= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x %= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.4.js
new file mode 100644
index 000000000..65b071b4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.4;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x += y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x += y);
+ $ERROR('#1.1: var x = 1; x += y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x += y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.5.js
new file mode 100644
index 000000000..2369768c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.5;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x -= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x -= y);
+ $ERROR('#1.1: var x = 1; x -= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x -= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.6.js
new file mode 100644
index 000000000..61fb6afdf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.6;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x <<= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x <<= y);
+ $ERROR('#1.1: var x = 1; x <<= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x <<= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.7.js
new file mode 100644
index 000000000..11d468e2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.7;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x >>= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x >>= y);
+ $ERROR('#1.1: var x = 1; x >>= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x >>= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.8.js
new file mode 100644
index 000000000..5f644d515
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.8.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.8;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x >>>= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x >>>= y);
+ $ERROR('#1.1: var x = 1; x >>>= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x >>>= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.9.js
new file mode 100644
index 000000000..5514ae2f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.9.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.9;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x &= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x &= y);
+ $ERROR('#1.1: var x = 1; x &= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x &= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.1.js
new file mode 100644
index 000000000..9fff16897
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.1;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x *= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x *= 1);
+ $ERROR('#1.1: x *= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x *= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.10.js
new file mode 100644
index 000000000..3bd20a14b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.10.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.10;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x ^= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x ^= 1);
+ $ERROR('#1.1: x ^= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x ^= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.11.js
new file mode 100644
index 000000000..1eb4b3609
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.11.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.11;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x |= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x |= 1);
+ $ERROR('#1.1: x |= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x |= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.2.js
new file mode 100644
index 000000000..9670e3a11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.2;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x /= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x /= 1);
+ $ERROR('#1.1: x /= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x /= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.3.js
new file mode 100644
index 000000000..37745fbc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.3;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x %= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x %= 1);
+ $ERROR('#1.1: x %= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x %= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.4.js
new file mode 100644
index 000000000..c021b0942
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.4;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x += y";
+*/
+
+//CHECK#1
+try {
+ var z = (x += 1);
+ $ERROR('#1.1: x += 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x += 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.5.js
new file mode 100644
index 000000000..cc01c0716
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.5;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x -= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x -= 1);
+ $ERROR('#1.1: x -= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x -= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.6.js
new file mode 100644
index 000000000..fdd0c0dd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.6;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x <<= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x <<= 1);
+ $ERROR('#1.1: x <<= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x <<= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.7.js
new file mode 100644
index 000000000..870e774a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.7;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x >>= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x >>= 1);
+ $ERROR('#1.1: x >>= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >>= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.8.js
new file mode 100644
index 000000000..162e7245a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.8;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x >>>= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x >>>= 1);
+ $ERROR('#1.1: x >>>= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >>>= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.9.js
new file mode 100644
index 000000000..704c63250
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.9.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.9;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x &= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x &= 1);
+ $ERROR('#1.1: x &= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x &= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T1.js
new file mode 100644
index 000000000..12e694c59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T1;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x *= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 *= 1);
+ $ERROR('#1.1: 1 *= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 *= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 *= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T10.js
new file mode 100644
index 000000000..a736ade20
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T10;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x ^= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 ^= 1);
+ $ERROR('#1.1: 1 ^= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 ^= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 ^= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T11.js
new file mode 100644
index 000000000..00d29a582
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T11.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T11;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x |= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 |= 1);
+ $ERROR('#1.1: 1 |= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 |= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 |= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T2.js
new file mode 100644
index 000000000..cd2ddd8bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T2;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x /= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 /= 1);
+ $ERROR('#1.1: 1 /= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 /= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 /= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T3.js
new file mode 100644
index 000000000..a284ae157
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T3;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x %= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 %= 1);
+ $ERROR('#1.1: 1 %= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 %= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 %= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T4.js
new file mode 100644
index 000000000..08e4e14ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T4;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x += y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 += 1);
+ $ERROR('#1.1: 1 += 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 += 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 += 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T5.js
new file mode 100644
index 000000000..4e10590ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T5;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x -= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 -= 1);
+ $ERROR('#1.1: 1 -= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 -= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 -= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T6.js
new file mode 100644
index 000000000..9fce0372e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T6.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T6;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x <<= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 <<= 1);
+ $ERROR('#1.1: 1 <<= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 <<= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 <<= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T7.js
new file mode 100644
index 000000000..9356b73d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T7.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T7;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x >>= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 >>= 1);
+ $ERROR('#1.1: 1 >>= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >>= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 >>= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T8.js
new file mode 100644
index 000000000..3c27b24f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T8;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x >>>= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 >>>= 1);
+ $ERROR('#1.1: 1 >>>= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >>>= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 >>>= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T9.js
new file mode 100644
index 000000000..0ac35ffea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T9;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x &= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 &= 1);
+ $ERROR('#1.1: 1 &= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 &= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 &= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T1.js
new file mode 100644
index 000000000..045da8110
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T1;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x *= y;
+*/
+
+//CHECK#1
+var x = 1;
+x *= -1;
+if (x !== -1) {
+ $ERROR('#1: var x = 1; x *= -1; x === -1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y *= -1;
+if (y !== -1) {
+ $ERROR('#2: y = 1; y *= -1; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T10.js
new file mode 100644
index 000000000..5ea0d2d3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T10;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x ^= y;
+*/
+
+//CHECK#1
+var x = 0;
+x ^= 1;
+if (x !== 1) {
+ $ERROR('#1: var x = 0; x ^= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y ^= 0;
+if (y !== 1) {
+ $ERROR('#2: y = 1; y ^= 0; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T11.js
new file mode 100644
index 000000000..542cd4fe3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T11.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T11;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x |= y;
+*/
+
+//CHECK#1
+var x = 0;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#1: var x = 0; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y |= 0;
+if (y !== 1) {
+ $ERROR('#2: y = 1; y |= 0; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T2.js
new file mode 100644
index 000000000..679c295f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T2;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x /= y;
+*/
+
+//CHECK#1
+var x = 1;
+x /= -1;
+if (x !== -1) {
+ $ERROR('#1: var x = 1; x /= -1; x === -1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y /= -1;
+if (y !== -1) {
+ $ERROR('#2: y = 1; y /= -1; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T3.js
new file mode 100644
index 000000000..cf65d0a05
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T3;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x %= y;
+*/
+
+//CHECK#1
+var x = -1;
+x %= 2;
+if (x !== -1) {
+ $ERROR('#1: var x = -1; x %= 2; x === -1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = -1;
+y %= 2;
+if (y !== -1) {
+ $ERROR('#2: y = -1; y %= 2; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T4.js
new file mode 100644
index 000000000..0cbcad1e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T4;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x += y;
+*/
+
+//CHECK#1
+var x = 1;
+x += 1;
+if (x !== 2) {
+ $ERROR('#1: var x = 1; x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y += 1;
+if (y !== 2) {
+ $ERROR('#2: y = 1; y += 1; y === 2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T5.js
new file mode 100644
index 000000000..d84d38867
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T5;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x -= y;
+*/
+
+//CHECK#1
+var x = -1;
+x -= 1;
+if (x !== -2) {
+ $ERROR('#1: var x = -1; x -= 1; x === -2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = -1;
+y -= 1;
+if (y !== -2) {
+ $ERROR('#2: y = -1; y -= 1; y === -2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T6.js
new file mode 100644
index 000000000..70fd614fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T6.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T6;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x <<= y;
+*/
+
+//CHECK#1
+var x = 1;
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#1: var x = 1; x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y <<= 1;
+if (y !== 2) {
+ $ERROR('#2: y = 1; y <<= 1; y === 2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T7.js
new file mode 100644
index 000000000..d8bb6964d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T7.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T7;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x >>= y;
+*/
+
+//CHECK#1
+var x = 4;
+x >>= 1;
+if (x !== 2) {
+ $ERROR('#1: var x = 4; x >>= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 4;
+y >>= 1;
+if (y !== 2) {
+ $ERROR('#2: y = 4; y >>= 1; y === 2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T8.js
new file mode 100644
index 000000000..f43989be9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T8;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x >>>= y;
+*/
+
+//CHECK#1
+var x = 4;
+x >>>= 1;
+if (x !== 2) {
+ $ERROR('#1: var x = 4; x >>>= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 4;
+y >>>= 1;
+if (y !== 2) {
+ $ERROR('#2: y = 4; y >>>= 1; y === 2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T9.js
new file mode 100644
index 000000000..6b8877e93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T9;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x &= y;
+*/
+
+//CHECK#1
+var x = 1;
+x &= 1;
+if (x !== 1) {
+ $ERROR('#1: var x = 1; x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y &= 1;
+if (y !== 1) {
+ $ERROR('#2: y = 1; y &= 1; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T1.js
new file mode 100644
index 000000000..bea8af649
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T1;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x *= y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x *= -1);
+if (x1 !== -1) {
+ $ERROR('#1: var x = 1; var x1 = (x *= -1); x1 === -1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y *= -1);
+if (y1 !== -1) {
+ $ERROR('#2: y = 1; y1 = (y *= -1); y1 === -1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T10.js
new file mode 100644
index 000000000..d956f4f32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T10;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x ^= y;
+*/
+
+//CHECK#1
+var x = 0;
+var x1 = (x ^= 1);
+if (x1 !== 1) {
+ $ERROR('#1: var x = 0; var x1 = (x ^= 1); x1 === 1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y ^= 0);
+if (y1 !== 1) {
+ $ERROR('#2: y = 1; y1 = (y ^= 0); y1 === 1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T11.js
new file mode 100644
index 000000000..f2031d604
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T11.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T11;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x |= y;
+*/
+
+//CHECK#1
+var x = 0;
+var x1 = (x |= 1);
+if (x1 !== 1) {
+ $ERROR('#1: var x = 0; var x1 = (x |= 1); x1 === 1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y |= 0);
+if (y1 !== 1) {
+ $ERROR('#2: y = 1; y1 = (y |= 0); y1 === 1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T2.js
new file mode 100644
index 000000000..bf3e4281d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T2;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x /= y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x /= -1);
+if (x1 !== -1) {
+ $ERROR('#1: var x = 1; var x1 = (x /= -1); x1 === -1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y /= -1);
+if (y1 !== -1) {
+ $ERROR('#2: y = 1; y1 = (y /= -1); y1 === -1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T3.js
new file mode 100644
index 000000000..2a4ecc387
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T3;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x %= y;
+*/
+
+//CHECK#1
+var x = -1;
+var x1 = (x %= 2);
+if (x1 !== -1) {
+ $ERROR('#1: var x = -1; var x1 = (x %= 2); x1 === -1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = -1;
+y1 = (y %= 2);
+if (y1 !== -1) {
+ $ERROR('#2: y = -1; y1 = (y %= 2); y1 === -1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T4.js
new file mode 100644
index 000000000..827c19773
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T4;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x += y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x += 1);
+if (x1 !== 2) {
+ $ERROR('#1: var x = 1; var x1 = (x += 1); x1 === 2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y += 1);
+if (y1 !== 2) {
+ $ERROR('#2: y = 1; y1 = (y += 1); y1 === 2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T5.js
new file mode 100644
index 000000000..d96373686
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T5;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x -= y;
+*/
+
+//CHECK#1
+var x = -1;
+var x1 = (x -= 1);
+if (x1 !== -2) {
+ $ERROR('#1: var x = -1; var x1 = (x -= 1); x1 === -2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = -1;
+y1 = (y -= 1);
+if (y1 !== -2) {
+ $ERROR('#2: y = -1; y1 = (y -= 1); y1 === -2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T6.js
new file mode 100644
index 000000000..799bb4d38
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T6.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T6;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x <<= y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x <<= 1);
+if (x1 !== 2) {
+ $ERROR('#1: var x = 1; var x1 = (x <<= 1); x1 === 2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y <<= 1);
+if (y1 !== 2) {
+ $ERROR('#2: y = 1; y1 = (y <<= 1); y1 === 2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T7.js
new file mode 100644
index 000000000..3d8efba58
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T7.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T7;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x >>= y;
+*/
+
+//CHECK#1
+var x = 4;
+var x1 = (x >>= 1);
+if (x1 !== 2) {
+ $ERROR('#1: var x = 4; var x1 = (x >>= 1); x1 === 2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 4;
+y1 = (y >>= 1);
+if (y1 !== 2) {
+ $ERROR('#2: y = 4; y1 = (y >>= 1); y1 === 2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T8.js
new file mode 100644
index 000000000..e27708a3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T8;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x >>>= y;
+*/
+
+//CHECK#1
+var x = 4;
+var x1 = (x >>>= 1);
+if (x1 !== 2) {
+ $ERROR('#1: var x = 4; var x1 = (x >>>= 1); x1 === 2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 4;
+y1 = (y >>>= 1);
+if (y1 !== 2) {
+ $ERROR('#2: y = 4; y1 = (y >>>= 1); y1 === 2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T9.js
new file mode 100644
index 000000000..2cf6d4e78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T9;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x &= y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x &= 1);
+if (x1 !== 1) {
+ $ERROR('#1: var x = 1; var x1 = (x &= 1); x1 === 1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y &= 1);
+if (y1 !== 1) {
+ $ERROR('#2: y = 1; y1 = (y &= 1); y1 === 1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.1.js
new file mode 100644
index 000000000..73aaa2b52
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T1.1;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x ^= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x ^= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.2.js
new file mode 100644
index 000000000..d1684aded
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T1.2;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.3.js
new file mode 100644
index 000000000..a6fa846b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T1.3;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x ^= "1";
+if (x !== 1) {
+ $ERROR('#5: x = "x"; x ^= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x ^= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x ^= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.4.js
new file mode 100644
index 000000000..17a47f3ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T1.4;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x ^= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x ^= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x ^= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x ^= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x ^= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x ^= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x ^= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x ^= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.1.js
new file mode 100644
index 000000000..037f1f696
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.1;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x ^= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x ^= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.2.js
new file mode 100644
index 000000000..8627c9e9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.2;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x ^= 1;
+if (x !== 1) {
+ $ERROR('#9: x = "x"; x ^= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x ^= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x ^= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.3.js
new file mode 100644
index 000000000..ea682bdd4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.3;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x ^= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x ^= 1;
+if (x !== 1) {
+ $ERROR('#2: x = null; x ^= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x ^= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x ^= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = null; x ^= new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.4.js
new file mode 100644
index 000000000..7d5ed27e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.4;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x ^= 1;
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x ^= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x ^= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x ^= new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.5.js
new file mode 100644
index 000000000..49275a0e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.5;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x ^= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x ^= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.6.js
new file mode 100644
index 000000000..c0e2e8750
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.6;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x ^= "1";
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x ^= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x ^= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x ^= new String("1"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.7.js
new file mode 100644
index 000000000..8302ff023
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.7;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x ^= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x ^= "1";
+if (x !== 1) {
+ $ERROR('#2: x = null; x ^= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x ^= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x ^= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = null; x ^= new String("1"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.8.js
new file mode 100644
index 000000000..a32f87f27
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.8;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x ^= true;
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x ^= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x ^= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x ^= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.9.js
new file mode 100644
index 000000000..a57c4572e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.9;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x ^= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x ^= true;
+if (x !== 1) {
+ $ERROR('#2: x = null; x ^= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x ^= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x ^= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = null; x ^= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.1.js
new file mode 100644
index 000000000..587ba5bd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T1.1;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x |= true;
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = new Boolean(true); x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#3: x = true; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = new Boolean(true); x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.2.js
new file mode 100644
index 000000000..83f5230f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T1.2;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x |= 1;
+if (x !== 1) {
+ $ERROR('#2: x = new Number(1); x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#3: x = 1; x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = new Number(1); x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.3.js
new file mode 100644
index 000000000..85461758c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T1.3;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x |= "1";
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x |= "1";
+if (x !== 1) {
+ $ERROR('#2: x = new String("1"); x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#3: x = "1"; x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = new String("1"); x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x |= "1";
+if (x !== 1) {
+ $ERROR('#5: x = "x"; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x |= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x |= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.4.js
new file mode 100644
index 000000000..60758ffd5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T1.4;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x |= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x |= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x |= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x |= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x |= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x |= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x |= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x |= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.1.js
new file mode 100644
index 000000000..fb5b80a4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.1;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = 1; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x |= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = 1; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = true; x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x |= true;
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.2.js
new file mode 100644
index 000000000..550a4d24d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.2;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x |= 1;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x |= "1";
+if (x !== 1) {
+ $ERROR('#2: x = 1; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x |= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = 1; x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = "1"; x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x |= "1";
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new String("1"); x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x |= 1;
+if (x !== 1) {
+ $ERROR('#9: x = "x"; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x |= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x |= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.3.js
new file mode 100644
index 000000000..12a8a1fc0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.3;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x |= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#2: x = null; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x |= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = null; x |= new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.4.js
new file mode 100644
index 000000000..952d9f95a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.4;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x |= new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.5.js
new file mode 100644
index 000000000..1d653559a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.5;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x |= "1";
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = "1"; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x |= "1";
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = "1"; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#5: x = true; x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x |= true;
+if (x !== 1) {
+ $ERROR('#6: x = new String("1"); x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new String("1"); x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.6.js
new file mode 100644
index 000000000..31bb5f809
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.6;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x |= "1";
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x |= new String("1"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.7.js
new file mode 100644
index 000000000..2ff06002e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.7;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x |= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x |= "1";
+if (x !== 1) {
+ $ERROR('#2: x = null; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x |= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = null; x |= new String("1"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.8.js
new file mode 100644
index 000000000..a931ee049
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.8;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.9.js
new file mode 100644
index 000000000..3b550584b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.9;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x |= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = null; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x |= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = null; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.1.js
new file mode 100644
index 000000000..c04cab1e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T1.1;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x *= true;
+if (x !== 1) {
+ $ERROR('#1: x = true; x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x *= true;
+if (x !== 1) {
+ $ERROR('#2: x = new Boolean(true); x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#3: x = true; x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = new Boolean(true); x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.2.js
new file mode 100644
index 000000000..f8e67ce24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T1.2;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x *= 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x *= 1;
+if (x !== 1) {
+ $ERROR('#2: x = new Number(1); x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#3: x = 1; x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = new Number(1); x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.3.js
new file mode 100644
index 000000000..fcc001c37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T1.3;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x *= "1";
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x *= "1";
+if (x !== 1) {
+ $ERROR('#2: x = new String("1"); x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#3: x = "1"; x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = new String("1"); x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x *= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#5: x = "x"; x *= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x *= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#6: x = "1"; x *= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.4.js
new file mode 100644
index 000000000..321a01086
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T1.4;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x *= null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x *= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x *= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x *= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.1.js
new file mode 100644
index 000000000..48e146f7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.1;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Number (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x *= 1;
+if (x !== 1) {
+ $ERROR('#1: x = true; x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x *= true;
+if (x !== 1) {
+ $ERROR('#2: x = 1; x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x *= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = 1; x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = true; x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x *= true;
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.2.js
new file mode 100644
index 000000000..a22c75aef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.2;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x *= 1;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x *= "1";
+if (x !== 1) {
+ $ERROR('#2: x = 1; x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x *= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = 1; x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = "1"; x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x *= "1";
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new String("1"); x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x *= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#9: x = "x"; x *= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x *= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#10: x = 1; x *= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.3.js
new file mode 100644
index 000000000..a95f4c597
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.3;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x *= null;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x *= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x *= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x *= null;
+if (x !== 0) {
+ $ERROR('#3: x = new Number(1); x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x *= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x *= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.4.js
new file mode 100644
index 000000000..8d13dab82
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.4;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x *= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x *= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x *= new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x *= new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.5.js
new file mode 100644
index 000000000..140c59b56
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.5;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) amd Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x *= "1";
+if (x !== 1) {
+ $ERROR('#1: x = true; x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x *= true;
+if (x !== 1) {
+ $ERROR('#2: x = "1"; x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x *= "1";
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = "1"; x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#5: x = true; x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x *= true;
+if (x !== 1) {
+ $ERROR('#6: x = new String("1"); x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new String("1"); x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.6.js
new file mode 100644
index 000000000..8db139b50
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.6;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between primitive String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x *= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x *= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x *= new String("1");
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x *= new String("1"); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.7.js
new file mode 100644
index 000000000..a0a2f272f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.7;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x *= null;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x *= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x *= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x *= null;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x *= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x *= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.8.js
new file mode 100644
index 000000000..eb68dec8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.8;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x *= true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x *= true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x *= new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x *= new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.9.js
new file mode 100644
index 000000000..571277dd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.9;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x *= null;
+if (x !== 0) {
+ $ERROR('#1: x = true; x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x *= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x *= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x *= null;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x *= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x *= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.1.js
new file mode 100644
index 000000000..a81965545
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T1.1;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x /= true;
+if (x !== 1) {
+ $ERROR('#1: x = true; x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x /= true;
+if (x !== 1) {
+ $ERROR('#2: x = new Boolean(true); x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#3: x = true; x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = new Boolean(true); x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.2.js
new file mode 100644
index 000000000..ef50dab10
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T1.2;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x /= 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x /= 1;
+if (x !== 1) {
+ $ERROR('#2: x = new Number(1); x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#3: x = 1; x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = new Number(1); x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.3.js
new file mode 100644
index 000000000..777168afc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T1.3;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x /= "1";
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x /= "1";
+if (x !== 1) {
+ $ERROR('#2: x = new String("1"); x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#3: x = "1"; x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = new String("1"); x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x /= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#5: x = "x"; x /= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x /= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#6: x = "1"; x /= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.4.js
new file mode 100644
index 000000000..d9869b6c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T1.4;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x /= null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x /= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x /= null;
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = null; x /= null; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.1.js
new file mode 100644
index 000000000..01927117f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.1;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x /= 1;
+if (x !== 1) {
+ $ERROR('#1: x = true; x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x /= true;
+if (x !== 1) {
+ $ERROR('#2: x = 1; x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x /= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = 1; x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = true; x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x /= true;
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.2.js
new file mode 100644
index 000000000..27bca2e1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.2;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x /= 1;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x /= "1";
+if (x !== 1) {
+ $ERROR('#2: x = 1; x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x /= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = 1; x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = "1"; x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x /= "1";
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new String("1"); x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x /= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#9: x = "x"; x /= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x /= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#10: x = 1; x /= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.3.js
new file mode 100644
index 000000000..c3cfa4b89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.3;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: x = 1; x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x /= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x /= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: x = new Number(1); x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x /= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x /= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.4.js
new file mode 100644
index 000000000..92a838a92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.4;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x /= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x /= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x /= new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x /= new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.5.js
new file mode 100644
index 000000000..35c75b3cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.5;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x /= "1";
+if (x !== 1) {
+ $ERROR('#1: x = true; x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x /= true;
+if (x !== 1) {
+ $ERROR('#2: x = "1"; x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x /= "1";
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = "1"; x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#5: x = true; x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x /= true;
+if (x !== 1) {
+ $ERROR('#6: x = new String("1"); x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new String("1"); x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.6.js
new file mode 100644
index 000000000..2322b5f3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.6;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x /= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x /= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x /= new String("1");
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x /= new String("1"); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.7.js
new file mode 100644
index 000000000..eabc0c031
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.7;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: x = "1"; x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x /= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x /= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: x = new String("1"); x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x /= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x /= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.8.js
new file mode 100644
index 000000000..61525c493
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.8;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x /= true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x /= true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x /= new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x /= new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.9.js
new file mode 100644
index 000000000..8aec6395e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.9;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: x = true; x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x /= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x /= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: x = new Boolean(true); x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x /= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x /= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.1.js
new file mode 100644
index 000000000..954fef612
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T1.1;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x %= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x %= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.2.js
new file mode 100644
index 000000000..7d56c91b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T1.2;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x %= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x %= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.3.js
new file mode 100644
index 000000000..7dd40a5ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T1.3;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x %= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x %= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x %= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#5: x = "x"; x %= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x %= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#6: x = "1"; x %= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.4.js
new file mode 100644
index 000000000..52122533e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T1.4;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = null; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.1.js
new file mode 100644
index 000000000..982187c00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.1;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x %= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x %= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x %= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x %= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.2.js
new file mode 100644
index 000000000..70b00e892
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.2;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x %= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x %= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x %= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x %= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x %= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#9: x = "x"; x %= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x %= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#10: x = 1; x %= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.3.js
new file mode 100644
index 000000000..8cc97f61e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.3;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x %= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x %= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.4.js
new file mode 100644
index 000000000..779ef3af4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.4;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x %= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x %= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x %= new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x %= new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.5.js
new file mode 100644
index 000000000..0032d59f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.5;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x %= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x %= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x %= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x %= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.6.js
new file mode 100644
index 000000000..e52994c5a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.6;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x %= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x %= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x %= new String("1");
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x %= new String("1"); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.7.js
new file mode 100644
index 000000000..63d9e673e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.7;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x %= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x %= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.8.js
new file mode 100644
index 000000000..a484981a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.8;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x %= true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x %= true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x %= new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x %= new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.9.js
new file mode 100644
index 000000000..0870a79d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.9;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x %= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.1.js
new file mode 100644
index 000000000..ce9ed5c42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T1.1;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x += true;
+if (x !== 2) {
+ $ERROR('#1: x = true; x += true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x += true;
+if (x !== 2) {
+ $ERROR('#2: x = new Boolean(true); x += true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x += new Boolean(true);
+if (x !== 2) {
+ $ERROR('#3: x = true; x += new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x += new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = new Boolean(true); x += new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.2.js
new file mode 100644
index 000000000..549e6321e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T1.2;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x += 1;
+if (x !== 2) {
+ $ERROR('#1: x = 1; x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x += 1;
+if (x !== 2) {
+ $ERROR('#2: x = new Number(1); x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x += new Number(1);
+if (x !== 2) {
+ $ERROR('#3: x = 1; x += new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x += new Number(1);
+if (x !== 2) {
+ $ERROR('#4: x = new Number(1); x += new Number(1); x === 2. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.3.js
new file mode 100644
index 000000000..6bf7dbc3c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T1.3;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x += null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x += null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x += null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x += null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.4.js
new file mode 100644
index 000000000..778d4b039
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.4.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T1.4;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x += "1";
+if (x !== "11") {
+ $ERROR('#1: x = "1"; x += "1"; x === "11". Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x += "1";
+if (x !== "11") {
+ $ERROR('#2: x = new String("1"); x += "1"; x === "11". Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x += new String("1");
+if (x !== "11") {
+ $ERROR('#3: x = "1"; x += new String("1"); x === "11". Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x += new String("1");
+if (x !== "11") {
+ $ERROR('#4: x = new String("1"); x += new String("1"); x === "11". Actual: ' + (x));
+}
+
+//CHECK#5
+if ("x" + "1" !=="x1") {
+ $ERROR('#5: x = "x"; x += "1"; x === "x1". Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x += "x";
+if (x !== "1x") {
+ $ERROR('#6: x = "1"; x += "x"; x === "1x". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.1.js
new file mode 100644
index 000000000..28b80f896
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.1;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x += 1;
+if (x !== 2) {
+ $ERROR('#1: x = true; x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x += true;
+if (x !== 2) {
+ $ERROR('#2: x = 1; x += true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x += 1;
+if (x !== 2) {
+ $ERROR('#3: x = new Boolean(true); x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x += new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = 1; x += new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x += new Number(1);
+if (x !== 2) {
+ $ERROR('#5: x = true; x += new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x += true;
+if (x !== 2) {
+ $ERROR('#6: x = new Number(1); x += true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x += new Number(1);
+if (x !== 2) {
+ $ERROR('#7: x = new Boolean(true); x += new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x += new Boolean(true);
+if (x !== 2) {
+ $ERROR('#8: x = new Number(1); x += new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.2.js
new file mode 100644
index 000000000..19ac09329
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.2;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x += null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x += null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x += 1;
+if (x !== 1) {
+ $ERROR('#2: x = null; x += 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x += null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x += null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x += new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = null; x += new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.3.js
new file mode 100644
index 000000000..bf8b2eae9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.3;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x += 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x += 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x += new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x += new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.4.js
new file mode 100644
index 000000000..41a35ad91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.4;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x += true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x += true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x += new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x += new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.5.js
new file mode 100644
index 000000000..5fe192ddf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.5.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.5;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x += null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x += null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x += true;
+if (x !== 1) {
+ $ERROR('#2: x = null; x += true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x += null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x += null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x += new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = null; x += new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.6.js
new file mode 100644
index 000000000..2c56cf4ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.6.js
@@ -0,0 +1,77 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.6;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x += 1;
+if (x !== "11") {
+ $ERROR('#1: x = "1"; x += 1; x === "11". Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x += "1";
+if (x !== "11") {
+ $ERROR('#2: x = 1; x += "1"; x === "11". Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x += 1;
+if (x !== "11") {
+ $ERROR('#3: x = new String("1"); x += 1; x === "11". Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x += new String("1");
+if (x !== "11") {
+ $ERROR('#4: x = 1; x += new String("1"); x === "11". Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x += new Number(1);
+if (x !== "11") {
+ $ERROR('#5: x = "1"; x += new Number(1); x === "11". Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x += "1";
+if (x !== "11") {
+ $ERROR('#6: x = new Number(1); x += "1"; x === "11". Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x += new Number(1);
+if (x !== "11") {
+ $ERROR('#7: x = new String("1"); x += new Number(1); x === "11". Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x += new String("1");
+if (x !== "11") {
+ $ERROR('#8: x = new Number(1); x += new String("1"); x === "11". Actual: ' + (x));
+}
+
+//CHECK#9
+if ("x" + 1 !=="x1") {
+ $ERROR('#9: x = "x"; x += 1; x === "x1". Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x += "x";
+if (x !== "1x") {
+ $ERROR('#10: x = 1; x += "x"; x === "1x". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.7.js
new file mode 100644
index 000000000..5ffb9b1db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.7.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.7;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x += "1";
+if (x !== "true1") {
+ $ERROR('#1: x = true; x += "1"; x === "true1". Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x += true;
+if (x !== "1true") {
+ $ERROR('#2: x = "1"; x += true; x === "1true". Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x += "1";
+if (x !== "true1") {
+ $ERROR('#3: x = new Boolean(true); x += "1"; x === "true1". Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x += new Boolean(true);
+if (x !== "1true") {
+ $ERROR('#4: x = "1"; x += new Boolean(true); x === "1true". Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x += new String("1");
+if (x !== "true1") {
+ $ERROR('#5: x = true; x += new String("1"); x === "true1". Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x += true;
+if (x !== "1true") {
+ $ERROR('#6: x = new String("1"); x += true; x === "1true". Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x += new String("1");
+if (x !== "true1") {
+ $ERROR('#7: x = new Boolean(true); x += new String("1"); x === "true1". Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x += new Boolean(true);
+if (x !== "1true") {
+ $ERROR('#8: x = new String("1"); x += new Boolean(true); x === "1true". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.8.js
new file mode 100644
index 000000000..4b47b57bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.8;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x += undefined;
+if (x !== "1undefined") {
+ $ERROR('#1: x = "1"; x += undefined; x === "1undefined". Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x += "1";
+if (x !== "undefined1") {
+ $ERROR('#2: x = undefined; x += "1"; x === "undefined1". Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x += undefined;
+if (x !== "1undefined") {
+ $ERROR('#3: x = new String("1"); x += undefined; x === "1undefined". Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x += new String("1");
+if (x !== "undefined1") {
+ $ERROR('#4: x = undefined; x += new String("1"); x === "undefined1". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.9.js
new file mode 100644
index 000000000..cd7e884ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.9;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x += null;
+if (x !== "1null") {
+ $ERROR('#1: x = "1"; x += null; x === "1null". Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x += "1";
+if (x !== "null1") {
+ $ERROR('#2: x = null; x += "1"; x === "null1". Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x += null;
+if (x !== "1null") {
+ $ERROR('#3: x = new String("1"); x += null; x === "1null". Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x += new String("1");
+if (x !== "null1") {
+ $ERROR('#4: x = null; x += new String("1"); x === "null1". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.1.js
new file mode 100644
index 000000000..4cdb840e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T1.1;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x -= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x -= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.2.js
new file mode 100644
index 000000000..a611daf66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T1.2;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x -= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x -= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.3.js
new file mode 100644
index 000000000..2babc304f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T1.3;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x -= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x -= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x -= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#5: x = "x"; x -= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x -= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#6: x = "1"; x -= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.4.js
new file mode 100644
index 000000000..c957e2fe9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T1.4;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x -= null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x -= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x -= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x -= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.1.js
new file mode 100644
index 000000000..490a2e09d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.1;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x -= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x -= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x -= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x -= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.2.js
new file mode 100644
index 000000000..4657424dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.2;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x -= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x -= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x -= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x -= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x -= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#9: x = "x"; x -= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x -= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#10: x = 1; x -= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.3.js
new file mode 100644
index 000000000..b7fcb35ff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.3;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x -= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x -= 1;
+if (x !== -1) {
+ $ERROR('#2: x = null; x -= 1; x === -1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x -= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x -= new Number(1);
+if (x !== -1) {
+ $ERROR('#4: x = null; x -= new Number(1); x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.4.js
new file mode 100644
index 000000000..df000b659
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.4;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x -= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x -= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x -= new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x -= new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.5.js
new file mode 100644
index 000000000..e44af16f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.5;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x -= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x -= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x -= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x -= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.6.js
new file mode 100644
index 000000000..550ec15cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.6;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x -= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x -= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x -= new String("1");
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x -= new String("1"); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.7.js
new file mode 100644
index 000000000..aa7e114fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.7;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x -= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x -= "1";
+if (x !== -1) {
+ $ERROR('#2: x = null; x -= "1"; x === -1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x -= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x -= new String("1");
+if (x !== -1) {
+ $ERROR('#4: x = null; x -= new String("1"); x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.8.js
new file mode 100644
index 000000000..151491ade
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.8;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x -= true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x -= true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x -= new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x -= new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.9.js
new file mode 100644
index 000000000..dffa8ae58
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.9;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x -= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x -= true;
+if (x !== -1) {
+ $ERROR('#2: x = null; x -= true; x === -1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x -= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x -= new Boolean(true);
+if (x !== -1) {
+ $ERROR('#4: x = null; x -= new Boolean(true); x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.1.js
new file mode 100644
index 000000000..501212a2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T1.1;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+x = true;
+x <<= true;
+if (x !== 2) {
+ $ERROR('#1: x = true; x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x <<= true;
+if (x !== 2) {
+ $ERROR('#2: x = new Boolean(true); x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#3: x = true; x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = new Boolean(true); x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.2.js
new file mode 100644
index 000000000..04800f7f1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T1.2;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#1: x = 1; x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#2: x = new Number(1); x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#3: x = 1; x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#4: x = new Number(1); x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.3.js
new file mode 100644
index 000000000..1a2355664
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T1.3;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#1: x = "1"; x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#2: x = new String("1"); x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#3: x = "1"; x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#4: x = new String("1"); x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x <<= "1";
+if (x !== 0) {
+ $ERROR('#5: x = "x"; x <<= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x <<= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x <<= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.4.js
new file mode 100644
index 000000000..33a27854e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T1.4;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x <<= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x <<= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x <<= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x <<= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x <<= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x <<= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x <<= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x <<= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.1.js
new file mode 100644
index 000000000..2e9c5103c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.1;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#1: x = true; x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x <<= true;
+if (x !== 2) {
+ $ERROR('#2: x = 1; x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#3: x = new Boolean(true); x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = 1; x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#5: x = true; x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x <<= true;
+if (x !== 2) {
+ $ERROR('#6: x = new Number(1); x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#7: x = new Boolean(true); x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#8: x = new Number(1); x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.2.js
new file mode 100644
index 000000000..1b16fc94c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.2;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#1: x = "1"; x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#2: x = 1; x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#3: x = new String("1"); x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#4: x = 1; x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#5: x = "1"; x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#6: x = new Number(1); x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#7: x = new String("1"); x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#8: x = new Number(1); x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x <<= 1;
+if (x !== 0) {
+ $ERROR('#9: x = "x"; x <<= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x <<= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x <<= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.3.js
new file mode 100644
index 000000000..7c5f17776
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.3;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x <<= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x <<= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x <<= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x <<= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x <<= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x <<= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.4.js
new file mode 100644
index 000000000..3800ab525
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.4;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x <<= 1;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x <<= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x <<= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x <<= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.5.js
new file mode 100644
index 000000000..18deaaaf0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.5;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#1: x = true; x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x <<= true;
+if (x !== 2) {
+ $ERROR('#2: x = "1"; x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#3: x = new Boolean(true); x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = "1"; x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#5: x = true; x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x <<= true;
+if (x !== 2) {
+ $ERROR('#6: x = new String("1"); x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#7: x = new Boolean(true); x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#8: x = new String("1"); x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.6.js
new file mode 100644
index 000000000..1cc5a4447
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.6;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x <<= "1";
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x <<= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x <<= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x <<= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.7.js
new file mode 100644
index 000000000..c52ad33ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.7;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x <<= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x <<= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x <<= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x <<= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x <<= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x <<= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.8.js
new file mode 100644
index 000000000..f832c2a96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.8;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x <<= true;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x <<= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x <<= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x <<= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.9.js
new file mode 100644
index 000000000..3bb99368a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.9;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x <<= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x <<= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x <<= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x <<= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x <<= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x <<= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.1.js
new file mode 100644
index 000000000..71c200e37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T1.1;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x >>= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.2.js
new file mode 100644
index 000000000..7f8ef5536
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T1.2;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.3.js
new file mode 100644
index 000000000..e8723881f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T1.3;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#5: x = "x"; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x >>= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x >>= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.4.js
new file mode 100644
index 000000000..f5551f185
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T1.4;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x >>= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x >>= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x >>= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x >>= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.1.js
new file mode 100644
index 000000000..13b5ba2ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.1;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x >>= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.2.js
new file mode 100644
index 000000000..c62c9395e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.2;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#9: x = "x"; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x >>= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x >>= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.3.js
new file mode 100644
index 000000000..bfd29a362
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.3;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x >>= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x >>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.4.js
new file mode 100644
index 000000000..30cec32e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.4;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.5.js
new file mode 100644
index 000000000..1a8aaa499
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.5;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x >>= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.6.js
new file mode 100644
index 000000000..55fd43ea1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.6;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.7.js
new file mode 100644
index 000000000..fd9f5958b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.7;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x >>= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.8.js
new file mode 100644
index 000000000..750b7e95f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.8;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.9.js
new file mode 100644
index 000000000..daeefb75b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.9;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x >>= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.1.js
new file mode 100644
index 000000000..5e81122e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T1.1;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.2.js
new file mode 100644
index 000000000..d03839cc5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T1.2;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.3.js
new file mode 100644
index 000000000..d0863ac95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T1.3;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#5: x = "x"; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x >>>= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x >>>= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.4.js
new file mode 100644
index 000000000..86de3c341
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T1.4;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x >>>= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x >>>= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>>= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>>= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x >>>= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x >>>= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>>= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>>= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.1.js
new file mode 100644
index 000000000..f6f1ef510
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.1;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.2.js
new file mode 100644
index 000000000..7745cd6a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.2;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#9: x = "x"; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x >>>= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x >>>= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.3.js
new file mode 100644
index 000000000..343154982
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.3;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.4.js
new file mode 100644
index 000000000..d070f661a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.4;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.5.js
new file mode 100644
index 000000000..71e1af5c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.5;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.6.js
new file mode 100644
index 000000000..6517c4946
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.6;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.7.js
new file mode 100644
index 000000000..f836c0ced
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.7;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.8.js
new file mode 100644
index 000000000..98835168b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.8;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.9.js
new file mode 100644
index 000000000..55b42c8c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.9;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.1.js
new file mode 100644
index 000000000..dd8f529e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T1.1;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x &= true;
+if (x !== 1) {
+ $ERROR('#1: x = true; x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x &= true;
+if (x !== 1) {
+ $ERROR('#2: x = new Boolean(true); x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#3: x = true; x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = new Boolean(true); x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.2.js
new file mode 100644
index 000000000..5074747ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T1.2;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x &= 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x &= 1;
+if (x !== 1) {
+ $ERROR('#2: x = new Number(1); x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#3: x = 1; x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = new Number(1); x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.3.js
new file mode 100644
index 000000000..e411f1844
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T1.3;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x &= "1";
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x &= "1";
+if (x !== 1) {
+ $ERROR('#2: x = new String("1"); x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#3: x = "1"; x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = new String("1"); x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x &= "1";
+if (x !== 0) {
+ $ERROR('#5: x = "x"; x &= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x &= "x";
+if (x !== 0) {
+ $ERROR('#6: x = "1"; x &= "x"; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.4.js
new file mode 100644
index 000000000..803652d95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T1.4;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+*/
+
+//CHECK#1
+x = null;
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x &= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x &= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x &= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.1.js
new file mode 100644
index 000000000..8ebad51d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.1;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x &= 1;
+if (x !== 1) {
+ $ERROR('#1: x = true; x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x &= true;
+if (x !== 1) {
+ $ERROR('#2: x = 1; x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x &= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = 1; x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = true; x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x &= true;
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.2.js
new file mode 100644
index 000000000..4015289ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.2;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x &= 1;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x &= "1";
+if (x !== 1) {
+ $ERROR('#2: x = 1; x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x &= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = 1; x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = "1"; x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x &= "1";
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new String("1"); x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x &= 1;
+if (x !== 0) {
+ $ERROR('#9: x = "x"; x &= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x &= "x";
+if (x !== 0) {
+ $ERROR('#10: x = 1; x &= "x"; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.3.js
new file mode 100644
index 000000000..c5ee9f246
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.3;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x &= null;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x &= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x &= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x &= null;
+if (x !== 0) {
+ $ERROR('#3: x = new Number(1); x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x &= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x &= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.4.js
new file mode 100644
index 000000000..f56b75fe8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.4;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x &= 1;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x &= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = new Number(1); x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x &= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x &= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.5.js
new file mode 100644
index 000000000..15df5e80a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.5;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x &= "1";
+if (x !== 1) {
+ $ERROR('#1: x = true; x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x &= true;
+if (x !== 1) {
+ $ERROR('#2: x = "1"; x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x &= "1";
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = "1"; x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#5: x = true; x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x &= true;
+if (x !== 1) {
+ $ERROR('#6: x = new String("1"); x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new String("1"); x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.6.js
new file mode 100644
index 000000000..7f0651882
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.6;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x &= "1";
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x &= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x &= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x &= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.7.js
new file mode 100644
index 000000000..21e1587a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.7;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x &= null;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x &= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x &= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x &= null;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x &= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x &= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.8.js
new file mode 100644
index 000000000..44eec8102
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.8;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = true; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x &= true;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x &= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x &= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x &= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.9.js
new file mode 100644
index 000000000..c02b8361a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.9;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x &= null;
+if (x !== 0) {
+ $ERROR('#1: x = true; x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x &= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x &= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x &= null;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x &= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x &= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A1.js
new file mode 100644
index 000000000..5ff5156fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.14_A1;
+* @section: 11.14;
+* @assertion: White Space and Line Terminator between Expression and , or between , and AssignmentExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("false\u0009,\u0009true")) !== true) {
+ $ERROR('#1: (false\\u0009,\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("false\u000B,\u000Btrue")) !== true) {
+ $ERROR('#2: (false\\u000B,\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("false\u000C,\u000Ctrue")) !== true) {
+ $ERROR('#3: (false\\u000C,\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("false\u0020,\u0020true")) !== true) {
+ $ERROR('#4: (false\\u0020,\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("false\u00A0,\u00A0true")) !== true) {
+ $ERROR('#5: (false\\u00A0,\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("false\u000A,\u000Atrue")) !== true) {
+ $ERROR('#6: (false\\u000A,\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("false\u000D,\u000Dtrue")) !== true) {
+ $ERROR('#7: (false\\u000D,\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("false\u2028,\u2028true")) !== true) {
+ $ERROR('#8: (false\\u2028,\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("false\u2029,\u2029true")) !== true) {
+ $ERROR('#9: (false\\u2029,\\u2029true) === true');
+}
+
+
+//CHECK#10
+if ((eval("false\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029,\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (false\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029,\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T1.js
new file mode 100644
index 000000000..604a35ff4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.14_A2.1_T1;
+ * @section: 11.14;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Expression is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1,2) !== 2) {
+ $ERROR('#1: (1,2) === 2. Actual: ' + ((1,2)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x, 2) !== 2) {
+ $ERROR('#2: var x = 1; (x, 2) === 2. Actual: ' + ((x, 2)));
+}
+
+//CHECK#3
+var y = 2;
+if ((1, y) !== 2) {
+ $ERROR('#3: var y = 2; (1, y) === 2. Actual: ' + ((1, y)));
+}
+
+//CHECK#4
+var x = 1;
+var y = 2;
+if ((x, y) !== 2) {
+ $ERROR('#4: var x = 1; var y = 2; (x, y) === 2. Actual: ' + ((x, y)));
+}
+
+//CHECK#5
+var x = 1;
+if ((x, x) !== 1) {
+ $ERROR('#5: var x = 1; (x, x) === 1. Actual: ' + ((x, x)));
+}
+
+//CHECK#6
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = true;
+objecty.prop = 1.1;
+if ((objectx.prop = false, objecty.prop) !== objecty.prop) {
+ $ERROR('#6: var objectx = new Object(); var objecty = new Object(); objectx.prop = true; objecty.prop = 1; (objectx.prop = false, objecty.prop) === objecty.prop. Actual: ' + ((objectx.prop = false, objecty.prop)));
+} else {
+ if (objectx.prop !== false) {
+ $ERROR('#6: var objectx = new Object(); var objecty = new Object(); objectx.prop = true; objecty.prop = 1; objectx.prop = false, objecty.prop; objectx.prop === false');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T2.js
new file mode 100644
index 000000000..20e8e187d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.14_A2.1_T2;
+* @section: 11.14;
+* @assertion: Operator uses GetValue;
+* @description: If GetBase(Expression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x, 1;
+ $ERROR('#1.1: x, 1 throw ReferenceError. Actual: ' + (x, 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x, 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T3.js
new file mode 100644
index 000000000..dc095e058
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.14_A2.1_T3;
+* @section: 11.14;
+* @assertion: Operator uses GetValue;
+* @description: If GetBase(AssigmentExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1, y;
+ $ERROR('#1.1: 1, y throw ReferenceError. Actual: ' + (1, y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1, y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A3.js
new file mode 100644
index 000000000..6d4a53ea4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.14_A3;
+* @section: 11.14;
+* @assertion: Comma Operator evaluates all Expressions and returns the last of them;
+* @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+var y = 0;
+var z = 0;
+if ((x = 1, y = 2, z = 3) !== 3) {
+ $ERROR('#1: var x = 0; var y = 0; var z = 0; (x = 1, y = 2, z = 3) === 3. Actual: ' + ((x = 1, y = 2, z = 3)));
+}
+
+var x = 0;
+var y = 0;
+var z = 0;
+x = 1, y = 2, z = 3;
+
+//CHECK#2
+if (x !== 1) {
+ $ERROR('#2: var x = 0; var y = 0; var z = 0; x = 1, y = 2, z = 3; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+if (y !== 2) {
+ $ERROR('#3: var x = 0; var y = 0; var z = 0; x = 1, y = 2, z = 3; y === 2. Actual: ' + (y));
+}
+
+//CHECK#4
+if (z !== 3) {
+ $ERROR('#4: var x = 0; var y = 0; var z = 0; x = 1, y = 2, z = 3; z === 3. Actual: ' + (z));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A1.js
new file mode 100644
index 000000000..dc790988f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A1;
+ * @section: 11.1.1;
+ * @assertion: The "this" is reserved word;
+ * @description: Checking if execution of "this=1" fails;
+ * @negative
+*/
+
+this = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2.js
new file mode 100644
index 000000000..0b8c7854d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A2;
+ * @section: 11.1.1;
+ * @assertion: Being in global code, "this" and "eval("this")" return the global object;
+ * @description: Checking if execution of "this" and eval("this"), which are in global code, return the global object by using toString function;
+*/
+
+//CHECK#1
+if (this.toString() !== toString()) {
+ $ERROR('#1: this.toString() === toString(). Actual: ' + (this.toString()));
+}
+
+//CHECK#2
+if (eval("this").toString() !== toString()) {
+ $ERROR('#2: eval("this").toString() === toString(). Actual: ' + (this.toString()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.1.js
new file mode 100644
index 000000000..55b81eedc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A3.1;
+ * @section: 11.1.1;
+ * @assertion: Being in function code, "this" and eval("this"), called as a functions, return the global object;
+ * @description: Creating function which returns "this" or eval("this");
+*/
+
+//CHECK#1
+function MyFunction() {return this}
+if (MyFunction() !== this) {
+ $ERROR('#1: function MyFunction() {return this} MyFunction() === this. Actual: ' + (MyFunction()));
+}
+
+//CHECK#2
+function MyFunction() {return eval("this")}
+if (MyFunction() !== this) {
+ $ERROR('#2: function MyFunction() {return eval("this")} MyFunction() === this. Actual: ' + (MyFunction()));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.2.js
new file mode 100644
index 000000000..888489b24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A3.2;
+ * @section: 11.1.1;
+ * @assertion: Being in function code, "this" and eval("this"), called as a constructors, return the object;
+ * @description: Create function. It have property, that returned "this";
+*/
+
+//CHECK#1
+function MyFunction() {this.THIS = this}
+if ((new MyFunction()).THIS.toString() !== "[object Object]") {
+ $ERROR('#1: function MyFunction() {this.THIS = this} (new MyFunction()).THIS.toString() !== "[object Object]". Actual: ' + ((new MyFunction()).THIS.toString()));
+}
+
+//CHECK#2
+function MyFunction() {this.THIS = eval("this")}
+if ((new MyFunction()).THIS.toString() !== "[object Object]") {
+ $ERROR('#2: function MyFunction() {this.THIS = eval("this")} (new MyFunction()).THIS.toString() !== "[object Object]". Actual: ' + ((new MyFunction()).THIS.toString()));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.1.js
new file mode 100644
index 000000000..b393237f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A4.1;
+ * @section: 11.1.1;
+ * @assertion: Being in anonymous code, "this" and eval("this"), called as a function, return the global object;
+ * @description: Creating function with new Function() constructor;
+*/
+
+//CHECK#1
+var MyFunction = new Function("return this");
+if (MyFunction() !== this) {
+ $ERROR('#1: var MyFunction = new Function("return this"); MyFunction() === this. Actual: ' + (MyFunction()));
+}
+
+//CHECK#2
+var MyFunction = new Function("return eval(\'this\')");
+if (MyFunction() !== this) {
+ $ERROR('#2: var MyFunction = new Function("return eval(\'this\')"); MyFunction() === this. Actual: ' + (MyFunction()));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.2.js
new file mode 100644
index 000000000..ddf3f81f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A4.2;
+ * @section: 11.1.1;
+ * @assertion: Being in anonymous code, "this" and eval("this"), called as a constructor, return the object;
+ * @description: Creating function by using new Function() constructor. It has the property, which returns "this";
+*/
+
+//CHECK#1
+var MyFunction = new Function("this.THIS = this");
+var MyObject = new MyFunction();
+if (MyObject.THIS.toString() !== "[object Object]") {
+ $ERROR('#1: var MyFunction = new Function("this.THIS = this"); var MyObject = new MyFunction(); MyObject.THIS.toString() === "[object Object]". Actual: ' + (MyObject.THIS.toString()));
+}
+
+//CHECK#2
+var MyFunction = new Function("this.THIS = eval(\'this\')");
+var MyObject = new MyFunction();
+if (MyObject.THIS.toString() !== "[object Object]") {
+ $ERROR('#2: var MyFunction = new Function("this.THIS = eval(\'this\')"); var MyObject = new MyFunction(); MyObject.THIS.toString() === "[object Object]". Actual: ' + (MyObject.THIS.toString()));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T1.js
new file mode 100644
index 000000000..259601464
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.2_A1_T1;
+ * @section: 11.1.2;
+ * @assertion: The result of evaluating an Identifier is always a value of type Reference;
+ * @description: Creating variables without defining it;
+*/
+
+//CHECK#1
+if (this.x !== undefined) {
+ $ERROR('#1: this.x === undefined. Actual: ' + (this.x));
+}
+
+//CHECK#2
+var object = new Object();
+if (object.prop !== undefined) {
+ $ERROR('#2: var object = new Object(); object.prop === undefined. Actual: ' + (object.prop));
+}
+
+//CHECK#3
+this.y++;
+if (isNaN(y) !== true) {
+ $ERROR('#3: this.y++; y === Not-a-Number. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T2.js
new file mode 100644
index 000000000..e64114330
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.2_A1_T2;
+ * @section: 11.1.2;
+ * @assertion: The result of evaluating an Identifier is always a value of type Reference;
+ * @description: Trying to generate ReferenceError;
+*/
+
+//CHECK#1
+try {
+ this.z;
+ z;
+ $ERROR('#1.1: this.z; z === undefined throw ReferenceError. Actual: ' + (z));
+} catch(e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: this.z; z === undefined throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.1.js
new file mode 100644
index 000000000..1dee93826
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.1;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ ];
+* @description: Checking various properties of the array defined with expression "var array = []";
+*/
+
+var array = [];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = []; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = []; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = []; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 0) {
+ $ERROR('#4: var array = []; array.length === 0. Actual: ' + (array.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.2.js
new file mode 100644
index 000000000..5fe58b33f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.2;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ Elision ];
+* @description: Checking various properties the array defined with "var array = [,,,,,]";
+*/
+
+var array = [,,,,,];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [,,,,,]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [,,,,,]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [,,,,,]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [,,,,,]; array.length === 5. Actual: ' + (array.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.3.js
new file mode 100644
index 000000000..6f85eaac1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.3.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.3;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ AssignmentExpression ];
+* @description: Checking various properteis and contents of the array defined with "var array = [1,2,3,4,5]";
+*/
+
+var array = [1,2,3,4,5];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [1,2,3,4,5]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [1,2,3,4,5]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [1,2,3,4,5]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [1,2,3,4,5]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== 1) {
+ $ERROR('#5: var array = [1,2,3,4,5]; array[0] === 1. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== 2) {
+ $ERROR('#6: var array = [1,2,3,4,5]; array[1] === 2. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== 3) {
+ $ERROR('#7: var array = [1,2,3,4,5]; array[2] === 3. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== 4) {
+ $ERROR('#8: var array = [1,2,3,4,5]; array[3] === 4. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== 5) {
+ $ERROR('#9: var array = [1,2,3,4,5]; array[4] === 5. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.4.js
new file mode 100644
index 000000000..bad33531c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.4.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.4;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ Elision, AssignmentExpression ];
+* @description: Checking various properteis and content of the array defined with "var array = [,,,1,2]";
+*/
+
+var array = [,,,1,2];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [,,,1,2]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [,,,1,2]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [,,,1,2]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [,,,1,2]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== undefined) {
+ $ERROR('#5: var array = [,,,1,2]; array[0] === undefined. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== undefined) {
+ $ERROR('#6: var array = [,,,1,2]; array[1] === undefined. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== undefined) {
+ $ERROR('#7: var array = [,,,1,2]; array[2] === undefined. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== 1) {
+ $ERROR('#8: var array = [,,,1,2]; array[3] === 1. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== 2) {
+ $ERROR('#9: var array = [,,,1,2]; array[4] === 2. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.5.js
new file mode 100644
index 000000000..78a77f9b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.5.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.5;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ AssignmentExpression, Elision ];
+* @description: Checking various properteis and contents of the array defined with "var array = [4,5,,,,]";
+*/
+
+var array = [4,5,,,,];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [4,5,,,,]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [4,5,,,,]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [4,5,,,,]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [4,5,,,,]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== 4) {
+ $ERROR('#5: var array = [4,5,,,,]; array[0] === 4. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== 5) {
+ $ERROR('#6: var array = [4,5,,,,]; array[1] === 5. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== undefined) {
+ $ERROR('#7: var array = [4,5,,,,]; array[2] === undefined. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== undefined) {
+ $ERROR('#8: var array = [4,5,,,,]; array[3] === undefined. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== undefined) {
+ $ERROR('#9: var array = [4,5,,,,]; array[4] === undefined. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.6.js
new file mode 100644
index 000000000..d3bf2cbc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.6;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ Elision, AssignmentExpression, Elision ];
+* @description: Checking various properteis and contents of the array defined with "var array = [,,3,,,]";
+*/
+
+var array = [,,3,,,];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [,,3,,,]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [,,3,,,]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [,,3,,,]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [,,3,,,]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== undefined) {
+ $ERROR('#5: var array = [,,3,,,]; array[0] === undefined. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== undefined) {
+ $ERROR('#6: var array = [,,3,,,]; array[1] === undefined. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== 3) {
+ $ERROR('#7: var array = [,,3,,,]; array[2] === 3. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== undefined) {
+ $ERROR('#8: var array = [,,3,,,]; array[3] === undefined. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== undefined) {
+ $ERROR('#9: var array = [,,3,,,]; array[4] === undefined. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.7.js
new file mode 100644
index 000000000..c10e2fc7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.7.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.7;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ AssignmentExpression, Elision, AssignmentExpression ];
+* @description: Checking various properteis and contents of the array defined with "var array = [1,2,,4,5]";
+*/
+
+var array = [1,2,,4,5];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [1,2,,4,5]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [1,2,,4,5]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [1,2,,4,5]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [1,2,,4,5]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== 1) {
+ $ERROR('#5: var array = [1,2,,4,5]; array[0] === 1. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== 2) {
+ $ERROR('#6: var array = [1,2,,4,5]; array[1] === 2. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== undefined) {
+ $ERROR('#7: var array = [1,2,,4,5]; array[2] === undefined. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== 4) {
+ $ERROR('#8: var array = [1,2,,4,5]; array[3] === 4. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== 5) {
+ $ERROR('#9: var array = [1,2,,4,5]; array[4] === 5. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A2.js
new file mode 100644
index 000000000..ebdb09bbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A2.js
@@ -0,0 +1,127 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A2;
+* @section: 11.1.4;
+* @assertion: Create multi dimensional array;
+* @description: Checking various properteis and contents of the arrya defined with "var array = [[1,2], [3], []]";
+*/
+
+var array = [[1,2], [3], []];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [[1,2], [3], []]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [[1,2], [3], []]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [[1,2], [3], []]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 3) {
+ $ERROR('#4: var array = [[1,2], [3], []]; array.length === 3. Actual: ' + (array.length));
+}
+
+var subarray = array[0];
+
+//CHECK#5
+if (typeof subarray !== "object") {
+ $ERROR('#5: var array = [[1,2], [3], []]; var subarray = array[0]; typeof subarray === "object". Actual: ' + (typeof subarray));
+}
+
+//CHECK#6
+if (subarray instanceof Array !== true) {
+ $ERROR('#6: var array = [[1,2], [3], []]; var subarray = array[0]; subarray instanceof Array === true');
+}
+
+//CHECK#7
+if (subarray.toString !== Array.prototype.toString) {
+ $ERROR('#7: var array = [[1,2], [3], []]; var subarray = array[0]; subarray.toString === Array.prototype.toString. Actual: ' + (subarray.toString));
+}
+
+//CHECK#8
+if (subarray.length !== 2) {
+ $ERROR('#8: var array = [[1,2], [3], []]; var subarray = array[0]; subarray.length === 2. Actual: ' + (subarray.length));
+}
+
+//CHECK#9
+if (subarray[0] !== 1) {
+ $ERROR('#9: var array = [[1,2], [3], []]; var subarray = array[0]; subarray[0] === 1. Actual: ' + (subarray[0]));
+}
+
+//CHECK#10
+if (subarray[1] !== 2) {
+ $ERROR('#10: var array = [[1,2], [3], []]; var subarray = array[1]; subarray[1] === 2. Actual: ' + (subarray[1]));
+}
+
+var subarray = array[1];
+
+//CHECK#11
+if (typeof subarray !== "object") {
+$ERROR('#11: var array = [[1,2], [3], []]; var subarray = array[1]; typeof subarray === "object". Actual: ' + (typeof subarray));
+}
+
+//CHECK#12
+if (subarray instanceof Array !== true) {
+$ERROR('#12: var array = [[1,2], [3], []]; var subarray = array[1]; subarray instanceof Array === true');
+}
+
+//CHECK#13
+if (subarray.toString !== Array.prototype.toString) {
+$ERROR('#13: var array = [[1,2], [3], []]; var subarray = array[1]; subarray.toString === Array.prototype.toString. Actual: ' + (subarray.toString));
+}
+
+//CHECK#14
+if (subarray.length !== 1) {
+$ERROR('#14: var array = [[1,2], [3], []]; var subarray = array[1]; subarray.length === 1. Actual: ' + (subarray.length));
+}
+
+//CHECK#15
+if (subarray[0] !== 3) {
+$ERROR('#15: var array = [[1,2], [3], []]; var subarray = array[1]; subarray[0] === 3. Actual: ' + (subarray[0]));
+}
+
+var subarray = array[2];
+
+//CHECK#16
+if (typeof subarray !== "object") {
+$ERROR('#16: var array = [[1,2], [3], []]; var subarray = array[2]; typeof subarray === "object". Actual: ' + (typeof subarray));
+}
+
+//CHECK#17
+if (subarray instanceof Array !== true) {
+$ERROR('#17: var array = [[1,2], [3], []]; var subarray = array[2]; subarray instanceof Array === true');
+}
+
+//CHECK#18
+if (subarray.toString !== Array.prototype.toString) {
+$ERROR('#18: var array = [[1,2], [3], []]; var subarray = array[2]; subarray.toString === Array.prototype.toString. Actual: ' + (subarray.toString));
+}
+
+//CHECK#19
+if (subarray.length !== 0) {
+$ERROR('#19: var array = [[1,2], [3], []]; var subarray = array[2]; subarray.length === 0. Actual: ' + (subarray.length));
+}
+
+//CHECK#20
+if (array[0][0] !== 1) {
+ $ERROR('#20: var array = [[1,2], [3], []]; array[0][0] === 1. Actual: ' + (array[0][0]));
+}
+
+//CHECK#21
+if (array[0][1] !== 2) {
+ $ERROR('#21: var array = [[1,2], [3], []]; array[0][1] === 2. Actual: ' + (array[0][1]));
+}
+
+//CHECK#22
+if (array[1][0] !== 3) {
+ $ERROR('#722: var array = [[1,2], [3], []]; array[1][0] === 3. Actual: ' + (array[1][0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.1.js
new file mode 100644
index 000000000..6c30ee266
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A1.1;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { };
+* @description: Checking various properteis of the object defined with "var object = {}";
+*/
+
+var object = {};
+
+//CHECK#1
+if (typeof object !== "object") {
+ $ERROR('#1: var object = {}; typeof object === "object". Actual: ' + (typeof object));
+}
+
+//CHECK#2
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {}; object instanceof Object === true');
+}
+
+//CHECK#3
+if (object.toString !== Object.prototype.toString) {
+ $ERROR('#3: var object = {}; object.toString === Object.prototype.toString. Actual: ' + (object.toString));
+}
+
+//CHECK#4
+if (object.toString() !== "[object Object]") {
+ $ERROR('#4: var object = {}; object.toString === "[object Object]". Actual: ' + (object.toString));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.2.js
new file mode 100644
index 000000000..31bd73453
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A1.2;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { NumericLiteral : AssignmentExpression};
+* @description: Checking various properteis and contents of the object defined with "var object = {1 : true}";
+*/
+
+var object = {1 : true};
+
+//CHECK#1
+if (typeof object !== "object") {
+ $ERROR('#1: var object = {1 : true}; typeof object === "object". Actual: ' + (typeof object));
+}
+
+//CHECK#2
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {1 : true}; object instanceof Object === true');
+}
+
+//CHECK#3
+if (object.toString !== Object.prototype.toString) {
+ $ERROR('#3: var object = {1 : true}; object.toString === Object.prototype.toString. Actual: ' + (object.toString));
+}
+
+//CHECK#4
+if (object[1] !== true) {
+ $ERROR('#4: var object = {1 : true}; object[1] === true');
+}
+
+//CHECK#5
+if (object["1"] !== true) {
+ $ERROR('#5: var object = {1 : true}; object["1"] === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.3.js
new file mode 100644
index 000000000..28d9a0fbd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.3.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A1.3;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { StringLiteral : AssignmentExpression};
+* @description: Checking various properteis and contents of the object defined with "var object = {"x" : true}";
+*/
+
+var object = {"x" : true};
+
+//CHECK#1
+if (typeof object !== "object") {
+ $ERROR('#1: var object = {"x" : true}; typeof object === "object". Actual: ' + (typeof object));
+}
+
+//CHECK#2
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {"x" : true}; object instanceof Object === true');
+}
+
+//CHECK#3
+if (object.toString !== Object.prototype.toString) {
+ $ERROR('#3: var object = {"x" : true}; object.toString === Object.prototype.toString. Actual: ' + (object.toString));
+}
+
+//CHECK#4
+if (object["x"] !== true) {
+ $ERROR('#4: var object = {"x" : true}; object["x"] === true');
+}
+
+//CHECK#5
+if (object.x !== true) {
+ $ERROR('#5: var object = {"x" : true}; object.x === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.4.js
new file mode 100644
index 000000000..77065a3be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A1.4;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { Identifier : AssignmentExpression};
+* @description: Checking various properteis and contents of the object defined with "var object = {prop : true}";
+*/
+
+var object = {prop : true};
+
+//CHECK#1
+if (typeof object !== "object") {
+ $ERROR('#1: var object = {prop : true}; typeof object === "object". Actual: ' + (typeof object));
+}
+
+//CHECK#2
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {prop : true}; object instanceof Object === true');
+}
+
+//CHECK#3
+if (object.toString !== Object.prototype.toString) {
+ $ERROR('#3: var object = {prop : true}; object.toString === Object.prototype.toString. Actual: ' + (object.toString));
+}
+
+//CHECK#4
+if (object["prop"] !== true) {
+ $ERROR('#4: var object = {prop : true}; object["prop"] === true');
+}
+
+//CHECK#5
+if (object.prop !== true) {
+ $ERROR('#5: var object = {prop : true}; object.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A2.js
new file mode 100644
index 000000000..7959ef1aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A2.js
@@ -0,0 +1,93 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A2;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { PropertyName : AssignmentExpression };
+* @description: Creating property "prop" of various types(boolean, number and etc.);
+*/
+
+//CHECK#1
+var x = true;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#1: var x = true; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#2: var x = new Boolean(true); var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#3
+var x = 1;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#3: var x = 1; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#4
+var x = new Number(1);
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#4: var x = new Number(1); var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#5
+var x = "1";
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#5: var x = "1"; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#6
+var x = new String(1);
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#6: var x = new String(1); var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#7
+var x = undefined;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#7: var x = undefined; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#8
+var x = null;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#8: var x = null; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#9
+var x = {};
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#9: var x = {}; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#10
+var x = [1,2];
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#10: var x = [1,2]; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#11
+var x = function() {};
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#11: var x = function() {}; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#12
+var x = this;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#12: var x = this; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A3.js
new file mode 100644
index 000000000..89a844b63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A3;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { PropertyNameAndValueList };
+* @description: Creating the object defined with "var object = {0 : 1, "1" : "x", o : {}}";
+*/
+
+var object = {0 : 1, "1" : "x", o : {}};
+
+//CHECK#1
+if (object[0] !== 1) {
+ $ERROR('#1: var object = {0 : 1; "1" : "x"; o : {}}; object[0] === 1. Actual: ' + (object[0]));
+}
+
+//CHECK#2
+if (object["1"] !== "x") {
+ $ERROR('#2: var object = {0 : 1; "1" : "x"; o : {}}; object["1"] === "x". Actual: ' + (object["1"]));
+}
+
+//CHECK#3
+if (typeof object.o !== "object") {
+ $ERROR('#1: var object = {0 : 1; "1" : "x"; o : {}}; typeof object.o === "object". Actual: ' + (typeof object.o));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.1.js
new file mode 100644
index 000000000..bda88873b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A4.1;
+* @section: 11.1.5;
+* @assertion: The PropertyName is not BooleanLiteral;
+* @description: Checking if execution of "var object = {true : 1}" fails;
+* @negative
+*/
+
+//CHECK#1
+var object = {true : 1};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.2.js
new file mode 100644
index 000000000..d2fbf4d1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A4.2;
+* @section: 11.1.5;
+* @assertion: The PropertyName is not nullLiteral;
+* @description: Checking if execution of "var object = {null : true}" fails;
+* @negative
+*/
+
+//CHECK#1
+var object = {null : true};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.3.js
new file mode 100644
index 000000000..639e41a45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.3.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A4.3;
+* @section: 11.1.5;
+* @assertion: The PropertyName is undefined, ToString(BooleanLiteral), ToString(nullLiteral);
+* @description: Creating properties with following names: undefined, 'true', 'null';
+*/
+
+//CHECK#1
+var object = {undefined : true};
+if (object.undefined !== true) {
+ $ERROR('#1: var object = {undefined : true}; object.undefined === true');
+}
+
+//CHECK#2
+var object = {undefined : true};
+if (object["undefined"] !== true) {
+ $ERROR('#2: var object = {undefined : true}; object["undefined"] === true');
+}
+
+//CHECK#3
+var object = {"true" : true};
+if (object["true"] !== true) {
+ $ERROR('#3: var object = {"true" : true}; object["true"] === true');
+}
+
+//CHECK#4
+var object = {"null" : true};
+if (object["null"] !== true) {
+ $ERROR('#4: var object = {"null" : true}; object["null"] === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A1.js
new file mode 100644
index 000000000..78c0e9d43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A1;
+* @section: 11.1.6, 7.2, 7.3;
+* @assertion: White Space and Line Terminator inside "grouping" operator are allowed;
+* @description: Inserting WhiteSpaces and LineTerminators into grouping operator. Eval is used;
+*/
+
+//CHECK#1
+if (eval("(\u00091\u0009)") !== 1) {
+ $ERROR('#1: (\\u00091\\u0009) === 1');
+}
+
+//CHECK#2
+if (eval("(\u000B1\u000B)") !== 1) {
+ $ERROR('#2: (\\u000B1\\u000B) === 1');
+}
+
+//CHECK#3
+if (eval("(\u000C1\u000C)") !== 1) {
+ $ERROR('#3: (\\u000C1\\u000C) === 1');
+}
+
+//CHECK#4
+if (eval("(\u00201\u0020)") !== 1) {
+ $ERROR('#4: (\\u00201\\u0020 === 1');
+}
+
+//CHECK#5
+if (eval("(\u00A01\u00A0)") !== 1) {
+ $ERROR('#5: (\\u00A01\\u00A0) === 1');
+}
+
+//CHECK#6
+if (eval("(\u000A1\u000A)") !== 1) {
+ $ERROR('#6: (\\u000A1\\u000A) === 1');
+}
+
+//CHECK#7
+if (eval("(\u000D1\u000D)") !== 1) {
+ $ERROR('#7: (\\u000D1\\u000D) === 1');
+}
+
+//CHECK#8
+if (eval("(\u20281\u2028)") !== 1) {
+ $ERROR('#8: (\\u20281\\u2028) === 1');
+}
+
+//CHECK#9
+if (eval("(\u20291\u2029)") !== 1) {
+ $ERROR('#9: (\\u20291\\u2029) === 1');
+}
+
+//CHECK#10
+if (eval("(\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029)") !== 1) {
+ $ERROR('#10: (\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A2.js
new file mode 100644
index 000000000..23152e4b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A2;
+* @section: 11.1.6;
+* @assertion: "This" operator doesn't use GetValue. The operators "delete" and "typeof" can be applied to parenthesised expressions;
+* @description: Applying "delete" and "typeof" operators to an undefined variable and a property of an object;
+*/
+
+//CHECK#1
+if (delete (x) !== true) {
+ $ERROR('#1: delete (x) === true');
+}
+
+//CHECK#2
+if (typeof (x) !== "undefined") {
+ $ERROR('#2: typeof (x) === "undefined". Actual: ' + (typeof (x)));
+}
+
+var object = {};
+//CHECK#3
+if (delete (object.prop) !== true) {
+ $ERROR('#3: var object = {}; delete (object.prop) === true');
+}
+
+//CHECK#4
+if (typeof (object.prop) !== "undefined") {
+ $ERROR('#4: var object = {}; typeof (object.prop) === "undefined". Actual: ' + (typeof (object.prop)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T1.js
new file mode 100644
index 000000000..245c653ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T1;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to Boolean;
+*/
+
+// Check for Boolean
+
+//CHECK#1
+if ((true) !== true) {
+ $ERROR('#1: (true) === true');
+}
+
+//CHECK#2
+var x = new Boolean(true);
+if ((x) !== x) {
+ $ERROR('#2: var x = new Boolean(true); (x) === x. Actual: ' + ((x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T2.js
new file mode 100644
index 000000000..3593f1563
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T2;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to Number;
+*/
+
+//Check for Number
+
+//CHECK#1
+if ((1) !== 1) {
+ $ERROR('#1: (1) === 1. Actual: ' + ((1)));
+}
+
+//CHECK#2
+var x = new Number(1);
+if ((x) !== x) {
+ $ERROR('#2: var x = new Number(1); (x) === x. Actual: ' + ((x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T3.js
new file mode 100644
index 000000000..9658c7616
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T3;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to String;
+*/
+
+//Check for String
+
+//CHECK#1
+if (("1") !== "1") {
+ $ERROR('#1: ("1") === "1". Actual: ' + (("1")));
+}
+
+//CHECK#2
+if (("x") !== "x") {
+ $ERROR('#2: ("x") === "x". Actual: ' + (("x")));
+}
+
+//CHECK#3
+var x = new Number("1");
+if ((x) !== x) {
+ $ERROR('#3: var x = new Number("1"); (x) === x. Actual: ' + ((x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T4.js
new file mode 100644
index 000000000..0387ed371
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T4;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to undefined;
+*/
+
+//Check for undefined and null
+
+//CHECK#1
+if ((undefined) !== undefined) {
+ $ERROR('#1: (undefined) === undefined. Actual: ' + ((undefined)));
+}
+
+//CHECK#2
+if ((void 0) !== void 0) {
+ $ERROR('#2: (void 0) === void 0. Actual: ' + ((void 0)));
+}
+
+//CHECK#2
+if ((null) !== null) {
+ $ERROR('#2: (null) === null. Actual: ' + ((null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T5.js
new file mode 100644
index 000000000..473673bf5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T5;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Using grouping operator in declaration of variables;
+*/
+
+//CHECK#1
+(x) = 1;
+if (x !== 1) {
+ $ERROR('#1: (x) = 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var y = 1; (y)++; ++(y); (y)--; --(y);
+if (y !== 1) {
+ $ERROR('#2: var y = 1; (y)++; ++(y); (y)--; --(y); y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T6.js
new file mode 100644
index 000000000..3fa268af8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T6;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to delete and typeof operators;
+*/
+
+//CHECK#1
+if (delete (x) !== true) {
+ $ERROR('#1: delete (x) === true');
+}
+
+//CHECK#2
+if (typeof (x) !== "undefined") {
+ $ERROR('#2: typeof (x) === "undefined". Actual: ' + (typeof (x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.1.js
new file mode 100644
index 000000000..cc4aeb058
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A1.1;
+* @section: 11.2.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MemberExpression or CallExpression and "." and between "." and Identifier are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("Number\u0009.\u0009POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number\\u0009.\\u0009POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#2
+if (eval("Number\u000B.\u000BPOSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: Number\\u000B.\\u000BPOSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#3
+if (eval("Number\u000C.\u000CPOSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: Number\\u000C.\\u000CPOSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#4
+if (eval("Number\u0020.\u0020POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: Number\\u0020.\\u0020POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#5
+if (eval("Number\u00A0.\u00A0POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5: Number\\u00A0.\\u00A0POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#6
+if (eval("Number\u000A.\u000APOSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6: Number\\u000A.\\u000APOSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#7
+if (eval("Number\u000D.\u000DPOSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7: Number\\u000D.\\u000DPOSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#8
+if (eval("Number\u2028.\u2028POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8: Number\\u2028.\\u2028POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#9
+if (eval("Number\u2029.\u2029POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9: Number\\u2029.\\u2029POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#10
+if (eval("Number\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029.\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#10: Number\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029.\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.2.js
new file mode 100644
index 000000000..3a8fb8fdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A1.2;
+* @section: 11.2.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "[" and MemberExpression or CallExpression and between Identifier and "]" are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval('Number[\u0009"POSITIVE_INFINITY"\u0009]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number[\\u0009"POSITIVE_INFINITY"\\u0009] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#2
+if (eval('Number[\u000B"POSITIVE_INFINITY"\u000B]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: Number[\\u000B"POSITIVE_INFINITY"\\u000B] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#3
+if (eval('Number[\u000C"POSITIVE_INFINITY"\u000C]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: Number[\\u000C"POSITIVE_INFINITY"\\u000C] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#4
+if (eval('Number[\u0020"POSITIVE_INFINITY"\u0020]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: Number[\\u0020"POSITIVE_INFINITY"\\u0020] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#5
+if (eval('Number[\u00A0"POSITIVE_INFINITY"\u00A0]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5: Number[\\u00A0"POSITIVE_INFINITY"\\u00A0] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#6
+if (eval('Number[\u000A"POSITIVE_INFINITY"\u000A]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6: Number[\\u000A"POSITIVE_INFINITY"\\u000A] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#7
+if (eval('Number[\u000D"POSITIVE_INFINITY"\u000D]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7: Number[\\u000D"POSITIVE_INFINITY"\\u000D] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#8
+if (eval('Number[\u2028"POSITIVE_INFINITY"\u2028]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8: Number[\\u2028"POSITIVE_INFINITY"\\u2028] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#9
+if (eval('Number[\u2029"POSITIVE_INFINITY"\u2029]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9: Number[\\u2029"POSITIVE_INFINITY"\\u2029] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#10
+if (eval('Number[\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029"POSITIVE_INFINITY"\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#10: Number[\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029"POSITIVE_INFINITY"\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029] === Number.POSITIVE_INFINITY');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A2.js
new file mode 100644
index 000000000..d0acf5d96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A2;
+* @section: 11.2.1;
+* @assertion: MemberExpression and CallExpression uses GetValue;
+* @description: If GetBase(MemberExpression or CallExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ object[1];
+ $ERROR('#1.1: object[1] throw ReferenceError. Actual: ' + (object[1]));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: object[1] throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ object.prop;
+ $ERROR('#2.1: object.prop throw ReferenceError. Actual: ' + (object.prop));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#2.2: object.prop throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T1.js
new file mode 100644
index 000000000..2fba84dfb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T1;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression);
+* @description: Checking Boolean case;
+*/
+
+//CHECK#1
+if (true.toString() !== "true") {
+ $ERROR('#1: true.toString() === "true". Actual: ' + (true.toString()));
+}
+
+//CHECK#2
+if (false["toString"]() !== "false") {
+ $ERROR('#2: false["toString"]() === "false". Actual: ' + (false["toString"]()));
+}
+
+//CHECK#3
+if (new Boolean(true).toString() !== "true") {
+ $ERROR('#3: new Boolean(true).toString() === "true". Actual: ' + (new Boolean(true).toString()));
+}
+
+//CHECK#4
+if (new Boolean(false)["toString"]() !== "false") {
+ $ERROR('#4: new Boolean(false)["toString"]() === "false". Actual: ' + (new Boolean(false)["toString"]()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T2.js
new file mode 100644
index 000000000..ffe3d28db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T2;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+* @description: Checking Number case;
+*/
+
+//CHECK#1
+if (1..toString() !== "1") {
+ $ERROR('#1: 1..toString() === "1". Actual: ' + (1..toString()));
+}
+
+//CHECK#2
+if (1.1.toFixed(5) !== "1.10000") {
+ $ERROR('#2: 1.1.toFixed(5) === "1.10000". Actual: ' + (1.1.toFixed(5)));
+}
+
+//CHECK#3
+if (1["toString"]() !== "1") {
+ $ERROR('#3: 1["toString"]() === "1". Actual: ' + (1["toString"]()));
+}
+
+//CHECK#4
+if (1.["toFixed"](5) !== "1.00000") {
+ $ERROR('#4: 1.["toFixed"](5) === "1.00000". Actual: ' + (1.["toFixed"](5)));
+}
+
+//CHECK#5
+if (new Number(1).toString() !== "1") {
+ $ERROR('#5: new Number(1).toString() === "1". Actual: ' + (new Number(1).toString()));
+}
+
+//CHECK#6
+if (new Number(1)["toFixed"](5) !== "1.00000") {
+ $ERROR('#6: new Number(1)["toFixed"](5) === "1.00000". Actual: ' + (new Number(1)["toFixed"](5)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T3.js
new file mode 100644
index 000000000..661d45fdc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T3;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+* @description: Checking String case;
+*
+*/
+
+//CHECK#1
+if ("abc123".charAt(5) !== "3") {
+ $ERROR('#1: "abc123".charAt(5) === "3". Actual: ' + ("abc123".charAt(5)));
+}
+
+//CHECK#2
+if ("abc123"["charAt"](0) !== "a") {
+ $ERROR('#2: "abc123"["charAt"](0) === "a". Actual: ' + ("abc123"["charAt"](0)));
+}
+
+//CHECK#3
+if ("abc123".length !== 6) {
+ $ERROR('#3: "abc123".length === 6. Actual: ' + ("abc123".length));
+}
+
+//CHECK#4
+if ("abc123"["length"] !== 6) {
+ $ERROR('#4: "abc123"["length"] === 6. Actual: ' + ("abc123"["length"]));
+}
+
+//CHECK#5
+if (new String("abc123").length !== 6) {
+ $ERROR('#5: new String("abc123").length === 6. Actual: ' + (new String("abc123").length));
+}
+
+//CHECK#6
+if (new String("abc123")["charAt"](2) !== "c") {
+ $ERROR('#6: new String("abc123")["charAt"](2) === "c". Actual: ' + (new String("abc123")["charAt"](2)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T4.js
new file mode 100644
index 000000000..d2c58c452
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T4.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T4;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+* @description: Checking "undefined" case;
+*/
+
+//CHECK#1
+try {
+ undefined.toString();
+ $ERROR('#1.1: undefined.toString() throw TypeError. Actual: ' + (undefined.toString()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: undefined.toString() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ undefined["toString"]();
+ $ERROR('#2.1: undefined["toString"]() throw TypeError. Actual: ' + (undefined["toString"]()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: undefined["toString"]() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T5.js
new file mode 100644
index 000000000..9f6e6d89f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T5.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T5;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+* @description: Checking "null" case;
+*/
+
+//CHECK#1
+try {
+ null.toString();
+ $ERROR('#1.1: null.toString() throw TypeError. Actual: ' + (null.toString()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: null.toString() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ null["toString"]();
+ $ERROR('#2.1: null["toString"]() throw TypeError. Actual: ' + (null["toString"]()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: null["toString"]() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T1.js
new file mode 100644
index 000000000..6270eeb1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T1;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of this object;
+*/
+
+//CHECK#1-32
+if (typeof (this.NaN) === "undefined") $ERROR('#1: typeof (this.NaN) !== "undefined"');
+if (typeof this['NaN'] === "undefined") $ERROR('#2: typeof this["NaN"] !== "undefined"');
+if (typeof this.Infinity === "undefined") $ERROR('#3: typeof this.Infinity !== "undefined"');
+if (typeof this['Infinity'] === "undefined") $ERROR('#4: typeof this["Infinity"] !== "undefined"');
+if (typeof this.parseInt === "undefined") $ERROR('#5: typeof this.parseInt !== "undefined"');
+if (typeof this['parseInt'] === "undefined") $ERROR('#6: typeof this["parseInt"] !== "undefined"');
+if (typeof this.parseFloat === "undefined") $ERROR('#7: typeof this.parseFloat !== "undefined"');
+if (typeof this['parseFloat'] === "undefined") $ERROR('#8: typeof this["parseFloat"] !== "undefined"');
+if (typeof this.escape === "undefined") $ERROR('#9: typeof this.escape !== "undefined"');
+if (typeof this['escape'] === "undefined") $ERROR('#10: typeof this["escape"] !== "undefined"');
+if (typeof this.unescape === "undefined") $ERROR('#11: typeof this.unescape !== "undefined"');
+if (typeof this['unescape'] === "undefined") $ERROR('#12: typeof this["unescape"] !== "undefined"');
+if (typeof this.isNaN === "undefined") $ERROR('#13: typeof this.isNaN !== "undefined"');
+if (typeof this['isNaN'] === "undefined") $ERROR('#14: typeof this["isNaN"] !== "undefined"');
+if (typeof this.isFinite === "undefined") $ERROR('#15: typeof this.isFinite !== "undefined"');
+if (typeof this['isFinite'] === "undefined") $ERROR('#16: typeof this["isFinite"] !== "undefined"');
+if (typeof this.Object === "undefined") $ERROR('#17: typeof this.Object !== "undefined"');
+if (typeof this['Object'] === "undefined") $ERROR('#18: typeof this["Object"] !== "undefined"');
+if (typeof this.Number === "undefined") $ERROR('#19: typeof this.Number !== "undefined"');
+if (typeof this['Number'] === "undefined") $ERROR('#20: typeof this["Number"] !== "undefined"');
+if (typeof this.Function === "undefined") $ERROR('#21: typeof this.Function !== "undefined"');
+if (typeof this['Function'] === "undefined") $ERROR('#22: typeof this["Function"] !== "undefined"');
+if (typeof this.Array === "undefined") $ERROR('#23: typeof this.Array !== "undefined"');
+if (typeof this['Array'] === "undefined") $ERROR('#24: typeof this["Array"] !== "undefined"');
+if (typeof this.String === "undefined") $ERROR('#25: typeof this.String !== "undefined"');
+if (typeof this['String'] === "undefined") $ERROR('#26: typeof this["String"] !== "undefined"');
+if (typeof this.Boolean === "undefined") $ERROR('#27: typeof this.Boolean !== "undefined"');
+if (typeof this['Boolean'] === "undefined") $ERROR('#28: typeof this["Boolean"] !== "undefined"');
+if (typeof this.Date === "undefined") $ERROR('#29: typeof this.Date !== "undefined"');
+if (typeof this['Date'] === "undefined") $ERROR('#30: typeof this["Date"] !== "undefined"');
+if (typeof this.Math === "undefined") $ERROR('#31: typeof this.Math !== "undefined"');
+if (typeof this['Math'] === "undefined") $ERROR('#32: typeof this["Math"] !== "undefined"');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T2.js
new file mode 100644
index 000000000..cc99b0903
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T2;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties and methods of Object objects;
+*/
+
+//CHECK#1-8
+if (typeof Object.prototype !== "object") $ERROR('#1: typeof Object.prototype === "object". Actual: ' + (typeof Object.prototype ));
+if (typeof Object['prototype'] !== "object") $ERROR('#2: typeof Object["prototype"] === "object". Actual: ' + (typeof Object["prototype"] ));
+if (typeof Object.toString !== "function") $ERROR('#3: typeof Object.toString === "function". Actual: ' + (typeof Object.toString ));
+if (typeof Object['toString'] !== "function") $ERROR('#4: typeof Object["toString"] === "function". Actual: ' + (typeof Object["toString"] ));
+if (typeof Object.valueOf !== "function") $ERROR('#5: typeof Object.valueOf === "function". Actual: ' + (typeof Object.valueOf ));
+if (typeof Object['valueOf'] !== "function") $ERROR('#6: typeof Object["valueOf"] === "function". Actual: ' + (typeof Object["valueOf"] ));
+if (typeof Object.constructor !== "function") $ERROR('#7: typeof Object.constructor === "function". Actual: ' + (typeof Object.constructor ));
+if (typeof Object['constructor'] !== "function") $ERROR('#8: typeof Object["constructor"] === "function". Actual: ' + (typeof Object["constructor"] ));
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T3.js
new file mode 100644
index 000000000..0661335f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T3;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Function object;
+*/
+
+//CHECK#1-8
+if (typeof Function.prototype !== "function") $ERROR('#1: typeof Function.prototype === "function". Actual: ' + (typeof Function.prototype ));
+if (typeof Function['prototype'] !== "function") $ERROR('#2: typeof Function["prototype"] === "function". Actual: ' + (typeof Function["prototype"] ));
+if (typeof Function.prototype.toString !== "function") $ERROR('#3: typeof Function.prototype.toString === "function". Actual: ' + (typeof Function.prototype.toString ));
+if (typeof Function.prototype['toString'] !== "function") $ERROR('#4: typeof Function.prototype["toString"] === "function". Actual: ' + (typeof Function.prototype["toString"] ));
+if (typeof Function.prototype.length !== "number") $ERROR('#5: typeof Function.prototype.length === "number". Actual: ' + (typeof Function.prototype.length ));
+if (typeof Function.prototype['length'] !== "number") $ERROR('#6: typeof Function.prototype["length"] === "number". Actual: ' + (typeof Function.prototype["length"] ));
+if (typeof Function.prototype.valueOf !== "function") $ERROR('#7: typeof Function.prototype.valueOf === "function". Actual: ' + (typeof Function.prototype.valueOf ));
+if (typeof Function.prototype['valueOf'] !== "function") $ERROR('#8: typeof Function.prototype["valueOf"] === "function". Actual: ' + (typeof Function.prototype["valueOf"] ));
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T4.js
new file mode 100644
index 000000000..36f4b2a08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T4;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Array object;
+*/
+
+//CHECK#1-8
+if (typeof Array.prototype !== "object") $ERROR('#1: typeof Array.prototype === "object". Actual: ' + (typeof Array.prototype ));
+if (typeof Array['prototype'] !== "object") $ERROR('#2: typeof Array["prototype"] === "object". Actual: ' + (typeof Array["prototype"] ));
+if (typeof Array.length !== "number") $ERROR('#3: typeof Array.length === "number". Actual: ' + (typeof Array.length ));
+if (typeof Array['length'] !== "number") $ERROR('#4: typeof Array["length"] === "number". Actual: ' + (typeof Array["length"] ));
+if (typeof Array.prototype.constructor !== "function") $ERROR('#5: typeof Array.prototype.constructor === "function". Actual: ' + (typeof Array.prototype.constructor ));
+if (typeof Array.prototype['constructor'] !== "function") $ERROR('#6: typeof Array.prototype["constructor"] === "function". Actual: ' + (typeof Array.prototype["constructor"] ));
+if (typeof Array.prototype.toString !== "function") $ERROR('#7: typeof Array.prototype.toString === "function". Actual: ' + (typeof Array.prototype.toString ));
+if (typeof Array.prototype['toString'] !== "function") $ERROR('#8: typeof Array.prototype["toString"] === "function". Actual: ' + (typeof Array.prototype["toString"] ));
+if (typeof Array.prototype.join !== "function") $ERROR('#9: typeof Array.prototype.join === "function". Actual: ' + (typeof Array.prototype.join ));
+if (typeof Array.prototype['join'] !== "function") $ERROR('#10: typeof Array.prototype["join"] === "function". Actual: ' + (typeof Array.prototype["join"] ));
+if (typeof Array.prototype.reverse !== "function") $ERROR('#11: typeof Array.prototype.reverse === "function". Actual: ' + (typeof Array.prototype.reverse ));
+if (typeof Array.prototype['reverse'] !== "function") $ERROR('#12: typeof Array.prototype["reverse"] === "function". Actual: ' + (typeof Array.prototype["reverse"] ));
+if (typeof Array.prototype.sort !== "function") $ERROR('#13: typeof Array.prototype.sort === "function". Actual: ' + (typeof Array.prototype.sort ));
+if (typeof Array.prototype['sort'] !== "function") $ERROR('#14: typeof Array.prototype["sort"] === "function". Actual: ' + (typeof Array.prototype["sort"] ));
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T5.js
new file mode 100644
index 000000000..1978fdb19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T5;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the String object;
+*/
+
+//CHECK#1-28
+if (typeof String.prototype !== "object") $ERROR('#1: typeof String.prototype === "object". Actual: ' + (typeof String.prototype ));
+if (typeof String['prototype'] !== "object") $ERROR('#2: typeof String["prototype"] === "object". Actual: ' + (typeof String["prototype"] ));
+if (typeof String.fromCharCode !== "function") $ERROR('#3: typeof String.fromCharCode === "function". Actual: ' + (typeof String.fromCharCode ));
+if (typeof String['fromCharCode'] !== "function") $ERROR('#4: typeof String["fromCharCode"] === "function". Actual: ' + (typeof String["fromCharCode"] ));
+if (typeof String.prototype.toString !== "function") $ERROR('#5: typeof String.prototype.toString === "function". Actual: ' + (typeof String.prototype.toString ));
+if (typeof String.prototype['toString'] !== "function") $ERROR('#6: typeof String.prototype["toString"] === "function". Actual: ' + (typeof String.prototype["toString"] ));
+if (typeof String.prototype.constructor !== "function") $ERROR('#7: typeof String.prototype.constructor === "function". Actual: ' + (typeof String.prototype.constructor ));
+if (typeof String.prototype['constructor'] !== "function") $ERROR('#8: typeof String.prototype["constructor"] === "function". Actual: ' + (typeof String.prototype["constructor"] ));
+if (typeof String.prototype.valueOf !== "function") $ERROR('#9: typeof String.prototype.valueOf === "function". Actual: ' + (typeof String.prototype.valueOf ));
+if (typeof String.prototype['valueOf'] !== "function") $ERROR('#10: typeof String.prototype["valueOf"] === "function". Actual: ' + (typeof String.prototype["valueOf"] ));
+if (typeof String.prototype.charAt !== "function") $ERROR('#11: typeof String.prototype.charAt === "function". Actual: ' + (typeof String.prototype.charAt ));
+if (typeof String.prototype['charAt'] !== "function") $ERROR('#12: typeof String.prototype["charAt"] === "function". Actual: ' + (typeof String.prototype["charAt"] ));
+if (typeof String.prototype.charCodeAt !== "function") $ERROR('#13: typeof String.prototype.charCodeAt === "function". Actual: ' + (typeof String.prototype.charCodeAt ));
+if (typeof String.prototype['charCodeAt'] !== "function") $ERROR('#14: typeof String.prototype["charCodeAt"] === "function". Actual: ' + (typeof String.prototype["charCodeAt"] ));
+if (typeof String.prototype.indexOf !== "function") $ERROR('#15: typeof String.prototype.indexOf === "function". Actual: ' + (typeof String.prototype.indexOf ));
+if (typeof String.prototype['indexOf'] !== "function") $ERROR('#16: typeof String.prototype["indexOf"] === "function". Actual: ' + (typeof String.prototype["indexOf"] ));
+if (typeof String.prototype.lastIndexOf !== "function") $ERROR('#17: typeof String.prototype.lastIndexOf === "function". Actual: ' + (typeof String.prototype.lastIndexOf ));
+if (typeof String.prototype['lastIndexOf'] !== "function") $ERROR('#18: typeof String.prototype["lastIndexOf"] === "function". Actual: ' + (typeof String.prototype["lastIndexOf"] ));
+if (typeof String.prototype.split !== "function") $ERROR('#19: typeof String.prototype.split === "function". Actual: ' + (typeof String.prototype.split ));
+if (typeof String.prototype['split'] !== "function") $ERROR('#20: typeof String.prototype["split"] === "function". Actual: ' + (typeof String.prototype["split"] ));
+if (typeof String.prototype.substring !== "function") $ERROR('#21: typeof String.prototype.substring === "function". Actual: ' + (typeof String.prototype.substring ));
+if (typeof String.prototype['substring'] !== "function") $ERROR('#22: typeof String.prototype["substring"] === "function". Actual: ' + (typeof String.prototype["substring"] ));
+if (typeof String.prototype.toLowerCase !== "function") $ERROR('#23: typeof String.prototype.toLowerCase === "function". Actual: ' + (typeof String.prototype.toLowerCase ));
+if (typeof String.prototype['toLowerCase'] !== "function") $ERROR('#24: typeof String.prototype["toLowerCase"] === "function". Actual: ' + (typeof String.prototype["toLowerCase"] ));
+if (typeof String.prototype.toUpperCase !== "function") $ERROR('#25: typeof String.prototype.toUpperCase === "function". Actual: ' + (typeof String.prototype.toUpperCase ));
+if (typeof String.prototype['toUpperCase'] !== "function") $ERROR('#26: typeof Array.prototype === "object". Actual: ' + (typeof Array.prototype ));
+if (typeof String.prototype.length !== "number") $ERROR('#27: typeof String.prototype.length === "number". Actual: ' + (typeof String.prototype.length ));
+if (typeof String.prototype['length'] !== "number") $ERROR('#28: typeof String.prototype["length"] === "number". Actual: ' + (typeof String.prototype["length"] ));
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T6.js
new file mode 100644
index 000000000..a185905e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T6;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Boolean object;
+*/
+
+//CHECK#1-8
+if (typeof Boolean.prototype !== "object") $ERROR('#1: typeof Boolean.prototype === "object". Actual: ' + (typeof Boolean.prototype ));
+if (typeof Boolean['prototype'] !== "object") $ERROR('#2: typeof Boolean["prototype"] === "object". Actual: ' + (typeof Boolean["prototype"] ));
+if (typeof Boolean.constructor !== "function") $ERROR('#3: typeof Boolean.constructor === "function". Actual: ' + (typeof Boolean.constructor ));
+if (typeof Boolean['constructor'] !== "function") $ERROR('#4: typeof Boolean["constructor"] === "function". Actual: ' + (typeof Boolean["constructor"] ));
+if (typeof Boolean.prototype.valueOf !== "function") $ERROR('#5: typeof Boolean.prototype.valueOf === "function". Actual: ' + (typeof Boolean.prototype.valueOf ));
+if (typeof Boolean.prototype['valueOf'] !== "function") $ERROR('#6: typeof Boolean.prototype["valueOf"] === "function". Actual: ' + (typeof Boolean.prototype["valueOf"] ));
+if (typeof Boolean.prototype.toString !== "function") $ERROR('#7: typeof Boolean.prototype.toString === "function". Actual: ' + (typeof Boolean.prototype.toString ));
+if (typeof Boolean.prototype['toString'] !== "function") $ERROR('#8: typeof Boolean.prototype["toString"] === "function". Actual: ' + (typeof Boolean.prototype["toString"] ));
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T7.js
new file mode 100644
index 000000000..829323659
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T7;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Number object;
+*/
+
+//CHECK#1-16
+if (typeof Number.MAX_VALUE !== "number") $ERROR('#1: typeof Number.MAX_VALUE === "number". Actual: ' + (typeof Number.MAX_VALUE ));
+if (typeof Number['MAX_VALUE'] !== "number") $ERROR('#2: typeof Number["MAX_VALUE"] === "number". Actual: ' + (typeof Number["MAX_VALUE"] ));
+if (typeof Number.MIN_VALUE !== "number") $ERROR('#3: typeof Number.MIN_VALUE === "number". Actual: ' + (typeof Number.MIN_VALUE ));
+if (typeof Number['MIN_VALUE'] !== "number") $ERROR('#4: typeof Number["MIN_VALUE"] === "number". Actual: ' + (typeof Number["MIN_VALUE"] ));
+if (typeof Number.NaN !== "number") $ERROR('#5: typeof Number.NaN === "number". Actual: ' + (typeof Number.NaN ));
+if (typeof Number['NaN'] !== "number") $ERROR('#6: typeof Number["NaN"] === "number". Actual: ' + (typeof Number["NaN"] ));
+if (typeof Number.NEGATIVE_INFINITY !== "number") $ERROR('#7: typeof Number.NEGATIVE_INFINITY === "number". Actual: ' + (typeof Number.NEGATIVE_INFINITY ));
+if (typeof Number['NEGATIVE_INFINITY'] !== "number") $ERROR('#8: typeof Number["NEGATIVE_INFINITY"] === "number". Actual: ' + (typeof Number["NEGATIVE_INFINITY"] ));
+if (typeof Number.POSITIVE_INFINITY !== "number") $ERROR('#9: typeof Number.POSITIVE_INFINITY === "number". Actual: ' + (typeof Number.POSITIVE_INFINITY ));
+if (typeof Number['POSITIVE_INFINITY'] !== "number") $ERROR('#10: typeof Number["POSITIVE_INFINITY"] === "number". Actual: ' + (typeof Number["POSITIVE_INFINITY"] ));
+if (typeof Number.prototype.toString !== "function") $ERROR('#11: typeof Number.prototype.toString === "function". Actual: ' + (typeof Number.prototype.toString ));
+if (typeof Number.prototype['toString'] !== "function") $ERROR('#12: typeof Number.prototype["toString"] === "function". Actual: ' + (typeof Number.prototype["toString"] ));
+if (typeof Number.prototype.constructor !== "function") $ERROR('#13: typeof Number.prototype.constructor === "function". Actual: ' + (typeof Number.prototype.constructor ));
+if (typeof Number.prototype['constructor'] !== "function") $ERROR('#14: typeof Number.prototype["constructor"] === "function". Actual: ' + (typeof Number.prototype["constructor"] ));
+if (typeof Number.prototype.valueOf !== "function") $ERROR('#15: typeof Number.prototype.valueOf === "function". Actual: ' + (typeof Number.prototype.valueOf ));
+if (typeof Number.prototype['valueOf'] !== "function") $ERROR('#16: typeof Number.prototype["valueOf"] === "function". Actual: ' + (typeof Number.prototype["valueOf"] ));
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T8.js
new file mode 100644
index 000000000..f8beae34a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T8.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T8;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Math Object;
+*/
+
+//CHECK#1-52
+if (typeof Math.E !== "number") $ERROR('#1: typeof Math.E === "number". Actual: ' + (typeof Math.E ));
+if (typeof Math['E'] !== "number") $ERROR('#2: typeof Math["E"] === "number". Actual: ' + (typeof Math["E"] ));
+if (typeof Math.LN10 !== "number") $ERROR('#3: typeof Math.LN10 === "number". Actual: ' + (typeof Math.LN10 ));
+if (typeof Math['LN10'] !== "number") $ERROR('#4: typeof Math["LN10"] === "number". Actual: ' + (typeof Math["LN10"] ));
+if (typeof Math.LN2 !== "number") $ERROR('#5: typeof Math.LN2 === "number". Actual: ' + (typeof Math.LN2 ));
+if (typeof Math['LN2'] !== "number") $ERROR('#6: typeof Math["LN2"] === "number". Actual: ' + (typeof Math["LN2"] ));
+if (typeof Math.LOG2E !== "number") $ERROR('#7: typeof Math.LOG2E === "number". Actual: ' + (typeof Math.LOG2E ));
+if (typeof Math['LOG2E'] !== "number") $ERROR('#8: typeof Math["LOG2E"] === "number". Actual: ' + (typeof Math["LOG2E"] ));
+if (typeof Math.LOG10E !== "number") $ERROR('#9: typeof Math.LOG10E === "number". Actual: ' + (typeof Math.LOG10E ));
+if (typeof Math['LOG10E'] !== "number") $ERROR('#10: typeof Math["LOG10E"] === "number". Actual: ' + (typeof Math["LOG10E"] ));
+if (typeof Math.PI !== "number") $ERROR('#11: typeof Math.PI === "number". Actual: ' + (typeof Math.PI ));
+if (typeof Math['PI'] !== "number") $ERROR('#12: typeof Math["PI"] === "number". Actual: ' + (typeof Math["PI"] ));
+if (typeof Math.SQRT1_2 !== "number") $ERROR('#13: typeof Math.SQRT1_2 === "number". Actual: ' + (typeof Math.SQRT1_2 ));
+if (typeof Math['SQRT1_2'] !== "number") $ERROR('#14: typeof Math["SQRT1_2"] === "number". Actual: ' + (typeof Math["SQRT1_2"] ));
+if (typeof Math.SQRT2 !== "number") $ERROR('#15: typeof Math.SQRT2 === "number". Actual: ' + (typeof Math.SQRT2 ));
+if (typeof Math['SQRT2'] !== "number") $ERROR('#16: typeof Math["SQRT2"] === "number". Actual: ' + (typeof Math["SQRT2"] ));
+if (typeof Math.abs !== "function") $ERROR('#17: typeof Math.abs === "function". Actual: ' + (typeof Math.abs ));
+if (typeof Math['abs'] !== "function") $ERROR('#18: typeof Math["abs"] === "function". Actual: ' + (typeof Math["abs"] ));
+if (typeof Math.acos !== "function") $ERROR('#19: typeof Math.acos === "function". Actual: ' + (typeof Math.acos ));
+if (typeof Math['acos'] !== "function") $ERROR('#20: typeof Math["acos"] === "function". Actual: ' + (typeof Math["acos"] ));
+if (typeof Math.asin !== "function") $ERROR('#21: typeof Math.asin === "function". Actual: ' + (typeof Math.asin ));
+if (typeof Math['asin'] !== "function") $ERROR('#22: typeof Math["asin"] === "function". Actual: ' + (typeof Math["asin"] ));
+if (typeof Math.atan !== "function") $ERROR('#23: typeof Math.atan === "function". Actual: ' + (typeof Math.atan ));
+if (typeof Math['atan'] !== "function") $ERROR('#24: typeof Math["atan"] === "function". Actual: ' + (typeof Math["atan"] ));
+if (typeof Math.atan2 !== "function") $ERROR('#25: typeof Math.atan2 === "function". Actual: ' + (typeof Math.atan2 ));
+if (typeof Math['atan2'] !== "function") $ERROR('#26: typeof Math["atan2"] === "function". Actual: ' + (typeof Math["atan2"] ));
+if (typeof Math.ceil !== "function") $ERROR('#27: typeof Math.ceil === "function". Actual: ' + (typeof Math.ceil ));
+if (typeof Math['ceil'] !== "function") $ERROR('#28: typeof Math["ceil"] === "function". Actual: ' + (typeof Math["ceil"] ));
+if (typeof Math.cos !== "function") $ERROR('#29: typeof Math.cos === "function". Actual: ' + (typeof Math.cos ));
+if (typeof Math['cos'] !== "function") $ERROR('#30: typeof Math["cos"] === "function". Actual: ' + (typeof Math["cos"] ));
+if (typeof Math.exp !== "function") $ERROR('#31: typeof Math.exp === "function". Actual: ' + (typeof Math.exp ));
+if (typeof Math['exp'] !== "function") $ERROR('#32: typeof Math["exp"] === "function". Actual: ' + (typeof Math["exp"] ));
+if (typeof Math.floor !== "function") $ERROR('#33: typeof Math.floor === "function". Actual: ' + (typeof Math.floor ));
+if (typeof Math['floor'] !== "function") $ERROR('#34: typeof Math["floor"] === "function". Actual: ' + (typeof Math["floor"] ));
+if (typeof Math.log !== "function") $ERROR('#35: typeof Math.log === "function". Actual: ' + (typeof Math.log ));
+if (typeof Math['log'] !== "function") $ERROR('#36: typeof Math["log"] === "function". Actual: ' + (typeof Math["log"] ));
+if (typeof Math.max !== "function") $ERROR('#37: typeof Math.max === "function". Actual: ' + (typeof Math.max ));
+if (typeof Math['max'] !== "function") $ERROR('#38: typeof Math["max"] === "function". Actual: ' + (typeof Math["max"] ));
+if (typeof Math.min !== "function") $ERROR('#39: typeof Math.min === "function". Actual: ' + (typeof Math.min ));
+if (typeof Math['min'] !== "function") $ERROR('#40: typeof Math["min"] === "function". Actual: ' + (typeof Math["min"] ));
+if (typeof Math.pow !== "function") $ERROR('#41: typeof Math.pow === "function". Actual: ' + (typeof Math.pow ));
+if (typeof Math['pow'] !== "function") $ERROR('#42: typeof Math["pow"] === "function". Actual: ' + (typeof Math["pow"] ));
+if (typeof Math.random !== "function") $ERROR('#43: typeof Math.random === "function". Actual: ' + (typeof Math.random ));
+if (typeof Math['random'] !== "function") $ERROR('#44: typeof Math["random"] === "function". Actual: ' + (typeof Math["random"] ));
+if (typeof Math.round !== "function") $ERROR('#45: typeof Math.round === "function". Actual: ' + (typeof Math.round ));
+if (typeof Math['round'] !== "function") $ERROR('#46: typeof Math["round"] === "function". Actual: ' + (typeof Math["round"] ));
+if (typeof Math.sin !== "function") $ERROR('#47: typeof Math.sin === "function". Actual: ' + (typeof Math.sin ));
+if (typeof Math['sin'] !== "function") $ERROR('#48: typeof Math["sin"] === "function". Actual: ' + (typeof Math["sin"] ));
+if (typeof Math.sqrt !== "function") $ERROR('#49: typeof Math.sqrt === "function". Actual: ' + (typeof Math.sqrt ));
+if (typeof Math['sqrt'] !== "function") $ERROR('#50: typeof Math["sqrt"] === "function". Actual: ' + (typeof Math["sqrt"] ));
+if (typeof Math.tan !== "function") $ERROR('#51: typeof Math.tan === "function". Actual: ' + (typeof Math.tan ));
+if (typeof Math['tan'] !== "function") $ERROR('#52: typeof Math["tan"] === "function". Actual: ' + (typeof Math["tan"] ));
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T9.js
new file mode 100644
index 000000000..68130741c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T9.js
@@ -0,0 +1,100 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T9;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Date object;
+*/
+
+//CHECK#1-86
+if (typeof Date.parse !== "function") $ERROR('#1: typeof Date.parse === "function". Actual: ' + (typeof Date.parse ));
+if (typeof Date['parse'] !== "function") $ERROR('#2: typeof Date["parse"] === "function". Actual: ' + (typeof Date["parse"] ));
+if (typeof Date.prototype !== "object") $ERROR('#3: typeof Date.prototype === "object". Actual: ' + (typeof Date.prototype ));
+if (typeof Date['prototype'] !== "object") $ERROR('#4: typeof Date["prototype"] === "object". Actual: ' + (typeof Date["prototype"] ));
+if (typeof Date.UTC !== "function") $ERROR('#5: typeof Date.UTC === "function". Actual: ' + (typeof Date.UTC ));
+if (typeof Date['UTC'] !== "function") $ERROR('#6: typeof Date["UTC"] === "function". Actual: ' + (typeof Date["UTC"] ));
+if (typeof Date.prototype.constructor !== "function") $ERROR('#7: typeof Date.prototype.constructor === "funvtion". Actual: ' + (typeof Date.prototype.constructor ));
+if (typeof Date.prototype['constructor'] !== "function") $ERROR('#8: typeof Date.prototype["constructor"] === "function". Actual: ' + (typeof Date.prototype["constructor"] ));
+if (typeof Date.prototype.toString !== "function") $ERROR('#9: typeof Date.prototype.toString === "function". Actual: ' + (typeof Date.prototype.toString ));
+if (typeof Date.prototype['toString'] !== "function") $ERROR('#10: typeof Date.prototype["toString"] === "function". Actual: ' + (typeof Date.prototype["toString"] ));
+if (typeof Date.prototype.valueOf !== "function") $ERROR('#11: typeof Date.prototype.valueOf === "function". Actual: ' + (typeof Date.prototype.valueOf ));
+if (typeof Date.prototype['valueOf'] !== "function") $ERROR('#12: typeof Date.prototype["valueOf"] === "function". Actual: ' + (typeof Date.prototype["valueOf"] ));
+if (typeof Date.prototype.getTime !== "function") $ERROR('#13: typeof Date.prototype.getTime === "function". Actual: ' + (typeof Date.prototype.getTime ));
+if (typeof Date.prototype['getTime'] !== "function") $ERROR('#14: typeof Date.prototype["getTime"] === "function". Actual: ' + (typeof Date.prototype["getTime"] ));
+if (typeof Date.prototype.getYear !== "function") $ERROR('#15: typeof Date.prototype.getYear === "function". Actual: ' + (typeof Date.prototype.getYear ));
+if (typeof Date.prototype['getYear'] !== "function") $ERROR('#16: typeof Date.prototype["getYear"] === "function". Actual: ' + (typeof Date.prototype["getYear"] ));
+if (typeof Date.prototype.getFullYear !== "function") $ERROR('#17: typeof Date.prototype.getFullYear === "function". Actual: ' + (typeof Date.prototype.getFullYear ));
+if (typeof Date.prototype['getFullYear'] !== "function") $ERROR('#18: typeof Date.prototype["getFullYear"] === "function". Actual: ' + (typeof Date.prototype["getFullYear"] ));
+if (typeof Date.prototype.getUTCFullYear !== "function") $ERROR('#19: typeof Date.prototype.getUTCFullYear === "function". Actual: ' + (typeof Date.prototype.getUTCFullYear ));
+if (typeof Date.prototype['getUTCFullYear'] !== "function") $ERROR('#20: typeof Date.prototype["getUTCFullYear"] === "function". Actual: ' + (typeof Date.prototype["getUTCFullYear"] ));
+if (typeof Date.prototype.getMonth !== "function") $ERROR('#21: typeof Date.prototype.getMonth === "function". Actual: ' + (typeof Date.prototype.getMonth ));
+if (typeof Date.prototype['getMonth'] !== "function") $ERROR('#22: typeof Date.prototype["getMonth"] === "function". Actual: ' + (typeof Date.prototype["getMonth"] ));
+if (typeof Date.prototype.getUTCMonth !== "function") $ERROR('#23: typeof Date.prototype.getUTCMonth === "function". Actual: ' + (typeof Date.prototype.getUTCMonth ));
+if (typeof Date.prototype['getUTCMonth'] !== "function") $ERROR('#24: typeof Date.prototype["getUTCMonth"] === "function". Actual: ' + (typeof Date.prototype["getUTCMonth"] ));
+if (typeof Date.prototype.getDate !== "function") $ERROR('#25: typeof Date.prototype.getDate === "function". Actual: ' + (typeof Date.prototype.getDate ));
+if (typeof Date.prototype['getDate'] !== "function") $ERROR('#26: typeof Date.prototype["getDate"] === "function". Actual: ' + (typeof Date.prototype["getDate"] ));
+if (typeof Date.prototype.getUTCDate !== "function") $ERROR('#27: typeof Date.prototype.getUTCDate === "function". Actual: ' + (typeof Date.prototype.getUTCDate ));
+if (typeof Date.prototype['getUTCDate'] !== "function") $ERROR('#28: typeof Date.prototype["getUTCDate"] === "function". Actual: ' + (typeof Date.prototype["getUTCDate"] ));
+if (typeof Date.prototype.getDay !== "function") $ERROR('#29: typeof Date.prototype.getDay === "function". Actual: ' + (typeof Date.prototype.getDay ));
+if (typeof Date.prototype['getDay'] !== "function") $ERROR('#30: typeof Date.prototype["getDay"] === "function". Actual: ' + (typeof Date.prototype["getDay"] ));
+if (typeof Date.prototype.getUTCDay !== "function") $ERROR('#31: typeof Date.prototype.getUTCDay === "function". Actual: ' + (typeof Date.prototype.getUTCDay ));
+if (typeof Date.prototype['getUTCDay'] !== "function") $ERROR('#32: typeof Date.prototype["getUTCDay"] === "function". Actual: ' + (typeof Date.prototype["getUTCDay"] ));
+if (typeof Date.prototype.getHours !== "function") $ERROR('#33: typeof Date.prototype.getHours === "function". Actual: ' + (typeof Date.prototype.getHours ));
+if (typeof Date.prototype['getHours'] !== "function") $ERROR('#34: typeof Date.prototype["getHours"] === "function". Actual: ' + (typeof Date.prototype["getHours"] ));
+if (typeof Date.prototype.getUTCHours !== "function") $ERROR('#35: typeof Date.prototype.getUTCHours === "function". Actual: ' + (typeof Date.prototype.getUTCHours ));
+if (typeof Date.prototype['getUTCHours'] !== "function") $ERROR('#36: typeof Date.prototype["getUTCHours"] === "function". Actual: ' + (typeof Date.prototype["getUTCHours"] ));
+if (typeof Date.prototype.getMinutes !== "function") $ERROR('#37: typeof Date.prototype.getMinutes === "function". Actual: ' + (typeof Date.prototype.getMinutes ));
+if (typeof Date.prototype['getMinutes'] !== "function") $ERROR('#38: typeof Date.prototype["getMinutes"] === "function". Actual: ' + (typeof Date.prototype["getMinutes"] ));
+if (typeof Date.prototype.getUTCMinutes !== "function") $ERROR('#39: typeof Date.prototype.getUTCMinutes === "function". Actual: ' + (typeof Date.prototype.getUTCMinutes ));
+if (typeof Date.prototype['getUTCMinutes'] !== "function") $ERROR('#40: typeof Date.prototype["getUTCMinutes"] === "function". Actual: ' + (typeof Date.prototype["getUTCMinutes"] ));
+if (typeof Date.prototype.getSeconds !== "function") $ERROR('#41: typeof Date.prototype.getSeconds === "function". Actual: ' + (typeof Date.prototype.getSeconds ));
+if (typeof Date.prototype['getSeconds'] !== "function") $ERROR('#42: typeof Date.prototype["getSeconds"] === "function". Actual: ' + (typeof Date.prototype["getSeconds"] ));
+if (typeof Date.prototype.getUTCSeconds !== "function") $ERROR('#43: typeof Date.prototype.getUTCSeconds === "function". Actual: ' + (typeof Date.prototype.getUTCSeconds ));
+if (typeof Date.prototype['getUTCSeconds'] !== "function") $ERROR('#44: typeof Date.prototype["getUTCSeconds"] === "function". Actual: ' + (typeof Date.prototype["getUTCSeconds"] ));
+if (typeof Date.prototype.getMilliseconds !== "function") $ERROR('#45: typeof Date.prototype.getMilliseconds === "function". Actual: ' + (typeof Date.prototype.getMilliseconds ));
+if (typeof Date.prototype['getMilliseconds'] !== "function") $ERROR('#46: typeof Date.prototype["getMilliseconds"] === "function". Actual: ' + (typeof Date.prototype["getMilliseconds"] ));
+if (typeof Date.prototype.getUTCMilliseconds !== "function") $ERROR('#47: typeof Date.prototype.getUTCMilliseconds === "function". Actual: ' + (typeof Date.prototype.getUTCMilliseconds ));
+if (typeof Date.prototype['getUTCMilliseconds'] !== "function") $ERROR('#48: typeof Date.prototype["getUTCMilliseconds"] === "function". Actual: ' + (typeof Date.prototype["getUTCMilliseconds"] ));
+if (typeof Date.prototype.setTime !== "function") $ERROR('#49: typeof Date.prototype.setTime === "function". Actual: ' + (typeof Date.prototype.setTime ));
+if (typeof Date.prototype['setTime'] !== "function") $ERROR('#50: typeof Date.prototype["setTime"] === "function". Actual: ' + (typeof Date.prototype["setTime"] ));
+if (typeof Date.prototype.setMilliseconds !== "function") $ERROR('#51: typeof Date.prototype.setMilliseconds === "function". Actual: ' + (typeof Date.prototype.setMilliseconds ));
+if (typeof Date.prototype['setMilliseconds'] !== "function") $ERROR('#52: typeof Date.prototype["setMilliseconds"] === "function". Actual: ' + (typeof Date.prototype["setMilliseconds"] ));
+if (typeof Date.prototype.setUTCMilliseconds !== "function") $ERROR('#53: typeof Date.prototype.setUTCMilliseconds === "function". Actual: ' + (typeof Date.prototype.setUTCMilliseconds ));
+if (typeof Date.prototype['setUTCMilliseconds'] !== "function") $ERROR('#54: typeof Date.prototype["setUTCMilliseconds"] === "function". Actual: ' + (typeof Date.prototype["setUTCMilliseconds"] ));
+if (typeof Date.prototype.setSeconds !== "function") $ERROR('#55: typeof Date.prototype.setSeconds === "function". Actual: ' + (typeof Date.prototype.setSeconds ));
+if (typeof Date.prototype['setSeconds'] !== "function") $ERROR('#56: typeof Date.prototype["setSeconds"] === "function". Actual: ' + (typeof Date.prototype["setSeconds"] ));
+if (typeof Date.prototype.setUTCSeconds !== "function") $ERROR('#57: typeof Date.prototype.setUTCSeconds === "function". Actual: ' + (typeof Date.prototype.setUTCSeconds ));
+if (typeof Date.prototype['setUTCSeconds'] !== "function") $ERROR('#58: typeof Date.prototype["setUTCSeconds"] === "function". Actual: ' + (typeof Date.prototype["setUTCSeconds"] ));
+if (typeof Date.prototype.setMinutes !== "function") $ERROR('#59: typeof Date.prototype.setMinutes === "function". Actual: ' + (typeof Date.prototype.setMinutes ));
+if (typeof Date.prototype['setMinutes'] !== "function") $ERROR('#60: typeof Date.prototype["setMinutes"] === "function". Actual: ' + (typeof Date.prototype["setMinutes"] ));
+if (typeof Date.prototype.setUTCMinutes !== "function") $ERROR('#61: typeof Date.prototype.setUTCMinutes === "function". Actual: ' + (typeof Date.prototype.setUTCMinutes ));
+if (typeof Date.prototype['setUTCMinutes'] !== "function") $ERROR('#62: typeof Date.prototype["setUTCMinutes"] === "function". Actual: ' + (typeof Date.prototype["setUTCMinutes"] ));
+if (typeof Date.prototype.setHours !== "function") $ERROR('#63: typeof Date.prototype.setHours === "function". Actual: ' + (typeof Date.prototype.setHours ));
+if (typeof Date.prototype['setHours'] !== "function") $ERROR('#64: typeof Date.prototype["setHours"] === "function". Actual: ' + (typeof Date.prototype["setHours"] ));
+if (typeof Date.prototype.setUTCHours !== "function") $ERROR('#65: typeof Date.prototype.setUTCHours === "function". Actual: ' + (typeof Date.prototype.setUTCHours ));
+if (typeof Date.prototype['setUTCHours'] !== "function") $ERROR('#66: typeof Date.prototype["setUTCHours"] === "function". Actual: ' + (typeof Date.prototype["setUTCHours"] ));
+if (typeof Date.prototype.setDate !== "function") $ERROR('#67: typeof Date.prototype.setDate === "function". Actual: ' + (typeof Date.prototype.setDate ));
+if (typeof Date.prototype['setDate'] !== "function") $ERROR('#68: typeof Date.prototype["setDate"] === "function". Actual: ' + (typeof Date.prototype["setDate"] ));
+if (typeof Date.prototype.setUTCDate !== "function") $ERROR('#69: typeof Date.prototype.setUTCDate === "function". Actual: ' + (typeof Date.prototype.setUTCDate ));
+if (typeof Date.prototype['setUTCDate'] !== "function") $ERROR('#70: typeof Date.prototype["setUTCDate"] === "function". Actual: ' + (typeof Date.prototype["setUTCDate"] ));
+if (typeof Date.prototype.setMonth !== "function") $ERROR('#71: typeof Date.prototype.setMonth === "function". Actual: ' + (typeof Date.prototype.setMonth ));
+if (typeof Date.prototype['setMonth'] !== "function") $ERROR('#72: typeof Date.prototype["setMonth"] === "function". Actual: ' + (typeof Date.prototype["setMonth"] ));
+if (typeof Date.prototype.setUTCMonth !== "function") $ERROR('#73: typeof Date.prototype.setUTCMonth === "function". Actual: ' + (typeof Date.prototype.setUTCMonth ));
+if (typeof Date.prototype['setUTCMonth'] !== "function") $ERROR('#74: typeof Date.prototype["setUTCMonth"] === "function". Actual: ' + (typeof Date.prototype["setUTCMonth"] ));
+if (typeof Date.prototype.setFullYear !== "function") $ERROR('#75: typeof Date.prototype.setFullYear === "function". Actual: ' + (typeof Date.prototype.setFullYear ));
+if (typeof Date.prototype['setFullYear'] !== "function") $ERROR('#76: typeof Date.prototype["setFullYear"] === "function". Actual: ' + (typeof Date.prototype["setFullYear"] ));
+if (typeof Date.prototype.setUTCFullYear !== "function") $ERROR('#77: typeof Date.prototype.setUTCFullYear === "function". Actual: ' + (typeof Date.prototype.setUTCFullYear ));
+if (typeof Date.prototype['setUTCFullYear'] !== "function") $ERROR('#78: typeof Date.prototype["setUTCFullYear"] === "function". Actual: ' + (typeof Date.prototype["setUTCFullYear"] ));
+if (typeof Date.prototype.setYear !== "function") $ERROR('#79: typeof Date.prototype.setYear === "function". Actual: ' + (typeof Date.prototype.setYear ));
+if (typeof Date.prototype['setYear'] !== "function") $ERROR('#80: typeof Date.prototype["setYear"] === "function". Actual: ' + (typeof Date.prototype["setYear"] ));
+if (typeof Date.prototype.toLocaleString !== "function") $ERROR('#81: typeof Date.prototype.toLocaleString === "function". Actual: ' + (typeof Date.prototype.toLocaleString ));
+if (typeof Date.prototype['toLocaleString'] !== "function") $ERROR('#82: typeof Date.prototype["toLocaleString"] === "function". Actual: ' + (typeof Date.prototype["toLocaleString"] ));
+if (typeof Date.prototype.toUTCString !== "function") $ERROR('#83: typeof Date.prototype.toUTCString === "function". Actual: ' + (typeof Date.prototype.toUTCString ));
+if (typeof Date.prototype['toUTCString'] !== "function") $ERROR('#84: typeof Date.prototype["toUTCString"] === "function". Actual: ' + (typeof Date.prototype["toUTCString"] ));
+if (typeof Date.prototype.toGMTString !== "function") $ERROR('#85: typeof Date.prototype.toGMTString === "function". Actual: ' + (typeof Date.prototype.toGMTString ));
+if (typeof Date.prototype['toGMTString'] !== "function") $ERROR('#86: typeof Date.prototype["toGMTString"] === "function". Actual: ' + (typeof Date.prototype["toGMTString"] ));
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.1.js
new file mode 100644
index 000000000..c91374b44
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A1.1;
+* @section: 11.2.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "new" and NewExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("new\u0009Number") != 0) {
+ $ERROR('#1: new\\u0009Number == 0');
+}
+
+//CHECK#2
+if (eval("new\u000BNumber") != 0) {
+ $ERROR('#2: new\\u000BNumber == 0');
+}
+
+//CHECK#3
+if (eval("new\u000CNumber") != 0) {
+ $ERROR('#3: new\\u000CNumber == 0');
+}
+
+//CHECK#4
+if (eval("new\u0020Number") != 0) {
+ $ERROR('#4: new\\u0020Number == 0');
+}
+
+//CHECK#5
+if (eval("new\u00A0Number") != 0) {
+ $ERROR('#5: new\\u00A0Number == 0');
+}
+
+//CHECK#6
+if (eval("new\u000ANumber") != 0) {
+ $ERROR('#6: new\\u000ANumber == 0');
+}
+
+//CHECK#7
+if (eval("new\u000DNumber") != 0) {
+ $ERROR('#7: new\\u000DNumber == 0');
+}
+
+//CHECK#8
+if (eval("new\u2028Number") != 0) {
+ $ERROR('#8: new\\u2028Number == 0');
+}
+
+//CHECK#9
+if (eval("new\u2029Number") != 0) {
+ $ERROR('#9: new\\u2029Number == 0');
+}
+
+//CHECK#10
+if (eval("new\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Number") != 0) {
+ $ERROR('#10: new\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029Number == 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.2.js
new file mode 100644
index 000000000..f8490a143
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A1.2;
+* @section: 11.2.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "new" and MemberExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("new\u0009Number()") != 0) {
+ $ERROR('#1: new\\u0009Number == 0');
+}
+
+//CHECK#2
+if (eval("new\u000BNumber()") != 0) {
+ $ERROR('#2: new\\u000BNumber == 0');
+}
+
+//CHECK#3
+if (eval("new\u000CNumber()") != 0) {
+ $ERROR('#3: new\\u000CNumber == 0');
+}
+
+//CHECK#4
+if (eval("new\u0020Number()") != 0) {
+ $ERROR('#4: new\\u0020Number == 0');
+}
+
+//CHECK#5
+if (eval("new\u00A0Number()") != 0) {
+ $ERROR('#5: new\\u00A0Number == 0');
+}
+
+//CHECK#6
+if (eval("new\u000ANumber()") != 0) {
+ $ERROR('#6: new\\u000ANumber == 0');
+}
+
+//CHECK#7
+if (eval("new\u000DNumber()") != 0) {
+ $ERROR('#7: new\\u000DNumber == 0');
+}
+
+//CHECK#8
+if (eval("new\u2028Number()") != 0) {
+ $ERROR('#8: new\\u2028Number == 0');
+}
+
+//CHECK#9
+if (eval("new\u2029Number()") != 0) {
+ $ERROR('#9: new\\u2029Number == 0');
+}
+
+//CHECK#10
+if (eval("new\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Number()") != 0) {
+ $ERROR('#10: new\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029Number == 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A2.js
new file mode 100644
index 000000000..29a859fe8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A2;
+* @section: 11.2.2;
+* @assertion: Operator "new" uses GetValue;
+* @description: If GetBase(NewExpression) or GetBase(MemberExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ new x;
+ $ERROR('#1.1: new x throw ReferenceError. Actual: ' + (new x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: new x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ new x();
+ $ERROR('#2: new x() throw ReferenceError');
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#2: new x() throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T1.js
new file mode 100644
index 000000000..b68d612e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T1;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking boolean primitive case;
+*/
+
+//CHECK#1
+try {
+ new true;
+ $ERROR('#1: new true throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new true throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = true;
+ new x;
+ $ERROR('#2: var x = true; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = true; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = true;
+ new x();
+ $ERROR('#3: var x = true; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = true; new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T2.js
new file mode 100644
index 000000000..ec0af6515
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T2;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking "number primitive" case;
+*/
+
+//CHECK#1
+try {
+ new 1;
+ $ERROR('#1: new 1 throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new 1 throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = 1;
+ new x;
+ $ERROR('#2: var x = 1; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = 1; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = 1;
+ new x();
+ $ERROR('#3: var x = 1; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = 1; new x() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T3.js
new file mode 100644
index 000000000..a1329b9e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T3.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T3;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking "string primitive" case;
+*/
+
+//CHECK#1
+try {
+ new 1;
+ $ERROR('#1: new "1" throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new "1" throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = "1";
+ new x;
+ $ERROR('#2: var x = "1"; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = "1"; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = "1";
+ new x();
+ $ERROR('#3: var x = "1"; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = "1"; new x() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T4.js
new file mode 100644
index 000000000..d52006ebf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T4.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T4;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking "undefined" case;
+*/
+
+//CHECK#1
+try {
+ new undefined;
+ $ERROR('#1: new undefined throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new undefined throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = undefined;
+ new x;
+ $ERROR('#2: var x = undefined; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = undefined; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = undefined;
+ new x();
+ $ERROR('#3: var x = undefined; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = undefined; new x() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T5.js
new file mode 100644
index 000000000..e3dd64090
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T5.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T5;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking "null primitive" case;
+*/
+
+//CHECK#1
+try {
+ new null;
+ $ERROR('#1: new null throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new null throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = null;
+ new x;
+ $ERROR('#2: var x = null; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = null; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = null;
+ new x();
+ $ERROR('#3: var x = null; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = null; new x() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T1.js
new file mode 100644
index 000000000..0cc744c6f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T1;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking Boolean object case;
+*/
+
+//CHECK#1
+try {
+ new new Boolean(true);
+ $ERROR('#1: new new Boolean(true) throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new new Boolean(true) throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = new Boolean(true);
+ new x;
+ $ERROR('#2: var x = new Boolean(true); new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = new Boolean(true); new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = new Boolean(true);
+ new x();
+ $ERROR('#3: var x = new Boolean(true); new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = new Boolean(true); new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T2.js
new file mode 100644
index 000000000..6ff4f5319
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T2.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T2;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking Number object case;
+*/
+
+//CHECK#1
+try {
+ new new Number(1);
+ $ERROR('#1: new new Number(1) throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new new Number(1) throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = new Number(1);
+ new x;
+ $ERROR('#2: var x = new Number(1); new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = new Number(1); new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = new Number(1);
+ new x();
+ $ERROR('#3: var x = new Number(1); new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = new Number(1); new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T3.js
new file mode 100644
index 000000000..5c79e5ead
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T3;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking String object case;
+*/
+
+//CHECK#1
+try {
+ new new String("1");
+ $ERROR('#1: new new String("1") throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new new String("1") throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = new String("1");
+ new x;
+ $ERROR('#2: var x = new String("1"); new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = new String("1"); new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = new String("1");
+ new x();
+ $ERROR('#3: var x = new String("1"); new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = new String("1"); new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T4.js
new file mode 100644
index 000000000..21a066a86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T4.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T4;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking Global object case;
+*/
+
+//CHECK#1
+try {
+ new this;
+ $ERROR('#1: new this throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new this throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ new this();
+ $ERROR('#2: new this() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: new this() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T5.js
new file mode 100644
index 000000000..11ef6f01d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T5.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T5;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking Math object case;
+*/
+
+//CHECK#1
+try {
+ new Math;
+ $ERROR('#1: new Math throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new Math throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ new new Math();
+ $ERROR('#2: new new Math() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: new new Math() throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = new Math();
+ new x();
+ $ERROR('#3: var x = new Math(); new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = new Math(); new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A1.js
new file mode 100644
index 000000000..a6dfa4f63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A1;
+* @section: 11.2.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MemberExpression and Arguments are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("Number\u0009()") !== 0) {
+ $ERROR('#1: Number\\u0009() === 0');
+}
+
+//CHECK#2
+if (eval("Number\u000B()") !== 0) {
+ $ERROR('#2: Number\\u000B() === 0');
+}
+
+//CHECK#3
+if (eval("Number\u000C()") !== 0) {
+ $ERROR('#3: Number\\u000C() === 0');
+}
+
+//CHECK#4
+if (eval("Number\u0020()") !== 0) {
+ $ERROR('#4: Number\\u0020 === 0');
+}
+
+//CHECK#5
+if (eval("Number\u00A0()") !== 0) {
+ $ERROR('#5: Number\\u00A0() === 0');
+}
+
+//CHECK#6
+if (eval("Number\u000A()") !== 0) {
+ $ERROR('#6: Number\\u000A() === 0');
+}
+
+//CHECK#7
+if (eval("Number\u000D()") !== 0) {
+ $ERROR('#7: Number\\u000D() === 0');
+}
+
+//CHECK#8
+if (eval("Number\u2028()") !== 0) {
+ $ERROR('#8: Number\\u2028() === 0');
+}
+
+//CHECK#9
+if (eval("Number\u2029()") !== 0) {
+ $ERROR('#9: Number\\u2029() === 0');
+}
+
+//CHECK#10
+if (eval("Number\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029()") !== 0) {
+ $ERROR('#10: Number\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029() === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A2.js
new file mode 100644
index 000000000..632cda30c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A2;
+* @section: 11.2.3;
+* @assertion: CallExpression : MemberExpression Arguments uses GetValue;
+* @description: If GetBase(MemberExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x();
+ $ERROR('#1.1: x() throw ReferenceError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x() throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ x(1,2,3);
+ $ERROR('#2.1: x(1,2,3) throw ReferenceError. Actual: ' + (x(1,2,3)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#2.2: x(1,2,3) throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T1.js
new file mode 100644
index 000000000..57a5291cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T1;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "boolean primitive" case;
+*/
+
+//CHECK#1
+try {
+ true();
+ $ERROR('#1.1: true() throw TypeError. Actual: ' + (true()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: true() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = true;
+ x();
+ $ERROR('#2.1: var x = true; x() throw TypeError. Actual: ' + (x()))
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = true; x() throw TypeError. Actual: ' + (e))
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T2.js
new file mode 100644
index 000000000..b8f9d2c5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T2;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "number primitive" case;
+*/
+
+//CHECK#1
+try {
+ 1();
+ $ERROR('#1.1: 1() throw TypeError. Actual: ' + (1()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: 1() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = 1;
+ x();
+ $ERROR('#2.1: var x = 1; x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = 1; x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T3.js
new file mode 100644
index 000000000..7f31df4d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T3;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "string primitive" case;
+*/
+
+//CHECK#1
+try {
+ "1"();
+ $ERROR('#1.1: "1"() throw TypeError. Actual: ' + ("1"()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: "1"() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = "1";
+ x();
+ $ERROR('#2.1: var x = "1"; x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = "1"; x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T4.js
new file mode 100644
index 000000000..eb392bc32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T4.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T4;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "undefined" case;
+*/
+
+//CHECK#1
+try {
+ undefined();
+ $ERROR('#1.1: undefined() throw TypeError. Actual: ' + (e));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: undefined() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = undefined;
+ x();
+ $ERROR('#2.1: var x = undefined; x() throw TypeError. Actual: ' + (e));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = undefined; x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T5.js
new file mode 100644
index 000000000..e281e2c52
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T5.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T5;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "null" case;
+*/
+
+//CHECK#1
+try {
+ null();
+ $ERROR('#1.1: null() throw TypeError. Actual: ' + (null()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: null() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = null;
+ x();
+ $ERROR('#2.1: var x = null; x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = null; x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T1.js
new file mode 100644
index 000000000..3d6889da2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T1;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking Boolean object case;
+*/
+
+//CHECK#1
+try {
+ new Boolean(true)();
+ $ERROR('#1.1: new Boolean(true)() throw TypeError. Actual: ' + (new Boolean(true)()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Boolean(true)() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = new Boolean(true);
+ x();
+ $ERROR('#2.1: var x = new Boolean(true); x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = new Boolean(true); x() throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T2.js
new file mode 100644
index 000000000..3daf4be0f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T2;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking Number object case;
+*/
+
+//CHECK#1
+try {
+ new Number(1)();
+ $ERROR('#1.1: new Number(1)() throw TypeError. Actual: ' + (new Number(1)()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Number(1)() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = new Number(1);
+ x();
+ $ERROR('#2.1: var x = new Number(1); x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = new Number(1); x() throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T3.js
new file mode 100644
index 000000000..240d913eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T3;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking String object case;
+*/
+
+//CHECK#1
+try {
+ new String("1")();
+ $ERROR('#1.1: new String("1")() throw TypeError. Actual: ' + (new String("1")()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new String("1")() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = new String("1");
+ x();
+ $ERROR('#2.1: var x = new String("1"); x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = new String("1"); x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T4.js
new file mode 100644
index 000000000..65e142b1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T4;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking Global object case;
+*/
+
+//CHECK#1
+try {
+ this();
+ $ERROR('#1.1: this() throw TypeError. Actual: ' + (this()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: this() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T5.js
new file mode 100644
index 000000000..96effc8e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T5;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking Math object case;
+*/
+
+//CHECK#1
+try {
+ Math();
+ $ERROR('#1.1: Math() throw TypeError. Actual: ' + (Math()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: Math() throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T1.js
new file mode 100644
index 000000000..f1cffef9e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.1_T1;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : ();
+* @description: Function is declared with no FormalParameterList;
+*/
+
+function f_arg() {
+ return arguments;
+}
+
+//CHECK#1
+if (f_arg().length !== 0) {
+ $ERROR('#1: function f_arg() {return arguments;} f_arg().length === 0. Actual: ' + (f_arg().length));
+}
+
+//CHECK#2
+if (f_arg()[0] !== undefined) {
+ $ERROR('#2: function f_arg() {return arguments;} f_arg()[0] === undefined. Actual: ' + (f_arg()[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T2.js
new file mode 100644
index 000000000..03e2fd0fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.1_T2;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : ();
+* @description: Function is declared with FormalParameterList;
+*/
+
+function f_arg(x,y) {
+ return arguments;
+}
+
+//CHECK#1
+if (f_arg().length !== 0) {
+ $ERROR('#1: function f_arg(x,y) {return arguments;} f_arg().length === 0. Actual: ' + (f_arg().length));
+}
+
+//CHECK#2
+if (f_arg()[0] !== undefined) {
+ $ERROR('#2: function f_arg(x,y) {return arguments;} f_arg()[0] === undefined. Actual: ' + (f_arg()[0]));
+}
+
+//CHECK#3
+if (f_arg.length !== 2) {
+ $ERROR('#3: function f_arg(x,y) {return arguments;} f_arg.length === 2. Actual: ' + (f_arg.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T1.js
new file mode 100644
index 000000000..f4417f376
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.2_T1;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList);
+* @description: Function is declared with no FormalParameterList;
+*/
+
+f_arg = function() {
+ return arguments;
+}
+
+//CHECK#1
+if (f_arg(1,2,3).length !== 3) {
+ $ERROR('#1: f_arg = function()() {return arguments;} f_arg(1,2,3).length === 3. Actual: ' + (f_arg(1,2,3).length));
+}
+
+//CHECK#2
+if (f_arg(1,2,3)[0] !== 1) {
+ $ERROR('#1: f_arg = function()() {return arguments;} f_arg(1,2,3)[0] === 1. Actual: ' + (f_arg(1,2,3)[0]));
+}
+
+//CHECK#3
+if (f_arg(1,2,3)[1] !== 2) {
+ $ERROR('#3: f_arg = function()() {return arguments;} f_arg(1,2,3)[1] === 2. Actual: ' + (f_arg(1,2,3)[1]));
+}
+
+//CHECK#4
+if (f_arg(1,2,3)[2] !== 3) {
+ $ERROR('#4: f_arg = function()() {return arguments;} f_arg(1,2,3)[2] === 3. Actual: ' + (f_arg(1,2,3)[2]));
+}
+
+//CHECK#5
+if (f_arg(1,2,3)[3] !== undefined) {
+ $ERROR('#5: f_arg = function()() {return arguments;} f_arg(1,2,3)[3] === undefined. Actual: ' + (f_arg(1,2,3)[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T2.js
new file mode 100644
index 000000000..ed9b24b23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T2.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.2_T2;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList);
+* @description: Function is declared with FormalParameterList;
+*/
+
+f_arg = function(x,y) {
+ return arguments;
+}
+
+//CHECK#1
+if (f_arg(1,2,3).length !== 3) {
+ $ERROR('#1: f_arg = function(x,y) {return arguments;} f_arg(1,2,3).length === 3. Actual: ' + (f_arg(1,2,3).length));
+}
+
+//CHECK#2
+if (f_arg(1)[0] !== 1) {
+ $ERROR('#1: f_arg = function(x,y) {return arguments;} f_arg(1)[0] === 1. Actual: ' + (f_arg(1)[0]));
+}
+
+//CHECK#3
+if (f_arg(1,2)[1] !== 2) {
+ $ERROR('#3: f_arg = function(x,y) {return arguments;} f_arg(1,2)[1] === 2. Actual: ' + (f_arg(1,2)[1]));
+}
+
+//CHECK#4
+if (f_arg(1,2,3)[2] !== 3) {
+ $ERROR('#4: f_arg = function(x,y) {return arguments;} f_arg(1,2,3)[2] === 3. Actual: ' + (f_arg(1,2,3)[2]));
+}
+
+//CHECK#5
+if (f_arg(1,2,3)[3] !== undefined) {
+ $ERROR('#5: f_arg = function(x,y) {return arguments;} f_arg(1,2,3)[3] === undefined. Actual: ' + (f_arg(1,2,3)[3]));
+}
+
+//CHECK#6
+if (f_arg.length !== 2) {
+ $ERROR('#6: f_arg = function(x,y) {return arguments;} f_arg.length === 2. Actual: ' + (f_arg.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.3_T1.js
new file mode 100644
index 000000000..917854f14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.3_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.3_T1;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList,, AssignmentExpression) is a bad syntax;
+* @description: incorrect syntax;
+* @negative;
+*/
+
+function f_arg() {
+}
+
+f_arg(1,,2);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T1.js
new file mode 100644
index 000000000..c281410b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.4_T1;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList, AssignmentExpression);
+* @description: Return an internal list whose length is one greater than the
+* length of ArgumentList and whose items are the items of ArgumentList, in order,
+* followed at the end by GetValue(AssignmentExpression), which is the last item of
+* the new list;
+*/
+
+function f_arg() {
+}
+
+//CHECK#1
+f_arg(x=1,x);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T2.js
new file mode 100644
index 000000000..76b6b41f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.4_T2;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList, AssignmentExpression);
+* @description: Return an internal list whose length is one greater than the
+* length of ArgumentList and whose items are the items of ArgumentList, in order,
+* followed at the end by GetValue(AssignmentExpression), which is the last item of
+* the new list;
+*/
+
+function f_arg() {
+}
+
+//CHECK#1
+try {
+ f_arg(x,x=1);
+ $ERROR('#1.1: function f_arg() {} f_arg(x,x=1) throw ReferenceError. Actual: ' + (f_arg(x,x=1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: function f_arg() {} f_arg(x,x=1) throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T3.js
new file mode 100644
index 000000000..b435bf36f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.4_T3;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList, AssignmentExpression);
+* @description: Return an internal list whose length is one greater than the
+* length of ArgumentList and whose items are the items of ArgumentList, in order,
+* followed at the end by GetValue(AssignmentExpression), which is the last item of
+* the new list;
+*/
+
+function f_arg(x,y,z) {
+ return z;
+}
+
+//CHECK#1
+if (f_arg(x=1,y=x,x+y) !== 2) {
+ $ERROR('#1: function f_arg(x,y,z) {return z;} f_arg(x=1,y=x,x+y) === 2. Actual: ' + (f_arg(x=1,y=x,x+y)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T4.js
new file mode 100644
index 000000000..ed47b4dbd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T4.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.4_T4;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList, AssignmentExpression);
+* @description: Return an internal list whose length is one greater than the
+* length of ArgumentList and whose items are the items of ArgumentList, in order,
+* followed at the end by GetValue(AssignmentExpression), which is the last item of
+* the new list;
+*/
+
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+
+function f_arg() {
+}
+
+//CHECK#1
+try {
+ f_arg(x(),y());
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; function f_arg() {} f_arg(x(),y()) throw "x". Actual: ' + (f_arg(x(),y())));
+}
+catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First argument is evaluated first, and then second argument');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; function f_arg() {} f_arg(x(),y()) throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T1.js
new file mode 100644
index 000000000..61ad35814
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.1_T1;
+* @section: 11.3.1, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "++" is not allowed;
+* @description: Checking Line Feed;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u000A++");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T2.js
new file mode 100644
index 000000000..3d410bdba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.1_T2;
+* @section: 11.3.1, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "++" is not allowed;
+* @description: Carriage Return;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u000D++");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T3.js
new file mode 100644
index 000000000..c1b62542d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.1_T3;
+* @section: 11.3.1, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "++" is not allowed;
+* @description: Checking Line Seprator;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u2028++");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T4.js
new file mode 100644
index 000000000..f0ac9c409
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.1_T4;
+* @section: 11.3.1, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "++" is not allowed;
+* @description: Checking Paragraph separator;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u2029++");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.2_T1.js
new file mode 100644
index 000000000..7c8d8fe59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.2_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.2_T1;
+* @section: 11.3.1, 11.6.3, 7.2;
+* @assertion: White Space between LeftHandSideExpression and "++" are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 0; x\u0009++; x") !== 1) {
+ $ERROR('#1: var x = 0; x\\u0009++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 0; x\u000B++; x") !== 1) {
+ $ERROR('#2: var x = 0; x\\u000B++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 0; x\u000C++; x") !== 1) {
+ $ERROR('#3: var x = 0; x\\u000C++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 0; x\u0020++; x") !== 1) {
+ $ERROR('#4: var x = 0; x\\u0020++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 0; x\u00A0++; x") !== 1) {
+ $ERROR('#5: var x = 0; x\\u00A0++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 0; x\u0009\u000B\u000C\u0020\u00A0++; x") !== 1) {
+ $ERROR('#6: var x = 0; x\\u0009\\u000B\\u000C\\u0020\\u00A0++; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T1.js
new file mode 100644
index 000000000..4c99b4276
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A2.1_T1;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ uses GetValue and PutValue;
+* @description: Type(x) is Reference and GetBase(x) is not null;
+*/
+
+//CHECK#1
+var x = 1;
+var y = x++;
+if (y !== 1) {
+ $ERROR('#1: var x = 1; var y = x++; y === 1. Actual: ' + (y));
+} else {
+ if (x !== 1 + 1) {
+ $ERROR('#1: var x = 1; var y = x++; x === 1 + 1. Actual: ' + (x));
+ }
+}
+
+//CHECK#2
+this.x = 1;
+var y = this.x++;
+if (y !== 1) {
+ $ERROR('#2: this.x = 1; var y = this.x++; y === 1. Actual: ' + (y));
+} else {
+ if (this.x !== 1 + 1) {
+ $ERROR('#2: this.x = 1; var y = this.x++; this.x === 1 + 1. Actual: ' + (this.x));
+ }
+}
+
+//CHECK#3
+var object = new Object();
+object.prop = 1;
+var y = object.prop++;
+if (y !== 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; var y = object.prop++; y === 1. Actual: ' + (y));
+} else {
+ if (this.x !== 1 + 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; var y = object.prop++; object.prop === 1 + 1. Actual: ' + (object.prop));
+ }
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T2.js
new file mode 100644
index 000000000..515c76360
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A2.1_T2;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ uses GetValue and PutValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x++;
+ $ERROR('#1.1: x++ throw ReferenceError. Actual: ' + (x++));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x++ throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T3.js
new file mode 100644
index 000000000..da562f347
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A2.1_T3;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ uses GetValue and PutValue;
+* @description: If Type(x) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ 1++;
+ $ERROR('#1.1: 1++ throw ReferenceError (or SyntaxError). Actual: ' + (1++));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1++ throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ 1++;
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.2_T1.js
new file mode 100644
index 000000000..79d9372c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.2_T1.js
@@ -0,0 +1,109 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.3.1_A2.2_T1;
+ * @section: 11.3.1, 8.6.2.6;
+ * @assertion: Operator x++ uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+var y = object++;
+if (y !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+var y = object++;
+if (y !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+var y = object++;
+if (y !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ var y = object++;
+ if (y !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object++; y === 1. Actual: ' + (y));
+ } else {
+ if (object !== 1 + 1) {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object++; y not throw "error"');
+ } else {
+ $ERROR('#4.4: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object++; y not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+var y = object++;
+if (y !== 1) {
+ $ERROR('#5.1: var object = {toString: function() {return 1}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#5.2: var object = {toString: function() {return 1}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+var y = object++;
+if (y !== 1) {
+ $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ var y = object++;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object++ throw "error". Actual: ' + (y));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object++ throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var y = object++;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object++ throw TypeError. Actual: ' + (y));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object++ throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T1.js
new file mode 100644
index 000000000..d87bb767a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T1;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+x++;
+if (x !== 0 + 1) {
+ $ERROR('#1: var x = false; x++; x === 0 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+x++;
+if (x !== 1 + 1) {
+ $ERROR('#2: var x = new Boolean(true); x++; x === 1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T2.js
new file mode 100644
index 000000000..1d309f0b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T2;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+x++;
+if (x !== 0.1 + 1) {
+ $ERROR('#1: var x = 0.1; x++; x === 0.1 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+x++;
+if (x !== -1.1 + 1) {
+ $ERROR('#2: var x = new Number(-1.1); x++; x === -1.1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T3.js
new file mode 100644
index 000000000..f866f0a35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T3;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+x++;
+if (x !== 1 + 1) {
+ $ERROR('#1: var x = "1"; x++; x === 1 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = "x";
+x++;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = "x"; x++; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+var x = new Number("-1");
+x++;
+if (x !== -1 + 1) {
+ $ERROR('#3: var x = new String("-1"); x++; x === -1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T4.js
new file mode 100644
index 000000000..4d4813843
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T4;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+x++;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x; x++; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+x++;
+if (x !== 1) {
+ $ERROR('#2: var x = null; x++; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T5.js
new file mode 100644
index 000000000..bda328004
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T5;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+x++;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x = {}; x++; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+x++;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; x++; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T1.js
new file mode 100644
index 000000000..3d6589d7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T1;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+var y = x++;
+if (y !== 0) {
+ $ERROR('#1: var x = false; var y = x++; y === 0. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+var y = x++;
+if (y !== 1) {
+ $ERROR('#2: var x = new Boolean(true); var y = x++; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T2.js
new file mode 100644
index 000000000..f684d11c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T2;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = -0.1;
+var y = x++;
+if (y !== -0.1) {
+ $ERROR('#1: var x = -0.1; var y = x++; y === -0.1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = new Number(1.1);
+var y = x++;
+if (y !== 1.1) {
+ $ERROR('#2: var x = new Number(1.1); var y = x++; y === 1.1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T3.js
new file mode 100644
index 000000000..174eea146
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T3;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+var y = x++;
+if (y !== 1) {
+ $ERROR('#1: var x = "1"; var y = x++; y === 1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = "x";
+var y = x++;
+if (isNaN(y) !== true) {
+ $ERROR('#2: var x = "x"; var y = x++; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#3
+var x = new String("-1");
+var y = x++;
+if (y !== -1) {
+ $ERROR('#3: var x = new String("-1"); var y = x++; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T4.js
new file mode 100644
index 000000000..2e06e82b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T4;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+var y = x++;
+if (isNaN(y) !== true) {
+ $ERROR('#1: var x; var y = x++; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = null;
+var y = x++;
+if (y !== 0) {
+ $ERROR('#2: var x = null; var y = x++; y === 0. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T5.js
new file mode 100644
index 000000000..99760c068
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T5;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+var y = x++;
+if (isNaN(y) !== true) {
+ $ERROR('#1: var x = {}; var y = x++; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = function(){return 1};
+var y = x++;
+if (isNaN(y) !== true) {
+ $ERROR('#2: var x = function(){return 1}; var y = x++; y === Not-a-Number. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T1.js
new file mode 100644
index 000000000..395b3ad4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.1_T1;
+* @section: 11.3.2, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "--" is not allowed;
+* @description: Checking Line Feed;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u000A--");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T2.js
new file mode 100644
index 000000000..d8484e980
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.1_T2;
+* @section: 11.3.2, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "--" is not allowed;
+* @description: Checking Carriage Return;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u000D--");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T3.js
new file mode 100644
index 000000000..11116aee6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.1_T3;
+* @section: 11.3.2, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "--" is not allowed;
+* @description: Checking Page separator;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u2028--");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T4.js
new file mode 100644
index 000000000..1363265a1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.1_T4;
+* @section: 11.3.2, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "--" is not allowed;
+* @description: Checking Line separator;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u2029--");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.2_T1.js
new file mode 100644
index 000000000..229ff6d91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.2_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.2_T1;
+* @section: 11.3.2, 11.6.3, 7.2;
+* @assertion: White Space between LeftHandSideExpression and "--" are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 0; x\u0009--; x") !== -1) {
+ $ERROR('#1: var x = 0; x\\u0009--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 0; x\u000B--; x") !== -1) {
+ $ERROR('#2: var x = 0; x\\u000B--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 0; x\u000C--; x") !== -1) {
+ $ERROR('#3: var x = 0; x\\u000C--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 0; x\u0020--; x") !== -1) {
+ $ERROR('#4: var x = 0; x\\u0020--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 0; x\u00A0--; x") !== -1) {
+ $ERROR('#5: var x = 0; x\\u00A0--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 0; x\u0009\u000B\u000C\u0020\u00A0--; x") !== -1) {
+ $ERROR('#6: var x = 0; x\\u0009\\u000B\\u000C\\u0020\\u00A0--; x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T1.js
new file mode 100644
index 000000000..f62066ae2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A2.1_T1;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- uses GetValue and PutValue;
+* @description: Type(x) is Reference and GetBase(x) is not null;
+*/
+
+//CHECK#1
+var x = 1;
+if (x-- !== 1) {
+ $ERROR('#1: var x = 1; x-- === 1. Actual: ' + (x--));
+} else {
+ if (x !== 1 - 1) {
+ $ERROR('#1: var x = 1; x--; x === 1 - 1. Actual: ' + (x));
+ }
+}
+
+//CHECK#2
+this.x = 1;
+if (this.x-- !== 1) {
+ $ERROR('#2: this.x = 1; this.x-- === 1. Actual: ' + (this.x--));
+} else {
+ if (this.x !== 1 - 1) {
+ $ERROR('#2: this.x = 1; this.x--; this.x === 1 - 1. Actual: ' + (this.x));
+ }
+}
+
+//CHECK#3
+var object = new Object();
+object.prop = 1;
+if (object.prop-- !== 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; object.prop-- === 1. Actual: ' + (object.prop--));
+} else {
+ if (this.x !== 1 - 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; object.prop--; object.prop === 1 - 1. Actual: ' + (object.prop));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T2.js
new file mode 100644
index 000000000..e276b1b65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A2.1_T2;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- uses GetValue and PutValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x--;
+ $ERROR('#1.1: x-- throw ReferenceError. Actual: ' + (x--));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x-- throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T3.js
new file mode 100644
index 000000000..d339dae92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A2.1_T3;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- uses GetValue and PutValue;
+* @description: If Type(x) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ 1--;
+ $ERROR('#1.1: 1-- throw ReferenceError (or SyntaxError). Actual: ' + (1--));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1-- throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ 1--;
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.2_T1.js
new file mode 100644
index 000000000..76a136646
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.2_T1.js
@@ -0,0 +1,109 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.3.2_A2.2_T1;
+ * @section: 11.3.2, 8.6.2.6;
+ * @assertion: Operator x-- uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+var y = object--;
+if (y !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+var y = object--;
+if (y !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+var y = object--;
+if (y !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ var y = object--;
+ if (y !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object--; y === 1. Actual: ' + (y));
+ } else {
+ if (object !== 1 - 1) {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; y not throw "error"');
+ } else {
+ $ERROR('#4.4: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; y not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+var y = object--;
+if (y !== 1) {
+ $ERROR('#5.1: var object = {toString: function() {return 1}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#5.2: var object = {toString: function() {return 1}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+var y = object--;
+if (y !== 1) {
+ $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ var y = object--;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object-- throw "error". Actual: ' + (y));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object-- throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var y = object--;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object-- throw TypeError. Actual: ' + (y));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object-- throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T1.js
new file mode 100644
index 000000000..d56359c5c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T1;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = true;
+x--;
+if (x !== 0) {
+ $ERROR('#1: var x = true; x--; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Boolean(false);
+x--;
+if (x !== 0 - 1) {
+ $ERROR('#2: var x = new Boolean(false); x--; x === 0 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T2.js
new file mode 100644
index 000000000..92ce85819
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T2;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 1.1;
+x--;
+if (x !== 1.1 - 1) {
+ $ERROR('#1: var x = 1.1; x--; x === 1.1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Number(-0.1);
+x--;
+if (x !== -0.1 - 1) {
+ $ERROR('#2: var x = new Number(-0.1); x--; x === -0.1 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T3.js
new file mode 100644
index 000000000..31141667c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T3;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+x--;
+if (x !== 1 - 1) {
+ $ERROR('#1: var x = "1"; x--; x === 1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = "x";
+x--;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = "x"; x--; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+var x = new Number("-1");
+x--;
+if (x !== -1 - 1) {
+ $ERROR('#3: var x = new String("-1"); x--; x === -1 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T4.js
new file mode 100644
index 000000000..f9269e559
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T4;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+x--;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x; x--; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+x--;
+if (x !== -1) {
+ $ERROR('#2: var x = null; x--; x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T5.js
new file mode 100644
index 000000000..57b7c44fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T5;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+x--;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x = {}; x--; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+x--;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; x--; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T1.js
new file mode 100644
index 000000000..a39f21909
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T1;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = true;
+var y = x--;
+if (y !== 1) {
+ $ERROR('#1: var x = true; var y = x--; y === 1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = new Boolean(false);
+var y = x--;
+if (y !== 0) {
+ $ERROR('#2: var x = new Boolean(false); var y = x--; y === 0. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T2.js
new file mode 100644
index 000000000..2bc4b06ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T2;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 1.1;
+var y = x--;
+if (y !== 1.1) {
+ $ERROR('#1: var x = 1.1; var y = x--; y === 1.1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = new Number(-0.1);
+var y = x--;
+if (y !== -0.1) {
+ $ERROR('#2: var x = new Number(-0.1); var y = x--; y === -0.1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T3.js
new file mode 100644
index 000000000..29a7b0ce8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T3;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+var y = x--;
+if (y !== 1) {
+ $ERROR('#1: var x = "1"; var y = x--; y === 1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = "x";
+var y = x--;
+if (isNaN(y) !== true) {
+ $ERROR('#2: var x = "x"; var y = x--; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#3
+var x = new String("-1");
+var y = x--;
+if (y !== -1) {
+ $ERROR('#3: var x = new String("-1"); var y = x--; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T4.js
new file mode 100644
index 000000000..e86b6d7ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T4;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: If Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+var y = x--;
+if (isNaN(y) !== true) {
+ $ERROR('#1: var x; var y = x--; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = null;
+var y = x--;
+if (y !== 0) {
+ $ERROR('#2: var x = null; var y = x--; y === 0. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T5.js
new file mode 100644
index 000000000..b1a630041
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T5;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+var y = x--;
+if (isNaN(y) !== true) {
+ $ERROR('#1: var x = {}; var y = x--; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = function(){return 1};
+var y = x--;
+if (isNaN(y) !== true) {
+ $ERROR('#2: var x = function(){return 1}; var y = x--; y === Not-a-Number. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A1.js
new file mode 100644
index 000000000..2642e00e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A1;
+* @section: 11.4.1;
+* @assertion: White Space and Line Terminator between "delete" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("delete\u00090") !== true) {
+ $ERROR('#1: delete\\u00090 === true');
+}
+
+//CHECK#2
+if (eval("delete\u000B0") !== true) {
+ $ERROR('#2: delete\\u000B0 === true');
+}
+
+//CHECK#3
+if (eval("delete\u000C0") !== true) {
+ $ERROR('#3: delete\\u000C0 === true');
+}
+
+//CHECK#4
+if (eval("delete\u00200") !== true) {
+ $ERROR('#4: delete\\u00200 === true');
+}
+
+//CHECK#5
+if (eval("delete\u00A00") !== true) {
+ $ERROR('#5: delete\\u00A00 === true');
+}
+
+//CHECK#6
+if (eval("delete\u000A0") !== true) {
+ $ERROR('#6: delete\\u000A0 === true');
+}
+
+//CHECK#7
+if (eval("delete\u000D0") !== true) {
+ $ERROR('#7: delete\\u000D0 === true');
+}
+
+//CHECK#8
+if (eval("delete\u20280") !== true) {
+ $ERROR('#8: delete\\u20280 === true');
+}
+
+//CHECK#9
+if (eval("delete\u20290") !== true) {
+ $ERROR('#9: delete\\u20290 === true');
+}
+
+//CHECK#10
+if (eval("delete\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290") !== true) {
+ $ERROR('#10: delete\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20290 === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.1.js
new file mode 100644
index 000000000..3c960c972
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A2.1;
+* @section: 11.4.1;
+* @assertion: If Type(x) is not Reference, return true;
+* @description: Checking primitive value and Object value cases;
+*/
+
+//CHECK#1
+if (delete 1 !== true) {
+ $ERROR('#1: delete 1 === true');
+}
+
+//CHECK#2
+if (delete new Object() !== true) {
+ $ERROR('#2: delete new Object() === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T1.js
new file mode 100644
index 000000000..79b4f2997
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A2.2_T1;
+* @section: 11.4.1;
+* @assertion: If GetBase(x) doesn't have a property GetPropertyName(x), return true;
+* @description: Checking undeclared variable case;
+*/
+
+//CHECK#1
+if (delete x !== true) {
+ $ERROR('#1: delete x === true');
+}
+
+//CHECK#2
+if (delete this.x !== true) {
+ $ERROR('#2: delete this.x === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T2.js
new file mode 100644
index 000000000..75e30cbe3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A2.2_T2;
+* @section: 11.4.1;
+* @assertion: If GetBase(x) doesn't have a property GetPropertyName(x), return true;
+* @description: Checking Object object and Function object cases;
+*/
+
+//CHECK#1
+function MyFunction(){}
+var MyObject = new MyFunction();
+if (delete MyObject.prop !== true) {
+ $ERROR('#1: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject.prop === true');
+}
+
+//CHECK#2
+var MyObject = new Object();
+if (delete MyObject.prop !== true) {
+ $ERROR('#2: var MyObject = new Object(); delete MyObject.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.1.js
new file mode 100644
index 000000000..ea3ab3753
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A3.1;
+* @section: 11.4.1;
+* @assertion: If the property has the DontDelete attribute, return false;
+* @description: Checking declared variable;
+*/
+
+//CHECK#1
+var x = 1;
+if (delete x !== false) {
+ $ERROR('#1: var x = 1; delete x === false');
+}
+
+//CHECK#2
+var y = 1;
+if (delete this.y !== false) {
+ $ERROR('#2: var y = 1; delete this.y === false');
+}
+
+//CHECK#3
+function MyFunction(){};
+if (delete MyFunction !== false) {
+ $ERROR('#3: function MyFunction(){}; delete MyFunction === false');
+}
+
+//CHECK#4
+function MyFunction(){};
+var MyObject = new MyFunction();
+if (delete MyObject !== false) {
+ $ERROR('#4: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject === false');
+}
+
+//CHECK#5
+if (delete MyObject !== false) {
+ $ERROR('#5: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.2.js
new file mode 100644
index 000000000..16d7b94db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A3.2;
+* @section: 11.4.1;
+* @assertion: If the property doesn't have the DontDelete attribute, return true;
+* @description: Checking declared variable;
+*/
+
+//CHECK#1
+x = 1;
+if (delete x !== true) {
+ $ERROR('#1: x = 1; delete x === true');
+}
+
+//CHECK#2
+function MyFunction(){};
+MyFunction.prop = 1;
+if (delete MyFunction.prop !== true) {
+ $ERROR('#2: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop === true');
+}
+
+//CHECK#3
+function MyFunction(){};
+var MyObject = new MyFunction();
+MyObject.prop = 1;
+if (delete MyObject.prop !== true) {
+ $ERROR('#3: function MyFunction(){}; var MyObject = new MyFunction(); MyFunction.prop = 1; delete MyObject.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.3.js
new file mode 100644
index 000000000..169310d5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.3.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A3.3;
+* @section: 11.4.1;
+* @assertion: If the property doesn't have the DontDelete attribute, remove the property;
+* @description: Checking declared variable;
+*/
+
+//CHECK#1
+try {
+ x = 1;
+ delete x;
+ x;
+ $ERROR('#1: x = 1; delete x; x is not exist');
+} catch (e) {
+ if (e instanceof ReferenceError !== true) {
+ $ERROR('#1: x = 1; delete x; x is not exist');
+ }
+}
+
+
+//CHECK#2
+function MyFunction(){};
+MyFunction.prop = 1;
+delete MyFunction.prop;
+if (MyFunction.prop !== undefined) {
+ $ERROR('#2: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop; MyFunction.prop === undefined. Actual: ' + (MyFunction.prop));
+
+}
+
+//CHECK#3
+function MyFunction(){};
+var MyObjectVar = new MyFunction();
+MyObjectVar.prop = 1;
+delete MyObjectVar.prop;
+if (MyObjectVar.prop !== undefined) {
+ $ERROR('#3: function MyFunction(){}; var MyObjectVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectVar.prop; MyObjectVar.prop === undefined. Actual: ' + (MyObjectVar.prop));
+}
+
+//CHECK#4
+if (delete MyObjectVar !== false) {
+ $ERROR('#4: function MyFunction(){}; var MyObjectVar = new MyFunction(); delete MyObjectVar === false');
+}
+
+//CHECK#5
+function MyFunction(){};
+MyObjectNotVar = new MyFunction();
+MyObjectNotVar.prop = 1;
+delete MyObjectNotVar.prop;
+if (MyObjectNotVar.prop !== undefined) {
+ $ERROR('#5: function MyFunction(){}; MyObjectNotVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectNotVar.prop; MyObjectNotVar.prop === undefined. Actual: ' + (MyObjectNotVar.prop));
+}
+
+//CHECK#6
+if (delete MyObjectNotVar !== true) {
+ $ERROR('#6: function MyFunction(){}; var MyObjectNotVar = new MyFunction(); delete MyObjectNotVar === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A4.js
new file mode 100644
index 000000000..83f5ce1d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A4;
+* @section: 11.4.1;
+* @assertion: "Delete" operator removes property, which is reference to the object, not the object;
+* @description: Checking two reference by one object;
+*/
+
+//CHECK#1
+obj = new Object();
+ref = obj;
+delete ref;
+if (typeof obj !== "object") {
+ $ERROR('#1: obj = new Object(); ref = obj; delete ref; typeof obj === "object". Actual: ' + (typeof obj));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A1.js
new file mode 100644
index 000000000..c299861ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A1;
+* @section: 11.4.2;
+* @assertion: White Space and Line Terminator between "void" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("void\u00090") !== undefined) {
+ $ERROR('#1: void\\u00090 === undefined');
+}
+
+//CHECK#2
+if (eval("void\u000B0") !== undefined) {
+ $ERROR('#2: void\\u000B0 === undefined');
+}
+
+//CHECK#3
+if (eval("void\u000C0") !== undefined) {
+ $ERROR('#3: void\\u000C0 === undefined');
+}
+
+//CHECK#4
+if (eval("void\u00200") !== undefined) {
+ $ERROR('#4: void\\u00200 === undefined');
+}
+
+//CHECK#5
+if (eval("void\u00A00") !== undefined) {
+ $ERROR('#5: void\\u00A00 === undefined');
+}
+
+//CHECK#6
+if (eval("void\u000A0") !== undefined) {
+ $ERROR('#6: void\\u000A0 === undefined');
+}
+
+//CHECK#7
+if (eval("void\u000D0") !== undefined) {
+ $ERROR('#7: void\\u000D0 === undefined');
+}
+
+//CHECK#8
+if (eval("void\u20280") !== undefined) {
+ $ERROR('#8: void\\u20280 === undefined');
+}
+
+//CHECK#9
+if (eval("void\u20290") !== undefined) {
+ $ERROR('#9: void\\u20290 === undefined');
+}
+
+//CHECK#10
+if (eval("void\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290") !== undefined) {
+ $ERROR('#10: void\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20290 === undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T1.js
new file mode 100644
index 000000000..e668c4310
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A2_T1;
+* @section: 11.4.2;
+* @assertion: Operator "void" uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (void 0 !== undefined) {
+ $ERROR('#1: void 0 === undefined. Actual: ' + (void 0));
+}
+
+//CHECK#2
+var x = 0;
+if (void x !== undefined) {
+ $ERROR('#2: var x = 0; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#3
+var x = new Object();
+if (void x !== undefined) {
+ $ERROR('#3: var x = new Object(); void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T2.js
new file mode 100644
index 000000000..8bc788ea8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A2_T2;
+* @section: 11.4.2;
+* @assertion: Operator "void" uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+* @negative
+*/
+
+//CHECK#1
+void x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T1.js
new file mode 100644
index 000000000..944854623
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T1;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+if (void x !== undefined) {
+ $ERROR('#1: var x = false; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+if (void x !== undefined) {
+ $ERROR('#2: var x = new Boolean(true); void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T2.js
new file mode 100644
index 000000000..5c2a33c54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T2;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+if (void x !== undefined) {
+ $ERROR('#1: var x = 0.1; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+if (void x !== undefined) {
+ $ERROR('#2: var x = new Number(-1.1); void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T3.js
new file mode 100644
index 000000000..9e41f2c03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T3;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is string primitive of String object;
+*/
+
+//CHECK#1
+var x = "1";
+if (void x !== undefined) {
+ $ERROR('#1: var x = "1"; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = "x";
+if (isNaN(void x) !== true) {
+ $ERROR('#2: var x = "x"; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#3
+var x = new String("-1");
+if (void x !== undefined) {
+ $ERROR('#3: var x = new String("-1"); void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T4.js
new file mode 100644
index 000000000..db4d09672
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T4;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+if (isNaN(void x) !== true) {
+ $ERROR('#1: var x; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = null;
+if (void x !== undefined) {
+ $ERROR('#2: var x = null; void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T5.js
new file mode 100644
index 000000000..d2df4cbd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T5;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+if (isNaN(void x) !== true) {
+ $ERROR('#1: var x = {}; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+if (isNaN(void x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T6.js
new file mode 100644
index 000000000..1acd5848c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T6;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Checking Simple Assignment operator;
+*/
+
+//CHECK#1
+var x = 0;
+if (void (x = 1) !== undefined) {
+ $ERROR('#1: var x = 0; void (x = 1) === undefined. Actual: ' + (void (x = 1)));
+} else {
+ if (x !== 1) {
+ $ERROR('#1: var x = 0; void (x = 1); x === 1. Actual: ' + (x));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A1.js
new file mode 100644
index 000000000..141c2fa28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A1;
+* @section: 11.4.3;
+* @assertion: White Space and Line Terminator between "typeof" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 0; typeof\u0009x") !== "number") {
+ $ERROR('#1: var x = 0; typeof\\u0009x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 0; typeof\u000Bx") !== "number") {
+ $ERROR('#2: var x = 0; typeof\\u000Bx; x === "number". Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 0; typeof\u000Cx") !== "number") {
+ $ERROR('#3: var x = 0; typeof\\u000Cx; x === "number". Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 0; typeof\u0020x") !== "number") {
+ $ERROR('#4: var x = 0; typeof\\u0020x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 0; typeof\u00A0x") !== "number") {
+ $ERROR('#5: var x = 0; typeof\\u00A0x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 0; typeof\u000Ax") !== "number") {
+ $ERROR('#6: var x = 0; typeof\\u000Ax; x === "number". Actual: ' + (x));
+}
+
+//CHECK#7
+if (eval("var x = 0; typeof\u000Dx") !== "number") {
+ $ERROR('#7: var x = 0; typeof\\u000Dx; x === "number". Actual: ' + (x));
+}
+
+//CHECK#8
+if (eval("var x = 0; typeof\u2028x") !== "number") {
+ $ERROR('#8: var x = 0; typeof\\u2028x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#9
+if (eval("var x = 0; typeof\u2029x") !== "number") {
+ $ERROR('#9: var x = 0; typeof\\u2029x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#10
+if (eval("var x = 0; typeof\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029x") !== "number") {
+ $ERROR('#10: var x = 0; typeof\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029x; x === "number". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T1.js
new file mode 100644
index 000000000..e10b77101
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A2_T1;
+* @section: 11.4.3;
+* @assertion: Operator "typeof" uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (typeof 0 !== "number") {
+ $ERROR('#1: typeof 0 === "number". Actual: ' + (typeof 0));
+}
+
+//CHECK#2
+var x = 0;
+if (typeof x !== "number") {
+ $ERROR('#2: typeof x === "number". Actual: ' + (typeof x));
+}
+
+//CHECK#3
+var x = new Object();
+if (typeof x !== "object") {
+ $ERROR('#3: var x = new Object(); typeof x === "object". Actual: ' + (typeof x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T2.js
new file mode 100644
index 000000000..a67f8bb7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A2_T2;
+* @section: 11.4.3;
+* @assertion: Operator "typeof" uses GetValue;
+* @description: If GetBase(x) is null, return "undefined";
+*/
+
+//CHECK#1
+if (typeof x !== "undefined") {
+ $ERROR('#1: typeof x === "undefined". Actual: ' + (typeof x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.1.js
new file mode 100644
index 000000000..57f977aed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.1;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to undefined is "undefined";
+* @description: typeof undefined === "undefined";
+*/
+
+//CHECK#1
+if (typeof undefined !== "undefined") {
+ $ERROR('#1: typeof undefined === "undefined". Actual: ' + (typeof undefined));
+}
+
+//CHECK#2
+if (typeof void 0 !== "undefined") {
+ $ERROR('#2: typeof void 0 === "undefined". Actual: ' + (typeof void 0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.2.js
new file mode 100644
index 000000000..fa9289780
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.2;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to null is "object";
+* @description: typeof null === "object";
+*/
+
+//CHECK#1
+if (typeof null !== "object") {
+ $ERROR('#1: typeof null === "object". Actual: ' + (typeof null));
+}
+
+//CHECK#2
+if (typeof RegExp("0").exec("1") !== "object") {
+ $ERROR('#2: typeof RegExp("0").exec("1") === "object". Actual: ' + (typeof RegExp("0").exec("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.3.js
new file mode 100644
index 000000000..69ae3ea68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.3;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to boolean is "boolean";
+* @description: typeof (boolean value) === "boolean";
+*/
+
+//CHECK#1
+if (typeof true !== "boolean") {
+ $ERROR('#1: typeof true === "boolean". Actual: ' + (typeof true));
+}
+
+//CHECK#2
+if (typeof false !== "boolean") {
+ $ERROR('#2: typeof false === "boolean". Actual: ' + (typeof false));
+}
+
+//CHECK#3
+if (typeof !-1 !== "boolean") {
+ $ERROR('#3: typeof !-1 === "boolean". Actual: ' + (typeof !-1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.4.js
new file mode 100644
index 000000000..2eb59c509
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.4.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.4;
+* @section: 11.4.3;
+* @assertion: Result of appying "typeof" operator to number is "number";
+* @description: typeof (number value) === "number";
+*/
+
+//CHECK#1
+if (typeof 1 !== "number") {
+ $ERROR('#1: typeof 1 === "number". Actual: ' + (typeof 1));
+}
+
+//CHECK#2
+if (typeof Number.NaN !== "number") {
+ $ERROR('#2: typeof NaN === "number". Actual: ' + (typeof NaN));
+}
+
+//CHECK#3
+if (typeof Number.POSITIVE_INFINITY !== "number") {
+ $ERROR('#3: typeof Infinity === "number". Actual: ' + (typeof Infinity));
+}
+
+//CHECK#4
+if (typeof Number.NEGATIVE_INFINITY !== "number") {
+ $ERROR('#4: typeof -Infinity === "number". Actual: ' + (typeof -Infinity));
+}
+
+//CHECK#5
+if (typeof Math.PI !== "number") {
+ $ERROR('#5: typeof Math.PI === "number". Actual: ' + (typeof Math.PI));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.5.js
new file mode 100644
index 000000000..4f16f8361
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.5.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.5;
+* @section: 11.4.3;
+* @assertion: Result of appying "typeof" operator to string is "string";
+* @description: typeof (string value) === "string";
+*/
+
+//CHECK#1
+if (typeof "1" !== "string") {
+ $ERROR('#1: typeof "1" === "string". Actual: ' + (typeof "1"));
+}
+
+//CHECK#2
+if (typeof "NaN" !== "string") {
+ $ERROR('#2: typeof "NaN" === "string". Actual: ' + (typeof "NaN"));
+}
+
+//CHECK#3
+if (typeof "Infinity" !== "string") {
+ $ERROR('#3: typeof "Infinity" === "string". Actual: ' + (typeof "Infinity"));
+}
+
+//CHECK#4
+if (typeof "" !== "string") {
+ $ERROR('#4: typeof "" === "string". Actual: ' + (typeof ""));
+}
+
+//CHECK#5
+if (typeof "true" !== "string") {
+ $ERROR('#5: typeof "true" === "string". Actual: ' + (typeof "true"));
+}
+
+//CHECK#6
+if (typeof Date() !== "string") {
+ $ERROR('#6: typeof Date() === "string". Actual: ' + (typeof Date()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.6.js
new file mode 100644
index 000000000..b01810f97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.6.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.6;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to the object that is native and doesn't implement [[Call]] is "object";
+* @description: typeof (object without [[Call]]) === "object";
+*/
+
+//CHECK#1
+if (typeof this !== "object") {
+ $ERROR('#1: typeof this === "object". Actual: ' + (typeof this));
+}
+
+//CHECK#2
+if (typeof new Object() !== "object") {
+ $ERROR('#2: typeof new Object() === "object". Actual: ' + (typeof new Object()));
+}
+
+//CHECK#3
+if (typeof new Array(1,2,3) !== "object") {
+ $ERROR('#3: typeof new Array(1,2,3) === "object". Actual: ' + (typeof new Array(1,2,3)));
+}
+
+//CHECK#4
+if (typeof Array(1,2,3) !== "object") {
+ $ERROR('#4: typeof Array(1,2,3) === "object". Actual: ' + (typeof Array(1,2,3)));
+}
+
+//CHECK#5
+if (typeof new String("x") !== "object") {
+ $ERROR('#5: typeof new String("x") === "object". Actual: ' + (typeof new String("x")));
+}
+
+//CHECK#6
+if (typeof new Boolean(true) !== "object") {
+ $ERROR('#6: typeof new Boolean(true) === "object". Actual: ' + (typeof new Boolean(true)));
+}
+
+//CHECK#7
+if (typeof new Number(1) !== "object") {
+ $ERROR('#7: typeof new Number(1) === "object". Actual: ' + (typeof new Number(1)));
+}
+
+//CHECK#8
+//The Math object does not have a [[Construct]] property;
+//it is not possible to use the Math object as a constructor with the new operator.
+//The Math object does not have a [[Call]] property; it is not possible to invoke the Math object as a object.
+if (typeof Math !== "object") {
+ $ERROR('#8: typeof Math === "object". Actual: ' + (typeof Math));
+}
+
+//CHECK#9
+if (typeof new Date() !== "object") {
+ $ERROR('#9: typeof new Date() === "object". Actual: ' + (typeof new Date()));
+}
+
+//CHECK#10
+if (typeof new Error() !== "object") {
+ $ERROR('#10: typeof new Error() === "object". Actual: ' + (typeof new Error()));
+}
+
+//CHECK#11
+if (typeof new RegExp() !== "object") {
+ $ERROR('#11: typeof new RegExp() === "object". Actual: ' + (typeof new RegExp()));
+}
+
+//CHECK#12
+if (typeof RegExp() !== "object") {
+ $ERROR('#12: typeof RegExp() === "object". Actual: ' + (typeof RegExp()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.7.js
new file mode 100644
index 000000000..b6134679e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.7.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.7;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to the object that is native and implements [[Call]] is "function";
+* @description: typeof (object with [[Call]]) === "function";
+*/
+
+//CHECK#1
+if (typeof new Function() !== "function") {
+ $ERROR('#1: typeof new Function() === "function". Actual: ' + (typeof new Function()));
+}
+
+//CHECK#2
+if (typeof Function() !== "function") {
+ $ERROR('#2: typeof Function() === "function". Actual: ' + (typeof Function()));
+}
+
+//CHECK#3
+if (typeof Object !== "function") {
+ $ERROR('#3: typeof Object === "function". Actual: ' + (typeof Object));
+}
+
+//CHECK#4
+if (typeof String !== "function") {
+ $ERROR('#4: typeof String === "function". Actual: ' + (typeof String));
+}
+
+//CHECK5
+if (typeof Boolean !== "function") {
+ $ERROR('#5: typeof Boolean === "function". Actual: ' + (typeof Boolean));
+}
+
+//CHECK#6
+if (typeof Number !== "function") {
+ $ERROR('#6: typeof Number === "function". Actual: ' + (typeof Number));
+}
+
+//CHECK#7
+if (typeof Date !== "function") {
+ $ERROR('#7: typeof Date === "function". Actual: ' + (typeof Date));
+}
+
+//CHECK#8
+if (typeof Error !== "function") {
+ $ERROR('#8: typeof Error === "function". Actual: ' + (typeof Error));
+}
+
+//CHECK#9
+if (typeof RegExp !== "function") {
+ $ERROR('#9: typeof RegExp === "function". Actual: ' + (typeof RegExp));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A1.js
new file mode 100644
index 000000000..edd8abd85
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A1;
+* @section: 11.4.4, 11.6.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "++" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 0; ++\u0009x") !== 1) {
+ $ERROR('#1: var x = 0; ++\\u0009x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 0; ++\u000Bx") !== 1) {
+ $ERROR('#2: var x = 0; ++\\u000Bx; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 0; ++\u000Cx") !== 1) {
+ $ERROR('#3: var x = 0; ++\\u000Cx; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 0; ++\u0020x") !== 1) {
+ $ERROR('#4: var x = 0; ++\\u0020x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 0; ++\u00A0x") !== 1) {
+ $ERROR('#5: var x = 0; ++\\u00A0x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 0; ++\u000Ax") !== 1) {
+ $ERROR('#6: var x = 0; ++\\u000Ax; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+if (eval("var x = 0; ++\u000Dx") !== 1) {
+ $ERROR('#7: var x = 0; ++\\u000Dx; x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+if (eval("var x = 0; ++\u2028x") !== 1) {
+ $ERROR('#8: var x = 0; ++\\u2028x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+if (eval("var x = 0; ++\u2029x") !== 1) {
+ $ERROR('#9: var x = 0; ++\\u2029x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#10
+if (eval("var x = 0; ++\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029x") !== 1) {
+ $ERROR('#10: var x = 0; ++\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029x; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T1.js
new file mode 100644
index 000000000..34d2168dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A2.1_T1;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x uses GetValue and PutValue;
+* @description: Type(x) is Reference and GetBase(x) is not null;
+*/
+
+//CHECK#1
+var x = 1;
+if (++x !== 1 + 1) {
+ $ERROR('#1: var x = 1; ++x === 1 + 1. Actual: ' + (++x));
+} else {
+ if (x !== 1 + 1) {
+ $ERROR('#1: var x = 1; ++x; x === 1 + 1. Actual: ' + (x));
+ }
+}
+
+//CHECK#2
+this.x = 1;
+if (++this.x !== 1 + 1) {
+ $ERROR('#2: this.x = 1; ++this.x === 1 + 1. Actual: ' + (++this.x));
+} else {
+ if (this.x !== 1 + 1) {
+ $ERROR('#2: this.x = 1; ++this.x; this.x === 1 + 1. Actual: ' + (this.x));
+ }
+}
+
+//CHECK#3
+var object = new Object();
+object.prop = 1;
+if (++object.prop !== 1 + 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; ++object.prop === 1 + 1. Actual: ' + (++object.prop));
+} else {
+ if (this.x !== 1 + 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; ++object.prop; object.prop === 1 + 1. Actual: ' + (object.prop));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T2.js
new file mode 100644
index 000000000..4c951602c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A2.1_T2;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x uses GetValue and PutValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ ++x;
+ $ERROR('#1.1: ++x throw ReferenceError. Actual: ' + (++x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: ++x throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T3.js
new file mode 100644
index 000000000..feffe6b60
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A2.1_T3;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x uses GetValue and PutValue;
+* @description: If Type(x) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ ++1;
+ $ERROR('#1.1: ++1 throw ReferenceError (or SyntaxError). Actual: ' + (++1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: ++1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ ++1;
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.2_T1.js
new file mode 100644
index 000000000..6d0183284
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.2_T1.js
@@ -0,0 +1,103 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.4_A2.2_T1;
+ * @section: 11.4.4, 8.6.2.6;
+ * @assertion: Operator ++x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (++object !== 1 + 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (++object !== 1 + 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (++object !== 1 + 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (++object !== 1 + 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object === 1 + 1. Actual: ' + (++object));
+ } else {
+ if (object !== 1 + 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (++object !== 1 + 1) {
+ $ERROR('#5.1: var object = {toString: function() {return 1}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#5.2: var object = {toString: function() {return 1}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (++object !== 1 + 1) {
+ $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ ++object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ++object throw "error". Actual: ' + (++object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ++object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ ++object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ++object throw TypeError. Actual: ' + (++object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ++object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T1.js
new file mode 100644
index 000000000..738629610
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T1;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+++x;
+if (x !== 0 + 1) {
+ $ERROR('#1: var x = false; ++x; x === 0 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+++x;
+if (x !== 1 + 1) {
+ $ERROR('#2: var x = new Boolean(true); ++x; x === 1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T2.js
new file mode 100644
index 000000000..c3e89f381
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T2;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+++x;
+if (x !== 0.1 + 1) {
+ $ERROR('#1: var x = 0.1; ++x; x === 0.1 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+++x;
+if (x !== -1.1 + 1) {
+ $ERROR('#2: var x = new Number(-1.1); ++x; x === -1.1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T3.js
new file mode 100644
index 000000000..50b298dd8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T3;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+++x;
+if (x !== 1 + 1) {
+ $ERROR('#1: var x = "1"; ++x; x === 1 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = "x";
+++x;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = "x"; ++x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+var x = new Number("-1");
+++x;
+if (x !== -1 + 1) {
+ $ERROR('#3: var x = new String("-1"); ++x; x === -1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T4.js
new file mode 100644
index 000000000..8b6f1c5ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T4;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+++x;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x; ++x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+++x;
+if (x !== 1) {
+ $ERROR('#2: var x = null; ++x; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T5.js
new file mode 100644
index 000000000..c32f787ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T5;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+++x;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x = {}; ++x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+++x;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; ++x; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T1.js
new file mode 100644
index 000000000..304fefe64
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T1;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+if (++x !== 0 + 1) {
+ $ERROR('#1: var x = false; ++x === 0 + 1. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+if (++x !== 1 + 1) {
+ $ERROR('#2: var x = new Boolean(true); ++x === 1 + 1. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T2.js
new file mode 100644
index 000000000..5f406a602
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T2;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+if (++x !== 0.1 + 1) {
+ $ERROR('#1: var x = 0.1; ++x === 0.1 + 1. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+if (++x !== -1.1 + 1) {
+ $ERROR('#2: var x = new Number(-1.1); ++x === -1.1 + 1. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T3.js
new file mode 100644
index 000000000..9d3a3c734
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T3;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+if (++x !== 1 + 1) {
+ $ERROR('#1: var x = "1"; ++x === 1 + 1. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = "x";
+if (isNaN(++x) !== true) {
+ $ERROR('#2: var x = "x"; ++x === Not-a-Number. Actual: ' + (++x));
+}
+
+//CHECK#3
+var x = new String("-1");
+if (++x !== -1 + 1) {
+ $ERROR('#3: var x = new String("-1"); ++x === -1 + 1. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T4.js
new file mode 100644
index 000000000..19ec7fcf6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T4;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+if (isNaN(++x) !== true) {
+ $ERROR('#1: var x; ++x === Not-a-Number. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = null;
+if (++x !== 1) {
+ $ERROR('#2: var x = null; ++x === 1. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T5.js
new file mode 100644
index 000000000..dee44bfe4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T5;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+if (isNaN(++x) !== true) {
+ $ERROR('#1: var x = {}; ++x === Not-a-Number. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+if (isNaN(++x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; ++x === Not-a-Number. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A1.js
new file mode 100644
index 000000000..0a3f512bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A1;
+* @section: 11.4.5, 11.6.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "--" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 1; --\u0009x") !== 0) {
+ $ERROR('#1: var x = 1; --\\u0009x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 1; --\u000Bx") !== 0) {
+ $ERROR('#2: var x = 1; --\\u000Bx; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 1; --\u000Cx") !== 0) {
+ $ERROR('#3: var x = 1; --\\u000Cx; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 1; --\u0020x") !== 0) {
+ $ERROR('#4: var x = 1; --\\u0020x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 1; --\u00A0x") !== 0) {
+ $ERROR('#5: var x = 1; --\\u00A0x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 1; --\u000Ax") !== 0) {
+ $ERROR('#6: var x = 1; --\\u000Ax; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+if (eval("var x = 1; --\u000Dx") !== 0) {
+ $ERROR('#7: var x = 1; --\\u000Dx; x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+if (eval("var x = 1; --\u2028x") !== 0) {
+ $ERROR('#8: var x = 1; --\\u2028x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+if (eval("var x = 1; --\u2029x") !== 0) {
+ $ERROR('#9: var x = 1; --\\u2029x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+if (eval("var x = 1; --\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029x") !== 0) {
+ $ERROR('#10: var x = 1; --\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029x; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T1.js
new file mode 100644
index 000000000..c22f7a592
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A2.1_T1;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x uses GetValue and PutValue;
+* @description: Type(x) is Reference and GetBase(x) is not null;
+*/
+
+//CHECK#1
+var x = 1;
+if (--x !== 1 - 1) {
+ $ERROR('#1: var x = 1; --x === 1 - 1. Actual: ' + (--x));
+} else {
+ if (x !== 1 - 1) {
+ $ERROR('#1: var x = 1; --x; x === 1 - 1. Actual: ' + (x));
+ }
+}
+
+//CHECK#2
+this.x = 1;
+if (--this.x !== 1 - 1) {
+ $ERROR('#2: this.x = 1; --this.x === 1 - 1. Actual: ' + (--this.x));
+} else {
+ if (this.x !== 1 - 1) {
+ $ERROR('#2: this.x = 1; --this.x; this.x === 1 - 1. Actual: ' + (this.x));
+ }
+}
+
+//CHECK#3
+var object = new Object();
+object.prop = 1;
+if (--object.prop !== 1 - 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; --object.prop === 1 - 1. Actual: ' + (--object.prop));
+} else {
+ if (this.x !== 1 - 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; --object.prop; object.prop === 1 - 1. Actual: ' + (object.prop));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T2.js
new file mode 100644
index 000000000..2b4e33646
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A2.1_T2;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x uses GetValue and PutValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ --x;
+ $ERROR('#1.1: --x throw ReferenceError. Actual: ' + (--x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: --x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T3.js
new file mode 100644
index 000000000..30901bae0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A2.1_T3;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x uses GetValue and PutValue;
+* @description: If Type(x) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ --1;
+ $ERROR('#1.1: --1 throw ReferenceError (or SyntaxError). Actual: ' + (--1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: --1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ --1;
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.2_T1.js
new file mode 100644
index 000000000..365ab2577
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.2_T1.js
@@ -0,0 +1,103 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.5_A2.2_T1;
+ * @section: 11.4.5, 8.6.2.6;
+ * @assertion: Operator --x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (--object !== 1 - 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (--object !== 1 - 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (--object !== 1 - 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (--object !== 1 - 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object === 1 - 1. Actual: ' + (--object));
+ } else {
+ if (object !== 1 - 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (--object !== 1 - 1) {
+ $ERROR('#5.1: var object = {toString: function() {return 1}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#5.2: var object = {toString: function() {return 1}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (--object !== 1 - 1) {
+ $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ --object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; --object throw "error". Actual: ' + (--object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; --object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ --object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; --object throw TypeError. Actual: ' + (--object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; --object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T1.js
new file mode 100644
index 000000000..280c47a3c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T1;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = true;
+--x;
+if (x !== 1 - 1) {
+ $ERROR('#1: var x = true; --x; x === 1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Boolean(false);
+--x;
+if (x !== 0 - 1) {
+ $ERROR('#2: var x = new Boolean(false); --x; x === 0 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T2.js
new file mode 100644
index 000000000..06eb04ce7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T2;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+--x;
+if (x !== 0.1 - 1) {
+ $ERROR('#1: var x = 0.1; --x; x === 0.1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+--x;
+if (x !== -1.1 - 1) {
+ $ERROR('#2: var x = new Number(-1.1); --x; x === -1.1 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T3.js
new file mode 100644
index 000000000..f5d7bd077
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T3;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is primitive string or String object;
+*/
+
+//CHECK#1
+var x = "1";
+--x;
+if (x !== 1 - 1) {
+ $ERROR('#1: var x = "1"; --x; x === 1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = "x";
+--x;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = "x"; --x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+var x = new Number("-1");
+--x;
+if (x !== -1 - 1) {
+ $ERROR('#3: var x = new String("-1"); --x; x === -1 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T4.js
new file mode 100644
index 000000000..60650b162
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T4;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+--x;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x; --x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+--x;
+if (x !== -1) {
+ $ERROR('#2: var x = null; --x; x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T5.js
new file mode 100644
index 000000000..625aeb03d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T5;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+--x;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x = {}; --x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+--x;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; --x; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T1.js
new file mode 100644
index 000000000..108dc2cde
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T1;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = true;
+if (--x !== 1 - 1) {
+ $ERROR('#1: var x = true; --x === 1 - 1. Actual: ' + (--x));
+}
+
+//CHECK#2
+var x = new Boolean(false);
+if (--x !== 0 - 1) {
+ $ERROR('#2: var x = new Boolean(false); --x === 0 - 1. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T2.js
new file mode 100644
index 000000000..55c8d1890
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T2;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+if (--x !== 0.1 - 1) {
+ $ERROR('#1: var x = 0.1; --x === 0.1 - 1. Actual: ' + (--x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+if (--x !== -1.1 - 1) {
+ $ERROR('#2: var x = new Number(-1.1); --x === -1.1- 1. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T3.js
new file mode 100644
index 000000000..dc33d235e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T3;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+if (--x !== 1 - 1) {
+ $ERROR('#1: var x = "1"; --x === 1 - 1. Actual: ' + (--x));
+}
+
+//CHECK#2
+var x = "x";
+if (isNaN(--x) !== true) {
+ $ERROR('#2: var x = "x"; --x === Not-a-Number. Actual: ' + (--x));
+}
+
+//CHECK#3
+var x = new String("-1");
+if (--x !== -1 - 1) {
+ $ERROR('#3: var x = new String("-1"); --x === -1 - 1. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T4.js
new file mode 100644
index 000000000..d2286fa1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T4.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T4;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is undefined or null;
+*/
+
+
+//CHECK#1
+var x;
+if (isNaN(--x) !== true) {
+ $ERROR('#1: var x; --x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+if (--x !== -1) {
+ $ERROR('#2: var x = null; --x === -1. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T5.js
new file mode 100644
index 000000000..53be1d0db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T5;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+if (isNaN(--x) !== true) {
+ $ERROR('#1: var x = {}; --x === Not-a-Number. Actual: ' + (--x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+if (isNaN(--x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; --x === Not-a-Number. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A1.js
new file mode 100644
index 000000000..aeb9636fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A1;
+* @section: 11.4.6, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "+" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("+\u00091") !== 1) {
+ $ERROR('#1: +\\u00091 === 1');
+}
+
+//CHECK#2
+if (eval("+\u000B1") !== 1) {
+ $ERROR('#2: +\\u000B1 === 1');
+}
+
+//CHECK#3
+if (eval("+\u000C1") !== 1) {
+ $ERROR('#3: +\\u000C1 === 1');
+}
+
+//CHECK#4
+if (eval("+\u00201") !== 1) {
+ $ERROR('#4: +\\u0020 === 1');
+}
+
+//CHECK#5
+if (eval("+\u00A01") !== 1) {
+ $ERROR('#5: +\\u00A01 === 1');
+}
+
+//CHECK#6
+if (eval("+\u000A1") !== 1) {
+ $ERROR('#6: +\\u000A1 === 1');
+}
+
+//CHECK#7
+if (eval("+\u000D1") !== 1) {
+ $ERROR('#7: +\\u000D1 === 1');
+}
+
+//CHECK#8
+if (eval("+\u20281") !== 1) {
+ $ERROR('#8: +\\u20281 === 1');
+}
+
+//CHECK#9
+if (eval("+\u20291") !== 1) {
+ $ERROR('#9: +\\u20291 === 1');
+}
+
+//CHECK#10
+if (eval("+\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 1) {
+ $ERROR('#10: +\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T1.js
new file mode 100644
index 000000000..a703e0ff1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A2.1_T1;
+* @section: 11.4.6;
+* @assertion: Operator +x uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (+1 !== 1) {
+ $ERROR('#1: +1 === 1. Actual: ' + (+1));
+}
+
+//CHECK#2
+if (+(+1) !== 1) {
+ $ERROR('#2: +(+1) === -1. Actual: ' + (+(+1)));
+}
+
+//CHECK#3
+var x = 1;
+if (+x !== 1) {
+ $ERROR('#3: var x = +1; -x === 1. Actual: ' + (-x));
+}
+
+//CHECK#4
+var x = 1;
+if (+(+x) !== 1) {
+ $ERROR('#4: var x = 1; +(+x) === 1. Actual: ' + (+(+x)));
+}
+
+//CHECK#5
+var object = new Object();
+object.prop = 1;
+if (+object.prop !== 1) {
+ $ERROR('#5: var object = new Object(); object.prop = 1; +object.prop === 1. Actual: ' + (+object.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T2.js
new file mode 100644
index 000000000..befd6666c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A2.1_T2;
+* @section: 11.4.6;
+* @assertion: Operator +x uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ +x;
+ $ERROR('#1.1: +x throw ReferenceError. Actual: ' + (+x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: +x throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.2_T1.js
new file mode 100644
index 000000000..c6a9dabdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.6_A2.2_T1;
+ * @section: 11.4.6, 8.6.2.6;
+ * @assertion: Operator +x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (+object !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (+object !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (+object !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (+object !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; +object === 1. Actual: ' + (+object));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; +object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; +object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (+object !== 1) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (+object !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ +object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; +object throw "error". Actual: ' + (+object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; +object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ +object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; +object throw TypeError. Actual: ' + (+object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; +object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T1.js
new file mode 100644
index 000000000..35d2af330
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T1;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+if (+false !== 0) {
+ $ERROR('#1: +false === 0. Actual: ' + (+false));
+}
+
+//CHECK#2
+if (+new Boolean(true) !== 1) {
+ $ERROR('#2: +new Boolean(true) === 1. Actual: ' + (+new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T2.js
new file mode 100644
index 000000000..860f6e333
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T2;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+if (+0.1 !== 0.1) {
+ $ERROR('#1: +0.1 === 0.1. Actual: ' + (+0.1));
+}
+
+//CHECK#2
+if (+new Number(-1.1) !== -1.1) {
+ $ERROR('#2: +new Number(-1.1) === -1.1. Actual: ' + (+new Number(-1.1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T3.js
new file mode 100644
index 000000000..40c2fa970
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T3;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+if (+"1" !== 1) {
+ $ERROR('#1: +"1" === 1. Actual: ' + (+"1"));
+}
+
+//CHECK#2
+if (isNaN(+"x") !== true) {
+ $ERROR('#2: +"x" === Not-a-Number. Actual: ' + (+"x"));
+}
+
+//CHECK#3
+if (+new Number("-1") !== -1) {
+ $ERROR('#3: +new String("-1") === -1. Actual: ' + (+new String("-1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T4.js
new file mode 100644
index 000000000..fa2f16602
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T4;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+if (isNaN(+void 0) !== true) {
+ $ERROR('#1: +void 0 === Not-a-Number. Actual: ' + (+void 0));
+}
+
+//CHECK#2
+if (+null !== 0) {
+ $ERROR('#2: +null === 0. Actual: ' + (+null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T5.js
new file mode 100644
index 000000000..78c89c941
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T5;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+if (isNaN(+{}) !== true) {
+ $ERROR('#1: +{} === Not-a-Number. Actual: ' + (+{}));
+}
+
+//CHECK#2
+if (isNaN(+function(){return 1}) !== true) {
+ $ERROR('#2: +function(){return 1} === Not-a-Number. Actual: ' + (+function(){return 1}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A1.js
new file mode 100644
index 000000000..0951fa297
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A1;
+* @section: 11.4.7, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "-" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("-\u00091") !== -1) {
+ $ERROR('#1: -\\u00091 === -1');
+}
+
+//CHECK#2
+if (eval("-\u000B1") !== -1) {
+ $ERROR('#2: -\\u000B1 === -1');
+}
+
+//CHECK#3
+if (eval("-\u000C1") !== -1) {
+ $ERROR('#3: -\\u000C1 === -1');
+}
+
+//CHECK#4
+if (eval("-\u00201") !== -1) {
+ $ERROR('#4: -\\u0020 === -1');
+}
+
+//CHECK#5
+if (eval("-\u00A01") !== -1) {
+ $ERROR('#5: -\\u00A01 === -1');
+}
+
+//CHECK#6
+if (eval("-\u000A1") !== -1) {
+ $ERROR('#6: -\\u000A1 === -1');
+}
+
+//CHECK#7
+if (eval("-\u000D1") !== -1) {
+ $ERROR('#7: -\\u000D1 === -1');
+}
+
+//CHECK#8
+if (eval("-\u20281") !== -1) {
+ $ERROR('#8: -\\u20281 === -1');
+}
+
+//CHECK#9
+if (eval("-\u20291") !== -1) {
+ $ERROR('#9: -\\u20291 === -1');
+}
+
+//CHECK#10
+if (eval("-\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== -1) {
+ $ERROR('#10: -\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === -1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T1.js
new file mode 100644
index 000000000..22a322348
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A2.1_T1;
+* @section: 11.4.7;
+* @assertion: Operator -x uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (-1 !== -1) {
+ $ERROR('#1: -1 === -1. Actual: ' + (-1));
+}
+
+//CHECK#2
+if (-(-1) !== 1) {
+ $ERROR('#2: -(-1) === -1. Actual: ' + (-(-1)));
+}
+
+//CHECK#3
+var x = -1;
+if (-x !== 1) {
+ $ERROR('#3: var x = -1; -x === 1. Actual: ' + (-x));
+}
+
+//CHECK#4
+var x = -1;
+if (-(-x) !== -1) {
+ $ERROR('#4: var x = -1; -(-x) === -1. Actual: ' + (-(-x)));
+}
+
+//CHECK#5
+var object = new Object();
+object.prop = 1;
+if (-object.prop !== -1) {
+ $ERROR('#5: var object = new Object(); object.prop = -1; -object.prop === -1. Actual: ' + (-object.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T2.js
new file mode 100644
index 000000000..6067d4078
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A2.1_T2;
+* @section: 11.4.7;
+* @assertion: Operator -x uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ -x;
+ $ERROR('#1.1: -x throw ReferenceError. Actual: ' + (-x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: -x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.2_T1.js
new file mode 100644
index 000000000..62445055b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.7_A2.2_T1;
+ * @section: 11.4.7, 8.6.2.6;
+ * @assertion: Operator -x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return -1}};
+if (-object !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return -1}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return -1}, toString: function() {return 0}};
+if (-object !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return -1}, toString: function() {return 0}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return -1}, toString: function() {return {}}};
+if (-object !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return -1}, toString: function() {return {}}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return -1}, toString: function() {throw "error"}};
+ if (-object !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return -1}, toString: function() {throw "error"}}; -object === 1. Actual: ' + (-object));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return -1}, toString: function() {throw "error"}}; -object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return -1}, toString: function() {throw "error"}}; -object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return -1}};
+if (-object !== 1) {
+ $ERROR('#5.1: var object = {toString: function() {return -1}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return -1}}
+if (-object !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return -1}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return -1}};
+ -object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return -1}}; -object throw "error". Actual: ' + (-object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return -1}}; -object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ -object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; -object throw TypeError. Actual: ' + (-object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; -object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T1.js
new file mode 100644
index 000000000..c988818da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T1;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+if (-false !== 0) {
+ $ERROR('#1: -false === 0. Actual: ' + (-false));
+}
+
+//CHECK#2
+if (-new Boolean(true) !== -1) {
+ $ERROR('#2: -new Boolean(true) === -1. Actual: ' + (-new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T2.js
new file mode 100644
index 000000000..bf763effe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T2;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+if (-(1) !== -1) {
+ $ERROR('#1: -(1) === -1. Actual: ' + (-(1)));
+}
+
+//CHECK#2
+if (-new Number(-1) !== 1) {
+ $ERROR('#2: -new Number(-1) === 1. Actual: ' + (-new Number(-1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T3.js
new file mode 100644
index 000000000..d6be7cc99
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T3;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+if (-"1" !== -1) {
+ $ERROR('#1: -"1" === -1. Actual: ' + (-"1"));
+}
+
+//CHECK#2
+if (isNaN(-"x") !== true) {
+ $ERROR('#2: -"x" === Not-a-Number. Actual: ' + (-"x"));
+}
+
+//CHECK#3
+if (-new String("-1") !== 1) {
+ $ERROR('#3: -new String("-1") === 1. Actual: ' + (-new String("-1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T4.js
new file mode 100644
index 000000000..1877387ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T4;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+if (isNaN(-void 0) !== true) {
+ $ERROR('#1: +void 0 === Not-a-Number. Actual: ' + (+void 0));
+}
+
+//CHECK#2
+if (-null !== 0) {
+ $ERROR('#2: +null === 0. Actual: ' + (+null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T5.js
new file mode 100644
index 000000000..0a63fa917
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T5;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+if (isNaN(-{}) !== true) {
+ $ERROR('#1: -{} === Not-a-Number. Actual: ' + (-{}));
+}
+
+//CHECK#2
+if (isNaN(-function(){return 1}) !== true) {
+ $ERROR('#2: -function(){return 1} === Not-a-Number. Actual: ' + (-function(){return 1}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.1.js
new file mode 100644
index 000000000..6a1fa75c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A4.1;
+* @section: 11.4.7;
+* @assertion: If x is NaN, operator -x returns NaN;
+* @description: Checking NaN;
+*/
+
+//CHECK#1
+if (isNaN(-NaN) !== true) {
+ $ERROR('#1: -NaN === Not-a-Number. Actual: ' + (-NaN));
+}
+
+//CHECK#2
+var x = NaN;
+if (isNaN(-x) != true) {
+ $ERROR('#2: var x = NaN; -x === Not-a-Number. Actual: ' + (-x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.2.js
new file mode 100644
index 000000000..8a6bd8005
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A4.2;
+* @section: 11.4.7;
+* @assertion: Negating +0 produces -0, negating -0 produces +0;
+* @description: Checking Infinity;
+*/
+
+//CHECK#1
+var x = 0;
+x = -x;
+if (x !== -0) {
+ $ERROR('#1.1: var x = 0; x = -x; x === 0. Actual: ' + (x));
+} else {
+ if (1/x !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: var x = 0; x = -x; x === - 0. Actual: +0');
+ }
+}
+
+//CHECK#2
+var x = -0;
+x = -x;
+if (x !== 0) {
+ $ERROR('#2.1: var x = -0; x = -x; x === 0. Actual: ' + (x));
+} else {
+ if (1/x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: var x = -0; x = -x; x === + 0. Actual: -0');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A1.js
new file mode 100644
index 000000000..d4dc1ead9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A1;
+* @section: 11.4.8, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "~" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("~\u00090") !== -1) {
+ $ERROR('#0: ~\\u00090 === -1');
+}
+
+//CHECK#2
+if (eval("~\u000B0") !== -1) {
+ $ERROR('#2: ~\\u000B0 === -1');
+}
+
+//CHECK#3
+if (eval("~\u000C0") !== -1) {
+ $ERROR('#3: ~\\u000C0 === -1');
+}
+
+//CHECK#4
+if (eval("~\u00200") !== -1) {
+ $ERROR('#4: ~\\u0020 === -1');
+}
+
+//CHECK#5
+if (eval("~\u00A00") !== -1) {
+ $ERROR('#5: ~\\u00A00 === -1');
+}
+
+//CHECK#6
+if (eval("~\u000A0") !== -1) {
+ $ERROR('#6: ~\\u000A0 === -1');
+}
+
+//CHECK#7
+if (eval("~\u000D0") !== -1) {
+ $ERROR('#7: ~\\u000D0 === -1');
+}
+
+//CHECK#8
+if (eval("~\u20280") !== -1) {
+ $ERROR('#8: ~\\u20280 === -1');
+}
+
+//CHECK#9
+if (eval("~\u20290") !== -1) {
+ $ERROR('#9: ~\\u20290 === -1');
+}
+
+//CHECK#10
+if (eval("~\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290") !== -1) {
+ $ERROR('#10: ~\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20290 === -1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T1.js
new file mode 100644
index 000000000..39107ff07
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A2.1_T1;
+* @section: 11.4.8;
+* @assertion: Operator ~x uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (~0 !== -1) {
+ $ERROR('#1: ~0 === -1. Actual: ' + (~0));
+}
+
+//CHECK#2
+if (~(~0) !== 0) {
+ $ERROR('#2: ~(~0) === 0. Actual: ' + (~(~0)));
+}
+
+//CHECK#3
+var x = 0;
+if (~x !== -1) {
+ $ERROR('#3: var x = 0; ~x === -1. Actual: ' + (~x));
+}
+
+//CHECK#4
+var x = 0;
+if (~(~x) !== 0) {
+ $ERROR('#4: var x = 0; ~(~x) === 0. Actual: ' + (~(~x)));
+}
+
+//CHECK#5
+var object = new Object();
+object.prop = 0;
+if (~object.prop !== -1) {
+ $ERROR('#5: var object = new Object(); object.prop = 0; ~object.prop === -1. Actual: ' + (~object.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T2.js
new file mode 100644
index 000000000..c55ac7a4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A2.1_T2;
+* @section: 11.4.8;
+* @assertion: Operator ~x uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ ~x;
+ $ERROR('#1.1: ~x throw ReferenceError. Actual: ' + (~x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: ~x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.2_T1.js
new file mode 100644
index 000000000..03fff147a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.8_A2.2_T1;
+ * @section: 11.4.8, 8.6.2.6;
+ * @assertion: Operator ~x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (~object !== -2) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (~object !== -2) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (~object !== -2) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (~object !== -2) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object === -2. Actual: ' + (~object));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (~object !== -2) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (~object !== -2) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ ~object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ~object throw "error". Actual: ' + (~object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ~object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ ~object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ~object throw TypeError. Actual: ' + (~object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ~object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T1.js
new file mode 100644
index 000000000..6b7d15f22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T1;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+if (~false !== -1) {
+ $ERROR('#1: ~false === -1. Actual: ' + (~false));
+}
+
+//CHECK#2
+if (~new Boolean(true) !== -2) {
+ $ERROR('#2: ~new Boolean(true) === -2. Actual: ' + (~new Boolean(true)));
+}
+
+//CHECK#3
+if (~new Boolean(false) !== -1) {
+ $ERROR('#3: ~new Boolean(false) === -1. Actual: ' + (~new Boolean(false)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T2.js
new file mode 100644
index 000000000..9b6abb6bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T2;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+if (~0.1 !== -1) {
+ $ERROR('#1: ~0.1 === -1. Actual: ' + (~0.1));
+}
+
+//CHECK#2
+if (~new Number(-0.1) !== -1) {
+ $ERROR('#2: ~new Number(-0.1) === -1. Actual: ' + (~new Number(-0.1)));
+}
+
+//CHECK#3
+if (~NaN !== -1) {
+ $ERROR('#3: ~NaN === -1. Actual: ' + (~NaN));
+}
+
+//CHECK#4
+if (~new Number(NaN) !== -1) {
+ $ERROR('#4: ~new Number(NaN) === -1. Actual: ' + (~new Number(NaN)));
+}
+
+//CHECK#5
+if (~1 !== -2) {
+ $ERROR('#5: ~1 === -2. Actual: ' + (~1));
+}
+
+//CHECK#6
+if (~new Number(-2) !== 1) {
+ $ERROR('#6: ~new Number(-2) === 1. Actual: ' + (~new Number(-2)));
+}
+
+//CHECK#7
+if (~Infinity !== -1) {
+ $ERROR('#7: ~Infinity === -1. Actual: ' + (~Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T3.js
new file mode 100644
index 000000000..e17e797bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T3;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+if (~"1" !== -2) {
+ $ERROR('#1: ~"1" === -2. Actual: ' + (~"1"));
+}
+
+//CHECK#2
+if (~new String("0") !== -1) {
+ $ERROR('#2: ~new String("0") === -1. Actual: ' + (~new String("0")));
+}
+
+//CHECK#3
+if (~"x" !== -1) {
+ $ERROR('#3: ~"x" === -1. Actual: ' + (~"x"));
+}
+
+//CHECK#4
+if (~"" !== -1) {
+ $ERROR('#4: ~"" === -1. Actual: ' + (~""));
+}
+
+//CHECK#5
+if (~new String("-2") !== 1) {
+ $ERROR('#5: ~new String("-2") === 1. Actual: ' + (~new String("-2")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T4.js
new file mode 100644
index 000000000..8dd87158c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T4;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+if (~void 0 !== -1) {
+ $ERROR('#1: ~void 0 === -1. Actual: ' + (~void 0));
+}
+
+//CHECK#2
+if (~null !== -1) {
+ $ERROR('#2: ~null === -1. Actual: ' + (~null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T5.js
new file mode 100644
index 000000000..0dc107d5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T5;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+if (~({}) !== -1) {
+ $ERROR('#1: ~({}) === -1. Actual: ' + (~({})));
+}
+
+//CHECK#2
+if (~(function(){return 1}) !== -1) {
+ $ERROR('#2: ~(function(){return 1}) === -1. Actual: ' + (~(function(){return 1})));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A1.js
new file mode 100644
index 000000000..49803af79
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A1;
+* @section: 11.4.9, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "!" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("!\u0009true") !== false) {
+ $ERROR('#true: !\\u0009true === false');
+}
+
+//CHECK#2
+if (eval("!\u000Btrue") !== false) {
+ $ERROR('#2: !\\u000Btrue === false');
+}
+
+//CHECK#3
+if (eval("!\u000Ctrue") !== false) {
+ $ERROR('#3: !\\u000Ctrue === false');
+}
+
+//CHECK#4
+if (eval("!\u0020true") !== false) {
+ $ERROR('#4: !\\u0020 === false');
+}
+
+//CHECK#5
+if (eval("!\u00A0true") !== false) {
+ $ERROR('#5: !\\u00A0true === false');
+}
+
+//CHECK#6
+if (eval("!\u000Atrue") !== false) {
+ $ERROR('#6: !\\u000Atrue === false');
+}
+
+//CHECK#7
+if (eval("!\u000Dtrue") !== false) {
+ $ERROR('#7: !\\u000Dtrue === false');
+}
+
+//CHECK#8
+if (eval("!\u2028true") !== false) {
+ $ERROR('#8: !\\u2028true === false');
+}
+
+//CHECK#9
+if (eval("!\u2029true") !== false) {
+ $ERROR('#9: !\\u2029true === false');
+}
+
+//CHECK#10
+if (eval("!\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true") !== false) {
+ $ERROR('#10: !\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T1.js
new file mode 100644
index 000000000..f5a4cde73
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A2.1_T1;
+* @section: 11.4.9;
+* @assertion: Operator !x uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (!true !== false) {
+ $ERROR('#1: !true === false');
+}
+
+//CHECK#2
+if (!(!true) !== true) {
+ $ERROR('#2: !(!true) === true');
+}
+
+//CHECK#3
+var x = true;
+if (!x !== false) {
+ $ERROR('#3: var x = true; !x === false');
+}
+
+//CHECK#4
+var x = true;
+if (!(!x) !== true) {
+ $ERROR('#4: var x = true; !(!x) === true');
+}
+
+//CHECK#5
+var object = new Object();
+object.prop = true;
+if (!object.prop !== false) {
+ $ERROR('#5: var object = new Object(); object.prop = true; !object.prop === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T2.js
new file mode 100644
index 000000000..dfa6ed469
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A2.1_T2;
+* @section: 11.4.9;
+* @assertion: Operator !x uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ !x;
+ $ERROR('#1.1: !x throw ReferenceError. Actual: ' + (!x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: !x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.2_T1.js
new file mode 100644
index 000000000..dce742a7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.2_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.9_A2.2_T1;
+ * @section: 11.4.9, 8.6.2.6;
+ * @assertion: Operator !x uses [[Default Value]];
+ * @description: If Type(value) is Object, return false;
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (!object !== false) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (!object !== false) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (!object !== false) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#4
+var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+if (!object !== false) {
+ $ERROR('#4: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (!object !== false) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (!object !== false) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#7
+var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+if (!object !== false) {
+ $ERROR('#7: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#8
+var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+if (!object !== false) {
+ $ERROR('#8: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; !object === false. Actual: ' + (!object));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T1.js
new file mode 100644
index 000000000..76b1284c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T1;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+if (!false !== true) {
+ $ERROR('#1: !false === true');
+}
+
+//CHECK#2
+if (!new Boolean(true) !== false) {
+ $ERROR('#2: !new Boolean(true) === false');
+}
+
+//CHECK#3
+if (!new Boolean(false) !== false) {
+ $ERROR('#3: !new Boolean(false) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T2.js
new file mode 100644
index 000000000..8a1ec70b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T2;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+if (!0.1 !== false) {
+ $ERROR('#1: !0.1 === false');
+}
+
+//CHECK#2
+if (!new Number(-0.1) !== false) {
+ $ERROR('#2: !new Number(-0.1) === false');
+}
+
+//CHECK#3
+if (!NaN !== true) {
+ $ERROR('#3: !NaN === true');
+}
+
+//CHECK#4
+if (!new Number(NaN) !== false) {
+ $ERROR('#4: !new Number(NaN) === false');
+}
+
+//CHECK#5
+if (!0 !== true) {
+ $ERROR('#5: !0 === true');
+}
+
+//CHECK#6
+if (!new Number(0) !== false) {
+ $ERROR('#6: !new Number(0) === false');
+}
+
+//CHECK#7
+if (!Infinity !== false) {
+ $ERROR('#7: !Infinity === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T3.js
new file mode 100644
index 000000000..b894c4d1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T3;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+if (!"1" !== false) {
+ $ERROR('#1: !"1" === false');
+}
+
+//CHECK#2
+if (!new String("0") !== false) {
+ $ERROR('#2: !new String("0") === false');
+}
+
+//CHECK#3
+if (!"x" !== false) {
+ $ERROR('#3: !"x" === false');
+}
+
+//CHECK#4
+if (!"" !== true) {
+ $ERROR('#4: !"" === true');
+}
+
+//CHECK#5
+if (!new String("") !== false) {
+ $ERROR('#5: !new String("") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T4.js
new file mode 100644
index 000000000..8ff189aca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T4;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+if (!void 0 !== true) {
+ $ERROR('#1: !void 0 === true');
+}
+
+//CHECK#2
+if (!null !== true) {
+ $ERROR('#2: !null === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T5.js
new file mode 100644
index 000000000..6e484eab9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T5;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+if ((!{}) !== false) {
+ $ERROR('#1: !({}) === false');
+}
+
+//CHECK#2
+if (!(function(){return 1}) !== false) {
+ $ERROR('#2: !(function(){return 1}) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js
new file mode 100644
index 000000000..00f5b1da0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.5.1_A1;
+* @section: 11.5.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MultiplicativeExpression and "*" or between "*" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009*\u00091") !== 1) {
+ $ERROR('#1: 1\\u0009*\\u00091 === 1');
+}
+
+//CHECK#2
+if (eval("1\u000B*\u000B1") !== 1) {
+ $ERROR('#2: 1\\u000B*\\u000B1 === 1');
+}
+
+//CHECK#3
+if (eval("1\u000C*\u000C1") !== 1) {
+ $ERROR('#3: 1\\u000C*\\u000C1 === 1');
+}
+
+//CHECK#4
+if (eval("1\u0020*\u00201") !== 1) {
+ $ERROR('#4: 1\\u0020*\\u00201 === 1');
+}
+
+//CHECK#5
+if (eval("1\u00A0*\u00A01") !== 1) {
+ $ERROR('#5: 1\\u00A0*\\u00A01 === 1');
+}
+
+//CHECK#6
+if (eval("1\u000A*\u000A1") !== 1) {
+ $ERROR('#6: 1\\u000A*\\u000A1 === 1');
+}
+
+//CHECK#7
+if (eval("1\u000D*\u000D1") !== 1) {
+ $ERROR('#7: 1\\u000D*\\u000D1 === 1');
+}
+
+//CHECK#8
+if (eval("1\u2028*\u20281") !== 1) {
+ $ERROR('#8: 1\\u2028*\\u20281 === 1');
+}
+
+//CHECK#9
+if (eval("1\u2029*\u20291") !== 1) {
+ $ERROR('#9: 1\\u2029*\\u20291 === 1');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029*\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 1) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029*\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js
new file mode 100644
index 000000000..0077525bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.1_T1;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 * 1 !== 1) {
+ $ERROR('#1: 1 * 1 === 1. Actual: ' + (1 * 1));
+}
+
+//CHECK#2
+var x = 1;
+if (x * 1 !== 1) {
+ $ERROR('#2: var x = 1; x * 1 === 1. Actual: ' + (x * 1));
+}
+
+//CHECK#3
+var y = 1;
+if (1 * y !== 1) {
+ $ERROR('#3: var y = 1; 1 * y === 1. Actual: ' + (1 * y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x * y !== 1) {
+ $ERROR('#4: var x = 1; var y = 1; x * y === 1. Actual: ' + (x * y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop * objecty.prop !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop * objecty.prop === 1. Actual: ' + (objectx.prop * objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js
new file mode 100644
index 000000000..f7b55cafd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.1_T2;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x * 1;
+ $ERROR('#1.1: x * 1 throw ReferenceError. Actual: ' + (x * 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x * 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js
new file mode 100644
index 000000000..57b3d049c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.1_T3;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 * y;
+ $ERROR('#1.1: 1 * y throw ReferenceError. Actual: ' + (1 * y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 * y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js
new file mode 100644
index 000000000..712271524
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.2_T1;
+ * @section: 11.5.1, 8.6.2.6;
+ * @assertion: Operator x * y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} * 1 !== 1) {
+ $ERROR('#1: {valueOf: function() {return 1}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}} * 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} * 1 !== 1) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} * 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} * 1 !== 1) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} * 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 !== 1) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} * 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 * {toString: function() {return 1}} !== 1) {
+ $ERROR('#5: 1 * {toString: function() {return 1}} === 1. Actual: ' + (1 * {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 * {valueOf: function() {return {}}, toString: function() {return 1}} !== 1) {
+ $ERROR('#6: 1 * {valueOf: function() {return {}}, toString: function() {return 1}} === 1. Actual: ' + (1 * {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 * {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 * {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 * {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 * {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 * {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 * {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 * {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 * {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js
new file mode 100644
index 000000000..c9a13f709
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.3_T1;
+ * @section: 11.5.1;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x * y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x * y throw "x". Actual: ' + (x * y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x * y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js
new file mode 100644
index 000000000..541da82f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.4_T1;
+ * @section: 11.5.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) * x !== 1) {
+ $ERROR('#1: var x = 0; (x = 1) * x === 1. Actual: ' + ((x = 1) * x));
+}
+
+//CHECK#2
+var x = 0;
+if (x * (x = 1) !== 0) {
+ $ERROR('#2: var x = 0; x * (x = 1) === 0. Actual: ' + (x * (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js
new file mode 100644
index 000000000..7a4a9c244
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.4_T2;
+ * @section: 11.5.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw"
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() * y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() * y() throw "x". Actual: ' + (x() * y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() * y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js
new file mode 100644
index 000000000..d7c618341
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.4_T3;
+ * @section: 11.5.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x * (x = 1);
+ $ERROR('#1.1: x * (x = 1) throw ReferenceError. Actual: ' + (x * (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x * (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) * y !== 1) {
+ $ERROR('#2: (y = 1) * y === 1. Actual: ' + ((y = 1) * y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js
new file mode 100644
index 000000000..8b4fffb14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.1;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true * true !== 1) {
+ $ERROR('#1: true * true === 1. Actual: ' + (true * true));
+}
+
+//CHECK#2
+if (new Boolean(true) * true !== 1) {
+ $ERROR('#2: new Boolean(true) * true === 1. Actual: ' + (new Boolean(true) * true));
+}
+
+//CHECK#3
+if (true * new Boolean(true) !== 1) {
+ $ERROR('#3: true * new Boolean(true) === 1. Actual: ' + (true * new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) * new Boolean(true) !== 1) {
+ $ERROR('#4: new Boolean(true) * new Boolean(true) === 1. Actual: ' + (new Boolean(true) * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js
new file mode 100644
index 000000000..4c37922a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.2;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 * 1 !== 1) {
+ $ERROR('#1: 1 * 1 === 1. Actual: ' + (1 * 1));
+}
+
+//CHECK#2
+if (new Number(1) * 1 !== 1) {
+ $ERROR('#2: new Number(1) * 1 === 1. Actual: ' + (new Number(1) * 1));
+}
+
+//CHECK#3
+if (1 * new Number(1) !== 1) {
+ $ERROR('#3: 1 * new Number(1) === 1. Actual: ' + (1 * new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) * new Number(1) !== 1) {
+ $ERROR('#4: new Number(1) * new Number(1) === 1. Actual: ' + (new Number(1) * new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js
new file mode 100644
index 000000000..e74258361
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.3;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" * "1" !== 1) {
+ $ERROR('#1: "1" * "1" === 1. Actual: ' + ("1" * "1"));
+}
+
+//CHECK#2
+if (new String("1") * "1" !== 1) {
+ $ERROR('#2: new String("1") * "1" === 1. Actual: ' + (new String("1") * "1"));
+}
+
+//CHECK#3
+if ("1" * new String("1") !== 1) {
+ $ERROR('#3: "1" * new String("1") === 1. Actual: ' + ("1" * new String("1")));
+}
+
+//CHECK#4
+if (new String("1") * new String("1") !== 1) {
+ $ERROR('#4: new String("1") * new String("1") === 1. Actual: ' + (new String("1") * new String("1")));
+}
+
+//CHECK#5
+if (isNaN("x" * "1") !== true) {
+ $ERROR('#5: "x" * "1" === Not-a-Number. Actual: ' + ("x" * "1"));
+}
+
+//CHECK#6
+if (isNaN("1" * "x") !== true) {
+ $ERROR('#6: "1" * "x" === Not-a-Number. Actual: ' + ("1" * "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js
new file mode 100644
index 000000000..d014c08b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.4;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null * undefined) !== true) {
+ $ERROR('#1: null * undefined === Not-a-Number. Actual: ' + (null * undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined * null) !== true) {
+ $ERROR('#2: undefined * null === Not-a-Number. Actual: ' + (undefined * null));
+}
+
+//CHECK#3
+if (isNaN(undefined * undefined) !== true) {
+ $ERROR('#3: undefined * undefined === Not-a-Number. Actual: ' + (undefined * undefined));
+}
+
+//CHECK#4
+if (null * null !== 0) {
+ $ERROR('#4: null * null === 0. Actual: ' + (null * null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js
new file mode 100644
index 000000000..4f7b7271d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.5;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (isNaN({} * function(){return 1}) !== true) {
+ $ERROR('#1: {} * function(){return 1} === Not-a-Number. Actual: ' + ({} * function(){return 1}));
+}
+
+//CHECK#2
+if (isNaN(function(){return 1} * {}) !== true) {
+ $ERROR('#2: function(){return 1} * {} === Not-a-Number. Actual: ' + (function(){return 1} * {}));
+}
+
+//CHECK#3
+if (isNaN(function(){return 1} * function(){return 1}) !== true) {
+ $ERROR('#3: function(){return 1} * function(){return 1} === Not-a-Number. Actual: ' + (function(){return 1} * function(){return 1}));
+}
+
+//CHECK#4
+if (isNaN({} * {}) !== true) {
+ $ERROR('#4: {} * {} === Not-a-Number. Actual: ' + ({} * {}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js
new file mode 100644
index 000000000..566f5d9c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.1;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Number (primitive and object);
+ */
+
+//CHECK#1
+if (true * 1 !== 1) {
+ $ERROR('#1: true * 1 === 1. Actual: ' + (true * 1));
+}
+
+//CHECK#2
+if (1 * true !== 1) {
+ $ERROR('#2: 1 * true === 1. Actual: ' + (1 * true));
+}
+
+//CHECK#3
+if (new Boolean(true) * 1 !== 1) {
+ $ERROR('#3: new Boolean(true) * 1 === 1. Actual: ' + (new Boolean(true) * 1));
+}
+
+//CHECK#4
+if (1 * new Boolean(true) !== 1) {
+ $ERROR('#4: 1 * new Boolean(true) === 1. Actual: ' + (1 * new Boolean(true)));
+}
+
+//CHECK#5
+if (true * new Number(1) !== 1) {
+ $ERROR('#5: true * new Number(1) === 1. Actual: ' + (true * new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) * true !== 1) {
+ $ERROR('#6: new Number(1) * true === 1. Actual: ' + (new Number(1) * true));
+}
+
+//CHECK#7
+if (new Boolean(true) * new Number(1) !== 1) {
+ $ERROR('#7: new Boolean(true) * new Number(1) === 1. Actual: ' + (new Boolean(true) * new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) * new Boolean(true) !== 1) {
+ $ERROR('#8: new Number(1) * new Boolean(true) === 1. Actual: ' + (new Number(1) * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js
new file mode 100644
index 000000000..ed949b587
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.2;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" * 1 !== 1) {
+ $ERROR('#1: "1" * 1 === 1. Actual: ' + ("1" * 1));
+}
+
+//CHECK#2
+if (1 * "1" !== 1) {
+ $ERROR('#2: 1 * "1" === 1. Actual: ' + (1 * "1"));
+}
+
+//CHECK#3
+if (new String("1") * 1 !== 1) {
+ $ERROR('#3: new String("1") * 1 === 1. Actual: ' + (new String("1") * 1));
+}
+
+//CHECK#4
+if (1 * new String("1") !== 1) {
+ $ERROR('#4: 1 * new String("1") === 1. Actual: ' + (1 * new String("1")));
+}
+
+//CHECK#5
+if ("1" * new Number(1) !== 1) {
+ $ERROR('#5: "1" * new Number(1) === 1. Actual: ' + ("1" * new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) * "1" !== 1) {
+ $ERROR('#6: new Number(1) * "1" === 1. Actual: ' + (new Number(1) * "1"));
+}
+
+//CHECK#7
+if (new String("1") * new Number(1) !== 1) {
+ $ERROR('#7: new String("1") * new Number(1) === 1. Actual: ' + (new String("1") * new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) * new String("1") !== 1) {
+ $ERROR('#8: new Number(1) * new String("1") === 1. Actual: ' + (new Number(1) * new String("1")));
+}
+
+//CHECK#9
+if (isNaN("x" * 1) !== true) {
+ $ERROR('#9: "x" * 1 === Not-a-Number. Actual: ' + ("x" * 1));
+}
+
+//CHECK#10
+if (isNaN(1 * "x") !== true) {
+ $ERROR('#10: 1 * "x" === Not-a-Number. Actual: ' + (1 * "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js
new file mode 100644
index 000000000..8c3d32145
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.3;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 * null !== 0) {
+ $ERROR('#1: 1 * null === 0. Actual: ' + (1 * null));
+}
+
+//CHECK#2
+if (null * 1 !== 0) {
+ $ERROR('#2: null * 1 === 0. Actual: ' + (null * 1));
+}
+
+//CHECK#3
+if (new Number(1) * null !== 0) {
+ $ERROR('#3: new Number(1) * null === 0. Actual: ' + (new Number(1) * null));
+}
+
+//CHECK#4
+if (null * new Number(1) !== 0) {
+ $ERROR('#4: null * new Number(1) === 0. Actual: ' + (null * new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js
new file mode 100644
index 000000000..919fa516f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.4;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 * undefined) !== true) {
+ $ERROR('#1: 1 * undefined === Not-a-Number. Actual: ' + (1 * undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined * 1) !== true) {
+ $ERROR('#2: undefined * 1 === Not-a-Number. Actual: ' + (undefined * 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) * undefined) !== true) {
+ $ERROR('#3: new Number(1) * undefined === Not-a-Number. Actual: ' + (new Number(1) * undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined * new Number(1)) !== true) {
+ $ERROR('#4: undefined * new Number(1) === Not-a-Number. Actual: ' + (undefined * new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js
new file mode 100644
index 000000000..b15f68b35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.5;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true * "1" !== 1) {
+ $ERROR('#1: true * "1" === 1. Actual: ' + (true * "1"));
+}
+
+//CHECK#2
+if ("1" * true !== 1) {
+ $ERROR('#2: "1" * true === 1. Actual: ' + ("1" * true));
+}
+
+//CHECK#3
+if (new Boolean(true) * "1" !== 1) {
+ $ERROR('#3: new Boolean(true) * "1" === 1. Actual: ' + (new Boolean(true) * "1"));
+}
+
+//CHECK#4
+if ("1" * new Boolean(true) !== 1) {
+ $ERROR('#4: "1" * new Boolean(true) === 1. Actual: ' + ("1" * new Boolean(true)));
+}
+
+//CHECK#5
+if (true * new String("1") !== 1) {
+ $ERROR('#5: true * new String("1") === 1. Actual: ' + (true * new String("1")));
+}
+
+//CHECK#6
+if (new String("1") * true !== 1) {
+ $ERROR('#6: new String("1") * true === 1. Actual: ' + (new String("1") * true));
+}
+
+//CHECK#7
+if (new Boolean(true) * new String("1") !== 1) {
+ $ERROR('#7: new Boolean(true) * new String("1") === 1. Actual: ' + (new Boolean(true) * new String("1")));
+}
+
+//CHECK#8
+if (new String("1") * new Boolean(true) !== 1) {
+ $ERROR('#8: new String("1") * new Boolean(true) === 1. Actual: ' + (new String("1") * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js
new file mode 100644
index 000000000..94d03ece2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.6;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between primitive String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN("1" * undefined) !== true) {
+ $ERROR('#1: "1" * undefined === Not-a-Number. Actual: ' + ("1" * undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined * "1") !== true) {
+ $ERROR('#2: undefined * "1" === Not-a-Number. Actual: ' + (undefined * "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") * undefined) !== true) {
+ $ERROR('#3: new String("1") * undefined === Not-a-Number. Actual: ' + (new String("1") * undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined * new String("1")) !== true) {
+ $ERROR('#4: undefined * new String("1") === Not-a-Number. Actual: ' + (undefined * new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js
new file mode 100644
index 000000000..d7df94cb7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.7;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" * null !== 0) {
+ $ERROR('#1: "1" * null === 0. Actual: ' + ("1" * null));
+}
+
+//CHECK#2
+if (null * "1" !== 0) {
+ $ERROR('#2: null * "1" === 0. Actual: ' + (null * "1"));
+}
+
+//CHECK#3
+if (new String("1") * null !== 0) {
+ $ERROR('#3: new String("1") * null === 0. Actual: ' + (new String("1") * null));
+}
+
+//CHECK#4
+if (null * new String("1") !== 0) {
+ $ERROR('#4: null * new String("1") === 0. Actual: ' + (null * new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js
new file mode 100644
index 000000000..11b1f6caf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.8;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true * undefined) !== true) {
+ $ERROR('#1: true * undefined === Not-a-Number. Actual: ' + (true * undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined * true) !== true) {
+ $ERROR('#2: undefined * true === Not-a-Number. Actual: ' + (undefined * true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) * undefined) !== true) {
+ $ERROR('#3: new Boolean(true) * undefined === Not-a-Number. Actual: ' + (new Boolean(true) * undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined * new Boolean(true)) !== true) {
+ $ERROR('#4: undefined * new Boolean(true) === Not-a-Number. Actual: ' + (undefined * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js
new file mode 100644
index 000000000..481aa0bd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.9;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true * null !== 0) {
+ $ERROR('#1: true * null === 0. Actual: ' + (true * null));
+}
+
+//CHECK#2
+if (null * true !== 0) {
+ $ERROR('#2: null * true === 0. Actual: ' + (null * true));
+}
+
+//CHECK#3
+if (new Boolean(true) * null !== 0) {
+ $ERROR('#3: new Boolean(true) * null === 0. Actual: ' + (new Boolean(true) * null));
+}
+
+//CHECK#4
+if (null * new Boolean(true) !== 0) {
+ $ERROR('#4: null * new Boolean(true) === 0. Actual: ' + (null * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js
new file mode 100644
index 000000000..ad51bea98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T1.1;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If left operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN * Number.NaN) !== true) {
+ $ERROR('#1: NaN * NaN === Not-a-Number. Actual: ' + (NaN * NaN));
+}
+
+//CHECK#2
+if (isNaN(Number.NaN * +0) !== true) {
+ $ERROR('#2: NaN * +0 === Not-a-Number. Actual: ' + (NaN * +0));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN * -0) !== true) {
+ $ERROR('#3: NaN * -0 === Not-a-Number. Actual: ' + (NaN * -0));
+}
+
+//CHECK#4
+if (isNaN(Number.NaN * Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: NaN * Infinity === Not-a-Number. Actual: ' + (NaN * Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN * Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: NaN * -Infinity === Not-a-Number. Actual: ' + (NaN * -Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NaN * Number.MAX_VALUE) !== true) {
+ $ERROR('#6: NaN * Number.MAX_VALUE === Not-a-Number. Actual: ' + (NaN * Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (isNaN(Number.NaN * Number.MIN_VALUE) !== true) {
+ $ERROR('#7: NaN * Number.MIN_VALUE === Not-a-Number. Actual: ' + (NaN * Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (isNaN(Number.NaN * 1) !== true) {
+ $ERROR('#8: NaN * 1 === Not-a-Number. Actual: ' + (NaN * 1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js
new file mode 100644
index 000000000..4c902c305
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T1.2;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If right operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN * Number.NaN) !== true) {
+ $ERROR('#1: NaN * NaN === Not-a-Number. Actual: ' + (NaN * NaN));
+}
+
+//CHECK#2
+if (isNaN(+0 * Number.NaN) !== true) {
+ $ERROR('#2: +0 * NaN === Not-a-Number. Actual: ' + (+0 * NaN));
+}
+
+//CHECK#3
+if (isNaN(-0 * Number.NaN) !== true) {
+ $ERROR('#3: -0 * NaN === Not-a-Number. Actual: ' + (-0 * NaN));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY * Number.NaN) !== true) {
+ $ERROR('#4: Infinity * NaN === Not-a-Number. Actual: ' + (Infinity * NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY * Number.NaN) !== true) {
+ $ERROR('#5: -Infinity * NaN === Not-a-Number. Actual: ' + ( -Infinity * NaN));
+}
+
+//CHECK#6
+if (isNaN(Number.MAX_VALUE * Number.NaN) !== true) {
+ $ERROR('#6: Number.MAX_VALUE * NaN === Not-a-Number. Actual: ' + (Number.MAX_VALUE * NaN));
+}
+
+//CHECK#7
+if (isNaN(Number.MIN_VALUE * Number.NaN) !== true) {
+ $ERROR('#7: Number.MIN_VALUE * NaN === Not-a-Number. Actual: ' + (Number.MIN_VALUE * NaN));
+}
+
+//CHECK#8
+if (isNaN(1 * Number.NaN) !== true) {
+ $ERROR('#8: 1 * NaN === Not-a-Number. Actual: ' + (1 * NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js
new file mode 100644
index 000000000..744ccb269
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T2;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: The sign of the result is positive if both operands have the same sign, negative if the operands have different signs;
+ */
+
+//CHECK#1
+if (1 * 1 !== 1) {
+ $ERROR('#1: 1 * 1 === 1. Actual: ' + (1 * 1));
+}
+
+//CHECK#2
+if (1 * -1 !== -1) {
+ $ERROR('#2: 1 * -1 === -1. Actual: ' + (1 * -1));
+}
+
+//CHECK#3
+if (-1 * 1 !== -1) {
+ $ERROR('#3: -1 * 1 === -1. Actual: ' + (-1 * 1));
+}
+
+//CHECK#4
+if (-1 * -1 !== 1) {
+ $ERROR('#4: -1 * -1 === 1. Actual: ' + (-1 * -1));
+}
+
+//CHECK#5
+if (0 * 0 !== 0) {
+ $ERROR('#5.1: 0 * 0 === 0. Actual: ' + (0 * 0));
+} else {
+ if (1 / (0 * 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: 0 * 0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#6
+if (0 * -0 !== -0) {
+ $ERROR('#6.1: 0 * -0 === 0. Actual: ' + (0 * -0));
+} else {
+ if (1 / (0 * -0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#6.2: 0 * -0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#7
+if (-0 * 0 !== -0) {
+ $ERROR('#7.1: -0 * 0 === 0. Actual: ' + (-0 * 0));
+} else {
+ if (1 / (-0 * 0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7.2: -0 * 0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#8
+if (-0 * -0 !== 0) {
+ $ERROR('#8.1: -0 * -0 === 0. Actual: ' + (-0 * -0));
+} else {
+ if (1 / (-0 * -0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8.2: 0 * -0 === - 0. Actual: +0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js
new file mode 100644
index 000000000..0d21ca573
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T3;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication of an infinity by a zero results in NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NEGATIVE_INFINITY * 0) !== true) {
+ $ERROR('#1: Infinity * 0 === Not-a-Number. Actual: ' + (Infinity * 0));
+}
+
+//CHECK#2
+if (isNaN(-0 * Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: -0 * -Infinity === Not-a-Number. Actual: ' + (-0 * -Infinity));
+}
+
+//CHECK#3
+if (isNaN(Number.POSITIVE_INFINITY * -0) !== true) {
+ $ERROR('#3: Infinity * -0 === Not-a-Number. Actual: ' + (Infinity * -0));
+}
+
+//CHECK#4
+if (isNaN(0 * Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: 0 * Infinity === Not-a-Number. Actual: ' + (0 * Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY * -0) !== true) {
+ $ERROR('#5: Infinity * -0 === Not-a-Number. Actual: ' + (Infinity * -0));
+}
+
+//CHECK#6
+if (isNaN(0 * Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#6: 0 * -Infinity === Not-a-Number. Actual: ' + (0 * -Infinity));
+}
+
+//CHECK#7
+if (isNaN(Number.POSITIVE_INFINITY * 0) !== true) {
+ $ERROR('#7: Infinity * 0 === Not-a-Number. Actual: ' + (Infinity * 0));
+}
+
+//CHECK#8
+if (isNaN(-0 * Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#8: -0 * Infinity === Not-a-Number. Actual: ' + (-0 * Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js
new file mode 100644
index 000000000..cc7ddb81e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T4;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication of an infinity by an infinity results in an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY * Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: -Infinity * -Infinity === Infinity. Actual: ' + (-Infinity * -Infinity));
+}
+
+//CHECK#2
+if (Number.POSITIVE_INFINITY * Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: Infinity * Infinity === Infinity. Actual: ' + (Infinity * Infinity));
+}
+
+//CHECK#3
+if (Number.NEGATIVE_INFINITY * Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: -Infinity * Infinity === -Infinity. Actual: ' + (-Infinity * Infinity));
+}
+
+//CHECK#4
+if (Number.POSITIVE_INFINITY * Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: Infinity * -Infinity === -Infinity. Actual: ' + (Infinity * -Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js
new file mode 100644
index 000000000..0e2017d47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T5;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication of an infinity by a finite non-zero value results in a signed infinity;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY * -1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: -Infinity * -1 === Infinity. Actual: ' + (-Infinity * -1));
+}
+
+//CHECK#2
+if (-1 * Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: -1 * -Infinity === Infinity. Actual: ' + (-1 * -Infinity));
+}
+
+//CHECK#3
+if (Number.POSITIVE_INFINITY * -1 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: Infinity * -1 === -Infinity. Actual: ' + (Infinity * -1));
+}
+
+//CHECK#4
+if (-1 * Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: -1 * Infinity === -Infinity. Actual: ' + (-1 * Infinity));
+}
+
+//CHECK#5
+if (Number.POSITIVE_INFINITY * Number.MAX_VALUE !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5: Infinity * Number.MAX_VALUE === Infinity. Actual: ' + (Infinity * Number.MAX_VALUE));
+}
+
+//CHECK#6
+if (Number.POSITIVE_INFINITY * Number.MAX_VALUE !== Number.MAX_VALUE * Number.POSITIVE_INFINITY) {
+ $ERROR('#6: Infinity * Number.MAX_VALUE === Number.MAX_VALUE * Infinity. Actual: ' + (Infinity * Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (Number.NEGATIVE_INFINITY * Number.MIN_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7: -Infinity * Number.MIN_VALUE === -Infinity. Actual: ' + (-Infinity * Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (Number.NEGATIVE_INFINITY * Number.MIN_VALUE !== Number.MIN_VALUE * Number.NEGATIVE_INFINITY) {
+ $ERROR('#8: -Infinity * Number.MIN_VALUE === Number.MIN_VALUE * -Infinity. Actual: ' + (-Infinity * Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js
new file mode 100644
index 000000000..a314b80fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T6;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If the magnitude is too large to represent, the result is then an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MAX_VALUE * 1.1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number.MAX_VALUE * 1.1 === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE * 1.1));
+}
+
+//CHECK#2
+if (-1.1 * Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: -1.1 * Number.MAX_VALUE === Number.NEGATIVE_INFINITY. Actual: ' + (-1.1 * Number.MAX_VALUE));
+}
+
+//CHECK#3
+if (Number.MAX_VALUE * 1 !== Number.MAX_VALUE) {
+ $ERROR('#3: Number.MAX_VALUE * 1 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE * 1));
+}
+
+//CHECK#4
+if (-1 * Number.MAX_VALUE !== -Number.MAX_VALUE) {
+ $ERROR('#4: -1 * Number.MAX_VALUE === -Number.MAX_VALUE. Actual: ' + (-1 * Number.MAX_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js
new file mode 100644
index 000000000..4f517eaf2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T7;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If the magnitude is too small to represent, the result is then a zero of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MIN_VALUE * 0.1 !== 0) {
+ $ERROR('#1: Number.MIN_VALUE * 0.1 === 0. Actual: ' + (Number.MIN_VALUE * 0.1));
+}
+
+//CHECK#2
+if (-0.1 * Number.MIN_VALUE !== -0) {
+ $ERROR('#2.1: -0.1 * Number.MIN_VALUE === -0. Actual: ' + (-0.1 * Number.MIN_VALUE));
+} else {
+ if (1 / (-0.1 * Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2.2: -0.1 * Number.MIN_VALUE === -0. Actual: +0');
+ }
+}
+
+//CHECK#3
+if (Number.MIN_VALUE * 0.5 !== 0) {
+ $ERROR('#3: Number.MIN_VALUE * 0.5 === 0. Actual: ' + (Number.MIN_VALUE * 0.5));
+}
+
+//CHECK#4
+if (-0.5 * Number.MIN_VALUE !== -0) {
+ $ERROR('#4.1: -0.5 * Number.MIN_VALUE === -0. Actual: ' + (-0.5 * Number.MIN_VALUE));
+} else {
+ if (1 / (-0.5 * Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: -0.5 * Number.MIN_VALUE === -0. Actual: +0');
+ }
+}
+
+//CHECK#5
+if (Number.MIN_VALUE * 0.51 !== Number.MIN_VALUE) {
+ $ERROR('#5: Number.MIN_VALUE * 0.51 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE * 0.51));
+}
+
+//CHECK#6
+if (-0.51 * Number.MIN_VALUE !== -Number.MIN_VALUE) {
+ $ERROR('#6: -0.51 * Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (-0.51 * Number.MIN_VALUE));
+}
+
+//CHECK#7
+if (Number.MIN_VALUE * 0.9 !== Number.MIN_VALUE) {
+ $ERROR('#7: Number.MIN_VALUE * 0.9 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE * 0.9));
+}
+
+//CHECK#8
+if (-0.9 * Number.MIN_VALUE !== -Number.MIN_VALUE) {
+ $ERROR('#8: -0.9 * Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (-0.9 * Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js
new file mode 100644
index 000000000..d3e466b7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T8;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication is not always associative (x * y * z is the same as (x * y) * z, not x * (y * z));
+*/
+
+//CHECK#1
+if (Number.MAX_VALUE * 1.1 * 0.9 !== (Number.MAX_VALUE * 1.1) * 0.9) {
+ $ERROR('#1: Number.MAX_VALUE * 1.1 * 0.9 === (Number.MAX_VALUE * 1.1) * 0.9. Actual: ' + (Number.MAX_VALUE * 1.1 * 0.9));
+}
+
+//CHECK#2
+if ((Number.MAX_VALUE * 1.1) * 0.9 === Number.MAX_VALUE * (1.1 * 0.9)) {
+ $ERROR('#2: (Number.MAX_VALUE * 1.1) * 0.9 !== Number.MAX_VALUE * (1.1 * 0.9)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A1.js
new file mode 100644
index 000000000..cec04d1ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.5.2_A1;
+* @section: 11.5.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MultiplicativeExpression and "/" or between "/" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009/\u00091") !== 1) {
+ $ERROR('#1: 1\\u0009/\\u00091 === 1');
+}
+
+//CHECK#2
+if (eval("1\u000B/\u000B1") !== 1) {
+ $ERROR('#2: 1\\u000B/\\u000B1 === 1');
+}
+
+//CHECK#3
+if (eval("1\u000C/\u000C1") !== 1) {
+ $ERROR('#3: 1\\u000C/\\u000C1 === 1');
+}
+
+//CHECK#4
+if (eval("1\u0020/\u00201") !== 1) {
+ $ERROR('#4: 1\\u0020/\\u00201 === 1');
+}
+
+//CHECK#5
+if (eval("1\u00A0/\u00A01") !== 1) {
+ $ERROR('#5: 1\\u00A0/\\u00A01 === 1');
+}
+
+//CHECK#6
+if (eval("1\u000A/\u000A1") !== 1) {
+ $ERROR('#6: 1\\u000A/\\u000A1 === 1');
+}
+
+//CHECK#7
+if (eval("1\u000D/\u000D1") !== 1) {
+ $ERROR('#7: 1\\u000D/\\u000D1 === 1');
+}
+
+//CHECK#8
+if (eval("1\u2028/\u20281") !== 1) {
+ $ERROR('#8: 1\\u2028/\\u20281 === 1');
+}
+
+//CHECK#9
+if (eval("1\u2029/\u20291") !== 1) {
+ $ERROR('#9: 1\\u2029/\\u20291 === 1');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029/\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 1) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029/\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T1.js
new file mode 100644
index 000000000..d28d33b4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.1_T1;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 / 1 !== 1) {
+ $ERROR('#1: 1 / 1 === 1. Actual: ' + (1 / 1));
+}
+
+//CHECK#2
+var x = 1;
+if (x / 1 !== 1) {
+ $ERROR('#2: var x = 1; x / 1 === 1. Actual: ' + (x / 1));
+}
+
+//CHECK#3
+var y = 1;
+if (1 / y !== 1) {
+ $ERROR('#3: var y = 1; 1 / y === 1. Actual: ' + (1 / y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x / y !== 1) {
+ $ERROR('#4: var x = 1; var y = 1; x / y === 1. Actual: ' + (x / y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop / objecty.prop !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop / objecty.prop === 1. Actual: ' + (objectx.prop / objecty.prop));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T2.js
new file mode 100644
index 000000000..bc8f3398f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.1_T2;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x / 1;
+ $ERROR('#1.1: x / 1 throw ReferenceError. Actual: ' + (x / 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x / 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T3.js
new file mode 100644
index 000000000..60d0bfce1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.1_T3;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 / y;
+ $ERROR('#1.1: 1 / y throw ReferenceError. Actual: ' + (1 / y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 / y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.2_T1.js
new file mode 100644
index 000000000..67d88c198
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.2_T1;
+ * @section: 11.5.2, 8.6.2.6;
+ * @assertion: Operator x / y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} / 1 !== 1) {
+ $ERROR('#1: {valueOf: function() {return 1}} / 1 === 1. Actual: ' + ({valueOf: function() {return 1}} / 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} / 1 !== 1) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} / 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} / 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} / 1 !== 1) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} / 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} / 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} / 1 !== 1) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} / 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} / 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} / 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} / 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 / {toString: function() {return 1}} !== 1) {
+ $ERROR('#5: 1 / {toString: function() {return 1}} === 1. Actual: ' + (1 / {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 / {valueOf: function() {return {}}, toString: function() {return 1}} !== 1) {
+ $ERROR('#6: 1 / {valueOf: function() {return {}}, toString: function() {return 1}} === 1. Actual: ' + (1 / {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 / {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 / {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 / {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 / {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 / {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 / {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 / {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 / {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.3_T1.js
new file mode 100644
index 000000000..e45fb0014
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.3_T1;
+ * @section: 11.5.2;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x / y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x / y throw "x". Actual: ' + (x / y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x / y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T1.js
new file mode 100644
index 000000000..80d0cef8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.4_T1;
+ * @section: 11.5.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) / x !== 1) {
+ $ERROR('#1: var x = 0; (x = 1) / x === 1. Actual: ' + ((x = 1) / x));
+}
+
+//CHECK#2
+var x = 0;
+if (x / (x = 1) !== 0) {
+ $ERROR('#2: var x = 0; x / (x = 1) === 0. Actual: ' + (x / (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T2.js
new file mode 100644
index 000000000..db6854d76
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.4_T2;
+ * @section: 11.5.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() / y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() / y() throw "x". Actual: ' + (x() / y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() / y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T3.js
new file mode 100644
index 000000000..86b51ee92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.4_T3;
+ * @section: 11.5.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x / (x = 1);
+ $ERROR('#1.1: x / (x = 1) throw ReferenceError. Actual: ' + (x / (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x / (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) / y !== 1) {
+ $ERROR('#2: (y = 1) / y === 1. Actual: ' + ((y = 1) / y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.1.js
new file mode 100644
index 000000000..0ead4aea7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.1;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true / true !== 1) {
+ $ERROR('#1: true / true === 1. Actual: ' + (true / true));
+}
+
+//CHECK#2
+if (new Boolean(true) / true !== 1) {
+ $ERROR('#2: new Boolean(true) / true === 1. Actual: ' + (new Boolean(true) / true));
+}
+
+//CHECK#3
+if (true / new Boolean(true) !== 1) {
+ $ERROR('#3: true / new Boolean(true) === 1. Actual: ' + (true / new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) / new Boolean(true) !== 1) {
+ $ERROR('#4: new Boolean(true) / new Boolean(true) === 1. Actual: ' + (new Boolean(true) / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.2.js
new file mode 100644
index 000000000..f45544df2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.2;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 / 1 !== 1) {
+ $ERROR('#1: 1 / 1 === 1. Actual: ' + (1 / 1));
+}
+
+//CHECK#2
+if (new Number(1) / 1 !== 1) {
+ $ERROR('#2: new Number(1) / 1 === 1. Actual: ' + (new Number(1) / 1));
+}
+
+//CHECK#3
+if (1 / new Number(1) !== 1) {
+ $ERROR('#3: 1 / new Number(1) === 1. Actual: ' + (1 / new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) / new Number(1) !== 1) {
+ $ERROR('#4: new Number(1) / new Number(1) === 1. Actual: ' + (new Number(1) / new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.3.js
new file mode 100644
index 000000000..16ec25a54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.3;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" / "1" !== 1) {
+ $ERROR('#1: "1" / "1" === 1. Actual: ' + ("1" / "1"));
+}
+
+//CHECK#2
+if (new String("1") / "1" !== 1) {
+ $ERROR('#2: new String("1") / "1" === 1. Actual: ' + (new String("1") / "1"));
+}
+
+//CHECK#3
+if ("1" / new String("1") !== 1) {
+ $ERROR('#3: "1" / new String("1") === 1. Actual: ' + ("1" / new String("1")));
+}
+
+//CHECK#4
+if (new String("1") / new String("1") !== 1) {
+ $ERROR('#4: new String("1") / new String("1") === 1. Actual: ' + (new String("1") / new String("1")));
+}
+
+//CHECK#5
+if (isNaN("x" / "1") !== true) {
+ $ERROR('#5: "x" / "1" === Not-a-Number. Actual: ' + ("x" / "1"));
+}
+
+//CHECK#6
+if (isNaN("1" / "x") !== true) {
+ $ERROR('#6: "1" / "x" === Not-a-Number. Actual: ' + ("1" / "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.4.js
new file mode 100644
index 000000000..cb2b91f5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.4;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null / undefined) !== true) {
+ $ERROR('#1: null / undefined === Not-a-Number. Actual: ' + (null / undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined / null) !== true) {
+ $ERROR('#2: undefined / null === Not-a-Number. Actual: ' + (undefined / null));
+}
+
+//CHECK#3
+if (isNaN(undefined / undefined) !== true) {
+ $ERROR('#3: undefined / undefined === Not-a-Number. Actual: ' + (undefined / undefined));
+}
+
+//CHECK#4
+if (isNaN(null / null) !== true) {
+ $ERROR('#4: null / null === Not-a-Number. Actual: ' + (null / null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.5.js
new file mode 100644
index 000000000..a99519329
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.5;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (isNaN({} / function(){return 1}) !== true) {
+ $ERROR('#1: {} / function(){return 1} === Not-a-Number. Actual: ' + ({} / function(){return 1}));
+}
+
+//CHECK#2
+if (isNaN(function(){return 1} / {}) !== true) {
+ $ERROR('#2: function(){return 1} / {} === Not-a-Number. Actual: ' + (function(){return 1} / {}));
+}
+
+//CHECK#3
+if (isNaN(function(){return 1} / function(){return 1}) !== true) {
+ $ERROR('#3: function(){return 1} / function(){return 1} === Not-a-Number. Actual: ' + (function(){return 1} / function(){return 1}));
+}
+
+//CHECK#4
+if (isNaN({} / {}) !== true) {
+ $ERROR('#4: {} / {} === Not-a-Number. Actual: ' + ({} / {}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.1.js
new file mode 100644
index 000000000..cf2ef46fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.1;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true / 1 !== 1) {
+ $ERROR('#1: true / 1 === 1. Actual: ' + (true / 1));
+}
+
+//CHECK#2
+if (1 / true !== 1) {
+ $ERROR('#2: 1 / true === 1. Actual: ' + (1 / true));
+}
+
+//CHECK#3
+if (new Boolean(true) / 1 !== 1) {
+ $ERROR('#3: new Boolean(true) / 1 === 1. Actual: ' + (new Boolean(true) / 1));
+}
+
+//CHECK#4
+if (1 / new Boolean(true) !== 1) {
+ $ERROR('#4: 1 / new Boolean(true) === 1. Actual: ' + (1 / new Boolean(true)));
+}
+
+//CHECK#5
+if (true / new Number(1) !== 1) {
+ $ERROR('#5: true / new Number(1) === 1. Actual: ' + (true / new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) / true !== 1) {
+ $ERROR('#6: new Number(1) / true === 1. Actual: ' + (new Number(1) / true));
+}
+
+//CHECK#7
+if (new Boolean(true) / new Number(1) !== 1) {
+ $ERROR('#7: new Boolean(true) / new Number(1) === 1. Actual: ' + (new Boolean(true) / new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) / new Boolean(true) !== 1) {
+ $ERROR('#8: new Number(1) / new Boolean(true) === 1. Actual: ' + (new Number(1) / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.2.js
new file mode 100644
index 000000000..48bb35e57
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.2;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" / 1 !== 1) {
+ $ERROR('#1: "1" / 1 === 1. Actual: ' + ("1" / 1));
+}
+
+//CHECK#2
+if (1 / "1" !== 1) {
+ $ERROR('#2: 1 / "1" === 1. Actual: ' + (1 / "1"));
+}
+
+//CHECK#3
+if (new String("1") / 1 !== 1) {
+ $ERROR('#3: new String("1") / 1 === 1. Actual: ' + (new String("1") / 1));
+}
+
+//CHECK#4
+if (1 / new String("1") !== 1) {
+ $ERROR('#4: 1 / new String("1") === 1. Actual: ' + (1 / new String("1")));
+}
+
+//CHECK#5
+if ("1" / new Number(1) !== 1) {
+ $ERROR('#5: "1" / new Number(1) === 1. Actual: ' + ("1" / new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) / "1" !== 1) {
+ $ERROR('#6: new Number(1) / "1" === 1. Actual: ' + (new Number(1) / "1"));
+}
+
+//CHECK#7
+if (new String("1") / new Number(1) !== 1) {
+ $ERROR('#7: new String("1") / new Number(1) === 1. Actual: ' + (new String("1") / new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) / new String("1") !== 1) {
+ $ERROR('#8: new Number(1) / new String("1") === 1. Actual: ' + (new Number(1) / new String("1")));
+}
+
+//CHECK#9
+if (isNaN("x" / 1) !== true) {
+ $ERROR('#9: "x" / 1 === Not-a-Number. Actual: ' + ("x" / 1));
+}
+
+//CHECK#10
+if (isNaN(1 / "x") !== true) {
+ $ERROR('#10: 1 / "x" === Not-a-Number. Actual: ' + (1 / "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.3.js
new file mode 100644
index 000000000..e8c3aee1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.3;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: 1 / null === +Infinity. Actual: ' + (1 / null));
+}
+
+//CHECK#2
+if (null / 1 !== 0) {
+ $ERROR('#2: null / 1 === 0. Actual: ' + (null / 1));
+}
+
+//CHECK#3
+if (new Number(1) / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: new Number(1) / null === +Infinity. Actual: ' + (new Number(1) / null));
+}
+
+//CHECK#4
+if (null / new Number(1) !== 0) {
+ $ERROR('#4: null / new Number(1) === 0. Actual: ' + (null / new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.4.js
new file mode 100644
index 000000000..aabaabbea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.4;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 / undefined) !== true) {
+ $ERROR('#1: 1 / undefined === Not-a-Number. Actual: ' + (1 / undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined / 1) !== true) {
+ $ERROR('#2: undefined / 1 === Not-a-Number. Actual: ' + (undefined / 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) / undefined) !== true) {
+ $ERROR('#3: new Number(1) / undefined === Not-a-Number. Actual: ' + (new Number(1) / undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined / new Number(1)) !== true) {
+ $ERROR('#4: undefined / new Number(1) === Not-a-Number. Actual: ' + (undefined / new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.5.js
new file mode 100644
index 000000000..2892d6da0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.5;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true / "1" !== 1) {
+ $ERROR('#1: true / "1" === 1. Actual: ' + (true / "1"));
+}
+
+//CHECK#2
+if ("1" / true !== 1) {
+ $ERROR('#2: "1" / true === 1. Actual: ' + ("1" / true));
+}
+
+//CHECK#3
+if (new Boolean(true) / "1" !== 1) {
+ $ERROR('#3: new Boolean(true) / "1" === 1. Actual: ' + (new Boolean(true) / "1"));
+}
+
+//CHECK#4
+if ("1" / new Boolean(true) !== 1) {
+ $ERROR('#4: "1" / new Boolean(true) === 1. Actual: ' + ("1" / new Boolean(true)));
+}
+
+//CHECK#5
+if (true / new String("1") !== 1) {
+ $ERROR('#5: true / new String("1") === 1. Actual: ' + (true / new String("1")));
+}
+
+//CHECK#6
+if (new String("1") / true !== 1) {
+ $ERROR('#6: new String("1") / true === 1. Actual: ' + (new String("1") / true));
+}
+
+//CHECK#7
+if (new Boolean(true) / new String("1") !== 1) {
+ $ERROR('#7: new Boolean(true) / new String("1") === 1. Actual: ' + (new Boolean(true) / new String("1")));
+}
+
+//CHECK#8
+if (new String("1") / new Boolean(true) !== 1) {
+ $ERROR('#8: new String("1") / new Boolean(true) === 1. Actual: ' + (new String("1") / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.6.js
new file mode 100644
index 000000000..956adb308
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.6;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN("1" / undefined) !== true) {
+ $ERROR('#1: "1" / undefined === Not-a-Number. Actual: ' + ("1" / undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined / "1") !== true) {
+ $ERROR('#2: undefined / "1" === Not-a-Number. Actual: ' + (undefined / "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") / undefined) !== true) {
+ $ERROR('#3: new String("1") / undefined === Not-a-Number. Actual: ' + (new String("1") / undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined / new String("1")) !== true) {
+ $ERROR('#4: undefined / new String("1") === Not-a-Number. Actual: ' + (undefined / new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.7.js
new file mode 100644
index 000000000..5404e824a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.7;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: "1" / null === +Infinity. Actual: ' + ("1" / null));
+}
+
+//CHECK#2
+if (null / "1" !== 0) {
+ $ERROR('#2: null / "1" === 0. Actual: ' + (null / "1"));
+}
+
+//CHECK#3
+if (new String("1") / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: new String("1") / null === +Infinity. Actual: ' + (new String("1") / null));
+}
+
+//CHECK#4
+if (null / new String("1") !== 0) {
+ $ERROR('#4: null / new String("1") === 0. Actual: ' + (null / new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.8.js
new file mode 100644
index 000000000..a3d235ba9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.8;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true / undefined) !== true) {
+ $ERROR('#1: true / undefined === Not-a-Number. Actual: ' + (true / undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined / true) !== true) {
+ $ERROR('#2: undefined / true === Not-a-Number. Actual: ' + (undefined / true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) / undefined) !== true) {
+ $ERROR('#3: new Boolean(true) / undefined === Not-a-Number. Actual: ' + (new Boolean(true) / undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined / new Boolean(true)) !== true) {
+ $ERROR('#4: undefined / new Boolean(true) === Not-a-Number. Actual: ' + (undefined / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.9.js
new file mode 100644
index 000000000..a94ff7ada
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.9;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: true / null === +Infinity. Actual: ' + (true / null));
+}
+
+//CHECK#2
+if (null / true !== 0) {
+ $ERROR('#2: null / true === 0. Actual: ' + (null / true));
+}
+
+//CHECK#3
+if (new Boolean(true) / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: new Boolean(true) / null === +Infinity. Actual: ' + (new Boolean(true) / null));
+}
+
+//CHECK#4
+if (null / new Boolean(true) !== 0) {
+ $ERROR('#4: null / new Boolean(true) === 0. Actual: ' + (null / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.1.js
new file mode 100644
index 000000000..80a938747
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T1.1;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: If left operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN / Number.NaN) !== true) {
+ $ERROR('#1: NaN / NaN === Not-a-Number. Actual: ' + (NaN / NaN));
+}
+
+//CHECK#2
+if (isNaN(Number.NaN / +0) !== true) {
+ $ERROR('#2: NaN / +0 === Not-a-Number. Actual: ' + (NaN / +0));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN / -0) !== true) {
+ $ERROR('#3: NaN / -0 === Not-a-Number. Actual: ' + (NaN / -0));
+}
+
+//CHECK#4
+if (isNaN(Number.NaN / Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: NaN / Infinity === Not-a-Number. Actual: ' + (NaN / Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN / Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: NaN / -Infinity === Not-a-Number. Actual: ' + (NaN / -Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NaN / Number.MAX_VALUE) !== true) {
+ $ERROR('#6: NaN / Number.MAX_VALUE === Not-a-Number. Actual: ' + (NaN / Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (isNaN(Number.NaN / Number.MIN_VALUE) !== true) {
+ $ERROR('#7: NaN / Number.MIN_VALUE === Not-a-Number. Actual: ' + (NaN / Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (isNaN(Number.NaN / 1) !== true) {
+ $ERROR('#8: NaN / 1 === Not-a-Number. Actual: ' + (NaN / 1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.2.js
new file mode 100644
index 000000000..f4245b5d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T1.2;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: If right operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN / Number.NaN) !== true) {
+ $ERROR('#1: NaN / NaN === Not-a-Number. Actual: ' + (NaN / NaN));
+}
+
+//CHECK#2
+if (isNaN(+0 / Number.NaN) !== true) {
+ $ERROR('#2: +0 / NaN === Not-a-Number. Actual: ' + (+0 / NaN));
+}
+
+//CHECK#3
+if (isNaN(-0 / Number.NaN) !== true) {
+ $ERROR('#3: -0 / NaN === Not-a-Number. Actual: ' + (-0 / NaN));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY / Number.NaN) !== true) {
+ $ERROR('#4: Infinity / NaN === Not-a-Number. Actual: ' + (Infinity / NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY / Number.NaN) !== true) {
+ $ERROR('#5: -Infinity / NaN === Not-a-Number. Actual: ' + ( -Infinity / NaN));
+}
+
+//CHECK#6
+if (isNaN(Number.MAX_VALUE / Number.NaN) !== true) {
+ $ERROR('#6: Number.MAX_VALUE / NaN === Not-a-Number. Actual: ' + (Number.MAX_VALUE / NaN));
+}
+
+//CHECK#7
+if (isNaN(Number.MIN_VALUE / Number.NaN) !== true) {
+ $ERROR('#7: Number.MIN_VALUE / NaN === Not-a-Number. Actual: ' + (Number.MIN_VALUE / NaN));
+}
+
+//CHECK#8
+if (isNaN(1 / Number.NaN) !== true) {
+ $ERROR('#8: 1 / NaN === Not-a-Number. Actual: ' + (1 / NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T10.js
new file mode 100644
index 000000000..19c2d9dd0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T10.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T10;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: If both operands are finite and nonzero, the quotient is computed and rounded using IEEE 754 round-to-nearest mode.
+ * If the magnitude is too small to represent, the result is then a zero of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MIN_VALUE / 2.1 !== 0) {
+ $ERROR('#1: Number.MIN_VALUE / 2.1 === 0. Actual: ' + (Number.MIN_VALUE / 2.1));
+}
+
+//CHECK#2
+if (Number.MIN_VALUE / -2.1 !== -0) {
+ $ERROR('#2.1: Number.MIN_VALUE / -2.1 === 0. Actual: ' + (Number.MIN_VALUE / -2.1));
+} else {
+ if (1 / (Number.MIN_VALUE / -2.1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2.2: Number.MIN_VALUE / -2.1 === -0. Actual: +0');
+ }
+}
+
+//CHECK#3
+if (Number.MIN_VALUE / 2.0 !== 0) {
+ $ERROR('#3: Number.MIN_VALUE / 2.0 === 0. Actual: ' + (Number.MIN_VALUE / 2.0));
+}
+
+//CHECK#4
+if (Number.MIN_VALUE / -2.0 !== -0) {
+ $ERROR('#4.1: Number.MIN_VALUE / -2.0 === -0. Actual: ' + (Number.MIN_VALUE / -2.0));
+} else {
+ if (1 / (Number.MIN_VALUE / -2.0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: Number.MIN_VALUE / -2.0 === -0. Actual: +0');
+ }
+}
+
+//CHECK#5
+if (Number.MIN_VALUE / 1.9 !== Number.MIN_VALUE) {
+ $ERROR('#5: Number.MIN_VALUE / 1.9 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE / 1.9));
+}
+
+//CHECK#6
+if (Number.MIN_VALUE / -1.9 !== -Number.MIN_VALUE) {
+ $ERROR('#6: Number.MIN_VALUE / -1.9 === -Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE / -1.9));
+}
+
+//CHECK#7
+if (Number.MIN_VALUE / 1.1 !== Number.MIN_VALUE) {
+ $ERROR('#7: Number.MIN_VALUE / 1.1 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE / 1.1));
+}
+
+//CHECK#8
+if (Number.MIN_VALUE / -1.1 !== -Number.MIN_VALUE) {
+ $ERROR('#8: Number.MIN_VALUE / -1.1 === -Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE / -1.1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T2.js
new file mode 100644
index 000000000..4310ba38d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T2;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: The sign of the result is positive if both operands have the same sign, negative if the operands have different signs;
+ */
+
+//CHECK#1
+if (1 / 1 !== 1) {
+ $ERROR('#1: 1 / 1 === 1. Actual: ' + (1 / 1));
+}
+
+//CHECK#2
+if (1 / -1 !== -1) {
+ $ERROR('#2: 1 / -1 === -1. Actual: ' + (1 / -1));
+}
+
+//CHECK#3
+if (-1 / 1 !== -1) {
+ $ERROR('#3: -1 / 1 === -1. Actual: ' + (-1 / 1));
+}
+
+//CHECK#4
+if (-1 / -1 !== 1) {
+ $ERROR('#4: -1 / -1 === 1. Actual: ' + (-1 / -1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T3.js
new file mode 100644
index 000000000..dc6dbf221
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T3;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of an infinity by a zero results in an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY / 0 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1: Infinity / 0 === Infinity. Actual: ' + (Infinity / 0));
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY / -0 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: -Infinity / -0 === Infinity. Actual: ' + (-Infinity / -0));
+}
+
+//CHECK#3
+if (Number.POSITIVE_INFINITY / 0 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: Infinity / 0 === Infinity. Actual: ' + (Infinity / 0));
+}
+
+//CHECK#4
+if (Number.POSITIVE_INFINITY / -0 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: Infinity / -0 === -Infinity. Actual: ' + (Infinity / -0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T4.js
new file mode 100644
index 000000000..1a6182216
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T4;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of an infinity by an infinity results in NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NEGATIVE_INFINITY / Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#1: -Infinity / -Infinity === Not-a-Number. Actual: ' + (-Infinity / -Infinity));
+}
+
+//CHECK#2
+if (isNaN(Number.POSITIVE_INFINITY / Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#2: Infinity / Infinity === Not-a-Number. Actual: ' + (Infinity / Infinity));
+}
+
+//CHECK#3
+if (isNaN(Number.NEGATIVE_INFINITY / Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#3: -Infinity / Infinity === Not-a-Number. Actual: ' + (-Infinity / Infinity));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY / Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: Infinity / -Infinity === Not-a-Number. Actual: ' + (Infinity / -Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T5.js
new file mode 100644
index 000000000..6a7c8bee9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T5.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T5;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of an infinity by a finite non-zero value results in a signed infinity;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY / 1 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1: -Infinity / 1 === -Infinity. Actual: ' + (-Infinity / 1));
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY / -1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: -Infinity / -1 === Infinity. Actual: ' + (-Infinity / -1));
+}
+
+//CHECK#3
+if (Number.POSITIVE_INFINITY / 1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: Infinity / 1 === Infinity. Actual: ' + (Infinity / 1));
+}
+
+//CHECK#4
+if (Number.POSITIVE_INFINITY / -1 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: Infinity / -1 === -Infinity. Actual: ' + (Infinity / -1));
+}
+
+//CHECK#5
+if (Number.POSITIVE_INFINITY / -Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#5: Infinity / -Number.MAX_VALUE === -Infinity. Actual: ' + (Infinity / -Number.MAX_VALUE));
+}
+
+//CHECK#6
+if (Number.NEGATIVE_INFINITY / Number.MIN_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#6: -Infinity / Number.MIN_VALUE === -Infinity. Actual: ' + (-Infinity / Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T6.js
new file mode 100644
index 000000000..f434ee651
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T6.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T6;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of a finite value by an infinity results in zero of appropriate sign;
+ */
+
+//CHECK#1
+if (1 / Number.NEGATIVE_INFINITY !== -0) {
+ $ERROR('#1.1: 1 / -Infinity === 0. Actual: ' + (1 / -Infinity));
+} else {
+ if (1 / (1 / Number.NEGATIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: 1 / -Infinity === - 0. Actual: +0');
+ }
+}
+
+//CHECK#2
+if (-1 / Number.NEGATIVE_INFINITY !== +0) {
+ $ERROR('#2.1: -1 / -Infinity === 0. Actual: ' + (-1 / -Infinity));
+} else {
+ if (1 / (-1 / Number.NEGATIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: -1 / -Infinity === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (1 / Number.POSITIVE_INFINITY !== +0) {
+ $ERROR('#3.1: 1 / Infinity === 0. Actual: ' + (1 / Infinity));
+} else {
+ if (1 / (1 / Number.POSITIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: 1 / Infinity === + 0. Actual: -0');
+ }
+}
+
+//CHECK#4
+if (-1 / Number.POSITIVE_INFINITY !== -0) {
+ $ERROR('#4.1: -1 / Infinity === 0. Actual: ' + (-1 / Infinity));
+} else {
+ if (1 / (-1 / Number.POSITIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: -1 / Infinity === - 0. Actual: +0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T7.js
new file mode 100644
index 000000000..ca31703ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T7;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of a zero by a zero results in NaN;
+ */
+
+//CHECK#1
+if (isNaN(+0 / +0) !== true) {
+ $ERROR('#1: +0 / +0 === Not-a-Number. Actual: ' + (+0 / +0));
+}
+
+//CHECK#2
+if (isNaN(-0 / +0) !== true) {
+ $ERROR('#2: -0 / +0 === Not-a-Number. Actual: ' + (-0 / +0));
+}
+
+//CHECK#3
+if (isNaN(+0 / -0) !== true) {
+ $ERROR('#3: +0 / -0 === Not-a-Number. Actual: ' + (+0 / -0));
+}
+
+//CHECK#4
+if (isNaN(-0 / -0) !== true) {
+ $ERROR('#4: -0 / -0 === Not-a-Number. Actual: ' + (-0 / -0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T8.js
new file mode 100644
index 000000000..dc036ef04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T8.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T8;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of a zero by any non-zero finite value -0 results in zero of appropriate sign;
+ */
+
+//CHECK#1
+if (-0 / 1 !== -0) {
+ $ERROR('#1.1: -0 / 1 === 0. Actual: ' + (-0 / 1));
+} else {
+ if (1 / (-0 / 1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: -0 / 1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#2
+if (-0 / -1 !== +0) {
+ $ERROR('#2.1: -0 / -1 === 0. Actual: ' + (-0 / -1));
+} else {
+ if (1 / (-0 / -1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: -0 / -1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (+0 / 1 !== +0) {
+ $ERROR('#3.1: +0 / 1 === 0. Actual: ' + (+0 / 1));
+} else {
+ if (1 / (+0 / -1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: +0 / -1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#4
+if (+0 / -1 !== -0) {
+ $ERROR('#4.1: +0 / -1 === 0. Actual: ' + (+0 / -1));
+} else {
+ if (1 / (+0 / -1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: +0 / -1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#5
+if (+0 / -Number.MAX_VALUE !== -0) {
+ $ERROR('#5.1: 0 / -Number.MAX_VALUE === 0. Actual: ' + (0 / -Number.MAX_VALUE));
+} else {
+ if (1 / (+0 / -Number.MAX_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#5.2: +0 / -Number.MAX_VALUE === - 0. Actual: +0');
+ }
+}
+
+//CHECK#6
+if (-0 / Number.MIN_VALUE !== -0) {
+ $ERROR('#6.1: -0 / Number.MIN_VALUE === 0. Actual: ' + (-0 / Number.MIN_VALUE));
+} else {
+ if (1 / (-0 / Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#6.2: -0 / Number.MIN_VALUE === - 0. Actual: +0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T9.js
new file mode 100644
index 000000000..2e50bf15b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T9.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T9;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: If the magnitude is too large to represent, the result is then an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MAX_VALUE / 0.9 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number.MAX_VALUE / 0.9 === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE / 0.9));
+}
+
+//CHECK#2
+if (Number.MAX_VALUE / -0.9 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: Number.MAX_VALUE / -0.9 === Number.NEGATIVE_INFINITY. Actual: ' + (Number.MAX_VALUE / -0.9));
+}
+
+//CHECK#3
+if (Number.MAX_VALUE / 1 !== Number.MAX_VALUE) {
+ $ERROR('#3: Number.MAX_VALUE / 1 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE / 1));
+}
+
+//CHECK#4
+if (Number.MAX_VALUE / -1 !== -Number.MAX_VALUE) {
+ $ERROR('#4: Number.MAX_VALUE / -1 === -Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE / -1));
+}
+
+//CHECK#5
+if (Number.MAX_VALUE / (Number.MAX_VALUE / 0.9) === (Number.MAX_VALUE / Number.MAX_VALUE) / 0.9) {
+ $ERROR('#5: Number.MAX_VALUE / (Number.MAX_VALUE / 0.9) !== (Number.MAX_VALUE / Number.MAX_VALUE) / 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A1.js
new file mode 100644
index 000000000..a555ffb41
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.5.3_A1;
+* @section: 11.5.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MultiplicativeExpression and "%" or between "%" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009%\u00091") !== 0) {
+ $ERROR('#1: 1\\u0009%\\u00091 === 0');
+}
+
+//CHECK#2
+if (eval("1\u000B%\u000B1") !== 0) {
+ $ERROR('#2: 1\\u000B%\\u000B1 === 0');
+}
+
+//CHECK#3
+if (eval("1\u000C%\u000C1") !== 0) {
+ $ERROR('#3: 1\\u000C%\\u000C1 === 0');
+}
+
+//CHECK#4
+if (eval("1\u0020%\u00201") !== 0) {
+ $ERROR('#4: 1\\u0020%\\u00201 === 0');
+}
+
+//CHECK#5
+if (eval("1\u00A0%\u00A01") !== 0) {
+ $ERROR('#5: 1\\u00A0%\\u00A01 === 0');
+}
+
+//CHECK#6
+if (eval("1\u000A%\u000A1") !== 0) {
+ $ERROR('#6: 1\\u000A%\\u000A1 === 0');
+}
+
+//CHECK#7
+if (eval("1\u000D%\u000D1") !== 0) {
+ $ERROR('#7: 1\\u000D%\\u000D1 === 0');
+}
+
+//CHECK#8
+if (eval("1\u2028%\u20281") !== 0) {
+ $ERROR('#8: 1\\u2028%\\u20281 === 0');
+}
+
+//CHECK#9
+if (eval("1\u2029%\u20291") !== 0) {
+ $ERROR('#9: 1\\u2029%\\u20291 === 0');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029%\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 0) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029%\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T1.js
new file mode 100644
index 000000000..3b42f3937
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.1_T1;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 % 2 !== 1) {
+ $ERROR('#1: 1 % 2 === 1. Actual: ' + (1 % 2));
+}
+
+//CHECK#2
+var x = 1;
+if (x % 2 !== 1) {
+ $ERROR('#2: var x = 1; x % 2 === 1. Actual: ' + (x % 2));
+}
+
+//CHECK#3
+var y = 2;
+if (1 % y !== 1) {
+ $ERROR('#3: var y = 2; 1 % y === 1. Actual: ' + (1 % y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 2;
+if (x % y !== 1) {
+ $ERROR('#4: var x = 1; var y = 2; x % y === 1. Actual: ' + (x % y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 2;
+if (objectx.prop % objecty.prop !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 2; objectx.prop % objecty.prop === 1. Actual: ' + (objectx.prop % objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T2.js
new file mode 100644
index 000000000..9c6d191b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.1_T2;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x % 1;
+ $ERROR('#1.1: x % 1 throw ReferenceError. Actual: ' + (x % 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x % 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T3.js
new file mode 100644
index 000000000..4909c5c25
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.1_T3;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 % y;
+ $ERROR('#1.1: 1 % y throw ReferenceError. Actual: ' + (1 % y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 % y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.2_T1.js
new file mode 100644
index 000000000..4a93da786
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.2_T1;
+ * @section: 11.5.3, 8.6.2.6;
+ * @assertion: Operator x % y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} % 2 !== 1) {
+ $ERROR('#1: {valueOf: function() {return 1}} % 2 === 1. Actual: ' + ({valueOf: function() {return 1}} % 2));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} % 2 !== 1) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} % 2 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} % 2));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} % 2 !== 1) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} % 2 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} % 2));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} % 2 !== 1) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} % 2 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} % 2));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} % 2 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} % 2 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 % {toString: function() {return 2}} !== 1) {
+ $ERROR('#5: 1 % {toString: function() {return 2}} === 1. Actual: ' + (1 % {toString: function() {return 2}}));
+}
+
+//CHECK#6
+if (1 % {valueOf: function() {return {}}, toString: function() {return 2}} !== 1) {
+ $ERROR('#6: 1 % {valueOf: function() {return {}}, toString: function() {return 2}} === 1. Actual: ' + (1 % {valueOf: function() {return {}}, toString: function() {return 2}}));
+}
+
+//CHECK#7
+try {
+ 1 % {valueOf: function() {throw "error"}, toString: function() {return 2}};
+ $ERROR('#7.1: 1 % {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (1 % {valueOf: function() {throw "error"}, toString: function() {return 2}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 % {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 % {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 % {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 % {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 % {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.3_T1.js
new file mode 100644
index 000000000..020b35aba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.3_T1;
+ * @section: 11.5.3;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x % y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x % y throw "x". Actual: ' + (x % y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x % y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T1.js
new file mode 100644
index 000000000..db2bd5ef9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.4_T1;
+ * @section: 11.5.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) % x !== 0) {
+ $ERROR('#1: var x = 0; (x = 1) % x === 0. Actual: ' + ((x = 1) % x));
+}
+
+//CHECK#2
+var x = 1;
+if (x % (x = 2) !== 1) {
+ $ERROR('#2: var x = 1; x % (x = 2) === 1. Actual: ' + (x % (x = 2)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T2.js
new file mode 100644
index 000000000..32a86260f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.4_T2;
+ * @section: 11.5.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() % y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() % y() throw "x". Actual: ' + (x() % y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() % y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T3.js
new file mode 100644
index 000000000..dc8dbb05f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.4_T3;
+ * @section: 11.5.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x % (x = 1);
+ $ERROR('#1.1: x % (x = 1) throw ReferenceError. Actual: ' + (x % (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x % (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) % y !== 0) {
+ $ERROR('#2: (y = 1) % y === 0. Actual: ' + ((y = 1) % y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.1.js
new file mode 100644
index 000000000..c84322135
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.1;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true % true !== 0) {
+ $ERROR('#1: true % true === 0. Actual: ' + (true % true));
+}
+
+//CHECK#2
+if (new Boolean(true) % true !== 0) {
+ $ERROR('#2: new Boolean(true) % true === 0. Actual: ' + (new Boolean(true) % true));
+}
+
+//CHECK#3
+if (true % new Boolean(true) !== 0) {
+ $ERROR('#3: true % new Boolean(true) === 0. Actual: ' + (true % new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) % new Boolean(true) !== 0) {
+ $ERROR('#4: new Boolean(true) % new Boolean(true) === 0. Actual: ' + (new Boolean(true) % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.2.js
new file mode 100644
index 000000000..c9102d222
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.2;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 % 1 !== 0) {
+ $ERROR('#1: 1 % 1 === 0. Actual: ' + (1 % 1));
+}
+
+//CHECK#2
+if (new Number(1) % 1 !== 0) {
+ $ERROR('#2: new Number(1) % 1 === 0. Actual: ' + (new Number(1) % 1));
+}
+
+//CHECK#3
+if (1 % new Number(1) !== 0) {
+ $ERROR('#3: 1 % new Number(1) === 0. Actual: ' + (1 % new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) % new Number(1) !== 0) {
+ $ERROR('#4: new Number(1) % new Number(1) === 0. Actual: ' + (new Number(1) % new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.3.js
new file mode 100644
index 000000000..911b28a84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.3;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" % "1" !== 0) {
+ $ERROR('#1: "1" % "1" === 0. Actual: ' + ("1" % "1"));
+}
+
+//CHECK#2
+if (new String("1") % "1" !== 0) {
+ $ERROR('#2: new String("1") % "1" === 0. Actual: ' + (new String("1") % "1"));
+}
+
+//CHECK#3
+if ("1" % new String("1") !== 0) {
+ $ERROR('#3: "1" % new String("1") === 0. Actual: ' + ("1" % new String("1")));
+}
+
+//CHECK#4
+if (new String("1") % new String("1") !== 0) {
+ $ERROR('#4: new String("1") % new String("1") === 0. Actual: ' + (new String("1") % new String("1")));
+}
+
+//CHECK#5
+if (isNaN("x" % "1") !== true) {
+ $ERROR('#5: "x" % "1" === Not-a-Number. Actual: ' + ("x" % "1"));
+}
+
+//CHECK#6
+if (isNaN("1" % "x") !== true) {
+ $ERROR('#6: "1" % "x" === Not-a-Number. Actual: ' + ("1" % "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.4.js
new file mode 100644
index 000000000..52cfb6fe0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.4;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null % undefined) !== true) {
+ $ERROR('#1: null % undefined === Not-a-Number. Actual: ' + (null % undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined % null) !== true) {
+ $ERROR('#2: undefined % null === Not-a-Number. Actual: ' + (undefined % null));
+}
+
+//CHECK#3
+if (isNaN(undefined % undefined) !== true) {
+ $ERROR('#3: undefined % undefined === Not-a-Number. Actual: ' + (undefined % undefined));
+}
+
+//CHECK#4
+if (isNaN(null % null) !== true) {
+ $ERROR('#4: null % null === Not-a-Number. Actual: ' + (null % null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.5.js
new file mode 100644
index 000000000..f92f72379
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.5;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (isNaN({} % function(){return 1}) !== true) {
+ $ERROR('#1: {} % function(){return 1} === Not-a-Number. Actual: ' + ({} % function(){return 1}));
+}
+
+//CHECK#2
+if (isNaN(function(){return 1} % {}) !== true) {
+ $ERROR('#2: function(){return 1} % {} === Not-a-Number. Actual: ' + (function(){return 1} % {}));
+}
+
+//CHECK#3
+if (isNaN(function(){return 1} % function(){return 1}) !== true) {
+ $ERROR('#3: function(){return 1} % function(){return 1} === Not-a-Number. Actual: ' + (function(){return 1} % function(){return 1}));
+}
+
+//CHECK#4
+if (isNaN({} % {}) !== true) {
+ $ERROR('#4: {} % {} === Not-a-Number. Actual: ' + ({} % {}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.1.js
new file mode 100644
index 000000000..cca4f1320
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.1;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true % 1 !== 0) {
+ $ERROR('#1: true % 1 === 0. Actual: ' + (true % 1));
+}
+
+//CHECK#2
+if (1 % true !== 0) {
+ $ERROR('#2: 1 % true === 0. Actual: ' + (1 % true));
+}
+
+//CHECK#3
+if (new Boolean(true) % 1 !== 0) {
+ $ERROR('#3: new Boolean(true) % 1 === 0. Actual: ' + (new Boolean(true) % 1));
+}
+
+//CHECK#4
+if (1 % new Boolean(true) !== 0) {
+ $ERROR('#4: 1 % new Boolean(true) === 0. Actual: ' + (1 % new Boolean(true)));
+}
+
+//CHECK#5
+if (true % new Number(1) !== 0) {
+ $ERROR('#5: true % new Number(1) === 0. Actual: ' + (true % new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) % true !== 0) {
+ $ERROR('#6: new Number(1) % true === 0. Actual: ' + (new Number(1) % true));
+}
+
+//CHECK#7
+if (new Boolean(true) % new Number(1) !== 0) {
+ $ERROR('#7: new Boolean(true) % new Number(1) === 0. Actual: ' + (new Boolean(true) % new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) % new Boolean(true) !== 0) {
+ $ERROR('#8: new Number(1) % new Boolean(true) === 0. Actual: ' + (new Number(1) % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.2.js
new file mode 100644
index 000000000..913ae9a87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.2;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" % 1 !== 0) {
+ $ERROR('#1: "1" % 1 === 0. Actual: ' + ("1" % 1));
+}
+
+//CHECK#2
+if (1 % "1" !== 0) {
+ $ERROR('#2: 1 % "1" === 0. Actual: ' + (1 % "1"));
+}
+
+//CHECK#3
+if (new String("1") % 1 !== 0) {
+ $ERROR('#3: new String("1") % 1 === 0. Actual: ' + (new String("1") % 1));
+}
+
+//CHECK#4
+if (1 % new String("1") !== 0) {
+ $ERROR('#4: 1 % new String("1") === 0. Actual: ' + (1 % new String("1")));
+}
+
+//CHECK#5
+if ("1" % new Number(1) !== 0) {
+ $ERROR('#5: "1" % new Number(1) === 0. Actual: ' + ("1" % new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) % "1" !== 0) {
+ $ERROR('#6: new Number(1) % "1" === 0. Actual: ' + (new Number(1) % "1"));
+}
+
+//CHECK#7
+if (new String("1") % new Number(1) !== 0) {
+ $ERROR('#7: new String("1") % new Number(1) === 0. Actual: ' + (new String("1") % new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) % new String("1") !== 0) {
+ $ERROR('#8: new Number(1) % new String("1") === 0. Actual: ' + (new Number(1) % new String("1")));
+}
+
+//CHECK#9
+if (isNaN("x" % 1) !== true) {
+ $ERROR('#9: "x" % 1 === Not-a-Number. Actual: ' + ("x" % 1));
+}
+
+//CHECK#10
+if (isNaN(1 % "x") !== true) {
+ $ERROR('#10: 1 % "x" === Not-a-Number. Actual: ' + (1 % "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.3.js
new file mode 100644
index 000000000..a9b9eb3b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.3;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (isNaN(1 % null) !== true) {
+ $ERROR('#1: 1 % null === Not-a-Number. Actual: ' + (1 % null));
+}
+
+//CHECK#2
+if (null % 1 !== 0) {
+ $ERROR('#2: null % 1 === 0. Actual: ' + (null % 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) % null) !== true) {
+ $ERROR('#3: new Number(1) % null === Not-a-Number. Actual: ' + (new Number(1) % null));
+}
+
+//CHECK#4
+if (null % new Number(1) !== 0) {
+ $ERROR('#4: null % new Number(1) === 0. Actual: ' + (null % new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.4.js
new file mode 100644
index 000000000..3b9cc04ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.4;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 % undefined) !== true) {
+ $ERROR('#1: 1 % undefined === Not-a-Number. Actual: ' + (1 % undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined % 1) !== true) {
+ $ERROR('#2: undefined % 1 === Not-a-Number. Actual: ' + (undefined % 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) % undefined) !== true) {
+ $ERROR('#3: new Number(1) % undefined === Not-a-Number. Actual: ' + (new Number(1) % undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined % new Number(1)) !== true) {
+ $ERROR('#4: undefined % new Number(1) === Not-a-Number. Actual: ' + (undefined % new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.5.js
new file mode 100644
index 000000000..36384b748
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.5;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true % "1" !== 0) {
+ $ERROR('#1: true % "1" === 0. Actual: ' + (true % "1"));
+}
+
+//CHECK#2
+if ("1" % true !== 0) {
+ $ERROR('#2: "1" % true === 0. Actual: ' + ("1" % true));
+}
+
+//CHECK#3
+if (new Boolean(true) % "1" !== 0) {
+ $ERROR('#3: new Boolean(true) % "1" === 0. Actual: ' + (new Boolean(true) % "1"));
+}
+
+//CHECK#4
+if ("1" % new Boolean(true) !== 0) {
+ $ERROR('#4: "1" % new Boolean(true) === 0. Actual: ' + ("1" % new Boolean(true)));
+}
+
+//CHECK#5
+if (true % new String("1") !== 0) {
+ $ERROR('#5: true % new String("1") === 0. Actual: ' + (true % new String("1")));
+}
+
+//CHECK#6
+if (new String("1") % true !== 0) {
+ $ERROR('#6: new String("1") % true === 0. Actual: ' + (new String("1") % true));
+}
+
+//CHECK#7
+if (new Boolean(true) % new String("1") !== 0) {
+ $ERROR('#7: new Boolean(true) % new String("1") === 0. Actual: ' + (new Boolean(true) % new String("1")));
+}
+
+//CHECK#8
+if (new String("1") % new Boolean(true) !== 0) {
+ $ERROR('#8: new String("1") % new Boolean(true) === 0. Actual: ' + (new String("1") % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.6.js
new file mode 100644
index 000000000..7f68dd47c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.6;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN("1" % undefined) !== true) {
+ $ERROR('#1: "1" % undefined === Not-a-Number. Actual: ' + ("1" % undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined % "1") !== true) {
+ $ERROR('#2: undefined % "1" === Not-a-Number. Actual: ' + (undefined % "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") % undefined) !== true) {
+ $ERROR('#3: new String("1") % undefined === Not-a-Number. Actual: ' + (new String("1") % undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined % new String("1")) !== true) {
+ $ERROR('#4: undefined % new String("1") === Not-a-Number. Actual: ' + (undefined % new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.7.js
new file mode 100644
index 000000000..2d1a269fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.7;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (isNaN("1" % null) !== true) {
+ $ERROR('#1: "1" % null === Not-a-Number. Actual: ' + ("1" % null));
+}
+
+//CHECK#2
+if (null % "1" !== 0) {
+ $ERROR('#2: null % "1" === 0. Actual: ' + (null % "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") % null) !== true) {
+ $ERROR('#3: new String("1") % null === Not-a-Number. Actual: ' + (new String("1") % null));
+}
+
+//CHECK#4
+if (null % new String("1") !== 0) {
+ $ERROR('#4: null % new String("1") === 0. Actual: ' + (null % new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.8.js
new file mode 100644
index 000000000..329ec0b55
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.8;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true % undefined) !== true) {
+ $ERROR('#1: true % undefined === Not-a-Number. Actual: ' + (true % undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined % true) !== true) {
+ $ERROR('#2: undefined % true === Not-a-Number. Actual: ' + (undefined % true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) % undefined) !== true) {
+ $ERROR('#3: new Boolean(true) % undefined === Not-a-Number. Actual: ' + (new Boolean(true) % undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined % new Boolean(true)) !== true) {
+ $ERROR('#4: undefined % new Boolean(true) === Not-a-Number. Actual: ' + (undefined % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.9.js
new file mode 100644
index 000000000..60d429368
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.9;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (isNaN(true % null) !== true) {
+ $ERROR('#1: true % null === Not-a-Number. Actual: ' + (true % null));
+}
+
+//CHECK#2
+if (null % true !== 0) {
+ $ERROR('#2: null % true === 0. Actual: ' + (null % true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) % null) !== true) {
+ $ERROR('#3: new Boolean(true) % null === Not-a-Number. Actual: ' + (new Boolean(true) % null));
+}
+
+//CHECK#4
+if (null % new Boolean(true) !== 0) {
+ $ERROR('#4: null % new Boolean(true) === 0. Actual: ' + (null % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.1.js
new file mode 100644
index 000000000..a1c5de927
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T1.1;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If either operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN % Number.NaN) !== true) {
+ $ERROR('#1: NaN % NaN === Not-a-Number. Actual: ' + (NaN % NaN));
+}
+
+//CHECK#2
+if (isNaN(Number.NaN % +0) !== true) {
+ $ERROR('#2: NaN % +0 === Not-a-Number. Actual: ' + (NaN % +0));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN % -0) !== true) {
+ $ERROR('#3: NaN % -0 === Not-a-Number. Actual: ' + (NaN % -0));
+}
+
+//CHECK#4
+if (isNaN(Number.NaN % Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: NaN % Infinity === Not-a-Number. Actual: ' + (NaN % Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN % Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: NaN % -Infinity === Not-a-Number. Actual: ' + (NaN % -Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NaN % Number.MAX_VALUE) !== true) {
+ $ERROR('#6: NaN % Number.MAX_VALUE === Not-a-Number. Actual: ' + (NaN % Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (isNaN(Number.NaN % Number.MIN_VALUE) !== true) {
+ $ERROR('#7: NaN % Number.MIN_VALUE === Not-a-Number. Actual: ' + (NaN % Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (isNaN(Number.NaN % 1) !== true) {
+ $ERROR('#8: NaN % 1 === Not-a-Number. Actual: ' + (NaN % 1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.2.js
new file mode 100644
index 000000000..4cf8777e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T1.2;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If either operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN % Number.NaN) !== true) {
+ $ERROR('#1: NaN % NaN === Not-a-Number. Actual: ' + (NaN % NaN));
+}
+
+//CHECK#2
+if (isNaN(+0 % Number.NaN) !== true) {
+ $ERROR('#2: +0 % NaN === Not-a-Number. Actual: ' + (+0 % NaN));
+}
+
+//CHECK#3
+if (isNaN(-0 % Number.NaN) !== true) {
+ $ERROR('#3: -0 % NaN === Not-a-Number. Actual: ' + (-0 % NaN));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY % Number.NaN) !== true) {
+ $ERROR('#4: Infinity % NaN === Not-a-Number. Actual: ' + (Infinity % NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY % Number.NaN) !== true) {
+ $ERROR('#5: -Infinity % NaN === Not-a-Number. Actual: ' + ( -Infinity % NaN));
+}
+
+//CHECK#6
+if (isNaN(Number.MAX_VALUE % Number.NaN) !== true) {
+ $ERROR('#6: Number.MAX_VALUE % NaN === Not-a-Number. Actual: ' + (Number.MAX_VALUE % NaN));
+}
+
+//CHECK#7
+if (isNaN(Number.MIN_VALUE % Number.NaN) !== true) {
+ $ERROR('#7: Number.MIN_VALUE % NaN === Not-a-Number. Actual: ' + (Number.MIN_VALUE % NaN));
+}
+
+//CHECK#8
+if (isNaN(1 % Number.NaN) !== true) {
+ $ERROR('#8: 1 % NaN === Not-a-Number. Actual: ' + (1 % NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T2.js
new file mode 100644
index 000000000..8cd1a59e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T2.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T2;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: The sign of the finite non-zero value result equals the sign of the divided;
+ */
+
+//CHECK#1
+if (1 % 1 !== 0) {
+ $ERROR('#1.1: 1 % 1 === 0. Actual: ' + (1 % 1));
+} else {
+ if (1 / (1 % 1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: 1 % 1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (-1 % -1 !== -0) {
+ $ERROR('#2.1: -1 % -1 === 0. Actual: ' + (-1 % -1));
+} else {
+ if (1 / (-1 % -1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2.2: -1 % -1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#3
+if (-1 % 1 !== -0) {
+ $ERROR('#3.1: -1 % 1 === 0. Actual: ' + (-1 % 1));
+} else {
+ if (1 / (-1 % 1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: -1 % 1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#4
+if (1 % -1 !== 0) {
+ $ERROR('#4.1: 1 % -1 === 0. Actual: ' + (1 % -1));
+} else {
+ if (1 / (1 % -1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: 1 % -1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#5
+if (101 % 51 !== 50) {
+ $ERROR('#5: 101 % 51 === 50. Actual: ' + (101 % 51));
+}
+
+//CHECK#6
+if (101 % -51 !== 50) {
+ $ERROR('#6: 101 % -51 === 50. Actual: ' + (101 % -51));
+}
+
+//CHECK#7
+if (-101 % 51 !== -50) {
+ $ERROR('#7: -101 % 51 === -50. Actual: ' + (-101 % 51));
+}
+
+//CHECK#8
+if (-101 % -51 !== -50) {
+ $ERROR('#8: -101 % -51 === -50. Actual: ' + (-101 % -51));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T3.js
new file mode 100644
index 000000000..e7fc9f3d2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T3.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T3;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If the dividend is an infinity results is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NEGATIVE_INFINITY % Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: -Infinity % Infinity === Not-a-Number. Actual: ' + (-Infinity % Infinity));
+}
+
+//CHECK#2
+if (isNaN(Number.NEGATIVE_INFINITY % Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: -Infinity % -Infinity === Not-a-Number. Actual: ' + (-Infinity % -Infinity));
+}
+
+//CHECK#3
+if (isNaN(Number.POSITIVE_INFINITY % Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#3: Infinity % Infinity === Not-a-Number. Actual: ' + (Infinity % Infinity));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY % Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: Infinity % -Infinity === Not-a-Number. Actual: ' + (Infinity % -Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY % 1) !== true) {
+ $ERROR('#5: Infinity % 1 === Not-a-Number. Actual: ' + (Infinity % 1));
+}
+
+//CHECK#6
+if (isNaN(Number.NEGATIVE_INFINITY % -1) !== true) {
+ $ERROR('#6: -Infinity % -1 === Not-a-Number. Actual: ' + (-Infinity % -1));
+}
+
+//CHECK#7
+if (isNaN(Number.POSITIVE_INFINITY % 1) !== true) {
+ $ERROR('#7: Infinity % 1 === Not-a-Number. Actual: ' + (Infinity % 1));
+}
+
+//CHECK#8
+if (isNaN(Number.POSITIVE_INFINITY % -1) !== true) {
+ $ERROR('#8: Infinity % -1 === Not-a-Number. Actual: ' + (Infinity % -1));
+}
+
+//CHECK#9
+if (isNaN(Number.NEGATIVE_INFINITY % Number.MAX_VALUE) !== true) {
+ $ERROR('#9: Infinity % Number.MAX_VALUE === Not-a-Number. Actual: ' + (Infinity % Number.MAX_VALUE));
+}
+
+//CHECK#10
+if (isNaN(Number.NEGATIVE_INFINITY % -Number.MAX_VALUE) !== true) {
+ $ERROR('#10: -Infinity % -Number.MAX_VALUE === Not-a-Number. Actual: ' + (-Infinity % -Number.MAX_VALUE));
+}
+
+//CHECK#11
+if (isNaN(Number.POSITIVE_INFINITY % Number.MAX_VALUE) !== true) {
+ $ERROR('#11: Infinity % Number.MAX_VALUE === Not-a-Number. Actual: ' + (Infinity % Number.MAX_VALUE));
+}
+
+//CHECK#12
+if (isNaN(Number.POSITIVE_INFINITY % -Number.MAX_VALUE) !== true) {
+ $ERROR('#12: Infinity % -Number.MAX_VALUE === Not-a-Number. Actual: ' + (Infinity % -Number.MAX_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T4.js
new file mode 100644
index 000000000..f0405f3b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T4.js
@@ -0,0 +1,89 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T4;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If the divisor is zero results is NaN;
+ */
+
+//CHECK#1
+if (isNaN(-0 % 0) !== true) {
+ $ERROR('#1: -0 % 0 === Not-a-Number. Actual: ' + (-0 % 0));
+}
+
+//CHECK#2
+if (isNaN(-0 % -0) !== true) {
+ $ERROR('#2: -0 % -0 === Not-a-Number. Actual: ' + (-0 % -0));
+}
+
+//CHECK#3
+if (isNaN(0 % 0) !== true) {
+ $ERROR('#3: 0 % 0 === Not-a-Number. Actual: ' + (0 % 0));
+}
+
+//CHECK#4
+if (isNaN(0 % -0) !== true) {
+ $ERROR('#4: 0 % -0 === Not-a-Number. Actual: ' + (0 % -0));
+}
+
+//CHECK#5
+if (isNaN(-1 % 0) !== true) {
+ $ERROR('#5: 1 % 0 === Not-a-Number. Actual: ' + (1 % 0));
+}
+
+//CHECK#6
+if (isNaN(-1 % -0) !== true) {
+ $ERROR('#6: -1 % -0 === Not-a-Number. Actual: ' + (-1 % -0));
+}
+
+//CHECK#7
+if (isNaN(1 % 0) !== true) {
+ $ERROR('#7: 1 % 0 === Not-a-Number. Actual: ' + (1 % 0));
+}
+
+//CHECK#8
+if (isNaN(1 % -0) !== true) {
+ $ERROR('#8: 1 % -0 === Not-a-Number. Actual: ' + (1 % -0));
+}
+
+//CHECK#9
+if (isNaN(Number.NEGATIVE_INFINITY % 0) !== true) {
+ $ERROR('#9: Infinity % 0 === Not-a-Number. Actual: ' + (Infinity % 0));
+}
+
+//CHECK#10
+if (isNaN(Number.NEGATIVE_INFINITY % -0) !== true) {
+ $ERROR('#10: -Infinity % -0 === Not-a-Number. Actual: ' + (-Infinity % -0));
+}
+
+//CHECK#11
+if (isNaN(Number.POSITIVE_INFINITY % 0) !== true) {
+ $ERROR('#11: Infinity % 0 === Not-a-Number. Actual: ' + (Infinity % 0));
+}
+
+//CHECK#12
+if (isNaN(Number.POSITIVE_INFINITY % -0) !== true) {
+ $ERROR('#12: Infinity % -0 === Not-a-Number. Actual: ' + (Infinity % -0));
+}
+
+//CHECK#13
+if (isNaN(Number.MIN_VALUE % 0) !== true) {
+ $ERROR('#13: Number.MIN_VALUE % 0 === Not-a-Number. Actual: ' + (Number.MIN_VALUE % 0));
+}
+
+//CHECK#14
+if (isNaN(Number.MIN_VALUE % -0) !== true) {
+ $ERROR('#14: -Number.MIN_VALUE % -0 === Not-a-Number. Actual: ' + (-Number.MIN_VALUE % -0));
+}
+
+//CHECK#15
+if (isNaN(Number.MAX_VALUE % 0) !== true) {
+ $ERROR('#15: Number.MAX_VALUE % 0 === Not-a-Number. Actual: ' + (Number.MAX_VALUE % 0));
+}
+
+//CHECK#16
+if (isNaN(Number.MAX_VALUE % -0) !== true) {
+ $ERROR('#16: Number.MAX_VALUE % -0 === Not-a-Number. Actual: ' + (Number.MAX_VALUE % -0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T5.js
new file mode 100644
index 000000000..c0b07dc11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T5.js
@@ -0,0 +1,103 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T5;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If dividend is finite and the divisor is an infinity, the result equals the dividend;
+ */
+
+//CHECK#1
+if (1 % Number.NEGATIVE_INFINITY !== 1) {
+ $ERROR('#1: 1 % -Infinity === 1. Actual: ' + (1 % -Infinity));
+}
+//CHECK#2
+if (1 % Number.POSITIVE_INFINITY !==1) {
+ $ERROR('#2: 1 % Infinity === 1. Actual: ' + (1 % Infinity));
+}
+
+//CHECK#3
+if (-1 % Number.POSITIVE_INFINITY !== -1) {
+ $ERROR('#3: -1 % Infinity === -1. Actual: ' + (-1 % Infinity));
+}
+
+//CHECK#4
+if (-1 % Number.NEGATIVE_INFINITY !== -1) {
+ $ERROR('#4: -1 % -Infinity === -1. Actual: ' + (-1 % -Infinity));
+}
+
+//CHECK#5
+if (0 % Number.POSITIVE_INFINITY !== 0) {
+ $ERROR('#5.1: 0 % Infinity === 0. Actual: ' + (0 % Infinity));
+} else {
+ if (1 / (0 % Number.POSITIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: 0 % Infinity === + 0. Actual: -0');
+ }
+}
+
+//CHECK#6
+if (0 % Number.NEGATIVE_INFINITY !== 0) {
+ $ERROR('#6.1: 0 % -Infinity === 0. Actual: ' + (0 % -Infinity));
+} else {
+ if (1 / (0 % Number.NEGATIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6.2: 0 % -Infinity === + 0. Actual: -0');
+ }
+}
+
+//CHECK#7
+if (-0 % Number.POSITIVE_INFINITY !== -0) {
+ $ERROR('#7.1: -0 % Infinity === 0. Actual: ' + (-0 % Infinity));
+} else {
+ if (1 / (-0 % Number.POSITIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7.2: -0 % Infinity === - 0. Actual: +0');
+ }
+}
+
+//CHECK#8
+if (-0 % Number.NEGATIVE_INFINITY !== -0) {
+ $ERROR('#8.1: -0 % -Infinity === 0. Actual: ' + (-0 % -Infinity));
+} else {
+ if (1 / (-0 % Number.NEGATIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#8.2: -0 % -Infinity === - 0. Actual: +0');
+ }
+}
+
+//CHECK#9
+if (Number.MAX_VALUE % Number.NEGATIVE_INFINITY !== Number.MAX_VALUE) {
+ $ERROR('#9: Number.MAX_VALUE % -Infinity === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE % -Infinity));
+}
+
+//CHECK#10
+if (Number.MAX_VALUE % Number.POSITIVE_INFINITY !== Number.MAX_VALUE) {
+ $ERROR('#10: Number.MAX_VALUE % Infinity === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE % Infinity));
+}
+
+//CHECK#11
+if (-Number.MAX_VALUE % Number.POSITIVE_INFINITY !== -Number.MAX_VALUE) {
+ $ERROR('#11: -Number.MAX_VALUE % Infinity === -Number.MAX_VALUE. Actual: ' + (-Number.MAX_VALUE % Infinity));
+}
+
+//CHECK#12
+if (-Number.MAX_VALUE % Number.NEGATIVE_INFINITY !== -Number.MAX_VALUE) {
+ $ERROR('#12: -Number.MAX_VALUE % -Infinity === -Number.MAX_VALUE. Actual: ' + (-Number.MAX_VALUE % -Infinity));
+}
+
+//CHECK#13
+if (Number.MIN_VALUE % Number.NEGATIVE_INFINITY !== Number.MIN_VALUE) {
+ $ERROR('#13: Number.MIN_VALUE % -Infinity === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE % -Infinity));
+}
+//CHECK#14
+if (Number.MIN_VALUE % Number.POSITIVE_INFINITY !== Number.MIN_VALUE) {
+ $ERROR('#14: Number.MIN_VALUE % Infinity === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE % Infinity));
+}
+
+//CHECK#15
+if (-Number.MIN_VALUE % Number.POSITIVE_INFINITY !== -Number.MIN_VALUE) {
+ $ERROR('#15: -Number.MIN_VALUE % Infinity === -Number.MIN_VALUE. Actual: ' + (-Number.MIN_VALUE % Infinity));
+}
+
+//CHECK#16
+if (-Number.MIN_VALUE % Number.NEGATIVE_INFINITY !== -Number.MIN_VALUE) {
+ $ERROR('#16: -Number.MIN_VALUE % -Infinity === -Number.MIN_VALUE. Actual: ' + (-Number.MIN_VALUE % -Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T6.js
new file mode 100644
index 000000000..f6cd50a4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T6.js
@@ -0,0 +1,81 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T6;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If dividend is a zero and the divisor is nonzero finite, the result equals the dividend;
+ */
+
+//CHECK#1
+if (0 % 1 !== 0) {
+ $ERROR('#1.1: 0 % 1 === 0. Actual: ' + (0 % 1));
+} else {
+ if (1 / (0 % 1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: 0 % 1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (0 % -1 !== 0) {
+ $ERROR('#2.1: 0 % -1 === 0. Actual: ' + (0 % -1));
+} else {
+ if (1 / (0 % -1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: 0 % -1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (-0 % 1 !== -0) {
+ $ERROR('#3.1: -0 % 1 === 0. Actual: ' + (-0 % 1));
+} else {
+ if (1 / (-0 % 1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: -0 % 1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#4
+if (-0 % -1 !== -0) {
+ $ERROR('#4.1: -0 % -1 === 0. Actual: ' + (-0 % -1));
+} else {
+ if (1 / (-0 % -1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: 0 % -1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#5
+if (0 % Number.MAX_VALUE !== 0) {
+ $ERROR('#5.1: 0 % Number.MAX_VALUE === 0. Actual: ' + (0 % Number.MAX_VALUE));
+} else {
+ if (1 / (0 % Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: 0 % Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#6
+if (0 % Number.MIN_VALUE !== 0) {
+ $ERROR('#6.1: 0 % Number.MIN_VALUE === 0. Actual: ' + (0 % Number.MIN_VALUE));
+} else {
+ if (1 / (0 % Number.MIN_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6.2: 0 % Number.MIN_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#7
+if (-0 % Number.MAX_VALUE !== -0) {
+ $ERROR('#7.1: -0 % Number.MAX_VALUE === 0. Actual: ' + (-0 % Number.MAX_VALUE));
+} else {
+ if (1 / (-0 % Number.MAX_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7.2: -0 % Number.MAX_VALUE === - 0. Actual: +0');
+ }
+}
+
+//CHECK#8
+if (-0 % Number.MIN_VALUE !== -0) {
+ $ERROR('#8.1: -0 % Number.MIN_VALUE === 0. Actual: ' + (-0 % Number.MIN_VALUE));
+} else {
+ if (1 / (-0 % Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#8.2: 0 % Number.MIN_VALUE === - 0. Actual: +0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T7.js
new file mode 100644
index 000000000..c754f3d88
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T7.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T7;
+ * @section: 11.5.3, 15.8.2.9;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If operands neither an infinity, nor a zero, nor NaN, return x - truncate(x / y) * y;
+ */
+
+function truncate(x) {
+ if (x > 0) {
+ return Math.floor(x);
+ } else {
+ return Math.ceil(x);
+ }
+}
+
+//CHECK#1
+x = 1.3;
+y = 1.1;
+if (x % y !== 0.19999999999999996) {
+ $ERROR('#1: x = 1.3; y = 1.1; x % y === 0.19999999999999996. Actual: ' + (x % y));
+}
+
+//CHECK#2
+x = -1.3;
+y = 1.1;
+if (x % y !== -0.19999999999999996) {
+ $ERROR('#2: x = -1.3; y = 1.1; x % y === -0.19999999999999996. Actual: ' + (x % y));
+}
+
+//CHECK#3
+x = 1.3;
+y = -1.1;
+if (x % y !== 0.19999999999999996) {
+ $ERROR('#3: x = 1.3; y = -1.1; x % y === 0.19999999999999996. Actual: ' + (x % y));
+}
+
+//CHECK#4
+x = -1.3;
+y = -1.1;
+if (x % y !== -0.19999999999999996) {
+ $ERROR('#4: x = -1.3; y = -1.1; x % y === -0.19999999999999996. Actual: ' + (x % y));
+}
+
+//CHECK#5
+x = 1.3;
+y = 1.1;
+if (x % y !== x - truncate(x / y) * y) {
+ $ERROR('#5: x = 1.3; y = 1.1; x % y === x - truncate(x / y) * y. Actual: ' + (x % y));
+}
+
+//CHECK#6
+x = -1.3;
+y = 1.1;
+if (x % y !== x - truncate(x / y) * y) {
+ $ERROR('#6: x = -1.3; y = 1.1; x % y === x - truncate(x / y) * y. Actual: ' + (x % y));
+}
+
+//CHECK#7
+x = 1.3;
+y = -1.1;
+if (x % y !== x - truncate(x / y) * y) {
+ $ERROR('#7: x = 1.3; y = -1.1; x % y === x - truncate(x / y) * y. Actual: ' + (x % y));
+}
+
+//CHECK#8
+x = -1.3;
+y = -1.1;
+if (x % y !== x - truncate(x / y) * y) {
+ $ERROR('#8: x = -1.3; y = -1.1; x % y === x - truncate(x / y) * y. Actual: ' + (x % y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A1.js
new file mode 100644
index 000000000..0f0d752ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A1;
+* @section: 11.6.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between AdditiveExpression and "+" or between "+" and MultiplicativeExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009+\u00091") !== 2) {
+ $ERROR('#1: 1\\u0009+\\u00091 === 2');
+}
+
+//CHECK#2
+if (eval("1\u000B+\u000B1") !== 2) {
+ $ERROR('#2: 1\\u000B+\\u000B1 === 2');
+}
+
+//CHECK#3
+if (eval("1\u000C+\u000C1") !== 2) {
+ $ERROR('#3: 1\\u000C+\\u000C1 === 2');
+}
+
+//CHECK#4
+if (eval("1\u0020+\u00201") !== 2) {
+ $ERROR('#4: 1\\u0020+\\u00201 === 2');
+}
+
+//CHECK#5
+if (eval("1\u00A0+\u00A01") !== 2) {
+ $ERROR('#5: 1\\u00A0+\\u00A01 === 2');
+}
+
+//CHECK#6
+if (eval("1\u000A+\u000A1") !== 2) {
+ $ERROR('#6: 1\\u000A+\\u000A1 === 2');
+}
+
+//CHECK#7
+if (eval("1\u000D+\u000D1") !== 2) {
+ $ERROR('#7: 1\\u000D+\\u000D1 === 2');
+}
+
+//CHECK#8
+if (eval("1\u2028+\u20281") !== 2) {
+ $ERROR('#8: 1\\u2028+\\u20281 === 2');
+}
+
+//CHECK#9
+if (eval("1\u2029+\u20291") !== 2) {
+ $ERROR('#9: 1\\u2029+\\u20291 === 2');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029+\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 2) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029+\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T1.js
new file mode 100644
index 000000000..90fbe3360
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A2.1_T1;
+* @section: 11.6.1;
+* @assertion: Operator x + y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 + 1 !== 2) {
+ $ERROR('#1: 1 + 1 === 2. Actual: ' + (1 + 1));
+}
+
+//CHECK#2
+var x = 1;
+if (x + 1 !== 2) {
+ $ERROR('#2: var x = 1; x + 1 === 2. Actual: ' + (x + 1));
+}
+
+//CHECK#3
+var y = 1;
+if (1 + y !== 2) {
+ $ERROR('#3: var y = 1; 1 + y === 2. Actual: ' + (1 + y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x + y !== 2) {
+ $ERROR('#4: var x = 1; var y = 1; x + y === 2. Actual: ' + (x + y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop + objecty.prop !== 2) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop + objecty.prop === 2. Actual: ' + (objectx.prop + objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T2.js
new file mode 100644
index 000000000..e75f2b349
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.1_T2;
+ * @section: 11.6.1;
+ * @assertion: Operator x + y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x + 1;
+ $ERROR('#1.1: x + 1 throw ReferenceError. Actual: ' + (x + 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x + 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T3.js
new file mode 100644
index 000000000..07420f526
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.1_T3;
+ * @section: 11.6.1;
+ * @assertion: Operator x + y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 + y;
+ $ERROR('#1.1: 1 + y throw ReferenceError. Actual: ' + (1 + y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 + y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T1.js
new file mode 100644
index 000000000..acab2aa43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.2_T1;
+ * @section: 11.6.1, 8.6.2.6;
+ * @assertion: Operator x + y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} + 1 !== 2) {
+ $ERROR('#1: {valueOf: function() {return 1}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}} + 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} + 1 !== 2) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} + 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} + 1 !== 2) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} + 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 !== 2) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} + 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 + {toString: function() {return 1}} !== 2) {
+ $ERROR('#5: 1 + {toString: function() {return 1}} === 2. Actual: ' + (1 + {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 + {valueOf: function() {return {}}, toString: function() {return 1}} !== 2) {
+ $ERROR('#6: 1 + {valueOf: function() {return {}}, toString: function() {return 1}} === 2. Actual: ' + (1 + {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 + {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 + {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 + {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 + {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 + {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 + {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 + {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 + {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T2.js
new file mode 100644
index 000000000..9e85b5b9e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A2.2_T2;
+* @section: 11.6.1, 8.6.2.6;
+ * @assertion: Operator x + y uses [[Default Value]];
+ * @description: If Type(value) is Date object, evaluate ToPrimitive(value, String);
+ */
+
+//CHECK#1
+var date = new Date();
+if (date + date !== date.toString() + date.toString()) {
+ $ERROR('#1: var date = new Date(); date + date === date.toString() + date.toString(). Actual: ' + (date + date));
+}
+
+//CHECK#2
+var date = new Date();
+if (date + 0 !== date.toString() + "0") {
+ $ERROR('#2: var date = new Date(); date + 0 === date.toString() + "0". Actual: ' + (date + 0));
+}
+
+//CHECK#3
+var date = new Date();
+if (date + true !== date.toString() + "true") {
+ $ERROR('#3: var date = new Date(); date + true === date.toString() + "true". Actual: ' + (date + true));
+}
+
+//CHECK#4
+var date = new Date();
+if (date + new Object() !== date.toString() + "[object Object]") {
+ $ERROR('#4: var date = new Date(); date + new Object() === date.toString() + "[object Object]". Actual: ' + (date + new Object()));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T3.js
new file mode 100644
index 000000000..744770a78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.2_T3;
+ * @section: 11.6.1, 8.6.2.6;
+ * @assertion: Operator x + y uses [[Default Value]];
+ * @description: If Type(value) is Function, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+function f1(){
+ return 0;
+}
+if (f1 + 1 !== f1.toString() + 1) {
+ $ERROR('#1: function f1() {return 0;}; f1 + 1 === f1.toString() + 1');
+}
+
+//CHECK#2
+function f2(){
+ return 0;
+}
+f2.valueOf = function() {return 1;};
+if (1 + f2 !== 1 + 1) {
+ $ERROR('#2: f1unction f2() {return 0;} f2.valueOf = function() {return 1;}; 1 + f2 === 1 + 1. Actual: ' + (1 + f2));
+}
+
+//CHECK#3
+function f3(){
+ return 0;
+}
+f3.toString = function() {return 1;};
+if (1 + f3 !== 1 + 1) {
+ $ERROR('#3: f1unction f3() {return 0;} f3.toString() = function() {return 1;}; 1 + f3 === 1 + 1. Actual: ' + (1 + f3));
+}
+
+//CHECK#4
+function f4(){
+ return 0;
+}
+f4.valueOf = function() {return -1;};
+f4.toString = function() {return 1;};
+if (f4 + 1 !== 1 - 1) {
+ $ERROR('#4: f1unction f4() {return 0;}; f2.valueOf = function() {return -1;}; f4.toString() = function() {return 1;}; f4 + 1 === 1 - 1. Actual: ' + (f4 + 1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.3_T1.js
new file mode 100644
index 000000000..ad38b3def
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.3_T1;
+ * @section: 11.6.1;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x + y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x + y throw "x". Actual: ' + (x + y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x + y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T1.js
new file mode 100644
index 000000000..1e1a9c021
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.4_T1;
+ * @section: 11.6.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) + x !== 2) {
+ $ERROR('#1: var x = 0; (x = 1) + x === 2. Actual: ' + ((x = 1) + x));
+}
+
+//CHECK#2
+var x = 0;
+if (x + (x = 1) !== 1) {
+ $ERROR('#2: var x = 0; x + (x = 1) === 1. Actual: ' + (x + (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T2.js
new file mode 100644
index 000000000..de6cec880
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.4_T2;
+ * @section: 11.6.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() + y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() + y() throw "x". Actual: ' + (x() + y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() + y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T3.js
new file mode 100644
index 000000000..5c0b13d80
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.4_T3;
+ * @section: 11.6.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x + (x = 1);
+ $ERROR('#1.1: x + (x = 1) throw ReferenceError. Actual: ' + (x + (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x + (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) + y !== 2) {
+ $ERROR('#2: (y = 1) + y === 2. Actual: ' + ((y = 1) + y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.1.js
new file mode 100644
index 000000000..36b90550f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T1.1;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true + true !== 2) {
+ $ERROR('#1: true + true === 2. Actual: ' + (true + true));
+}
+
+//CHECK#2
+if (new Boolean(true) + true !== 2) {
+ $ERROR('#2: new Boolean(true) + true === 2. Actual: ' + (new Boolean(true) + true));
+}
+
+//CHECK#3
+if (true + new Boolean(true) !== 2) {
+ $ERROR('#3: true + new Boolean(true) === 2. Actual: ' + (true + new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) + new Boolean(true) !== 2) {
+ $ERROR('#4: new Boolean(true) + new Boolean(true) === 2. Actual: ' + (new Boolean(true) + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.2.js
new file mode 100644
index 000000000..0fb156c6d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T1.2;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 + 1 !== 2) {
+ $ERROR('#1: 1 + 1 === 2. Actual: ' + (1 + 1));
+}
+
+//CHECK#2
+if (new Number(1) + 1 !== 2) {
+ $ERROR('#2: new Number(1) + 1 === 2. Actual: ' + (new Number(1) + 1));
+}
+
+//CHECK#3
+if (1 + new Number(1) !== 2) {
+ $ERROR('#3: 1 + new Number(1) === 2. Actual: ' + (1 + new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) + new Number(1) !== 2) {
+ $ERROR('#4: new Number(1) + new Number(1) === 2. Actual: ' + (new Number(1) + new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.3.js
new file mode 100644
index 000000000..bd9329203
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T1.3;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null + undefined) !== true) {
+ $ERROR('#1: null + undefined === Not-a-Number. Actual: ' + (null + undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined + null) !== true) {
+ $ERROR('#2: undefined + null === Not-a-Number. Actual: ' + (undefined + null));
+}
+
+//CHECK#3
+if (isNaN(undefined + undefined) !== true) {
+ $ERROR('#3: undefined + undefined === Not-a-Number. Actual: ' + (undefined + undefined));
+}
+
+//CHECK#4
+if (null + null !== 0) {
+ $ERROR('#4: null + null === 0. Actual: ' + (null + null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.1.js
new file mode 100644
index 000000000..402508ab4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.1;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) or Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true + 1 !== 2) {
+ $ERROR('#1: true + 1 === 2. Actual: ' + (true + 1));
+}
+
+//CHECK#2
+if (1 + true !== 2) {
+ $ERROR('#2: 1 + true === 2. Actual: ' + (1 + true));
+}
+
+//CHECK#3
+if (new Boolean(true) + 1 !== 2) {
+ $ERROR('#3: new Boolean(true) + 1 === 2. Actual: ' + (new Boolean(true) + 1));
+}
+
+//CHECK#4
+if (1 + new Boolean(true) !== 2) {
+ $ERROR('#4: 1 + new Boolean(true) === 2. Actual: ' + (1 + new Boolean(true)));
+}
+
+//CHECK#5
+if (true + new Number(1) !== 2) {
+ $ERROR('#5: true + new Number(1) === 2. Actual: ' + (true + new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) + true !== 2) {
+ $ERROR('#6: new Number(1) + true === 2. Actual: ' + (new Number(1) + true));
+}
+
+//CHECK#7
+if (new Boolean(true) + new Number(1) !== 2) {
+ $ERROR('#7: new Boolean(true) + new Number(1) === 2. Actual: ' + (new Boolean(true) + new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) + new Boolean(true) !== 2) {
+ $ERROR('#8: new Number(1) + new Boolean(true) === 2. Actual: ' + (new Number(1) + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.2.js
new file mode 100644
index 000000000..437ca4806
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.2;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 + null !== 1) {
+ $ERROR('#1: 1 + null === 1. Actual: ' + (1 + null));
+}
+
+//CHECK#2
+if (null + 1 !== 1) {
+ $ERROR('#2: null + 1 === 1. Actual: ' + (null + 1));
+}
+
+//CHECK#3
+if (new Number(1) + null !== 1) {
+ $ERROR('#3: new Number(1) + null === 1. Actual: ' + (new Number(1) + null));
+}
+
+//CHECK#4
+if (null + new Number(1) !== 1) {
+ $ERROR('#4: null + new Number(1) === 1. Actual: ' + (null + new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.3.js
new file mode 100644
index 000000000..7a237be23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.3;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 + undefined) !== true) {
+ $ERROR('#1: 1 + undefined === Not-a-Number. Actual: ' + (1 + undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined + 1) !== true) {
+ $ERROR('#2: undefined + 1 === Not-a-Number. Actual: ' + (undefined + 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) + undefined) !== true) {
+ $ERROR('#3: new Number(1) + undefined === Not-a-Number. Actual: ' + (new Number(1) + undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined + new Number(1)) !== true) {
+ $ERROR('#4: undefined + new Number(1) === Not-a-Number. Actual: ' + (undefined + new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.4.js
new file mode 100644
index 000000000..7463f6892
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.4;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true + undefined) !== true) {
+ $ERROR('#1: true + undefined === Not-a-Number. Actual: ' + (true + undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined + true) !== true) {
+ $ERROR('#2: undefined + true === Not-a-Number. Actual: ' + (undefined + true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) + undefined) !== true) {
+ $ERROR('#3: new Boolean(true) + undefined === Not-a-Number. Actual: ' + (new Boolean(true) + undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined + new Boolean(true)) !== true) {
+ $ERROR('#4: undefined + new Boolean(true) === Not-a-Number. Actual: ' + (undefined + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.5.js
new file mode 100644
index 000000000..2b2bb841b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.5;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true + null !== 1) {
+ $ERROR('#1: true + null === 1. Actual: ' + (true + null));
+}
+
+//CHECK#2
+if (null + true !== 1) {
+ $ERROR('#2: null + true === 1. Actual: ' + (null + true));
+}
+
+//CHECK#3
+if (new Boolean(true) + null !== 1) {
+ $ERROR('#3: new Boolean(true) + null === 1. Actual: ' + (new Boolean(true) + null));
+}
+
+//CHECK#4
+if (null + new Boolean(true) !== 1) {
+ $ERROR('#4: null + new Boolean(true) === 1. Actual: ' + (null + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.1.js
new file mode 100644
index 000000000..a3fc5912c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T1.1;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" + "1" !== "11") {
+ $ERROR('#1: "1" + "1" === "11". Actual: ' + ("1" + "1"));
+}
+
+//CHECK#2
+if (new String("1") + "1" !== "11") {
+ $ERROR('#2: new String("1") + "1" === "11". Actual: ' + (new String("1") + "1"));
+}
+
+//CHECK#3
+if ("1" + new String("1") !== "11") {
+ $ERROR('#3: "1" + new String("1") === "11". Actual: ' + ("1" + new String("1")));
+}
+
+//CHECK#4
+if (new String("1") + new String("1") !== "11") {
+ $ERROR('#4: new String("1") + new String("1") === "11". Actual: ' + (new String("1") + new String("1")));
+}
+
+//CHECK#5
+if ("x" + "1" !=="x1") {
+ $ERROR('#5: "x" + "1" === "x1". Actual: ' + ("x" + "1"));
+}
+
+//CHECK#6
+if ("1" + "x" !== "1x") {
+ $ERROR('#6: "1" + "x" === "1x". Actual: ' + ("1" + "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.2.js
new file mode 100644
index 000000000..25e998102
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T1.2;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} + function(){return 1}) !== ({}.toString() + function(){return 1}.toString())) {
+ $ERROR('#1: ({} + function(){return 1}) === ({}.toString() + function(){return 1}.toString()). Actual: ' + (({} + function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} + {}) !== (function(){return 1}.toString() + {}.toString())) {
+ $ERROR('#2: (function(){return 1} + {}) === (function(){return 1}.toString() + {}.toString()). Actual: ' + ((function(){return 1} + {})));
+}
+
+//CHECK#3
+if ((function(){return 1} + function(){return 1}) !== (function(){return 1}.toString() + function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} + function(){return 1}) === (function(){return 1}.toString() + function(){return 1}.toString()). Actual: ' + ((function(){return 1} + function(){return 1})));
+}
+
+//CHECK#4
+if (({} + {}) !== ({}.toString() + {}.toString())) {
+ $ERROR('#4: ({} + {}) === ({}.toString() + {}.toString()). Actual: ' + (({} + {})));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.1.js
new file mode 100644
index 000000000..222795da5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T2.1;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" + 1 !== "11") {
+ $ERROR('#1: "1" + 1 === "11". Actual: ' + ("1" + 1));
+}
+
+//CHECK#2
+if (1 + "1" !== "11") {
+ $ERROR('#2: 1 + "1" === "11". Actual: ' + (1 + "1"));
+}
+
+//CHECK#3
+if (new String("1") + 1 !== "11") {
+ $ERROR('#3: new String("1") + 1 === "11". Actual: ' + (new String("1") + 1));
+}
+
+//CHECK#4
+if (1 + new String("1") !== "11") {
+ $ERROR('#4: 1 + new String("1") === "11". Actual: ' + (1 + new String("1")));
+}
+
+//CHECK#5
+if ("1" + new Number(1) !== "11") {
+ $ERROR('#5: "1" + new Number(1) === "11". Actual: ' + ("1" + new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) + "1" !== "11") {
+ $ERROR('#6: new Number(1) + "1" === "11". Actual: ' + (new Number(1) + "1"));
+}
+
+//CHECK#7
+if (new String("1") + new Number(1) !== "11") {
+ $ERROR('#7: new String("1") + new Number(1) === "11". Actual: ' + (new String("1") + new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) + new String("1") !== "11") {
+ $ERROR('#8: new Number(1) + new String("1") === "11". Actual: ' + (new Number(1) + new String("1")));
+}
+
+//CHECK#9
+if ("x" + 1 !=="x1") {
+ $ERROR('#9: "x" + 1 === "x1". Actual: ' + ("x" + 1));
+}
+
+//CHECK#10
+if (1 + "x" !== "1x") {
+ $ERROR('#10: 1 + "x" === "1x". Actual: ' + (1 + "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.2.js
new file mode 100644
index 000000000..5eccb0147
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T2.2;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true + "1" !== "true1") {
+ $ERROR('#1: true + "1" === "true1". Actual: ' + (true + "1"));
+}
+
+//CHECK#2
+if ("1" + true !== "1true") {
+ $ERROR('#2: "1" + true === "1true". Actual: ' + ("1" + true));
+}
+
+//CHECK#3
+if (new Boolean(true) + "1" !== "true1") {
+ $ERROR('#3: new Boolean(true) + "1" === "true1". Actual: ' + (new Boolean(true) + "1"));
+}
+
+//CHECK#4
+if ("1" + new Boolean(true) !== "1true") {
+ $ERROR('#4: "1" + new Boolean(true) === "1true". Actual: ' + ("1" + new Boolean(true)));
+}
+
+//CHECK#5
+if (true + new String("1") !== "true1") {
+ $ERROR('#5: true + new String("1") === "true1". Actual: ' + (true + new String("1")));
+}
+
+//CHECK#6
+if (new String("1") + true !== "1true") {
+ $ERROR('#6: new String("1") + true === "1true". Actual: ' + (new String("1") + true));
+}
+
+//CHECK#7
+if (new Boolean(true) + new String("1") !== "true1") {
+ $ERROR('#7: new Boolean(true) + new String("1") === "true1". Actual: ' + (new Boolean(true) + new String("1")));
+}
+
+//CHECK#8
+if (new String("1") + new Boolean(true) !== "1true") {
+ $ERROR('#8: new String("1") + new Boolean(true) === "1true". Actual: ' + (new String("1") + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.3.js
new file mode 100644
index 000000000..ecfca9fec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T2.3;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" + undefined !== "1undefined") {
+ $ERROR('#1: "1" + undefined === "1undefined". Actual: ' + ("1" + undefined));
+}
+
+//CHECK#2
+if (undefined + "1" !== "undefined1") {
+ $ERROR('#2: undefined + "1" === "undefined1". Actual: ' + (undefined + "1"));
+}
+
+//CHECK#3
+if (new String("1") + undefined !== "1undefined") {
+ $ERROR('#3: new String("1") + undefined === "1undefined". Actual: ' + (new String("1") + undefined));
+}
+
+//CHECK#4
+if (undefined + new String("1") !== "undefined1") {
+ $ERROR('#4: undefined + new String("1") === "undefined1". Actual: ' + (undefined + new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.4.js
new file mode 100644
index 000000000..45bbeca3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T2.4;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" + null !== "1null") {
+ $ERROR('#1: "1" + null === "1null". Actual: ' + ("1" + null));
+}
+
+//CHECK#2
+if (null + "1" !== "null1") {
+ $ERROR('#2: null + "1" === "null1". Actual: ' + (null + "1"));
+}
+
+//CHECK#3
+if (new String("1") + null !== "1null") {
+ $ERROR('#3: new String("1") + null === "1null". Actual: ' + (new String("1") + null));
+}
+
+//CHECK#4
+if (null + new String("1") !== "null1") {
+ $ERROR('#4: null + new String("1") === "null1". Actual: ' + (null + new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T1.js
new file mode 100644
index 000000000..cd3fe70cd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T1;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: If either operand is NaN, the result is NaN;
+*/
+
+//CHECK#1
+if (isNaN(Number.NaN + 1) !== true ) {
+ $ERROR('#1: NaN + 1 === Not-a-Number. Actual: ' + (NaN + 1));
+}
+
+//CHECK#2
+if (isNaN(1 + Number.NaN) !== true ) {
+ $ERROR('#2: 1 + NaN === Not-a-Number. Actual: ' + (1 + NaN));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN + Number.POSITIVE_INFINITY) !== true ) {
+ $ERROR('#3: NaN + Infinity === Not-a-Number. Actual: ' + (NaN + Infinity));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY + Number.NaN) !== true ) {
+ $ERROR('#4: Infinity + NaN === Not-a-Number. Actual: ' + (Infinity + NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN + Number.NEGATIVE_INFINITY) !== true ) {
+ $ERROR('#5: NaN + Infinity === Not-a-Number. Actual: ' + (NaN + Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NEGATIVE_INFINITY + Number.NaN) !== true ) {
+ $ERROR('#6: Infinity + NaN === Not-a-Number. Actual: ' + (Infinity + NaN));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T2.js
new file mode 100644
index 000000000..f00c331f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T2;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of two infinities of opposite sign is NaN;
+*/
+
+//CHECK#1
+if (isNaN(Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY) !== true ) {
+ $ERROR('#1: Infinity + -Infinity === Not-a-Number. Actual: ' + (Infinity + -Infinity));
+}
+
+//CHECK#2
+if (isNaN(Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY) !== true ) {
+ $ERROR('#2: -Infinity + Infinity === Not-a-Number. Actual: ' + (-Infinity + Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T3.js
new file mode 100644
index 000000000..afa294b97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T3;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of two infinities of the same sign is the infinity of that sign;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#1: Infinity + Infinity === Infinity. Actual: ' + (Infinity + Infinity));
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#2: -Infinity + -Infinity === -Infinity. Actual: ' + (-Infinity + -Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T4.js
new file mode 100644
index 000000000..5fa1f813a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T4.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T4;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of an infinity and a finite value is equal to the infinite operand;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY + 1 !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#1: Infinity + 1 === Infinity. Actual: ' + (Infinity + 1));
+}
+
+//CHECK#2
+if (-1 + Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#2: -1 + Infinity === Infinity. Actual: ' + (-1 + Infinity));
+}
+
+//CHECK#3
+if (Number.NEGATIVE_INFINITY + 1 !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#3: -Infinity + 1 === -Infinity. Actual: ' + (-Infinity + 1));
+}
+
+//CHECK#4
+if (-1 + Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#4: -1 + -Infinity === -Infinity. Actual: ' + (-1 + -Infinity));
+}
+
+//CHECK#5
+if (Number.POSITIVE_INFINITY + Number.MAX_VALUE !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#5: Infinity + Number.MAX_VALUE === Infinity. Actual: ' + (Infinity + Number.MAX_VALUE));
+}
+
+//CHECK#6
+if (-Number.MAX_VALUE + Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#6: -Number.MAX_VALUE + Infinity === Infinity. Actual: ' + (-Number.MAX_VALUE + Infinity));
+}
+
+//CHECK#7
+if (Number.NEGATIVE_INFINITY + Number.MAX_VALUE !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#7: -Infinity + Number.MAX_VALUE === -Infinity. Actual: ' + (-Infinity + Number.MAX_VALUE));
+}
+
+//CHECK#8
+if (-Number.MAX_VALUE + Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#8: -Number.MAX_VALUE + -Infinity === -Infinity. Actual: ' + (-Number.MAX_VALUE + -Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T5.js
new file mode 100644
index 000000000..56288f585
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T5.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T5;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of two negative zeros is -0. The sum of two positive zeros, or of two zeros of opposite sign is +0;
+*/
+
+//CHECK#1
+if (-0 + -0 !== -0 ) {
+ $ERROR('#1.1: -0 + -0 === 0. Actual: ' + (-0 + -0));
+} else {
+ if (1 / (-0 + -0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.1: -0 + -0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#2
+if (0 + -0 !== 0 ) {
+ $ERROR('#2.1: 0 + -0 === 0. Actual: ' + (0 + -0));
+} else {
+ if (1 / (0 + -0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: 0 + -0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (-0 + 0 !== 0 ) {
+ $ERROR('#3.1: -0 + 0 === 0. Actual: ' + (-0 + 0));
+} else {
+ if (1 / (-0 + 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: -0 + 0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#4
+if (0 + 0 !== 0 ) {
+ $ERROR('#4.1: 0 + 0 === 0. Actual: ' + (0 + 0));
+} else {
+ if (1 / (0 + 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: 0 + 0 === + 0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T6.js
new file mode 100644
index 000000000..63c4b9aae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T6.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T6;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of a zero and a nonzero finite value is equal to the nonzero operand;
+*/
+
+//CHECK#1
+if (1 + -0 !== 1 ) {
+ $ERROR('#1: 1 + -0 === 1. Actual: ' + (1 + -0));
+}
+
+//CHECK#2
+if (1 + 0 !== 1 ) {
+ $ERROR('#2: 1 + 0 === 1. Actual: ' + (1 + 0));
+}
+
+//CHECK#3
+if (-0 + 1 !== 1 ) {
+ $ERROR('#3: -0 + 1 === 1. Actual: ' + (-0 + 1));
+}
+
+//CHECK#4
+if (0 + 1 !== 1 ) {
+ $ERROR('#4: 0 + 1 === 1. Actual: ' + (0 + 1));
+}
+
+//CHECK#5
+if (Number.MAX_VALUE + -0 !== Number.MAX_VALUE ) {
+ $ERROR('#5: Number.MAX_VALUE + -0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE + -0));
+}
+
+//CHECK#6
+if (Number.MAX_VALUE + 0 !== Number.MAX_VALUE ) {
+ $ERROR('#6: Number.MAX_VALUE + 0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE + 0));
+}
+
+//CHECK#7
+if (-0 + Number.MIN_VALUE !== Number.MIN_VALUE ) {
+ $ERROR('#7: -0 + Number.MIN_VALUE === Number.MIN_VALUE. Actual: ' + (-0 + Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (0 + Number.MIN_VALUE !== Number.MIN_VALUE ) {
+ $ERROR('#8: 0 + Number.MIN_VALUE === Number.MIN_VALUE. Actual: ' + (0 + Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T7.js
new file mode 100644
index 000000000..af20120e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T7.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T7;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of two nonzero finite values of the same magnitude and opposite sign is +0;
+*/
+
+//CHECK#1
+if (-Number.MIN_VALUE + Number.MIN_VALUE !== +0) {
+ $ERROR('#1.1: -Number.MIN_VALUE + Number.MIN_VALUE === 0. Actual: ' + (-Number.MIN_VALUE + Number.MIN_VALUE));
+} else {
+ if (1 / (-Number.MIN_VALUE + Number.MIN_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: -Number.MIN_VALUE + Number.MIN_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (-Number.MAX_VALUE + Number.MAX_VALUE !== +0) {
+ $ERROR('#2.1: -Number.MAX_VALUE + Number.MAX_VALUE === 0. Actual: ' + (-Number.MAX_VALUE + Number.MAX_VALUE));
+} else {
+ if (1 / (-Number.MAX_VALUE + Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: -Number.MAX_VALUE + Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (-1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE !== +0) {
+ $ERROR('#3.1: -1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE === 0. Actual: ' + (-1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE));
+} else {
+ if (1 / (-1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: -1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T8.js
new file mode 100644
index 000000000..a06760096
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T8;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: If the magnitude is too large to represent, the operation overflows and the result is then an infinity of appropriate sign;
+*/
+
+//CHECK#1
+if (Number.MAX_VALUE + Number.MAX_VALUE !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number.MAX_VALUE + Number.MAX_VALUE === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE + Number.MAX_VALUE));
+}
+
+//CHECK#2
+if (-Number.MAX_VALUE - Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: -Number.MAX_VALUE - Number.MAX_VALUE === Number.NEGATIVE_INFINITY. Actual: ' + (-Number.MAX_VALUE - Number.MAX_VALUE));
+}
+
+//CHECK#3
+if (1e+308 + 1e+308 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: 1e+308 + 1e+308 === Number.POSITIVE_INFINITY. Actual: ' + (1e+308 + 1e+308));
+}
+
+//CHECK#4
+if (-8.99e+307 - 8.99e+307 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: -8.99e+307 - 8.99e+307 === Number.NEGATIVE_INFINITY. Actual: ' + (-8.99e+307 - 8.99e+307));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T9.js
new file mode 100644
index 000000000..8008a8792
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A4_T9;
+ * @section: 11.6.1, 11.6.3;
+ * @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+ * @description: The addition operator is not always associative ( x + y + z is the same (x + y) + z, not x + (y + z));
+*/
+
+//CHECK#1
+if (-Number.MAX_VALUE + Number.MAX_VALUE + Number.MAX_VALUE !== (-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE) {
+ $ERROR('#1: -Number.MAX_VALUE + Number.MAX_VALUE + Number.MAX_VALUE === (-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE. Actual: ' + (-Number.MAX_VALUE + Number.MAX_VALUE + Number.MAX_VALUE));
+}
+
+//CHECK#2
+if ((-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE === -Number.MAX_VALUE + (Number.MAX_VALUE + Number.MAX_VALUE)) {
+ $ERROR('#2: (-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE === -Number.MAX_VALUE + (Number.MAX_VALUE + Number.MAX_VALUE). Actual: ' + ((-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE));
+}
+
+//CHECK#3
+if ("1" + 1 + 1 !== ("1" + 1) + 1) {
+ $ERROR('#3: "1" + 1 + 1 === ("1" + 1) + 1. Actual: ' + ("1" + 1 + 1));
+}
+
+//CHECK#4
+if (("1" + 1) + 1 === "1" + (1 + 1)) {
+ $ERROR('#4: ("1" + 1) + 1 !== "1" + (1 + 1)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js
new file mode 100644
index 000000000..944a09d1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A1;
+* @section: 11.6.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between AdditiveExpression and "-" or between "-" and MultiplicativeExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009-\u00091") !== 0) {
+ $ERROR('#1: 1\\u0009-\\u00091 === 0');
+}
+
+//CHECK#2
+if (eval("1\u000B-\u000B1") !== 0) {
+ $ERROR('#2: 1\\u000B-\\u000B1 === 0');
+}
+
+//CHECK#3
+if (eval("1\u000C-\u000C1") !== 0) {
+ $ERROR('#3: 1\\u000C-\\u000C1 === 0');
+}
+
+//CHECK#4
+if (eval("1\u0020-\u00201") !== 0) {
+ $ERROR('#4: 1\\u0020-\\u00201 === 0');
+}
+
+//CHECK#5
+if (eval("1\u00A0-\u00A01") !== 0) {
+ $ERROR('#5: 1\\u00A0-\\u00A01 === 0');
+}
+
+//CHECK#6
+if (eval("1\u000A-\u000A1") !== 0) {
+ $ERROR('#6: 1\\u000A-\\u000A1 === 0');
+}
+
+//CHECK#7
+if (eval("1\u000D-\u000D1") !== 0) {
+ $ERROR('#7: 1\\u000D-\\u000D1 === 0');
+}
+
+//CHECK#8
+if (eval("1\u2028-\u20281") !== 0) {
+ $ERROR('#8: 1\\u2028-\\u20281 === 0');
+}
+
+//CHECK#9
+if (eval("1\u2029-\u20291") !== 0) {
+ $ERROR('#9: 1\\u2029-\\u20291 === 0');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 0) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js
new file mode 100644
index 000000000..a8ea8e7b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A2.1_T1;
+* @section: 11.6.2;
+* @assertion: Operator x - y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 - 1 !== 0) {
+ $ERROR('#1: 1 - 1 === 0. Actual: ' + (1 - 1));
+}
+
+//CHECK#2
+var x = 1;
+if (x - 1 !== 0) {
+ $ERROR('#2: var x = 1; x - 1 === 0. Actual: ' + (x - 1));
+}
+
+//CHECK#3
+var y = 1;
+if (1 - y !== 0) {
+ $ERROR('#3: var y = 1; 1 - y === 0. Actual: ' + (1 - y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x - y !== 0) {
+ $ERROR('#4: var x = 1; var y = 1; x - y === 0. Actual: ' + (x - y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop - objecty.prop !== 0) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop - objecty.prop === 0. Actual: ' + (objectx.prop - objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js
new file mode 100644
index 000000000..de0dad9e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.1_T2;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x - 1;
+ $ERROR('#1.1: x - 1 throw ReferenceError. Actual: ' + (x - 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x - 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js
new file mode 100644
index 000000000..3e92c1cb4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.1_T3;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 - y;
+ $ERROR('#1.1: 1 - y throw ReferenceError. Actual: ' + (1 - y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 - y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js
new file mode 100644
index 000000000..4119ce6f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.2_T1;
+ * @section: 11.6.2, 8.6.2.6;
+ * @assertion: Operator x - y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} - 1 !== 0) {
+ $ERROR('#1: {valueOf: function() {return 1}} - 1 === 0. Actual: ' + ({valueOf: function() {return 1}} - 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} - 1 !== 0) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} - 1 === 0. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} - 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} - 1 !== 0) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} - 1 === 0. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} - 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} - 1 !== 0) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} - 1 === 0. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} - 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} - 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} - 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 - {toString: function() {return 1}} !== 0) {
+ $ERROR('#5: 1 - {toString: function() {return 1}} === 0. Actual: ' + (1 - {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 - {valueOf: function() {return {}}, toString: function() {return 1}} !== 0) {
+ $ERROR('#6: 1 - {valueOf: function() {return {}}, toString: function() {return 1}} === 0. Actual: ' + (1 - {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 - {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 - {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 - {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 - {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 - {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 - {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 - {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 - {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js
new file mode 100644
index 000000000..f54f5dd55
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.3_T1;
+ * @section: 11.6.2;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x - y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x - y throw "x". Actual: ' + (x - y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x - y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js
new file mode 100644
index 000000000..fc4671655
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.4_T1;
+ * @section: 11.6.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) - x !== 0) {
+ $ERROR('#1: var x = 0; (x = 1) - x === 0. Actual: ' + ((x = 1) - x));
+}
+
+//CHECK#2
+var x = 0;
+if (x - (x = 1) !== -1) {
+ $ERROR('#2: var x = 0; x - (x = 1) === -1. Actual: ' + (x - (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js
new file mode 100644
index 000000000..985a2b555
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.4_T2;
+ * @section: 11.6.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() - y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() - y() throw "x". Actual: ' + (x() - y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() - y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js
new file mode 100644
index 000000000..bf6f225c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.4_T3;
+ * @section: 11.6.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x - (x = 1);
+ $ERROR('#1.1: x - (x = 1) throw ReferenceError. Actual: ' + (x - (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x - (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) - y !== 0) {
+ $ERROR('#2: (y = 1) - y === 0. Actual: ' + ((y = 1) - y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js
new file mode 100644
index 000000000..b85066541
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.1;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true - true !== 0) {
+ $ERROR('#1: true - true === 0. Actual: ' + (true - true));
+}
+
+//CHECK#2
+if (new Boolean(true) - true !== 0) {
+ $ERROR('#2: new Boolean(true) - true === 0. Actual: ' + (new Boolean(true) - true));
+}
+
+//CHECK#3
+if (true - new Boolean(true) !== 0) {
+ $ERROR('#3: true - new Boolean(true) === 0. Actual: ' + (true - new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) - new Boolean(true) !== 0) {
+ $ERROR('#4: new Boolean(true) - new Boolean(true) === 0. Actual: ' + (new Boolean(true) - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js
new file mode 100644
index 000000000..7977c03db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.2;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 - 1 !== 0) {
+ $ERROR('#1: 1 - 1 === 0. Actual: ' + (1 - 1));
+}
+
+//CHECK#2
+if (new Number(1) - 1 !== 0) {
+ $ERROR('#2: new Number(1) - 1 === 0. Actual: ' + (new Number(1) - 1));
+}
+
+//CHECK#3
+if (1 - new Number(1) !== 0) {
+ $ERROR('#3: 1 - new Number(1) === 0. Actual: ' + (1 - new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) - new Number(1) !== 0) {
+ $ERROR('#4: new Number(1) - new Number(1) === 0. Actual: ' + (new Number(1) - new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js
new file mode 100644
index 000000000..0b62c8f7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.3;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" - "1" !== 0) {
+ $ERROR('#1: "1" - "1" === 0. Actual: ' + ("1" - "1"));
+}
+
+//CHECK#2
+if (new String("1") - "1" !== 0) {
+ $ERROR('#2: new String("1") - "1" === 0. Actual: ' + (new String("1") - "1"));
+}
+
+//CHECK#3
+if ("1" - new String("1") !== 0) {
+ $ERROR('#3: "1" - new String("1") === 0. Actual: ' + ("1" - new String("1")));
+}
+
+//CHECK#4
+if (new String("1") - new String("1") !== 0) {
+ $ERROR('#4: new String("1") - new String("1") === 0. Actual: ' + (new String("1") - new String("1")));
+}
+
+//CHECK#5
+if (isNaN("x" - "1") !== true) {
+ $ERROR('#5: "x" - "1" === Not-a-Number. Actual: ' + ("x" - "1"));
+}
+
+//CHECK#6
+if (isNaN("1" - "x") !== true) {
+ $ERROR('#6: "1" - "x" === Not-a-Number. Actual: ' + ("1" - "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js
new file mode 100644
index 000000000..7236464c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.4;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null - undefined) !== true) {
+ $ERROR('#1: null - undefined === Not-a-Number. Actual: ' + (null - undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined - null) !== true) {
+ $ERROR('#2: undefined - null === Not-a-Number. Actual: ' + (undefined - null));
+}
+
+//CHECK#3
+if (isNaN(undefined - undefined) !== true) {
+ $ERROR('#3: undefined - undefined === Not-a-Number. Actual: ' + (undefined - undefined));
+}
+
+//CHECK#4
+if (null - null !== 0) {
+ $ERROR('#4: null - null === 0. Actual: ' + (null - null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js
new file mode 100644
index 000000000..e8d040b7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.5;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (isNaN({} - function(){return 1}) !== true) {
+ $ERROR('#1: {} - function(){return 1} === Not-a-Number. Actual: ' + ({} - function(){return 1}));
+}
+
+//CHECK#2
+if (isNaN(function(){return 1} - {}) !== true) {
+ $ERROR('#2: function(){return 1} - {} === Not-a-Number. Actual: ' + (function(){return 1} - {}));
+}
+
+//CHECK#3
+if (isNaN(function(){return 1} - function(){return 1}) !== true) {
+ $ERROR('#3: function(){return 1} - function(){return 1} === Not-a-Number. Actual: ' + (function(){return 1} - function(){return 1}));
+}
+
+//CHECK#4
+if (isNaN({} - {}) !== true) {
+ $ERROR('#4: {} - {} === Not-a-Number. Actual: ' + ({} - {}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js
new file mode 100644
index 000000000..624e1a7ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.1;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true - 1 !== 0) {
+ $ERROR('#1: true - 1 === 0. Actual: ' + (true - 1));
+}
+
+//CHECK#2
+if (1 - true !== 0) {
+ $ERROR('#2: 1 - true === 0. Actual: ' + (1 - true));
+}
+
+//CHECK#3
+if (new Boolean(true) - 1 !== 0) {
+ $ERROR('#3: new Boolean(true) - 1 === 0. Actual: ' + (new Boolean(true) - 1));
+}
+
+//CHECK#4
+if (1 - new Boolean(true) !== 0) {
+ $ERROR('#4: 1 - new Boolean(true) === 0. Actual: ' + (1 - new Boolean(true)));
+}
+
+//CHECK#5
+if (true - new Number(1) !== 0) {
+ $ERROR('#5: true - new Number(1) === 0. Actual: ' + (true - new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) - true !== 0) {
+ $ERROR('#6: new Number(1) - true === 0. Actual: ' + (new Number(1) - true));
+}
+
+//CHECK#7
+if (new Boolean(true) - new Number(1) !== 0) {
+ $ERROR('#7: new Boolean(true) - new Number(1) === 0. Actual: ' + (new Boolean(true) - new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) - new Boolean(true) !== 0) {
+ $ERROR('#8: new Number(1) - new Boolean(true) === 0. Actual: ' + (new Number(1) - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js
new file mode 100644
index 000000000..d5a026d37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.2;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" - 1 !== 0) {
+ $ERROR('#1: "1" - 1 === 0. Actual: ' + ("1" - 1));
+}
+
+//CHECK#2
+if (1 - "1" !== 0) {
+ $ERROR('#2: 1 - "1" === 0. Actual: ' + (1 - "1"));
+}
+
+//CHECK#3
+if (new String("1") - 1 !== 0) {
+ $ERROR('#3: new String("1") - 1 === 0. Actual: ' + (new String("1") - 1));
+}
+
+//CHECK#4
+if (1 - new String("1") !== 0) {
+ $ERROR('#4: 1 - new String("1") === 0. Actual: ' + (1 - new String("1")));
+}
+
+//CHECK#5
+if ("1" - new Number(1) !== 0) {
+ $ERROR('#5: "1" - new Number(1) === 0. Actual: ' + ("1" - new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) - "1" !== 0) {
+ $ERROR('#6: new Number(1) - "1" === 0. Actual: ' + (new Number(1) - "1"));
+}
+
+//CHECK#7
+if (new String("1") - new Number(1) !== 0) {
+ $ERROR('#7: new String("1") - new Number(1) === 0. Actual: ' + (new String("1") - new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) - new String("1") !== 0) {
+ $ERROR('#8: new Number(1) - new String("1") === 0. Actual: ' + (new Number(1) - new String("1")));
+}
+
+//CHECK#9
+if (isNaN("x" - 1) !== true) {
+ $ERROR('#9: "x" - 1 === Not-a-Number. Actual: ' + ("x" - 1));
+}
+
+//CHECK#10
+if (isNaN(1 - "x") !== true) {
+ $ERROR('#10: 1 - "x" === Not-a-Number. Actual: ' + (1 - "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js
new file mode 100644
index 000000000..a1685d0d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.3;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 - null !== 1) {
+ $ERROR('#1: 1 - null === 1. Actual: ' + (1 - null));
+}
+
+//CHECK#2
+if (null - 1 !== -1) {
+ $ERROR('#2: null - 1 === -1. Actual: ' + (null - 1));
+}
+
+//CHECK#3
+if (new Number(1) - null !== 1) {
+ $ERROR('#3: new Number(1) - null === 1. Actual: ' + (new Number(1) - null));
+}
+
+//CHECK#4
+if (null - new Number(1) !== -1) {
+ $ERROR('#4: null - new Number(1) === -1. Actual: ' + (null - new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js
new file mode 100644
index 000000000..52cde424a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.4;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 - undefined) !== true) {
+ $ERROR('#1: 1 - undefined === Not-a-Number. Actual: ' + (1 - undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined - 1) !== true) {
+ $ERROR('#2: undefined - 1 === Not-a-Number. Actual: ' + (undefined - 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) - undefined) !== true) {
+ $ERROR('#3: new Number(1) - undefined === Not-a-Number. Actual: ' + (new Number(1) - undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined - new Number(1)) !== true) {
+ $ERROR('#4: undefined - new Number(1) === Not-a-Number. Actual: ' + (undefined - new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js
new file mode 100644
index 000000000..15020de67
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.5;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true - "1" !== 0) {
+ $ERROR('#1: true - "1" === 0. Actual: ' + (true - "1"));
+}
+
+//CHECK#2
+if ("1" - true !== 0) {
+ $ERROR('#2: "1" - true === 0. Actual: ' + ("1" - true));
+}
+
+//CHECK#3
+if (new Boolean(true) - "1" !== 0) {
+ $ERROR('#3: new Boolean(true) - "1" === 0. Actual: ' + (new Boolean(true) - "1"));
+}
+
+//CHECK#4
+if ("1" - new Boolean(true) !== 0) {
+ $ERROR('#4: "1" - new Boolean(true) === 0. Actual: ' + ("1" - new Boolean(true)));
+}
+
+//CHECK#5
+if (true - new String("1") !== 0) {
+ $ERROR('#5: true - new String("1") === 0. Actual: ' + (true - new String("1")));
+}
+
+//CHECK#6
+if (new String("1") - true !== 0) {
+ $ERROR('#6: new String("1") - true === 0. Actual: ' + (new String("1") - true));
+}
+
+//CHECK#7
+if (new Boolean(true) - new String("1") !== 0) {
+ $ERROR('#7: new Boolean(true) - new String("1") === 0. Actual: ' + (new Boolean(true) - new String("1")));
+}
+
+//CHECK#8
+if (new String("1") - new Boolean(true) !== 0) {
+ $ERROR('#8: new String("1") - new Boolean(true) === 0. Actual: ' + (new String("1") - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js
new file mode 100644
index 000000000..95230265a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.6;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN("1" - undefined) !== true) {
+ $ERROR('#1: "1" - undefined === Not-a-Number. Actual: ' + ("1" - undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined - "1") !== true) {
+ $ERROR('#2: undefined - "1" === Not-a-Number. Actual: ' + (undefined - "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") - undefined) !== true) {
+ $ERROR('#3: new String("1") - undefined === Not-a-Number. Actual: ' + (new String("1") - undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined - new String("1")) !== true) {
+ $ERROR('#4: undefined - new String("1") === Not-a-Number. Actual: ' + (undefined - new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js
new file mode 100644
index 000000000..9810bdf00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.7;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" - null !== 1) {
+ $ERROR('#1: "1" - null === 1. Actual: ' + ("1" - null));
+}
+
+//CHECK#2
+if (null - "1" !== -1) {
+ $ERROR('#2: null - "1" === -1. Actual: ' + (null - "1"));
+}
+
+//CHECK#3
+if (new String("1") - null !== 1) {
+ $ERROR('#3: new String("1") - null === 1. Actual: ' + (new String("1") - null));
+}
+
+//CHECK#4
+if (null - new String("1") !== -1) {
+ $ERROR('#4: null - new String("1") === -1. Actual: ' + (null - new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js
new file mode 100644
index 000000000..a21ef92c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.8;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true - undefined) !== true) {
+ $ERROR('#1: true - undefined === Not-a-Number. Actual: ' + (true - undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined - true) !== true) {
+ $ERROR('#2: undefined - true === Not-a-Number. Actual: ' + (undefined - true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) - undefined) !== true) {
+ $ERROR('#3: new Boolean(true) - undefined === Not-a-Number. Actual: ' + (new Boolean(true) - undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined - new Boolean(true)) !== true) {
+ $ERROR('#4: undefined - new Boolean(true) === Not-a-Number. Actual: ' + (undefined - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js
new file mode 100644
index 000000000..4a26e959c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.9;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true - null !== 1) {
+ $ERROR('#1: true - null === 1. Actual: ' + (true - null));
+}
+
+//CHECK#2
+if (null - true !== -1) {
+ $ERROR('#2: null - true === -1. Actual: ' + (null - true));
+}
+
+//CHECK#3
+if (new Boolean(true) - null !== 1) {
+ $ERROR('#3: new Boolean(true) - null === 1. Actual: ' + (new Boolean(true) - null));
+}
+
+//CHECK#4
+if (null - new Boolean(true) !== -1) {
+ $ERROR('#4: null - new Boolean(true) === -1. Actual: ' + (null - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js
new file mode 100644
index 000000000..9f0118c11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T1;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: If either operand is NaN, the result is NaN;
+*/
+
+//CHECK#1
+if (isNaN(Number.NaN - 1) !== true ) {
+ $ERROR('#1: NaN - 1 === Not-a-Number. Actual: ' + (NaN - 1));
+}
+
+//CHECK#2
+if (isNaN(1 - Number.NaN) !== true ) {
+ $ERROR('#2: 1 - NaN === Not-a-Number. Actual: ' + (1 - NaN));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN - Number.POSITIVE_INFINITY) !== true ) {
+ $ERROR('#3: NaN - Infinity === Not-a-Number. Actual: ' + (NaN - Infinity));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY - Number.NaN) !== true ) {
+ $ERROR('#4: Infinity - NaN === Not-a-Number. Actual: ' + (Infinity - NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN - Number.NEGATIVE_INFINITY) !== true ) {
+ $ERROR('#5: NaN - Infinity === Not-a-Number. Actual: ' + (NaN - Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NEGATIVE_INFINITY - Number.NaN) !== true ) {
+ $ERROR('#6: Infinity - NaN === Not-a-Number. Actual: ' + (Infinity - NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js
new file mode 100644
index 000000000..ca62b01e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T2;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: The difference of two infinities of opposite sign is the infinity of minuend sign;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY - Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#1: Infinity - -Infinity === Infinity. Actual: ' + (Infinity - -Infinity));
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY - Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#2: -Infinity - Infinity === -Infinity. Actual: ' + (-Infinity - Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js
new file mode 100644
index 000000000..968c3f290
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T3;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: The difference of two infinities of the same sign is NaN;
+*/
+
+//CHECK#1
+if (isNaN(Number.POSITIVE_INFINITY - Number.POSITIVE_INFINITY) !== true ) {
+ $ERROR('#1: Infinity - Infinity === Not-a-Number. Actual: ' + (Infinity - Infinity));
+}
+
+//CHECK#2
+if (isNaN(Number.NEGATIVE_INFINITY - Number.NEGATIVE_INFINITY) !== true ) {
+ $ERROR('#2: -Infinity - -Infinity === Not-a-Number. Actual: ' + (-Infinity - -Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js
new file mode 100644
index 000000000..16fe4b375
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T4;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: The difference of an infinity and a finite value is equal to infinity of appropriate sign;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY - 1 !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#1: Infinity - 1 === Infinity. Actual: ' + (Infinity - 1));
+}
+
+//CHECK#2
+if (-1 - Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#2: -1 - Infinity === -Infinity. Actual: ' + (-1 - Infinity));
+}
+
+//CHECK#3
+if (Number.NEGATIVE_INFINITY - 1 !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#3: -Infinity - 1 === -Infinity. Actual: ' + (-Infinity - 1));
+}
+
+//CHECK#4
+if (-1 - Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#4: -1 - -Infinity === Infinity. Actual: ' + (-1 - -Infinity));
+}
+
+//CHECK#5
+if (Number.POSITIVE_INFINITY - Number.MAX_VALUE !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#5: Infinity - Number.MAX_VALUE === Infinity. Actual: ' + (Infinity - Number.MAX_VALUE));
+}
+
+//CHECK#6
+if (-Number.MAX_VALUE - Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#6: -Number.MAX_VALUE - Infinity === I-nfinity. Actual: ' + (-Number.MAX_VALUE - Infinity));
+}
+
+//CHECK#7
+if (Number.NEGATIVE_INFINITY - Number.MAX_VALUE !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#7: -Infinity - Number.MAX_VALUE === -Infinity. Actual: ' + (-Infinity - Number.MAX_VALUE));
+}
+
+//CHECK#8
+if (-Number.MAX_VALUE - Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#8: -Number.MAX_VALUE - -Infinity === Infinity. Actual: ' + (-Number.MAX_VALUE - -Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js
new file mode 100644
index 000000000..322cec98e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T5;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: Using the rule of sum of two zeroes and the fact that a - b = a + (-b);
+*/
+
+//CHECK#1
+if (-0 - -0 !== 0 ) {
+ $ERROR('#1.1: -0 - -0 === 0. Actual: ' + (-0 - -0));
+} else {
+ if (1 / (-0 - -0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: -0 - -0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (0 - -0 !== 0 ) {
+ $ERROR('#2.1: 0 - -0 === 0. Actual: ' + (0 - -0));
+} else {
+ if (1 / (0 - -0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: 0 - -0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (-0 - 0 !== -0 ) {
+ $ERROR('#3.1: -0 - 0 === 0. Actual: ' + (-0 - 0));
+} else {
+ if (1 / (-0 - 0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: -0 - 0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#4
+if (0 - 0 !== 0 ) {
+ $ERROR('#4.1: 0 - 0 === 0. Actual: ' + (0 - 0));
+} else {
+ if (1 / (0 - 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: 0 - 0 === + 0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js
new file mode 100644
index 000000000..63a31c2b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T6;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: Using the rule of sum of a zero and a nonzero finite value and the fact that a - b = a + (-b);
+*/
+
+//CHECK#1
+if (1 - -0 !== 1 ) {
+ $ERROR('#1: 1 - -0 === 1. Actual: ' + (1 - -0));
+}
+
+//CHECK#2
+if (1 - 0 !== 1 ) {
+ $ERROR('#2: 1 - 0 === 1. Actual: ' + (1 - 0));
+}
+
+//CHECK#3
+if (-0 - 1 !== -1 ) {
+ $ERROR('#3: -0 - 1 === -1. Actual: ' + (-0 - 1));
+}
+
+//CHECK#4
+if (0 - 1 !== -1 ) {
+ $ERROR('#4: 0 - 1 === -1. Actual: ' + (0 - 1));
+}
+
+//CHECK#5
+if (Number.MAX_VALUE - -0 !== Number.MAX_VALUE ) {
+ $ERROR('#5: Number.MAX_VALUE - -0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE - -0));
+}
+
+//CHECK#6
+if (Number.MAX_VALUE - 0 !== Number.MAX_VALUE ) {
+ $ERROR('#6: Number.MAX_VALUE - 0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE - 0));
+}
+
+//CHECK#7
+if (-0 - Number.MIN_VALUE !== -Number.MIN_VALUE ) {
+ $ERROR('#7: -0 - Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (-0 - Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (0 - Number.MIN_VALUE !== -Number.MIN_VALUE ) {
+ $ERROR('#8: 0 - Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (0 - Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js
new file mode 100644
index 000000000..274474cc7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T7;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: The mathematical difference of two nonzero finite values of the same magnitude and same sign is +0;
+*/
+
+//CHECK#1
+if (Number.MIN_VALUE - Number.MIN_VALUE !== +0) {
+ $ERROR('#1.1: Number.MIN_VALUE - Number.MIN_VALUE === 0. Actual: ' + (Number.MIN_VALUE - Number.MIN_VALUE));
+} else {
+ if (1 / (Number.MIN_VALUE - Number.MIN_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number.MIN_VALUE - Number.MIN_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (-Number.MAX_VALUE - -Number.MAX_VALUE !== +0) {
+ $ERROR('#2.2: -Number.MAX_VALUE - -Number.MAX_VALUE === 0. Actual: ' + (-Number.MAX_VALUE - -Number.MAX_VALUE));
+} else {
+ if (1 / (-Number.MAX_VALUE - -Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.1: -Number.MAX_VALUE - -Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE !== +0) {
+ $ERROR('#3.1: 1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE === 0. Actual: ' + (1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE));
+} else {
+ if (1 / (1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: 1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js
new file mode 100644
index 000000000..e25ae9409
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T8;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: If the magnitude is too large to represent, the operation overflows and the result is then an infinity of appropriate sign;
+*/
+
+//CHECK#1
+if (Number.MAX_VALUE - -Number.MAX_VALUE !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number.MAX_VALUE - -Number.MAX_VALUE === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE - -Number.MAX_VALUE));
+}
+
+//CHECK#2
+if (-Number.MAX_VALUE - Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: -Number.MAX_VALUE - umber.MAX_VALUE === Number.NEGATIVE_INFINITY. Actual: ' + (-Number.MAX_VALUE - umber.MAX_VALUE));
+}
+
+//CHECK#3
+if (1e+308 - -1e+308 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: 1e+308 - -1e+308 === Number.POSITIVE_INFINITY. Actual: ' + (1e+308 - -1e+308));
+}
+
+//CHECK#4
+if (-8.99e+307 - 8.99e+307 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: -8.99e+307 - 8.99e+307 === Number.NEGATIVE_INFINITY. Actual: ' + (-8.99e+307 - 8.99e+307));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A1.js
new file mode 100644
index 000000000..554e2e5e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.1_A1;
+* @section: 11.7.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between ShiftExpression and "<<" or between "<<" and AdditiveExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009<<\u00091") !== 2) {
+ $ERROR('#1: 1\\u0009<<\\u00091 === 2');
+}
+
+//CHECK#2
+if (eval("1\u000B<<\u000B1") !== 2) {
+ $ERROR('#2: 1\\u000B<<\\u000B1 === 2');
+}
+
+//CHECK#3
+if (eval("1\u000C<<\u000C1") !== 2) {
+ $ERROR('#3: 1\\u000C<<\\u000C1 === 2');
+}
+
+//CHECK#4
+if (eval("1\u0020<<\u00201") !== 2) {
+ $ERROR('#4: 1\\u0020<<\\u00201 === 2');
+}
+
+//CHECK#5
+if (eval("1\u00A0<<\u00A01") !== 2) {
+ $ERROR('#5: 1\\u00A0<<\\u00A01 === 2');
+}
+
+//CHECK#6
+if (eval("1\u000A<<\u000A1") !== 2) {
+ $ERROR('#6: 1\\u000A<<\\u000A1 === 2');
+}
+
+//CHECK#7
+if (eval("1\u000D<<\u000D1") !== 2) {
+ $ERROR('#7: 1\\u000D<<\\u000D1 === 2');
+}
+
+//CHECK#8
+if (eval("1\u2028<<\u20281") !== 2) {
+ $ERROR('#8: 1\\u2028<<\\u20281 === 2');
+}
+
+//CHECK#9
+if (eval("1\u2029<<\u20291") !== 2) {
+ $ERROR('#9: 1\\u2029<<\\u20291 === 2');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<<\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 2) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029<<\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T1.js
new file mode 100644
index 000000000..577a25ec3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.1_A2.1_T1;
+* @section: 11.7.1;
+* @assertion: Operator x << y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (2 << 1 !== 4) {
+ $ERROR('#1: 2 << 1 === 4. Actual: ' + (2 << 1));
+}
+
+//CHECK#2
+var x = 2;
+if (x << 1 !== 4) {
+ $ERROR('#2: var x = 2; x << 1 === 4. Actual: ' + (x << 1));
+}
+
+//CHECK#3
+var y = 1;
+if (2 << y !== 4) {
+ $ERROR('#3: var y = 2; 2 << y === 4. Actual: ' + (2 << y));
+}
+
+//CHECK#4
+var x = 2;
+var y = 1;
+if (x << y !== 4) {
+ $ERROR('#4: var x = 2; var y = 1; x << y === 4. Actual: ' + (x << y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 2;
+objecty.prop = 1;
+if (objectx.prop << objecty.prop !== 4) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 2; objecty.prop = 1; objectx.prop << objecty.prop === 4. Actual: ' + (objectx.prop << objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T2.js
new file mode 100644
index 000000000..01f44084c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.1_T2;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x << 1;
+ $ERROR('#1.1: x << 1 throw ReferenceError. Actual: ' + (x << 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x << 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T3.js
new file mode 100644
index 000000000..2171f918a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.1_T3;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 << y;
+ $ERROR('#1.1: 1 << y throw ReferenceError. Actual: ' + (1 << y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 << y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.2_T1.js
new file mode 100644
index 000000000..bbfd50414
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.2_T1;
+ * @section: 11.7.1, 8.6.2.6;
+ * @assertion: Operator x << y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} << 1 !== 2) {
+ $ERROR('#1: {valueOf: function() {return 1}} << 1 === 2. Actual: ' + ({valueOf: function() {return 1}} << 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} << 1 !== 2) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} << 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} << 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} << 1 !== 2) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} << 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} << 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} << 1 !== 2) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} << 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} << 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} << 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} << 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 << {toString: function() {return 1}} !== 2) {
+ $ERROR('#5: 1 << {toString: function() {return 1}} === 2. Actual: ' + (1 << {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 << {valueOf: function() {return {}}, toString: function() {return 1}} !== 2) {
+ $ERROR('#6: 1 << {valueOf: function() {return {}}, toString: function() {return 1}} === 2. Actual: ' + (1 << {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 << {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 << {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 << {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 << {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 << {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 << {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 << {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 << {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.3_T1.js
new file mode 100644
index 000000000..5f321028b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.3_T1;
+ * @section: 11.7.1;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x << y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x << y throw "x". Actual: ' + (x << y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x << y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T1.js
new file mode 100644
index 000000000..4f1396fdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.4_T1;
+ * @section: 11.7.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) << x !== 2) {
+ $ERROR('#1: var x = 0; (x = 1) << x === 2. Actual: ' + ((x = 1) << x));
+}
+
+//CHECK#2
+var x = 0;
+if (x << (x = 1) !== 0) {
+ $ERROR('#2: var x = 0; x << (x = 1) === 0. Actual: ' + (x << (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T2.js
new file mode 100644
index 000000000..f69382802
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.4_T2;
+ * @section: 11.7.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() << y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() << y() throw "x". Actual: ' + (x() << y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() << y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T3.js
new file mode 100644
index 000000000..daf77026c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.4_T3;
+ * @section: 11.7.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x << (x = 1);
+ $ERROR('#1.1: x << (x = 1) throw ReferenceError. Actual: ' + (x << (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x << (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) << y !== 2) {
+ $ERROR('#2: (y = 1) << y === 2. Actual: ' + ((y = 1) << y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.1.js
new file mode 100644
index 000000000..1e6aef1c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.1;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if (true << true !== 2) {
+ $ERROR('#1: true << true === 2. Actual: ' + (true << true));
+}
+
+//CHECK#2
+if (new Boolean(true) << true !== 2) {
+ $ERROR('#2: new Boolean(true) << true === 2. Actual: ' + (new Boolean(true) << true));
+}
+
+//CHECK#3
+if (true << new Boolean(true) !== 2) {
+ $ERROR('#3: true << new Boolean(true) === 2. Actual: ' + (true << new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) << new Boolean(true) !== 2) {
+ $ERROR('#4: new Boolean(true) << new Boolean(true) === 2. Actual: ' + (new Boolean(true) << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.2.js
new file mode 100644
index 000000000..a6c61c1fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.2;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 << 1 !== 2) {
+ $ERROR('#1: 1 << 1 === 2. Actual: ' + (1 << 1));
+}
+
+//CHECK#2
+if (new Number(1) << 1 !== 2) {
+ $ERROR('#2: new Number(1) << 1 === 2. Actual: ' + (new Number(1) << 1));
+}
+
+//CHECK#3
+if (1 << new Number(1) !== 2) {
+ $ERROR('#3: 1 << new Number(1) === 2. Actual: ' + (1 << new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) << new Number(1) !== 2) {
+ $ERROR('#4: new Number(1) << new Number(1) === 2. Actual: ' + (new Number(1) << new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.3.js
new file mode 100644
index 000000000..82e40f90b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.3;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" << "1" !== 2) {
+ $ERROR('#1: "1" << "1" === 2. Actual: ' + ("1" << "1"));
+}
+
+//CHECK#2
+if (new String("1") << "1" !== 2) {
+ $ERROR('#2: new String("1") << "1" === 2. Actual: ' + (new String("1") << "1"));
+}
+
+//CHECK#3
+if ("1" << new String("1") !== 2) {
+ $ERROR('#3: "1" << new String("1") === 2. Actual: ' + ("1" << new String("1")));
+}
+
+//CHECK#4
+if (new String("1") << new String("1") !== 2) {
+ $ERROR('#4: new String("1") << new String("1") === 2. Actual: ' + (new String("1") << new String("1")));
+}
+
+//CHECK#5
+if ("x" << "1" !== 0) {
+ $ERROR('#5: "x" << "1" === 0. Actual: ' + ("x" << "1"));
+}
+
+//CHECK#6
+if ("1" << "x" !== 1) {
+ $ERROR('#6: "1" << "x" === 1. Actual: ' + ("1" << "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.4.js
new file mode 100644
index 000000000..0c3ca8ad2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.4;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null << undefined !== 0) {
+ $ERROR('#1: null << undefined === 0. Actual: ' + (null << undefined));
+}
+
+//CHECK#2
+if (undefined << null !== 0) {
+ $ERROR('#2: undefined << null === 0. Actual: ' + (undefined << null));
+}
+
+//CHECK#3
+if (undefined << undefined !== 0) {
+ $ERROR('#3: undefined << undefined === 0. Actual: ' + (undefined << undefined));
+}
+
+//CHECK#4
+if (null << null !== 0) {
+ $ERROR('#4: null << null === 0. Actual: ' + (null << null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.5.js
new file mode 100644
index 000000000..7a6f1590f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.5;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} << function(){return 1}) !== 0) {
+ $ERROR('#1: ({} << function(){return 1}) === 0. Actual: ' + (({} << function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} << {}) !== 0) {
+ $ERROR('#2: (function(){return 1} << {}) === 0. Actual: ' + ((function(){return 1} << {})));
+}
+
+//CHECK#3
+if ((function(){return 1} << function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} << function(){return 1}) === 0. Actual: ' + ((function(){return 1} << function(){return 1})));
+}
+
+//CHECK#4
+if (({} << {}) !== 0) {
+ $ERROR('#4: ({} << {}) === 0. Actual: ' + (({} << {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.1.js
new file mode 100644
index 000000000..69549badc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.1;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true << 1 !== 2) {
+ $ERROR('#1: true << 1 === 2. Actual: ' + (true << 1));
+}
+
+//CHECK#2
+if (1 << true !== 2) {
+ $ERROR('#2: 1 << true === 2. Actual: ' + (1 << true));
+}
+
+//CHECK#3
+if (new Boolean(true) << 1 !== 2) {
+ $ERROR('#3: new Boolean(true) << 1 === 2. Actual: ' + (new Boolean(true) << 1));
+}
+
+//CHECK#4
+if (1 << new Boolean(true) !== 2) {
+ $ERROR('#4: 1 << new Boolean(true) === 2. Actual: ' + (1 << new Boolean(true)));
+}
+
+//CHECK#5
+if (true << new Number(1) !== 2) {
+ $ERROR('#5: true << new Number(1) === 2. Actual: ' + (true << new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) << true !== 2) {
+ $ERROR('#6: new Number(1) << true === 2. Actual: ' + (new Number(1) << true));
+}
+
+//CHECK#7
+if (new Boolean(true) << new Number(1) !== 2) {
+ $ERROR('#7: new Boolean(true) << new Number(1) === 2. Actual: ' + (new Boolean(true) << new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) << new Boolean(true) !== 2) {
+ $ERROR('#8: new Number(1) << new Boolean(true) === 2. Actual: ' + (new Number(1) << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.2.js
new file mode 100644
index 000000000..222347321
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.2;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" << 1 !== 2) {
+ $ERROR('#1: "1" << 1 === 2. Actual: ' + ("1" << 1));
+}
+
+//CHECK#2
+if (1 << "1" !== 2) {
+ $ERROR('#2: 1 << "1" === 2. Actual: ' + (1 << "1"));
+}
+
+//CHECK#3
+if (new String("1") << 1 !== 2) {
+ $ERROR('#3: new String("1") << 1 === 2. Actual: ' + (new String("1") << 1));
+}
+
+//CHECK#4
+if (1 << new String("1") !== 2) {
+ $ERROR('#4: 1 << new String("1") === 2. Actual: ' + (1 << new String("1")));
+}
+
+//CHECK#5
+if ("1" << new Number(1) !== 2) {
+ $ERROR('#5: "1" << new Number(1) === 2. Actual: ' + ("1" << new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) << "1" !== 2) {
+ $ERROR('#6: new Number(1) << "1" === 2. Actual: ' + (new Number(1) << "1"));
+}
+
+//CHECK#7
+if (new String("1") << new Number(1) !== 2) {
+ $ERROR('#7: new String("1") << new Number(1) === 2. Actual: ' + (new String("1") << new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) << new String("1") !== 2) {
+ $ERROR('#8: new Number(1) << new String("1") === 2. Actual: ' + (new Number(1) << new String("1")));
+}
+
+//CHECK#9
+if ("x" << 1 !== 0) {
+ $ERROR('#9: "x" << 1 === 0. Actual: ' + ("x" << 1));
+}
+
+//CHECK#10
+if (1 << "x" !== 1) {
+ $ERROR('#10: 1 << "x" === 1. Actual: ' + (1 << "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.3.js
new file mode 100644
index 000000000..3737cba0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.3;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 << null !== 1) {
+ $ERROR('#1: 1 << null === 1. Actual: ' + (1 << null));
+}
+
+//CHECK#2
+if (null << 1 !== 0) {
+ $ERROR('#2: null << 1 === 0. Actual: ' + (null << 1));
+}
+
+//CHECK#3
+if (new Number(1) << null !== 1) {
+ $ERROR('#3: new Number(1) << null === 1. Actual: ' + (new Number(1) << null));
+}
+
+//CHECK#4
+if (null << new Number(1) !== 0) {
+ $ERROR('#4: null << new Number(1) === 0. Actual: ' + (null << new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.4.js
new file mode 100644
index 000000000..f3f965d7d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.4;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 << undefined !== 1) {
+ $ERROR('#1: 1 << undefined === 1. Actual: ' + (1 << undefined));
+}
+
+//CHECK#2
+if (undefined << 1 !== 0) {
+ $ERROR('#2: undefined << 1 === 0. Actual: ' + (undefined << 1));
+}
+
+//CHECK#3
+if (new Number(1) << undefined !== 1) {
+ $ERROR('#3: new Number(1) << undefined === 1. Actual: ' + (new Number(1) << undefined));
+}
+
+//CHECK#4
+if (undefined << new Number(1) !== 0) {
+ $ERROR('#4: undefined << new Number(1) === 0. Actual: ' + (undefined << new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.5.js
new file mode 100644
index 000000000..f1efe3410
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.5;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) or Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true << "1" !== 2) {
+ $ERROR('#1: true << "1" === 2. Actual: ' + (true << "1"));
+}
+
+//CHECK#2
+if ("1" << true !== 2) {
+ $ERROR('#2: "1" << true === 2. Actual: ' + ("1" << true));
+}
+
+//CHECK#3
+if (new Boolean(true) << "1" !== 2) {
+ $ERROR('#3: new Boolean(true) << "1" === 2. Actual: ' + (new Boolean(true) << "1"));
+}
+
+//CHECK#4
+if ("1" << new Boolean(true) !== 2) {
+ $ERROR('#4: "1" << new Boolean(true) === 2. Actual: ' + ("1" << new Boolean(true)));
+}
+
+//CHECK#5
+if (true << new String("1") !== 2) {
+ $ERROR('#5: true << new String("1") === 2. Actual: ' + (true << new String("1")));
+}
+
+//CHECK#6
+if (new String("1") << true !== 2) {
+ $ERROR('#6: new String("1") << true === 2. Actual: ' + (new String("1") << true));
+}
+
+//CHECK#7
+if (new Boolean(true) << new String("1") !== 2) {
+ $ERROR('#7: new Boolean(true) << new String("1") === 2. Actual: ' + (new Boolean(true) << new String("1")));
+}
+
+//CHECK#8
+if (new String("1") << new Boolean(true) !== 2) {
+ $ERROR('#8: new String("1") << new Boolean(true) === 2. Actual: ' + (new String("1") << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.6.js
new file mode 100644
index 000000000..e1111d7c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.6;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" << undefined !== 1) {
+ $ERROR('#1: "1" << undefined === 1. Actual: ' + ("1" << undefined));
+}
+
+//CHECK#2
+if (undefined << "1" !== 0) {
+ $ERROR('#2: undefined << "1" === 0. Actual: ' + (undefined << "1"));
+}
+
+//CHECK#3
+if (new String("1") << undefined !== 1) {
+ $ERROR('#3: new String("1") << undefined === 1. Actual: ' + (new String("1") << undefined));
+}
+
+//CHECK#4
+if (undefined << new String("1") !== 0) {
+ $ERROR('#4: undefined << new String("1") === 0. Actual: ' + (undefined << new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.7.js
new file mode 100644
index 000000000..b7b0cebc7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.7;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" << null !== 1) {
+ $ERROR('#1: "1" << null === 1. Actual: ' + ("1" << null));
+}
+
+//CHECK#2
+if (null << "1" !== 0) {
+ $ERROR('#2: null << "1" === 0. Actual: ' + (null << "1"));
+}
+
+//CHECK#3
+if (new String("1") << null !== 1) {
+ $ERROR('#3: new String("1") << null === 1. Actual: ' + (new String("1") << null));
+}
+
+//CHECK#4
+if (null << new String("1") !== 0) {
+ $ERROR('#4: null << new String("1") === 0. Actual: ' + (null << new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.8.js
new file mode 100644
index 000000000..8b5728949
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.8;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true << undefined !== 1) {
+ $ERROR('#1: true << undefined === 1. Actual: ' + (true << undefined));
+}
+
+//CHECK#2
+if (undefined << true !== 0) {
+ $ERROR('#2: undefined << true === 0. Actual: ' + (undefined << true));
+}
+
+//CHECK#3
+if (new Boolean(true) << undefined !== 1) {
+ $ERROR('#3: new Boolean(true) << undefined === 1. Actual: ' + (new Boolean(true) << undefined));
+}
+
+//CHECK#4
+if (undefined << new Boolean(true) !== 0) {
+ $ERROR('#4: undefined << new Boolean(true) === 0. Actual: ' + (undefined << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.9.js
new file mode 100644
index 000000000..2d7ad7913
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.9;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true << null !== 1) {
+ $ERROR('#1: true << null === 1. Actual: ' + (true << null));
+}
+
+//CHECK#2
+if (null << true !== 0) {
+ $ERROR('#2: null << true === 0. Actual: ' + (null << true));
+}
+
+//CHECK#3
+if (new Boolean(true) << null !== 1) {
+ $ERROR('#3: new Boolean(true) << null === 1. Actual: ' + (new Boolean(true) << null));
+}
+
+//CHECK#4
+if (null << new Boolean(true) !== 0) {
+ $ERROR('#4: null << new Boolean(true) === 0. Actual: ' + (null << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T1.js
new file mode 100644
index 000000000..bd16822e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T1.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A4_T1;
+ * @section: 11.7.1;
+ * @assertion: Check operator x << y in distinct points;
+ * @description: ShiftExpression = -2^n, n = 0...15;
+ */
+
+//CHECK
+
+if (-1 << 0 !== -1) {
+ $ERROR('#1: -1 << 0 === -1. Actual: ' + (-1 << 0));
+}
+
+
+if (-2 << 0 !== -2) {
+ $ERROR('#2: -2 << 0 === -2. Actual: ' + (-2 << 0));
+}
+
+
+if (-4 << 0 !== -4) {
+ $ERROR('#3: -4 << 0 === -4. Actual: ' + (-4 << 0));
+}
+
+
+if (-8 << 0 !== -8) {
+ $ERROR('#4: -8 << 0 === -8. Actual: ' + (-8 << 0));
+}
+
+
+if (-16 << 0 !== -16) {
+ $ERROR('#5: -16 << 0 === -16. Actual: ' + (-16 << 0));
+}
+
+
+if (-32 << 0 !== -32) {
+ $ERROR('#6: -32 << 0 === -32. Actual: ' + (-32 << 0));
+}
+
+
+if (-64 << 0 !== -64) {
+ $ERROR('#7: -64 << 0 === -64. Actual: ' + (-64 << 0));
+}
+
+
+if (-128 << 0 !== -128) {
+ $ERROR('#8: -128 << 0 === -128. Actual: ' + (-128 << 0));
+}
+
+
+if (-256 << 0 !== -256) {
+ $ERROR('#9: -256 << 0 === -256. Actual: ' + (-256 << 0));
+}
+
+
+if (-512 << 0 !== -512) {
+ $ERROR('#10: -512 << 0 === -512. Actual: ' + (-512 << 0));
+}
+
+
+if (-1024 << 0 !== -1024) {
+ $ERROR('#11: -1024 << 0 === -1024. Actual: ' + (-1024 << 0));
+}
+
+
+if (-2048 << 0 !== -2048) {
+ $ERROR('#12: -2048 << 0 === -2048. Actual: ' + (-2048 << 0));
+}
+
+
+if (-4096 << 0 !== -4096) {
+ $ERROR('#13: -4096 << 0 === -4096. Actual: ' + (-4096 << 0));
+}
+
+
+if (-8192 << 0 !== -8192) {
+ $ERROR('#14: -8192 << 0 === -8192. Actual: ' + (-8192 << 0));
+}
+
+
+if (-16384 << 0 !== -16384) {
+ $ERROR('#15: -16384 << 0 === -16384. Actual: ' + (-16384 << 0));
+}
+
+
+if (-32768 << 0 !== -32768) {
+ $ERROR('#16: -32768 << 0 === -32768. Actual: ' + (-32768 << 0));
+}
+
+
+if (-65536 << 0 !== -65536) {
+ $ERROR('#17: -65536 << 0 === -65536. Actual: ' + (-65536 << 0));
+}
+
+
+if (-131072 << 0 !== -131072) {
+ $ERROR('#18: -131072 << 0 === -131072. Actual: ' + (-131072 << 0));
+}
+
+
+if (-262144 << 0 !== -262144) {
+ $ERROR('#19: -262144 << 0 === -262144. Actual: ' + (-262144 << 0));
+}
+
+
+if (-524288 << 0 !== -524288) {
+ $ERROR('#20: -524288 << 0 === -524288. Actual: ' + (-524288 << 0));
+}
+
+
+if (-1048576 << 0 !== -1048576) {
+ $ERROR('#21: -1048576 << 0 === -1048576. Actual: ' + (-1048576 << 0));
+}
+
+
+if (-2097152 << 0 !== -2097152) {
+ $ERROR('#22: -2097152 << 0 === -2097152. Actual: ' + (-2097152 << 0));
+}
+
+
+if (-4194304 << 0 !== -4194304) {
+ $ERROR('#23: -4194304 << 0 === -4194304. Actual: ' + (-4194304 << 0));
+}
+
+
+if (-8388608 << 0 !== -8388608) {
+ $ERROR('#24: -8388608 << 0 === -8388608. Actual: ' + (-8388608 << 0));
+}
+
+
+if (-16777216 << 0 !== -16777216) {
+ $ERROR('#25: -16777216 << 0 === -16777216. Actual: ' + (-16777216 << 0));
+}
+
+
+if (-33554432 << 0 !== -33554432) {
+ $ERROR('#26: -33554432 << 0 === -33554432. Actual: ' + (-33554432 << 0));
+}
+
+
+if (-67108864 << 0 !== -67108864) {
+ $ERROR('#27: -67108864 << 0 === -67108864. Actual: ' + (-67108864 << 0));
+}
+
+
+if (-134217728 << 0 !== -134217728) {
+ $ERROR('#28: -134217728 << 0 === -134217728. Actual: ' + (-134217728 << 0));
+}
+
+
+if (-268435456 << 0 !== -268435456) {
+ $ERROR('#29: -268435456 << 0 === -268435456. Actual: ' + (-268435456 << 0));
+}
+
+
+if (-536870912 << 0 !== -536870912) {
+ $ERROR('#30: -536870912 << 0 === -536870912. Actual: ' + (-536870912 << 0));
+}
+
+
+if (-1073741824 << 0 !== -1073741824) {
+ $ERROR('#31: -1073741824 << 0 === -1073741824. Actual: ' + (-1073741824 << 0));
+}
+
+
+if (-2147483648 << 0 !== -2147483648) {
+ $ERROR('#32: -2147483648 << 0 === -2147483648. Actual: ' + (-2147483648 << 0));
+}
+
+
+if (-1 << 1 !== -2) {
+ $ERROR('#33: -1 << 1 === -2. Actual: ' + (-1 << 1));
+}
+
+
+if (-2 << 1 !== -4) {
+ $ERROR('#34: -2 << 1 === -4. Actual: ' + (-2 << 1));
+}
+
+
+if (-4 << 1 !== -8) {
+ $ERROR('#35: -4 << 1 === -8. Actual: ' + (-4 << 1));
+}
+
+
+if (-8 << 1 !== -16) {
+ $ERROR('#36: -8 << 1 === -16. Actual: ' + (-8 << 1));
+}
+
+
+if (-16 << 1 !== -32) {
+ $ERROR('#37: -16 << 1 === -32. Actual: ' + (-16 << 1));
+}
+
+
+if (-32 << 1 !== -64) {
+ $ERROR('#38: -32 << 1 === -64. Actual: ' + (-32 << 1));
+}
+
+
+if (-64 << 1 !== -128) {
+ $ERROR('#39: -64 << 1 === -128. Actual: ' + (-64 << 1));
+}
+
+
+if (-128 << 1 !== -256) {
+ $ERROR('#40: -128 << 1 === -256. Actual: ' + (-128 << 1));
+}
+
+
+if (-256 << 1 !== -512) {
+ $ERROR('#41: -256 << 1 === -512. Actual: ' + (-256 << 1));
+}
+
+
+if (-512 << 1 !== -1024) {
+ $ERROR('#42: -512 << 1 === -1024. Actual: ' + (-512 << 1));
+}
+
+
+if (-1024 << 1 !== -2048) {
+ $ERROR('#43: -1024 << 1 === -2048. Actual: ' + (-1024 << 1));
+}
+
+
+if (-2048 << 1 !== -4096) {
+ $ERROR('#44: -2048 << 1 === -4096. Actual: ' + (-2048 << 1));
+}
+
+
+if (-4096 << 1 !== -8192) {
+ $ERROR('#45: -4096 << 1 === -8192. Actual: ' + (-4096 << 1));
+}
+
+
+if (-8192 << 1 !== -16384) {
+ $ERROR('#46: -8192 << 1 === -16384. Actual: ' + (-8192 << 1));
+}
+
+
+if (-16384 << 1 !== -32768) {
+ $ERROR('#47: -16384 << 1 === -32768. Actual: ' + (-16384 << 1));
+}
+
+
+if (-32768 << 1 !== -65536) {
+ $ERROR('#48: -32768 << 1 === -65536. Actual: ' + (-32768 << 1));
+}
+
+
+if (-65536 << 1 !== -131072) {
+ $ERROR('#49: -65536 << 1 === -131072. Actual: ' + (-65536 << 1));
+}
+
+
+if (-131072 << 1 !== -262144) {
+ $ERROR('#50: -131072 << 1 === -262144. Actual: ' + (-131072 << 1));
+}
+
+
+if (-262144 << 1 !== -524288) {
+ $ERROR('#51: -262144 << 1 === -524288. Actual: ' + (-262144 << 1));
+}
+
+
+if (-524288 << 1 !== -1048576) {
+ $ERROR('#52: -524288 << 1 === -1048576. Actual: ' + (-524288 << 1));
+}
+
+
+if (-1048576 << 1 !== -2097152) {
+ $ERROR('#53: -1048576 << 1 === -2097152. Actual: ' + (-1048576 << 1));
+}
+
+
+if (-2097152 << 1 !== -4194304) {
+ $ERROR('#54: -2097152 << 1 === -4194304. Actual: ' + (-2097152 << 1));
+}
+
+
+if (-4194304 << 1 !== -8388608) {
+ $ERROR('#55: -4194304 << 1 === -8388608. Actual: ' + (-4194304 << 1));
+}
+
+
+if (-8388608 << 1 !== -16777216) {
+ $ERROR('#56: -8388608 << 1 === -16777216. Actual: ' + (-8388608 << 1));
+}
+
+
+if (-16777216 << 1 !== -33554432) {
+ $ERROR('#57: -16777216 << 1 === -33554432. Actual: ' + (-16777216 << 1));
+}
+
+
+if (-33554432 << 1 !== -67108864) {
+ $ERROR('#58: -33554432 << 1 === -67108864. Actual: ' + (-33554432 << 1));
+}
+
+
+if (-67108864 << 1 !== -134217728) {
+ $ERROR('#59: -67108864 << 1 === -134217728. Actual: ' + (-67108864 << 1));
+}
+
+
+if (-134217728 << 1 !== -268435456) {
+ $ERROR('#60: -134217728 << 1 === -268435456. Actual: ' + (-134217728 << 1));
+}
+
+
+if (-268435456 << 1 !== -536870912) {
+ $ERROR('#61: -268435456 << 1 === -536870912. Actual: ' + (-268435456 << 1));
+}
+
+
+if (-536870912 << 1 !== -1073741824) {
+ $ERROR('#62: -536870912 << 1 === -1073741824. Actual: ' + (-536870912 << 1));
+}
+
+
+if (-1073741824 << 1 !== -2147483648) {
+ $ERROR('#63: -1073741824 << 1 === -2147483648. Actual: ' + (-1073741824 << 1));
+}
+
+
+if (-2147483648 << 1 !== 0) {
+ $ERROR('#64: -2147483648 << 1 === 0. Actual: ' + (-2147483648 << 1));
+}
+
+
+if (-1 << 2 !== -4) {
+ $ERROR('#65: -1 << 2 === -4. Actual: ' + (-1 << 2));
+}
+
+
+if (-2 << 2 !== -8) {
+ $ERROR('#66: -2 << 2 === -8. Actual: ' + (-2 << 2));
+}
+
+
+if (-4 << 2 !== -16) {
+ $ERROR('#67: -4 << 2 === -16. Actual: ' + (-4 << 2));
+}
+
+
+if (-8 << 2 !== -32) {
+ $ERROR('#68: -8 << 2 === -32. Actual: ' + (-8 << 2));
+}
+
+
+if (-16 << 2 !== -64) {
+ $ERROR('#69: -16 << 2 === -64. Actual: ' + (-16 << 2));
+}
+
+
+if (-32 << 2 !== -128) {
+ $ERROR('#70: -32 << 2 === -128. Actual: ' + (-32 << 2));
+}
+
+
+if (-64 << 2 !== -256) {
+ $ERROR('#71: -64 << 2 === -256. Actual: ' + (-64 << 2));
+}
+
+
+if (-128 << 2 !== -512) {
+ $ERROR('#72: -128 << 2 === -512. Actual: ' + (-128 << 2));
+}
+
+
+if (-256 << 2 !== -1024) {
+ $ERROR('#73: -256 << 2 === -1024. Actual: ' + (-256 << 2));
+}
+
+
+if (-512 << 2 !== -2048) {
+ $ERROR('#74: -512 << 2 === -2048. Actual: ' + (-512 << 2));
+}
+
+
+if (-1024 << 2 !== -4096) {
+ $ERROR('#75: -1024 << 2 === -4096. Actual: ' + (-1024 << 2));
+}
+
+
+if (-2048 << 2 !== -8192) {
+ $ERROR('#76: -2048 << 2 === -8192. Actual: ' + (-2048 << 2));
+}
+
+
+if (-4096 << 2 !== -16384) {
+ $ERROR('#77: -4096 << 2 === -16384. Actual: ' + (-4096 << 2));
+}
+
+
+if (-8192 << 2 !== -32768) {
+ $ERROR('#78: -8192 << 2 === -32768. Actual: ' + (-8192 << 2));
+}
+
+
+if (-16384 << 2 !== -65536) {
+ $ERROR('#79: -16384 << 2 === -65536. Actual: ' + (-16384 << 2));
+}
+
+
+if (-32768 << 2 !== -131072) {
+ $ERROR('#80: -32768 << 2 === -131072. Actual: ' + (-32768 << 2));
+}
+
+
+if (-65536 << 2 !== -262144) {
+ $ERROR('#81: -65536 << 2 === -262144. Actual: ' + (-65536 << 2));
+}
+
+
+if (-131072 << 2 !== -524288) {
+ $ERROR('#82: -131072 << 2 === -524288. Actual: ' + (-131072 << 2));
+}
+
+
+if (-262144 << 2 !== -1048576) {
+ $ERROR('#83: -262144 << 2 === -1048576. Actual: ' + (-262144 << 2));
+}
+
+
+if (-524288 << 2 !== -2097152) {
+ $ERROR('#84: -524288 << 2 === -2097152. Actual: ' + (-524288 << 2));
+}
+
+
+if (-1048576 << 2 !== -4194304) {
+ $ERROR('#85: -1048576 << 2 === -4194304. Actual: ' + (-1048576 << 2));
+}
+
+
+if (-2097152 << 2 !== -8388608) {
+ $ERROR('#86: -2097152 << 2 === -8388608. Actual: ' + (-2097152 << 2));
+}
+
+
+if (-4194304 << 2 !== -16777216) {
+ $ERROR('#87: -4194304 << 2 === -16777216. Actual: ' + (-4194304 << 2));
+}
+
+
+if (-8388608 << 2 !== -33554432) {
+ $ERROR('#88: -8388608 << 2 === -33554432. Actual: ' + (-8388608 << 2));
+}
+
+
+if (-16777216 << 2 !== -67108864) {
+ $ERROR('#89: -16777216 << 2 === -67108864. Actual: ' + (-16777216 << 2));
+}
+
+
+if (-33554432 << 2 !== -134217728) {
+ $ERROR('#90: -33554432 << 2 === -134217728. Actual: ' + (-33554432 << 2));
+}
+
+
+if (-67108864 << 2 !== -268435456) {
+ $ERROR('#91: -67108864 << 2 === -268435456. Actual: ' + (-67108864 << 2));
+}
+
+
+if (-134217728 << 2 !== -536870912) {
+ $ERROR('#92: -134217728 << 2 === -536870912. Actual: ' + (-134217728 << 2));
+}
+
+
+if (-268435456 << 2 !== -1073741824) {
+ $ERROR('#93: -268435456 << 2 === -1073741824. Actual: ' + (-268435456 << 2));
+}
+
+
+if (-536870912 << 2 !== -2147483648) {
+ $ERROR('#94: -536870912 << 2 === -2147483648. Actual: ' + (-536870912 << 2));
+}
+
+
+if (-1073741824 << 2 !== 0) {
+ $ERROR('#95: -1073741824 << 2 === 0. Actual: ' + (-1073741824 << 2));
+}
+
+
+if (-2147483648 << 2 !== 0) {
+ $ERROR('#96: -2147483648 << 2 === 0. Actual: ' + (-2147483648 << 2));
+}
+
+
+if (-1 << 3 !== -8) {
+ $ERROR('#97: -1 << 3 === -8. Actual: ' + (-1 << 3));
+}
+
+
+if (-2 << 3 !== -16) {
+ $ERROR('#98: -2 << 3 === -16. Actual: ' + (-2 << 3));
+}
+
+
+if (-4 << 3 !== -32) {
+ $ERROR('#99: -4 << 3 === -32. Actual: ' + (-4 << 3));
+}
+
+
+if (-8 << 3 !== -64) {
+ $ERROR('#100: -8 << 3 === -64. Actual: ' + (-8 << 3));
+}
+
+
+if (-16 << 3 !== -128) {
+ $ERROR('#101: -16 << 3 === -128. Actual: ' + (-16 << 3));
+}
+
+
+if (-32 << 3 !== -256) {
+ $ERROR('#102: -32 << 3 === -256. Actual: ' + (-32 << 3));
+}
+
+
+if (-64 << 3 !== -512) {
+ $ERROR('#103: -64 << 3 === -512. Actual: ' + (-64 << 3));
+}
+
+
+if (-128 << 3 !== -1024) {
+ $ERROR('#104: -128 << 3 === -1024. Actual: ' + (-128 << 3));
+}
+
+
+if (-256 << 3 !== -2048) {
+ $ERROR('#105: -256 << 3 === -2048. Actual: ' + (-256 << 3));
+}
+
+
+if (-512 << 3 !== -4096) {
+ $ERROR('#106: -512 << 3 === -4096. Actual: ' + (-512 << 3));
+}
+
+
+if (-1024 << 3 !== -8192) {
+ $ERROR('#107: -1024 << 3 === -8192. Actual: ' + (-1024 << 3));
+}
+
+
+if (-2048 << 3 !== -16384) {
+ $ERROR('#108: -2048 << 3 === -16384. Actual: ' + (-2048 << 3));
+}
+
+
+if (-4096 << 3 !== -32768) {
+ $ERROR('#109: -4096 << 3 === -32768. Actual: ' + (-4096 << 3));
+}
+
+
+if (-8192 << 3 !== -65536) {
+ $ERROR('#110: -8192 << 3 === -65536. Actual: ' + (-8192 << 3));
+}
+
+
+if (-16384 << 3 !== -131072) {
+ $ERROR('#111: -16384 << 3 === -131072. Actual: ' + (-16384 << 3));
+}
+
+
+if (-32768 << 3 !== -262144) {
+ $ERROR('#112: -32768 << 3 === -262144. Actual: ' + (-32768 << 3));
+}
+
+
+if (-65536 << 3 !== -524288) {
+ $ERROR('#113: -65536 << 3 === -524288. Actual: ' + (-65536 << 3));
+}
+
+
+if (-131072 << 3 !== -1048576) {
+ $ERROR('#114: -131072 << 3 === -1048576. Actual: ' + (-131072 << 3));
+}
+
+
+if (-262144 << 3 !== -2097152) {
+ $ERROR('#115: -262144 << 3 === -2097152. Actual: ' + (-262144 << 3));
+}
+
+
+if (-524288 << 3 !== -4194304) {
+ $ERROR('#116: -524288 << 3 === -4194304. Actual: ' + (-524288 << 3));
+}
+
+
+if (-1048576 << 3 !== -8388608) {
+ $ERROR('#117: -1048576 << 3 === -8388608. Actual: ' + (-1048576 << 3));
+}
+
+
+if (-2097152 << 3 !== -16777216) {
+ $ERROR('#118: -2097152 << 3 === -16777216. Actual: ' + (-2097152 << 3));
+}
+
+
+if (-4194304 << 3 !== -33554432) {
+ $ERROR('#119: -4194304 << 3 === -33554432. Actual: ' + (-4194304 << 3));
+}
+
+
+if (-8388608 << 3 !== -67108864) {
+ $ERROR('#120: -8388608 << 3 === -67108864. Actual: ' + (-8388608 << 3));
+}
+
+
+if (-16777216 << 3 !== -134217728) {
+ $ERROR('#121: -16777216 << 3 === -134217728. Actual: ' + (-16777216 << 3));
+}
+
+
+if (-33554432 << 3 !== -268435456) {
+ $ERROR('#122: -33554432 << 3 === -268435456. Actual: ' + (-33554432 << 3));
+}
+
+
+if (-67108864 << 3 !== -536870912) {
+ $ERROR('#123: -67108864 << 3 === -536870912. Actual: ' + (-67108864 << 3));
+}
+
+
+if (-134217728 << 3 !== -1073741824) {
+ $ERROR('#124: -134217728 << 3 === -1073741824. Actual: ' + (-134217728 << 3));
+}
+
+
+if (-268435456 << 3 !== -2147483648) {
+ $ERROR('#125: -268435456 << 3 === -2147483648. Actual: ' + (-268435456 << 3));
+}
+
+
+if (-536870912 << 3 !== 0) {
+ $ERROR('#126: -536870912 << 3 === 0. Actual: ' + (-536870912 << 3));
+}
+
+
+if (-1073741824 << 3 !== 0) {
+ $ERROR('#127: -1073741824 << 3 === 0. Actual: ' + (-1073741824 << 3));
+}
+
+
+if (-2147483648 << 3 !== 0) {
+ $ERROR('#128: -2147483648 << 3 === 0. Actual: ' + (-2147483648 << 3));
+}
+
+
+if (-1 << 4 !== -16) {
+ $ERROR('#129: -1 << 4 === -16. Actual: ' + (-1 << 4));
+}
+
+
+if (-2 << 4 !== -32) {
+ $ERROR('#130: -2 << 4 === -32. Actual: ' + (-2 << 4));
+}
+
+
+if (-4 << 4 !== -64) {
+ $ERROR('#131: -4 << 4 === -64. Actual: ' + (-4 << 4));
+}
+
+
+if (-8 << 4 !== -128) {
+ $ERROR('#132: -8 << 4 === -128. Actual: ' + (-8 << 4));
+}
+
+
+if (-16 << 4 !== -256) {
+ $ERROR('#133: -16 << 4 === -256. Actual: ' + (-16 << 4));
+}
+
+
+if (-32 << 4 !== -512) {
+ $ERROR('#134: -32 << 4 === -512. Actual: ' + (-32 << 4));
+}
+
+
+if (-64 << 4 !== -1024) {
+ $ERROR('#135: -64 << 4 === -1024. Actual: ' + (-64 << 4));
+}
+
+
+if (-128 << 4 !== -2048) {
+ $ERROR('#136: -128 << 4 === -2048. Actual: ' + (-128 << 4));
+}
+
+
+if (-256 << 4 !== -4096) {
+ $ERROR('#137: -256 << 4 === -4096. Actual: ' + (-256 << 4));
+}
+
+
+if (-512 << 4 !== -8192) {
+ $ERROR('#138: -512 << 4 === -8192. Actual: ' + (-512 << 4));
+}
+
+
+if (-1024 << 4 !== -16384) {
+ $ERROR('#139: -1024 << 4 === -16384. Actual: ' + (-1024 << 4));
+}
+
+
+if (-2048 << 4 !== -32768) {
+ $ERROR('#140: -2048 << 4 === -32768. Actual: ' + (-2048 << 4));
+}
+
+
+if (-4096 << 4 !== -65536) {
+ $ERROR('#141: -4096 << 4 === -65536. Actual: ' + (-4096 << 4));
+}
+
+
+if (-8192 << 4 !== -131072) {
+ $ERROR('#142: -8192 << 4 === -131072. Actual: ' + (-8192 << 4));
+}
+
+
+if (-16384 << 4 !== -262144) {
+ $ERROR('#143: -16384 << 4 === -262144. Actual: ' + (-16384 << 4));
+}
+
+
+if (-32768 << 4 !== -524288) {
+ $ERROR('#144: -32768 << 4 === -524288. Actual: ' + (-32768 << 4));
+}
+
+
+if (-65536 << 4 !== -1048576) {
+ $ERROR('#145: -65536 << 4 === -1048576. Actual: ' + (-65536 << 4));
+}
+
+
+if (-131072 << 4 !== -2097152) {
+ $ERROR('#146: -131072 << 4 === -2097152. Actual: ' + (-131072 << 4));
+}
+
+
+if (-262144 << 4 !== -4194304) {
+ $ERROR('#147: -262144 << 4 === -4194304. Actual: ' + (-262144 << 4));
+}
+
+
+if (-524288 << 4 !== -8388608) {
+ $ERROR('#148: -524288 << 4 === -8388608. Actual: ' + (-524288 << 4));
+}
+
+
+if (-1048576 << 4 !== -16777216) {
+ $ERROR('#149: -1048576 << 4 === -16777216. Actual: ' + (-1048576 << 4));
+}
+
+
+if (-2097152 << 4 !== -33554432) {
+ $ERROR('#150: -2097152 << 4 === -33554432. Actual: ' + (-2097152 << 4));
+}
+
+
+if (-4194304 << 4 !== -67108864) {
+ $ERROR('#151: -4194304 << 4 === -67108864. Actual: ' + (-4194304 << 4));
+}
+
+
+if (-8388608 << 4 !== -134217728) {
+ $ERROR('#152: -8388608 << 4 === -134217728. Actual: ' + (-8388608 << 4));
+}
+
+
+if (-16777216 << 4 !== -268435456) {
+ $ERROR('#153: -16777216 << 4 === -268435456. Actual: ' + (-16777216 << 4));
+}
+
+
+if (-33554432 << 4 !== -536870912) {
+ $ERROR('#154: -33554432 << 4 === -536870912. Actual: ' + (-33554432 << 4));
+}
+
+
+if (-67108864 << 4 !== -1073741824) {
+ $ERROR('#155: -67108864 << 4 === -1073741824. Actual: ' + (-67108864 << 4));
+}
+
+
+if (-134217728 << 4 !== -2147483648) {
+ $ERROR('#156: -134217728 << 4 === -2147483648. Actual: ' + (-134217728 << 4));
+}
+
+
+if (-268435456 << 4 !== 0) {
+ $ERROR('#157: -268435456 << 4 === 0. Actual: ' + (-268435456 << 4));
+}
+
+
+if (-536870912 << 4 !== 0) {
+ $ERROR('#158: -536870912 << 4 === 0. Actual: ' + (-536870912 << 4));
+}
+
+
+if (-1073741824 << 4 !== 0) {
+ $ERROR('#159: -1073741824 << 4 === 0. Actual: ' + (-1073741824 << 4));
+}
+
+
+if (-2147483648 << 4 !== 0) {
+ $ERROR('#160: -2147483648 << 4 === 0. Actual: ' + (-2147483648 << 4));
+}
+
+
+if (-1 << 5 !== -32) {
+ $ERROR('#161: -1 << 5 === -32. Actual: ' + (-1 << 5));
+}
+
+
+if (-2 << 5 !== -64) {
+ $ERROR('#162: -2 << 5 === -64. Actual: ' + (-2 << 5));
+}
+
+
+if (-4 << 5 !== -128) {
+ $ERROR('#163: -4 << 5 === -128. Actual: ' + (-4 << 5));
+}
+
+
+if (-8 << 5 !== -256) {
+ $ERROR('#164: -8 << 5 === -256. Actual: ' + (-8 << 5));
+}
+
+
+if (-16 << 5 !== -512) {
+ $ERROR('#165: -16 << 5 === -512. Actual: ' + (-16 << 5));
+}
+
+
+if (-32 << 5 !== -1024) {
+ $ERROR('#166: -32 << 5 === -1024. Actual: ' + (-32 << 5));
+}
+
+
+if (-64 << 5 !== -2048) {
+ $ERROR('#167: -64 << 5 === -2048. Actual: ' + (-64 << 5));
+}
+
+
+if (-128 << 5 !== -4096) {
+ $ERROR('#168: -128 << 5 === -4096. Actual: ' + (-128 << 5));
+}
+
+
+if (-256 << 5 !== -8192) {
+ $ERROR('#169: -256 << 5 === -8192. Actual: ' + (-256 << 5));
+}
+
+
+if (-512 << 5 !== -16384) {
+ $ERROR('#170: -512 << 5 === -16384. Actual: ' + (-512 << 5));
+}
+
+
+if (-1024 << 5 !== -32768) {
+ $ERROR('#171: -1024 << 5 === -32768. Actual: ' + (-1024 << 5));
+}
+
+
+if (-2048 << 5 !== -65536) {
+ $ERROR('#172: -2048 << 5 === -65536. Actual: ' + (-2048 << 5));
+}
+
+
+if (-4096 << 5 !== -131072) {
+ $ERROR('#173: -4096 << 5 === -131072. Actual: ' + (-4096 << 5));
+}
+
+
+if (-8192 << 5 !== -262144) {
+ $ERROR('#174: -8192 << 5 === -262144. Actual: ' + (-8192 << 5));
+}
+
+
+if (-16384 << 5 !== -524288) {
+ $ERROR('#175: -16384 << 5 === -524288. Actual: ' + (-16384 << 5));
+}
+
+
+if (-32768 << 5 !== -1048576) {
+ $ERROR('#176: -32768 << 5 === -1048576. Actual: ' + (-32768 << 5));
+}
+
+
+if (-65536 << 5 !== -2097152) {
+ $ERROR('#177: -65536 << 5 === -2097152. Actual: ' + (-65536 << 5));
+}
+
+
+if (-131072 << 5 !== -4194304) {
+ $ERROR('#178: -131072 << 5 === -4194304. Actual: ' + (-131072 << 5));
+}
+
+
+if (-262144 << 5 !== -8388608) {
+ $ERROR('#179: -262144 << 5 === -8388608. Actual: ' + (-262144 << 5));
+}
+
+
+if (-524288 << 5 !== -16777216) {
+ $ERROR('#180: -524288 << 5 === -16777216. Actual: ' + (-524288 << 5));
+}
+
+
+if (-1048576 << 5 !== -33554432) {
+ $ERROR('#181: -1048576 << 5 === -33554432. Actual: ' + (-1048576 << 5));
+}
+
+
+if (-2097152 << 5 !== -67108864) {
+ $ERROR('#182: -2097152 << 5 === -67108864. Actual: ' + (-2097152 << 5));
+}
+
+
+if (-4194304 << 5 !== -134217728) {
+ $ERROR('#183: -4194304 << 5 === -134217728. Actual: ' + (-4194304 << 5));
+}
+
+
+if (-8388608 << 5 !== -268435456) {
+ $ERROR('#184: -8388608 << 5 === -268435456. Actual: ' + (-8388608 << 5));
+}
+
+
+if (-16777216 << 5 !== -536870912) {
+ $ERROR('#185: -16777216 << 5 === -536870912. Actual: ' + (-16777216 << 5));
+}
+
+
+if (-33554432 << 5 !== -1073741824) {
+ $ERROR('#186: -33554432 << 5 === -1073741824. Actual: ' + (-33554432 << 5));
+}
+
+
+if (-67108864 << 5 !== -2147483648) {
+ $ERROR('#187: -67108864 << 5 === -2147483648. Actual: ' + (-67108864 << 5));
+}
+
+
+if (-134217728 << 5 !== 0) {
+ $ERROR('#188: -134217728 << 5 === 0. Actual: ' + (-134217728 << 5));
+}
+
+
+if (-268435456 << 5 !== 0) {
+ $ERROR('#189: -268435456 << 5 === 0. Actual: ' + (-268435456 << 5));
+}
+
+
+if (-536870912 << 5 !== 0) {
+ $ERROR('#190: -536870912 << 5 === 0. Actual: ' + (-536870912 << 5));
+}
+
+
+if (-1073741824 << 5 !== 0) {
+ $ERROR('#191: -1073741824 << 5 === 0. Actual: ' + (-1073741824 << 5));
+}
+
+
+if (-2147483648 << 5 !== 0) {
+ $ERROR('#192: -2147483648 << 5 === 0. Actual: ' + (-2147483648 << 5));
+}
+
+
+if (-1 << 6 !== -64) {
+ $ERROR('#193: -1 << 6 === -64. Actual: ' + (-1 << 6));
+}
+
+
+if (-2 << 6 !== -128) {
+ $ERROR('#194: -2 << 6 === -128. Actual: ' + (-2 << 6));
+}
+
+
+if (-4 << 6 !== -256) {
+ $ERROR('#195: -4 << 6 === -256. Actual: ' + (-4 << 6));
+}
+
+
+if (-8 << 6 !== -512) {
+ $ERROR('#196: -8 << 6 === -512. Actual: ' + (-8 << 6));
+}
+
+
+if (-16 << 6 !== -1024) {
+ $ERROR('#197: -16 << 6 === -1024. Actual: ' + (-16 << 6));
+}
+
+
+if (-32 << 6 !== -2048) {
+ $ERROR('#198: -32 << 6 === -2048. Actual: ' + (-32 << 6));
+}
+
+
+if (-64 << 6 !== -4096) {
+ $ERROR('#199: -64 << 6 === -4096. Actual: ' + (-64 << 6));
+}
+
+
+if (-128 << 6 !== -8192) {
+ $ERROR('#200: -128 << 6 === -8192. Actual: ' + (-128 << 6));
+}
+
+
+if (-256 << 6 !== -16384) {
+ $ERROR('#201: -256 << 6 === -16384. Actual: ' + (-256 << 6));
+}
+
+
+if (-512 << 6 !== -32768) {
+ $ERROR('#202: -512 << 6 === -32768. Actual: ' + (-512 << 6));
+}
+
+
+if (-1024 << 6 !== -65536) {
+ $ERROR('#203: -1024 << 6 === -65536. Actual: ' + (-1024 << 6));
+}
+
+
+if (-2048 << 6 !== -131072) {
+ $ERROR('#204: -2048 << 6 === -131072. Actual: ' + (-2048 << 6));
+}
+
+
+if (-4096 << 6 !== -262144) {
+ $ERROR('#205: -4096 << 6 === -262144. Actual: ' + (-4096 << 6));
+}
+
+
+if (-8192 << 6 !== -524288) {
+ $ERROR('#206: -8192 << 6 === -524288. Actual: ' + (-8192 << 6));
+}
+
+
+if (-16384 << 6 !== -1048576) {
+ $ERROR('#207: -16384 << 6 === -1048576. Actual: ' + (-16384 << 6));
+}
+
+
+if (-32768 << 6 !== -2097152) {
+ $ERROR('#208: -32768 << 6 === -2097152. Actual: ' + (-32768 << 6));
+}
+
+
+if (-65536 << 6 !== -4194304) {
+ $ERROR('#209: -65536 << 6 === -4194304. Actual: ' + (-65536 << 6));
+}
+
+
+if (-131072 << 6 !== -8388608) {
+ $ERROR('#210: -131072 << 6 === -8388608. Actual: ' + (-131072 << 6));
+}
+
+
+if (-262144 << 6 !== -16777216) {
+ $ERROR('#211: -262144 << 6 === -16777216. Actual: ' + (-262144 << 6));
+}
+
+
+if (-524288 << 6 !== -33554432) {
+ $ERROR('#212: -524288 << 6 === -33554432. Actual: ' + (-524288 << 6));
+}
+
+
+if (-1048576 << 6 !== -67108864) {
+ $ERROR('#213: -1048576 << 6 === -67108864. Actual: ' + (-1048576 << 6));
+}
+
+
+if (-2097152 << 6 !== -134217728) {
+ $ERROR('#214: -2097152 << 6 === -134217728. Actual: ' + (-2097152 << 6));
+}
+
+
+if (-4194304 << 6 !== -268435456) {
+ $ERROR('#215: -4194304 << 6 === -268435456. Actual: ' + (-4194304 << 6));
+}
+
+
+if (-8388608 << 6 !== -536870912) {
+ $ERROR('#216: -8388608 << 6 === -536870912. Actual: ' + (-8388608 << 6));
+}
+
+
+if (-16777216 << 6 !== -1073741824) {
+ $ERROR('#217: -16777216 << 6 === -1073741824. Actual: ' + (-16777216 << 6));
+}
+
+
+if (-33554432 << 6 !== -2147483648) {
+ $ERROR('#218: -33554432 << 6 === -2147483648. Actual: ' + (-33554432 << 6));
+}
+
+
+if (-67108864 << 6 !== 0) {
+ $ERROR('#219: -67108864 << 6 === 0. Actual: ' + (-67108864 << 6));
+}
+
+
+if (-134217728 << 6 !== 0) {
+ $ERROR('#220: -134217728 << 6 === 0. Actual: ' + (-134217728 << 6));
+}
+
+
+if (-268435456 << 6 !== 0) {
+ $ERROR('#221: -268435456 << 6 === 0. Actual: ' + (-268435456 << 6));
+}
+
+
+if (-536870912 << 6 !== 0) {
+ $ERROR('#222: -536870912 << 6 === 0. Actual: ' + (-536870912 << 6));
+}
+
+
+if (-1073741824 << 6 !== 0) {
+ $ERROR('#223: -1073741824 << 6 === 0. Actual: ' + (-1073741824 << 6));
+}
+
+
+if (-2147483648 << 6 !== 0) {
+ $ERROR('#224: -2147483648 << 6 === 0. Actual: ' + (-2147483648 << 6));
+}
+
+
+if (-1 << 7 !== -128) {
+ $ERROR('#225: -1 << 7 === -128. Actual: ' + (-1 << 7));
+}
+
+
+if (-2 << 7 !== -256) {
+ $ERROR('#226: -2 << 7 === -256. Actual: ' + (-2 << 7));
+}
+
+
+if (-4 << 7 !== -512) {
+ $ERROR('#227: -4 << 7 === -512. Actual: ' + (-4 << 7));
+}
+
+
+if (-8 << 7 !== -1024) {
+ $ERROR('#228: -8 << 7 === -1024. Actual: ' + (-8 << 7));
+}
+
+
+if (-16 << 7 !== -2048) {
+ $ERROR('#229: -16 << 7 === -2048. Actual: ' + (-16 << 7));
+}
+
+
+if (-32 << 7 !== -4096) {
+ $ERROR('#230: -32 << 7 === -4096. Actual: ' + (-32 << 7));
+}
+
+
+if (-64 << 7 !== -8192) {
+ $ERROR('#231: -64 << 7 === -8192. Actual: ' + (-64 << 7));
+}
+
+
+if (-128 << 7 !== -16384) {
+ $ERROR('#232: -128 << 7 === -16384. Actual: ' + (-128 << 7));
+}
+
+
+if (-256 << 7 !== -32768) {
+ $ERROR('#233: -256 << 7 === -32768. Actual: ' + (-256 << 7));
+}
+
+
+if (-512 << 7 !== -65536) {
+ $ERROR('#234: -512 << 7 === -65536. Actual: ' + (-512 << 7));
+}
+
+
+if (-1024 << 7 !== -131072) {
+ $ERROR('#235: -1024 << 7 === -131072. Actual: ' + (-1024 << 7));
+}
+
+
+if (-2048 << 7 !== -262144) {
+ $ERROR('#236: -2048 << 7 === -262144. Actual: ' + (-2048 << 7));
+}
+
+
+if (-4096 << 7 !== -524288) {
+ $ERROR('#237: -4096 << 7 === -524288. Actual: ' + (-4096 << 7));
+}
+
+
+if (-8192 << 7 !== -1048576) {
+ $ERROR('#238: -8192 << 7 === -1048576. Actual: ' + (-8192 << 7));
+}
+
+
+if (-16384 << 7 !== -2097152) {
+ $ERROR('#239: -16384 << 7 === -2097152. Actual: ' + (-16384 << 7));
+}
+
+
+if (-32768 << 7 !== -4194304) {
+ $ERROR('#240: -32768 << 7 === -4194304. Actual: ' + (-32768 << 7));
+}
+
+
+if (-65536 << 7 !== -8388608) {
+ $ERROR('#241: -65536 << 7 === -8388608. Actual: ' + (-65536 << 7));
+}
+
+
+if (-131072 << 7 !== -16777216) {
+ $ERROR('#242: -131072 << 7 === -16777216. Actual: ' + (-131072 << 7));
+}
+
+
+if (-262144 << 7 !== -33554432) {
+ $ERROR('#243: -262144 << 7 === -33554432. Actual: ' + (-262144 << 7));
+}
+
+
+if (-524288 << 7 !== -67108864) {
+ $ERROR('#244: -524288 << 7 === -67108864. Actual: ' + (-524288 << 7));
+}
+
+
+if (-1048576 << 7 !== -134217728) {
+ $ERROR('#245: -1048576 << 7 === -134217728. Actual: ' + (-1048576 << 7));
+}
+
+
+if (-2097152 << 7 !== -268435456) {
+ $ERROR('#246: -2097152 << 7 === -268435456. Actual: ' + (-2097152 << 7));
+}
+
+
+if (-4194304 << 7 !== -536870912) {
+ $ERROR('#247: -4194304 << 7 === -536870912. Actual: ' + (-4194304 << 7));
+}
+
+
+if (-8388608 << 7 !== -1073741824) {
+ $ERROR('#248: -8388608 << 7 === -1073741824. Actual: ' + (-8388608 << 7));
+}
+
+
+if (-16777216 << 7 !== -2147483648) {
+ $ERROR('#249: -16777216 << 7 === -2147483648. Actual: ' + (-16777216 << 7));
+}
+
+
+if (-33554432 << 7 !== 0) {
+ $ERROR('#250: -33554432 << 7 === 0. Actual: ' + (-33554432 << 7));
+}
+
+
+if (-67108864 << 7 !== 0) {
+ $ERROR('#251: -67108864 << 7 === 0. Actual: ' + (-67108864 << 7));
+}
+
+
+if (-134217728 << 7 !== 0) {
+ $ERROR('#252: -134217728 << 7 === 0. Actual: ' + (-134217728 << 7));
+}
+
+
+if (-268435456 << 7 !== 0) {
+ $ERROR('#253: -268435456 << 7 === 0. Actual: ' + (-268435456 << 7));
+}
+
+
+if (-536870912 << 7 !== 0) {
+ $ERROR('#254: -536870912 << 7 === 0. Actual: ' + (-536870912 << 7));
+}
+
+
+if (-1073741824 << 7 !== 0) {
+ $ERROR('#255: -1073741824 << 7 === 0. Actual: ' + (-1073741824 << 7));
+}
+
+
+if (-2147483648 << 7 !== 0) {
+ $ERROR('#256: -2147483648 << 7 === 0. Actual: ' + (-2147483648 << 7));
+}
+
+
+if (-1 << 8 !== -256) {
+ $ERROR('#257: -1 << 8 === -256. Actual: ' + (-1 << 8));
+}
+
+
+if (-2 << 8 !== -512) {
+ $ERROR('#258: -2 << 8 === -512. Actual: ' + (-2 << 8));
+}
+
+
+if (-4 << 8 !== -1024) {
+ $ERROR('#259: -4 << 8 === -1024. Actual: ' + (-4 << 8));
+}
+
+
+if (-8 << 8 !== -2048) {
+ $ERROR('#260: -8 << 8 === -2048. Actual: ' + (-8 << 8));
+}
+
+
+if (-16 << 8 !== -4096) {
+ $ERROR('#261: -16 << 8 === -4096. Actual: ' + (-16 << 8));
+}
+
+
+if (-32 << 8 !== -8192) {
+ $ERROR('#262: -32 << 8 === -8192. Actual: ' + (-32 << 8));
+}
+
+
+if (-64 << 8 !== -16384) {
+ $ERROR('#263: -64 << 8 === -16384. Actual: ' + (-64 << 8));
+}
+
+
+if (-128 << 8 !== -32768) {
+ $ERROR('#264: -128 << 8 === -32768. Actual: ' + (-128 << 8));
+}
+
+
+if (-256 << 8 !== -65536) {
+ $ERROR('#265: -256 << 8 === -65536. Actual: ' + (-256 << 8));
+}
+
+
+if (-512 << 8 !== -131072) {
+ $ERROR('#266: -512 << 8 === -131072. Actual: ' + (-512 << 8));
+}
+
+
+if (-1024 << 8 !== -262144) {
+ $ERROR('#267: -1024 << 8 === -262144. Actual: ' + (-1024 << 8));
+}
+
+
+if (-2048 << 8 !== -524288) {
+ $ERROR('#268: -2048 << 8 === -524288. Actual: ' + (-2048 << 8));
+}
+
+
+if (-4096 << 8 !== -1048576) {
+ $ERROR('#269: -4096 << 8 === -1048576. Actual: ' + (-4096 << 8));
+}
+
+
+if (-8192 << 8 !== -2097152) {
+ $ERROR('#270: -8192 << 8 === -2097152. Actual: ' + (-8192 << 8));
+}
+
+
+if (-16384 << 8 !== -4194304) {
+ $ERROR('#271: -16384 << 8 === -4194304. Actual: ' + (-16384 << 8));
+}
+
+
+if (-32768 << 8 !== -8388608) {
+ $ERROR('#272: -32768 << 8 === -8388608. Actual: ' + (-32768 << 8));
+}
+
+
+if (-65536 << 8 !== -16777216) {
+ $ERROR('#273: -65536 << 8 === -16777216. Actual: ' + (-65536 << 8));
+}
+
+
+if (-131072 << 8 !== -33554432) {
+ $ERROR('#274: -131072 << 8 === -33554432. Actual: ' + (-131072 << 8));
+}
+
+
+if (-262144 << 8 !== -67108864) {
+ $ERROR('#275: -262144 << 8 === -67108864. Actual: ' + (-262144 << 8));
+}
+
+
+if (-524288 << 8 !== -134217728) {
+ $ERROR('#276: -524288 << 8 === -134217728. Actual: ' + (-524288 << 8));
+}
+
+
+if (-1048576 << 8 !== -268435456) {
+ $ERROR('#277: -1048576 << 8 === -268435456. Actual: ' + (-1048576 << 8));
+}
+
+
+if (-2097152 << 8 !== -536870912) {
+ $ERROR('#278: -2097152 << 8 === -536870912. Actual: ' + (-2097152 << 8));
+}
+
+
+if (-4194304 << 8 !== -1073741824) {
+ $ERROR('#279: -4194304 << 8 === -1073741824. Actual: ' + (-4194304 << 8));
+}
+
+
+if (-8388608 << 8 !== -2147483648) {
+ $ERROR('#280: -8388608 << 8 === -2147483648. Actual: ' + (-8388608 << 8));
+}
+
+
+if (-16777216 << 8 !== 0) {
+ $ERROR('#281: -16777216 << 8 === 0. Actual: ' + (-16777216 << 8));
+}
+
+
+if (-33554432 << 8 !== 0) {
+ $ERROR('#282: -33554432 << 8 === 0. Actual: ' + (-33554432 << 8));
+}
+
+
+if (-67108864 << 8 !== 0) {
+ $ERROR('#283: -67108864 << 8 === 0. Actual: ' + (-67108864 << 8));
+}
+
+
+if (-134217728 << 8 !== 0) {
+ $ERROR('#284: -134217728 << 8 === 0. Actual: ' + (-134217728 << 8));
+}
+
+
+if (-268435456 << 8 !== 0) {
+ $ERROR('#285: -268435456 << 8 === 0. Actual: ' + (-268435456 << 8));
+}
+
+
+if (-536870912 << 8 !== 0) {
+ $ERROR('#286: -536870912 << 8 === 0. Actual: ' + (-536870912 << 8));
+}
+
+
+if (-1073741824 << 8 !== 0) {
+ $ERROR('#287: -1073741824 << 8 === 0. Actual: ' + (-1073741824 << 8));
+}
+
+
+if (-2147483648 << 8 !== 0) {
+ $ERROR('#288: -2147483648 << 8 === 0. Actual: ' + (-2147483648 << 8));
+}
+
+
+if (-1 << 9 !== -512) {
+ $ERROR('#289: -1 << 9 === -512. Actual: ' + (-1 << 9));
+}
+
+
+if (-2 << 9 !== -1024) {
+ $ERROR('#290: -2 << 9 === -1024. Actual: ' + (-2 << 9));
+}
+
+
+if (-4 << 9 !== -2048) {
+ $ERROR('#291: -4 << 9 === -2048. Actual: ' + (-4 << 9));
+}
+
+
+if (-8 << 9 !== -4096) {
+ $ERROR('#292: -8 << 9 === -4096. Actual: ' + (-8 << 9));
+}
+
+
+if (-16 << 9 !== -8192) {
+ $ERROR('#293: -16 << 9 === -8192. Actual: ' + (-16 << 9));
+}
+
+
+if (-32 << 9 !== -16384) {
+ $ERROR('#294: -32 << 9 === -16384. Actual: ' + (-32 << 9));
+}
+
+
+if (-64 << 9 !== -32768) {
+ $ERROR('#295: -64 << 9 === -32768. Actual: ' + (-64 << 9));
+}
+
+
+if (-128 << 9 !== -65536) {
+ $ERROR('#296: -128 << 9 === -65536. Actual: ' + (-128 << 9));
+}
+
+
+if (-256 << 9 !== -131072) {
+ $ERROR('#297: -256 << 9 === -131072. Actual: ' + (-256 << 9));
+}
+
+
+if (-512 << 9 !== -262144) {
+ $ERROR('#298: -512 << 9 === -262144. Actual: ' + (-512 << 9));
+}
+
+
+if (-1024 << 9 !== -524288) {
+ $ERROR('#299: -1024 << 9 === -524288. Actual: ' + (-1024 << 9));
+}
+
+
+if (-2048 << 9 !== -1048576) {
+ $ERROR('#300: -2048 << 9 === -1048576. Actual: ' + (-2048 << 9));
+}
+
+
+if (-4096 << 9 !== -2097152) {
+ $ERROR('#301: -4096 << 9 === -2097152. Actual: ' + (-4096 << 9));
+}
+
+
+if (-8192 << 9 !== -4194304) {
+ $ERROR('#302: -8192 << 9 === -4194304. Actual: ' + (-8192 << 9));
+}
+
+
+if (-16384 << 9 !== -8388608) {
+ $ERROR('#303: -16384 << 9 === -8388608. Actual: ' + (-16384 << 9));
+}
+
+
+if (-32768 << 9 !== -16777216) {
+ $ERROR('#304: -32768 << 9 === -16777216. Actual: ' + (-32768 << 9));
+}
+
+
+if (-65536 << 9 !== -33554432) {
+ $ERROR('#305: -65536 << 9 === -33554432. Actual: ' + (-65536 << 9));
+}
+
+
+if (-131072 << 9 !== -67108864) {
+ $ERROR('#306: -131072 << 9 === -67108864. Actual: ' + (-131072 << 9));
+}
+
+
+if (-262144 << 9 !== -134217728) {
+ $ERROR('#307: -262144 << 9 === -134217728. Actual: ' + (-262144 << 9));
+}
+
+
+if (-524288 << 9 !== -268435456) {
+ $ERROR('#308: -524288 << 9 === -268435456. Actual: ' + (-524288 << 9));
+}
+
+
+if (-1048576 << 9 !== -536870912) {
+ $ERROR('#309: -1048576 << 9 === -536870912. Actual: ' + (-1048576 << 9));
+}
+
+
+if (-2097152 << 9 !== -1073741824) {
+ $ERROR('#310: -2097152 << 9 === -1073741824. Actual: ' + (-2097152 << 9));
+}
+
+
+if (-4194304 << 9 !== -2147483648) {
+ $ERROR('#311: -4194304 << 9 === -2147483648. Actual: ' + (-4194304 << 9));
+}
+
+
+if (-8388608 << 9 !== 0) {
+ $ERROR('#312: -8388608 << 9 === 0. Actual: ' + (-8388608 << 9));
+}
+
+
+if (-16777216 << 9 !== 0) {
+ $ERROR('#313: -16777216 << 9 === 0. Actual: ' + (-16777216 << 9));
+}
+
+
+if (-33554432 << 9 !== 0) {
+ $ERROR('#314: -33554432 << 9 === 0. Actual: ' + (-33554432 << 9));
+}
+
+
+if (-67108864 << 9 !== 0) {
+ $ERROR('#315: -67108864 << 9 === 0. Actual: ' + (-67108864 << 9));
+}
+
+
+if (-134217728 << 9 !== 0) {
+ $ERROR('#316: -134217728 << 9 === 0. Actual: ' + (-134217728 << 9));
+}
+
+
+if (-268435456 << 9 !== 0) {
+ $ERROR('#317: -268435456 << 9 === 0. Actual: ' + (-268435456 << 9));
+}
+
+
+if (-536870912 << 9 !== 0) {
+ $ERROR('#318: -536870912 << 9 === 0. Actual: ' + (-536870912 << 9));
+}
+
+
+if (-1073741824 << 9 !== 0) {
+ $ERROR('#319: -1073741824 << 9 === 0. Actual: ' + (-1073741824 << 9));
+}
+
+
+if (-2147483648 << 9 !== 0) {
+ $ERROR('#320: -2147483648 << 9 === 0. Actual: ' + (-2147483648 << 9));
+}
+
+
+if (-1 << 10 !== -1024) {
+ $ERROR('#321: -1 << 10 === -1024. Actual: ' + (-1 << 10));
+}
+
+
+if (-2 << 10 !== -2048) {
+ $ERROR('#322: -2 << 10 === -2048. Actual: ' + (-2 << 10));
+}
+
+
+if (-4 << 10 !== -4096) {
+ $ERROR('#323: -4 << 10 === -4096. Actual: ' + (-4 << 10));
+}
+
+
+if (-8 << 10 !== -8192) {
+ $ERROR('#324: -8 << 10 === -8192. Actual: ' + (-8 << 10));
+}
+
+
+if (-16 << 10 !== -16384) {
+ $ERROR('#325: -16 << 10 === -16384. Actual: ' + (-16 << 10));
+}
+
+
+if (-32 << 10 !== -32768) {
+ $ERROR('#326: -32 << 10 === -32768. Actual: ' + (-32 << 10));
+}
+
+
+if (-64 << 10 !== -65536) {
+ $ERROR('#327: -64 << 10 === -65536. Actual: ' + (-64 << 10));
+}
+
+
+if (-128 << 10 !== -131072) {
+ $ERROR('#328: -128 << 10 === -131072. Actual: ' + (-128 << 10));
+}
+
+
+if (-256 << 10 !== -262144) {
+ $ERROR('#329: -256 << 10 === -262144. Actual: ' + (-256 << 10));
+}
+
+
+if (-512 << 10 !== -524288) {
+ $ERROR('#330: -512 << 10 === -524288. Actual: ' + (-512 << 10));
+}
+
+
+if (-1024 << 10 !== -1048576) {
+ $ERROR('#331: -1024 << 10 === -1048576. Actual: ' + (-1024 << 10));
+}
+
+
+if (-2048 << 10 !== -2097152) {
+ $ERROR('#332: -2048 << 10 === -2097152. Actual: ' + (-2048 << 10));
+}
+
+
+if (-4096 << 10 !== -4194304) {
+ $ERROR('#333: -4096 << 10 === -4194304. Actual: ' + (-4096 << 10));
+}
+
+
+if (-8192 << 10 !== -8388608) {
+ $ERROR('#334: -8192 << 10 === -8388608. Actual: ' + (-8192 << 10));
+}
+
+
+if (-16384 << 10 !== -16777216) {
+ $ERROR('#335: -16384 << 10 === -16777216. Actual: ' + (-16384 << 10));
+}
+
+
+if (-32768 << 10 !== -33554432) {
+ $ERROR('#336: -32768 << 10 === -33554432. Actual: ' + (-32768 << 10));
+}
+
+
+if (-65536 << 10 !== -67108864) {
+ $ERROR('#337: -65536 << 10 === -67108864. Actual: ' + (-65536 << 10));
+}
+
+
+if (-131072 << 10 !== -134217728) {
+ $ERROR('#338: -131072 << 10 === -134217728. Actual: ' + (-131072 << 10));
+}
+
+
+if (-262144 << 10 !== -268435456) {
+ $ERROR('#339: -262144 << 10 === -268435456. Actual: ' + (-262144 << 10));
+}
+
+
+if (-524288 << 10 !== -536870912) {
+ $ERROR('#340: -524288 << 10 === -536870912. Actual: ' + (-524288 << 10));
+}
+
+
+if (-1048576 << 10 !== -1073741824) {
+ $ERROR('#341: -1048576 << 10 === -1073741824. Actual: ' + (-1048576 << 10));
+}
+
+
+if (-2097152 << 10 !== -2147483648) {
+ $ERROR('#342: -2097152 << 10 === -2147483648. Actual: ' + (-2097152 << 10));
+}
+
+
+if (-4194304 << 10 !== 0) {
+ $ERROR('#343: -4194304 << 10 === 0. Actual: ' + (-4194304 << 10));
+}
+
+
+if (-8388608 << 10 !== 0) {
+ $ERROR('#344: -8388608 << 10 === 0. Actual: ' + (-8388608 << 10));
+}
+
+
+if (-16777216 << 10 !== 0) {
+ $ERROR('#345: -16777216 << 10 === 0. Actual: ' + (-16777216 << 10));
+}
+
+
+if (-33554432 << 10 !== 0) {
+ $ERROR('#346: -33554432 << 10 === 0. Actual: ' + (-33554432 << 10));
+}
+
+
+if (-67108864 << 10 !== 0) {
+ $ERROR('#347: -67108864 << 10 === 0. Actual: ' + (-67108864 << 10));
+}
+
+
+if (-134217728 << 10 !== 0) {
+ $ERROR('#348: -134217728 << 10 === 0. Actual: ' + (-134217728 << 10));
+}
+
+
+if (-268435456 << 10 !== 0) {
+ $ERROR('#349: -268435456 << 10 === 0. Actual: ' + (-268435456 << 10));
+}
+
+
+if (-536870912 << 10 !== 0) {
+ $ERROR('#350: -536870912 << 10 === 0. Actual: ' + (-536870912 << 10));
+}
+
+
+if (-1073741824 << 10 !== 0) {
+ $ERROR('#351: -1073741824 << 10 === 0. Actual: ' + (-1073741824 << 10));
+}
+
+
+if (-2147483648 << 10 !== 0) {
+ $ERROR('#352: -2147483648 << 10 === 0. Actual: ' + (-2147483648 << 10));
+}
+
+
+if (-1 << 11 !== -2048) {
+ $ERROR('#353: -1 << 11 === -2048. Actual: ' + (-1 << 11));
+}
+
+
+if (-2 << 11 !== -4096) {
+ $ERROR('#354: -2 << 11 === -4096. Actual: ' + (-2 << 11));
+}
+
+
+if (-4 << 11 !== -8192) {
+ $ERROR('#355: -4 << 11 === -8192. Actual: ' + (-4 << 11));
+}
+
+
+if (-8 << 11 !== -16384) {
+ $ERROR('#356: -8 << 11 === -16384. Actual: ' + (-8 << 11));
+}
+
+
+if (-16 << 11 !== -32768) {
+ $ERROR('#357: -16 << 11 === -32768. Actual: ' + (-16 << 11));
+}
+
+
+if (-32 << 11 !== -65536) {
+ $ERROR('#358: -32 << 11 === -65536. Actual: ' + (-32 << 11));
+}
+
+
+if (-64 << 11 !== -131072) {
+ $ERROR('#359: -64 << 11 === -131072. Actual: ' + (-64 << 11));
+}
+
+
+if (-128 << 11 !== -262144) {
+ $ERROR('#360: -128 << 11 === -262144. Actual: ' + (-128 << 11));
+}
+
+
+if (-256 << 11 !== -524288) {
+ $ERROR('#361: -256 << 11 === -524288. Actual: ' + (-256 << 11));
+}
+
+
+if (-512 << 11 !== -1048576) {
+ $ERROR('#362: -512 << 11 === -1048576. Actual: ' + (-512 << 11));
+}
+
+
+if (-1024 << 11 !== -2097152) {
+ $ERROR('#363: -1024 << 11 === -2097152. Actual: ' + (-1024 << 11));
+}
+
+
+if (-2048 << 11 !== -4194304) {
+ $ERROR('#364: -2048 << 11 === -4194304. Actual: ' + (-2048 << 11));
+}
+
+
+if (-4096 << 11 !== -8388608) {
+ $ERROR('#365: -4096 << 11 === -8388608. Actual: ' + (-4096 << 11));
+}
+
+
+if (-8192 << 11 !== -16777216) {
+ $ERROR('#366: -8192 << 11 === -16777216. Actual: ' + (-8192 << 11));
+}
+
+
+if (-16384 << 11 !== -33554432) {
+ $ERROR('#367: -16384 << 11 === -33554432. Actual: ' + (-16384 << 11));
+}
+
+
+if (-32768 << 11 !== -67108864) {
+ $ERROR('#368: -32768 << 11 === -67108864. Actual: ' + (-32768 << 11));
+}
+
+
+if (-65536 << 11 !== -134217728) {
+ $ERROR('#369: -65536 << 11 === -134217728. Actual: ' + (-65536 << 11));
+}
+
+
+if (-131072 << 11 !== -268435456) {
+ $ERROR('#370: -131072 << 11 === -268435456. Actual: ' + (-131072 << 11));
+}
+
+
+if (-262144 << 11 !== -536870912) {
+ $ERROR('#371: -262144 << 11 === -536870912. Actual: ' + (-262144 << 11));
+}
+
+
+if (-524288 << 11 !== -1073741824) {
+ $ERROR('#372: -524288 << 11 === -1073741824. Actual: ' + (-524288 << 11));
+}
+
+
+if (-1048576 << 11 !== -2147483648) {
+ $ERROR('#373: -1048576 << 11 === -2147483648. Actual: ' + (-1048576 << 11));
+}
+
+
+if (-2097152 << 11 !== 0) {
+ $ERROR('#374: -2097152 << 11 === 0. Actual: ' + (-2097152 << 11));
+}
+
+
+if (-4194304 << 11 !== 0) {
+ $ERROR('#375: -4194304 << 11 === 0. Actual: ' + (-4194304 << 11));
+}
+
+
+if (-8388608 << 11 !== 0) {
+ $ERROR('#376: -8388608 << 11 === 0. Actual: ' + (-8388608 << 11));
+}
+
+
+if (-16777216 << 11 !== 0) {
+ $ERROR('#377: -16777216 << 11 === 0. Actual: ' + (-16777216 << 11));
+}
+
+
+if (-33554432 << 11 !== 0) {
+ $ERROR('#378: -33554432 << 11 === 0. Actual: ' + (-33554432 << 11));
+}
+
+
+if (-67108864 << 11 !== 0) {
+ $ERROR('#379: -67108864 << 11 === 0. Actual: ' + (-67108864 << 11));
+}
+
+
+if (-134217728 << 11 !== 0) {
+ $ERROR('#380: -134217728 << 11 === 0. Actual: ' + (-134217728 << 11));
+}
+
+
+if (-268435456 << 11 !== 0) {
+ $ERROR('#381: -268435456 << 11 === 0. Actual: ' + (-268435456 << 11));
+}
+
+
+if (-536870912 << 11 !== 0) {
+ $ERROR('#382: -536870912 << 11 === 0. Actual: ' + (-536870912 << 11));
+}
+
+
+if (-1073741824 << 11 !== 0) {
+ $ERROR('#383: -1073741824 << 11 === 0. Actual: ' + (-1073741824 << 11));
+}
+
+
+if (-2147483648 << 11 !== 0) {
+ $ERROR('#384: -2147483648 << 11 === 0. Actual: ' + (-2147483648 << 11));
+}
+
+
+if (-1 << 12 !== -4096) {
+ $ERROR('#385: -1 << 12 === -4096. Actual: ' + (-1 << 12));
+}
+
+
+if (-2 << 12 !== -8192) {
+ $ERROR('#386: -2 << 12 === -8192. Actual: ' + (-2 << 12));
+}
+
+
+if (-4 << 12 !== -16384) {
+ $ERROR('#387: -4 << 12 === -16384. Actual: ' + (-4 << 12));
+}
+
+
+if (-8 << 12 !== -32768) {
+ $ERROR('#388: -8 << 12 === -32768. Actual: ' + (-8 << 12));
+}
+
+
+if (-16 << 12 !== -65536) {
+ $ERROR('#389: -16 << 12 === -65536. Actual: ' + (-16 << 12));
+}
+
+
+if (-32 << 12 !== -131072) {
+ $ERROR('#390: -32 << 12 === -131072. Actual: ' + (-32 << 12));
+}
+
+
+if (-64 << 12 !== -262144) {
+ $ERROR('#391: -64 << 12 === -262144. Actual: ' + (-64 << 12));
+}
+
+
+if (-128 << 12 !== -524288) {
+ $ERROR('#392: -128 << 12 === -524288. Actual: ' + (-128 << 12));
+}
+
+
+if (-256 << 12 !== -1048576) {
+ $ERROR('#393: -256 << 12 === -1048576. Actual: ' + (-256 << 12));
+}
+
+
+if (-512 << 12 !== -2097152) {
+ $ERROR('#394: -512 << 12 === -2097152. Actual: ' + (-512 << 12));
+}
+
+
+if (-1024 << 12 !== -4194304) {
+ $ERROR('#395: -1024 << 12 === -4194304. Actual: ' + (-1024 << 12));
+}
+
+
+if (-2048 << 12 !== -8388608) {
+ $ERROR('#396: -2048 << 12 === -8388608. Actual: ' + (-2048 << 12));
+}
+
+
+if (-4096 << 12 !== -16777216) {
+ $ERROR('#397: -4096 << 12 === -16777216. Actual: ' + (-4096 << 12));
+}
+
+
+if (-8192 << 12 !== -33554432) {
+ $ERROR('#398: -8192 << 12 === -33554432. Actual: ' + (-8192 << 12));
+}
+
+
+if (-16384 << 12 !== -67108864) {
+ $ERROR('#399: -16384 << 12 === -67108864. Actual: ' + (-16384 << 12));
+}
+
+
+if (-32768 << 12 !== -134217728) {
+ $ERROR('#400: -32768 << 12 === -134217728. Actual: ' + (-32768 << 12));
+}
+
+
+if (-65536 << 12 !== -268435456) {
+ $ERROR('#401: -65536 << 12 === -268435456. Actual: ' + (-65536 << 12));
+}
+
+
+if (-131072 << 12 !== -536870912) {
+ $ERROR('#402: -131072 << 12 === -536870912. Actual: ' + (-131072 << 12));
+}
+
+
+if (-262144 << 12 !== -1073741824) {
+ $ERROR('#403: -262144 << 12 === -1073741824. Actual: ' + (-262144 << 12));
+}
+
+
+if (-524288 << 12 !== -2147483648) {
+ $ERROR('#404: -524288 << 12 === -2147483648. Actual: ' + (-524288 << 12));
+}
+
+
+if (-1048576 << 12 !== 0) {
+ $ERROR('#405: -1048576 << 12 === 0. Actual: ' + (-1048576 << 12));
+}
+
+
+if (-2097152 << 12 !== 0) {
+ $ERROR('#406: -2097152 << 12 === 0. Actual: ' + (-2097152 << 12));
+}
+
+
+if (-4194304 << 12 !== 0) {
+ $ERROR('#407: -4194304 << 12 === 0. Actual: ' + (-4194304 << 12));
+}
+
+
+if (-8388608 << 12 !== 0) {
+ $ERROR('#408: -8388608 << 12 === 0. Actual: ' + (-8388608 << 12));
+}
+
+
+if (-16777216 << 12 !== 0) {
+ $ERROR('#409: -16777216 << 12 === 0. Actual: ' + (-16777216 << 12));
+}
+
+
+if (-33554432 << 12 !== 0) {
+ $ERROR('#410: -33554432 << 12 === 0. Actual: ' + (-33554432 << 12));
+}
+
+
+if (-67108864 << 12 !== 0) {
+ $ERROR('#411: -67108864 << 12 === 0. Actual: ' + (-67108864 << 12));
+}
+
+
+if (-134217728 << 12 !== 0) {
+ $ERROR('#412: -134217728 << 12 === 0. Actual: ' + (-134217728 << 12));
+}
+
+
+if (-268435456 << 12 !== 0) {
+ $ERROR('#413: -268435456 << 12 === 0. Actual: ' + (-268435456 << 12));
+}
+
+
+if (-536870912 << 12 !== 0) {
+ $ERROR('#414: -536870912 << 12 === 0. Actual: ' + (-536870912 << 12));
+}
+
+
+if (-1073741824 << 12 !== 0) {
+ $ERROR('#415: -1073741824 << 12 === 0. Actual: ' + (-1073741824 << 12));
+}
+
+
+if (-2147483648 << 12 !== 0) {
+ $ERROR('#416: -2147483648 << 12 === 0. Actual: ' + (-2147483648 << 12));
+}
+
+
+if (-1 << 13 !== -8192) {
+ $ERROR('#417: -1 << 13 === -8192. Actual: ' + (-1 << 13));
+}
+
+
+if (-2 << 13 !== -16384) {
+ $ERROR('#418: -2 << 13 === -16384. Actual: ' + (-2 << 13));
+}
+
+
+if (-4 << 13 !== -32768) {
+ $ERROR('#419: -4 << 13 === -32768. Actual: ' + (-4 << 13));
+}
+
+
+if (-8 << 13 !== -65536) {
+ $ERROR('#420: -8 << 13 === -65536. Actual: ' + (-8 << 13));
+}
+
+
+if (-16 << 13 !== -131072) {
+ $ERROR('#421: -16 << 13 === -131072. Actual: ' + (-16 << 13));
+}
+
+
+if (-32 << 13 !== -262144) {
+ $ERROR('#422: -32 << 13 === -262144. Actual: ' + (-32 << 13));
+}
+
+
+if (-64 << 13 !== -524288) {
+ $ERROR('#423: -64 << 13 === -524288. Actual: ' + (-64 << 13));
+}
+
+
+if (-128 << 13 !== -1048576) {
+ $ERROR('#424: -128 << 13 === -1048576. Actual: ' + (-128 << 13));
+}
+
+
+if (-256 << 13 !== -2097152) {
+ $ERROR('#425: -256 << 13 === -2097152. Actual: ' + (-256 << 13));
+}
+
+
+if (-512 << 13 !== -4194304) {
+ $ERROR('#426: -512 << 13 === -4194304. Actual: ' + (-512 << 13));
+}
+
+
+if (-1024 << 13 !== -8388608) {
+ $ERROR('#427: -1024 << 13 === -8388608. Actual: ' + (-1024 << 13));
+}
+
+
+if (-2048 << 13 !== -16777216) {
+ $ERROR('#428: -2048 << 13 === -16777216. Actual: ' + (-2048 << 13));
+}
+
+
+if (-4096 << 13 !== -33554432) {
+ $ERROR('#429: -4096 << 13 === -33554432. Actual: ' + (-4096 << 13));
+}
+
+
+if (-8192 << 13 !== -67108864) {
+ $ERROR('#430: -8192 << 13 === -67108864. Actual: ' + (-8192 << 13));
+}
+
+
+if (-16384 << 13 !== -134217728) {
+ $ERROR('#431: -16384 << 13 === -134217728. Actual: ' + (-16384 << 13));
+}
+
+
+if (-32768 << 13 !== -268435456) {
+ $ERROR('#432: -32768 << 13 === -268435456. Actual: ' + (-32768 << 13));
+}
+
+
+if (-65536 << 13 !== -536870912) {
+ $ERROR('#433: -65536 << 13 === -536870912. Actual: ' + (-65536 << 13));
+}
+
+
+if (-131072 << 13 !== -1073741824) {
+ $ERROR('#434: -131072 << 13 === -1073741824. Actual: ' + (-131072 << 13));
+}
+
+
+if (-262144 << 13 !== -2147483648) {
+ $ERROR('#435: -262144 << 13 === -2147483648. Actual: ' + (-262144 << 13));
+}
+
+
+if (-524288 << 13 !== 0) {
+ $ERROR('#436: -524288 << 13 === 0. Actual: ' + (-524288 << 13));
+}
+
+
+if (-1048576 << 13 !== 0) {
+ $ERROR('#437: -1048576 << 13 === 0. Actual: ' + (-1048576 << 13));
+}
+
+
+if (-2097152 << 13 !== 0) {
+ $ERROR('#438: -2097152 << 13 === 0. Actual: ' + (-2097152 << 13));
+}
+
+
+if (-4194304 << 13 !== 0) {
+ $ERROR('#439: -4194304 << 13 === 0. Actual: ' + (-4194304 << 13));
+}
+
+
+if (-8388608 << 13 !== 0) {
+ $ERROR('#440: -8388608 << 13 === 0. Actual: ' + (-8388608 << 13));
+}
+
+
+if (-16777216 << 13 !== 0) {
+ $ERROR('#441: -16777216 << 13 === 0. Actual: ' + (-16777216 << 13));
+}
+
+
+if (-33554432 << 13 !== 0) {
+ $ERROR('#442: -33554432 << 13 === 0. Actual: ' + (-33554432 << 13));
+}
+
+
+if (-67108864 << 13 !== 0) {
+ $ERROR('#443: -67108864 << 13 === 0. Actual: ' + (-67108864 << 13));
+}
+
+
+if (-134217728 << 13 !== 0) {
+ $ERROR('#444: -134217728 << 13 === 0. Actual: ' + (-134217728 << 13));
+}
+
+
+if (-268435456 << 13 !== 0) {
+ $ERROR('#445: -268435456 << 13 === 0. Actual: ' + (-268435456 << 13));
+}
+
+
+if (-536870912 << 13 !== 0) {
+ $ERROR('#446: -536870912 << 13 === 0. Actual: ' + (-536870912 << 13));
+}
+
+
+if (-1073741824 << 13 !== 0) {
+ $ERROR('#447: -1073741824 << 13 === 0. Actual: ' + (-1073741824 << 13));
+}
+
+
+if (-2147483648 << 13 !== 0) {
+ $ERROR('#448: -2147483648 << 13 === 0. Actual: ' + (-2147483648 << 13));
+}
+
+
+if (-1 << 14 !== -16384) {
+ $ERROR('#449: -1 << 14 === -16384. Actual: ' + (-1 << 14));
+}
+
+
+if (-2 << 14 !== -32768) {
+ $ERROR('#450: -2 << 14 === -32768. Actual: ' + (-2 << 14));
+}
+
+
+if (-4 << 14 !== -65536) {
+ $ERROR('#451: -4 << 14 === -65536. Actual: ' + (-4 << 14));
+}
+
+
+if (-8 << 14 !== -131072) {
+ $ERROR('#452: -8 << 14 === -131072. Actual: ' + (-8 << 14));
+}
+
+
+if (-16 << 14 !== -262144) {
+ $ERROR('#453: -16 << 14 === -262144. Actual: ' + (-16 << 14));
+}
+
+
+if (-32 << 14 !== -524288) {
+ $ERROR('#454: -32 << 14 === -524288. Actual: ' + (-32 << 14));
+}
+
+
+if (-64 << 14 !== -1048576) {
+ $ERROR('#455: -64 << 14 === -1048576. Actual: ' + (-64 << 14));
+}
+
+
+if (-128 << 14 !== -2097152) {
+ $ERROR('#456: -128 << 14 === -2097152. Actual: ' + (-128 << 14));
+}
+
+
+if (-256 << 14 !== -4194304) {
+ $ERROR('#457: -256 << 14 === -4194304. Actual: ' + (-256 << 14));
+}
+
+
+if (-512 << 14 !== -8388608) {
+ $ERROR('#458: -512 << 14 === -8388608. Actual: ' + (-512 << 14));
+}
+
+
+if (-1024 << 14 !== -16777216) {
+ $ERROR('#459: -1024 << 14 === -16777216. Actual: ' + (-1024 << 14));
+}
+
+
+if (-2048 << 14 !== -33554432) {
+ $ERROR('#460: -2048 << 14 === -33554432. Actual: ' + (-2048 << 14));
+}
+
+
+if (-4096 << 14 !== -67108864) {
+ $ERROR('#461: -4096 << 14 === -67108864. Actual: ' + (-4096 << 14));
+}
+
+
+if (-8192 << 14 !== -134217728) {
+ $ERROR('#462: -8192 << 14 === -134217728. Actual: ' + (-8192 << 14));
+}
+
+
+if (-16384 << 14 !== -268435456) {
+ $ERROR('#463: -16384 << 14 === -268435456. Actual: ' + (-16384 << 14));
+}
+
+
+if (-32768 << 14 !== -536870912) {
+ $ERROR('#464: -32768 << 14 === -536870912. Actual: ' + (-32768 << 14));
+}
+
+
+if (-65536 << 14 !== -1073741824) {
+ $ERROR('#465: -65536 << 14 === -1073741824. Actual: ' + (-65536 << 14));
+}
+
+
+if (-131072 << 14 !== -2147483648) {
+ $ERROR('#466: -131072 << 14 === -2147483648. Actual: ' + (-131072 << 14));
+}
+
+
+if (-262144 << 14 !== 0) {
+ $ERROR('#467: -262144 << 14 === 0. Actual: ' + (-262144 << 14));
+}
+
+
+if (-524288 << 14 !== 0) {
+ $ERROR('#468: -524288 << 14 === 0. Actual: ' + (-524288 << 14));
+}
+
+
+if (-1048576 << 14 !== 0) {
+ $ERROR('#469: -1048576 << 14 === 0. Actual: ' + (-1048576 << 14));
+}
+
+
+if (-2097152 << 14 !== 0) {
+ $ERROR('#470: -2097152 << 14 === 0. Actual: ' + (-2097152 << 14));
+}
+
+
+if (-4194304 << 14 !== 0) {
+ $ERROR('#471: -4194304 << 14 === 0. Actual: ' + (-4194304 << 14));
+}
+
+
+if (-8388608 << 14 !== 0) {
+ $ERROR('#472: -8388608 << 14 === 0. Actual: ' + (-8388608 << 14));
+}
+
+
+if (-16777216 << 14 !== 0) {
+ $ERROR('#473: -16777216 << 14 === 0. Actual: ' + (-16777216 << 14));
+}
+
+
+if (-33554432 << 14 !== 0) {
+ $ERROR('#474: -33554432 << 14 === 0. Actual: ' + (-33554432 << 14));
+}
+
+
+if (-67108864 << 14 !== 0) {
+ $ERROR('#475: -67108864 << 14 === 0. Actual: ' + (-67108864 << 14));
+}
+
+
+if (-134217728 << 14 !== 0) {
+ $ERROR('#476: -134217728 << 14 === 0. Actual: ' + (-134217728 << 14));
+}
+
+
+if (-268435456 << 14 !== 0) {
+ $ERROR('#477: -268435456 << 14 === 0. Actual: ' + (-268435456 << 14));
+}
+
+
+if (-536870912 << 14 !== 0) {
+ $ERROR('#478: -536870912 << 14 === 0. Actual: ' + (-536870912 << 14));
+}
+
+
+if (-1073741824 << 14 !== 0) {
+ $ERROR('#479: -1073741824 << 14 === 0. Actual: ' + (-1073741824 << 14));
+}
+
+
+if (-2147483648 << 14 !== 0) {
+ $ERROR('#480: -2147483648 << 14 === 0. Actual: ' + (-2147483648 << 14));
+}
+
+
+if (-1 << 15 !== -32768) {
+ $ERROR('#481: -1 << 15 === -32768. Actual: ' + (-1 << 15));
+}
+
+
+if (-2 << 15 !== -65536) {
+ $ERROR('#482: -2 << 15 === -65536. Actual: ' + (-2 << 15));
+}
+
+
+if (-4 << 15 !== -131072) {
+ $ERROR('#483: -4 << 15 === -131072. Actual: ' + (-4 << 15));
+}
+
+
+if (-8 << 15 !== -262144) {
+ $ERROR('#484: -8 << 15 === -262144. Actual: ' + (-8 << 15));
+}
+
+
+if (-16 << 15 !== -524288) {
+ $ERROR('#485: -16 << 15 === -524288. Actual: ' + (-16 << 15));
+}
+
+
+if (-32 << 15 !== -1048576) {
+ $ERROR('#486: -32 << 15 === -1048576. Actual: ' + (-32 << 15));
+}
+
+
+if (-64 << 15 !== -2097152) {
+ $ERROR('#487: -64 << 15 === -2097152. Actual: ' + (-64 << 15));
+}
+
+
+if (-128 << 15 !== -4194304) {
+ $ERROR('#488: -128 << 15 === -4194304. Actual: ' + (-128 << 15));
+}
+
+
+if (-256 << 15 !== -8388608) {
+ $ERROR('#489: -256 << 15 === -8388608. Actual: ' + (-256 << 15));
+}
+
+
+if (-512 << 15 !== -16777216) {
+ $ERROR('#490: -512 << 15 === -16777216. Actual: ' + (-512 << 15));
+}
+
+
+if (-1024 << 15 !== -33554432) {
+ $ERROR('#491: -1024 << 15 === -33554432. Actual: ' + (-1024 << 15));
+}
+
+
+if (-2048 << 15 !== -67108864) {
+ $ERROR('#492: -2048 << 15 === -67108864. Actual: ' + (-2048 << 15));
+}
+
+
+if (-4096 << 15 !== -134217728) {
+ $ERROR('#493: -4096 << 15 === -134217728. Actual: ' + (-4096 << 15));
+}
+
+
+if (-8192 << 15 !== -268435456) {
+ $ERROR('#494: -8192 << 15 === -268435456. Actual: ' + (-8192 << 15));
+}
+
+
+if (-16384 << 15 !== -536870912) {
+ $ERROR('#495: -16384 << 15 === -536870912. Actual: ' + (-16384 << 15));
+}
+
+
+if (-32768 << 15 !== -1073741824) {
+ $ERROR('#496: -32768 << 15 === -1073741824. Actual: ' + (-32768 << 15));
+}
+
+
+if (-65536 << 15 !== -2147483648) {
+ $ERROR('#497: -65536 << 15 === -2147483648. Actual: ' + (-65536 << 15));
+}
+
+
+if (-131072 << 15 !== 0) {
+ $ERROR('#498: -131072 << 15 === 0. Actual: ' + (-131072 << 15));
+}
+
+
+if (-262144 << 15 !== 0) {
+ $ERROR('#499: -262144 << 15 === 0. Actual: ' + (-262144 << 15));
+}
+
+
+if (-524288 << 15 !== 0) {
+ $ERROR('#500: -524288 << 15 === 0. Actual: ' + (-524288 << 15));
+}
+
+
+if (-1048576 << 15 !== 0) {
+ $ERROR('#501: -1048576 << 15 === 0. Actual: ' + (-1048576 << 15));
+}
+
+
+if (-2097152 << 15 !== 0) {
+ $ERROR('#502: -2097152 << 15 === 0. Actual: ' + (-2097152 << 15));
+}
+
+
+if (-4194304 << 15 !== 0) {
+ $ERROR('#503: -4194304 << 15 === 0. Actual: ' + (-4194304 << 15));
+}
+
+
+if (-8388608 << 15 !== 0) {
+ $ERROR('#504: -8388608 << 15 === 0. Actual: ' + (-8388608 << 15));
+}
+
+
+if (-16777216 << 15 !== 0) {
+ $ERROR('#505: -16777216 << 15 === 0. Actual: ' + (-16777216 << 15));
+}
+
+
+if (-33554432 << 15 !== 0) {
+ $ERROR('#506: -33554432 << 15 === 0. Actual: ' + (-33554432 << 15));
+}
+
+
+if (-67108864 << 15 !== 0) {
+ $ERROR('#507: -67108864 << 15 === 0. Actual: ' + (-67108864 << 15));
+}
+
+
+if (-134217728 << 15 !== 0) {
+ $ERROR('#508: -134217728 << 15 === 0. Actual: ' + (-134217728 << 15));
+}
+
+
+if (-268435456 << 15 !== 0) {
+ $ERROR('#509: -268435456 << 15 === 0. Actual: ' + (-268435456 << 15));
+}
+
+
+if (-536870912 << 15 !== 0) {
+ $ERROR('#510: -536870912 << 15 === 0. Actual: ' + (-536870912 << 15));
+}
+
+
+if (-1073741824 << 15 !== 0) {
+ $ERROR('#511: -1073741824 << 15 === 0. Actual: ' + (-1073741824 << 15));
+}
+
+
+if (-2147483648 << 15 !== 0) {
+ $ERROR('#512: -2147483648 << 15 === 0. Actual: ' + (-2147483648 << 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T2.js
new file mode 100644
index 000000000..373dc5cbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T2.js
@@ -0,0 +1,2571 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A4_T2;
+ * @section: 11.7.1;
+ * @assertion: Check operator x << y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (-1 << 16 !== -65536) {
+ $ERROR('#513: -1 << 16 === -65536. Actual: ' + (-1 << 16));
+}
+
+
+if (-2 << 16 !== -131072) {
+ $ERROR('#514: -2 << 16 === -131072. Actual: ' + (-2 << 16));
+}
+
+
+if (-4 << 16 !== -262144) {
+ $ERROR('#515: -4 << 16 === -262144. Actual: ' + (-4 << 16));
+}
+
+
+if (-8 << 16 !== -524288) {
+ $ERROR('#516: -8 << 16 === -524288. Actual: ' + (-8 << 16));
+}
+
+
+if (-16 << 16 !== -1048576) {
+ $ERROR('#517: -16 << 16 === -1048576. Actual: ' + (-16 << 16));
+}
+
+
+if (-32 << 16 !== -2097152) {
+ $ERROR('#518: -32 << 16 === -2097152. Actual: ' + (-32 << 16));
+}
+
+
+if (-64 << 16 !== -4194304) {
+ $ERROR('#519: -64 << 16 === -4194304. Actual: ' + (-64 << 16));
+}
+
+
+if (-128 << 16 !== -8388608) {
+ $ERROR('#520: -128 << 16 === -8388608. Actual: ' + (-128 << 16));
+}
+
+
+if (-256 << 16 !== -16777216) {
+ $ERROR('#521: -256 << 16 === -16777216. Actual: ' + (-256 << 16));
+}
+
+
+if (-512 << 16 !== -33554432) {
+ $ERROR('#522: -512 << 16 === -33554432. Actual: ' + (-512 << 16));
+}
+
+
+if (-1024 << 16 !== -67108864) {
+ $ERROR('#523: -1024 << 16 === -67108864. Actual: ' + (-1024 << 16));
+}
+
+
+if (-2048 << 16 !== -134217728) {
+ $ERROR('#524: -2048 << 16 === -134217728. Actual: ' + (-2048 << 16));
+}
+
+
+if (-4096 << 16 !== -268435456) {
+ $ERROR('#525: -4096 << 16 === -268435456. Actual: ' + (-4096 << 16));
+}
+
+
+if (-8192 << 16 !== -536870912) {
+ $ERROR('#526: -8192 << 16 === -536870912. Actual: ' + (-8192 << 16));
+}
+
+
+if (-16384 << 16 !== -1073741824) {
+ $ERROR('#527: -16384 << 16 === -1073741824. Actual: ' + (-16384 << 16));
+}
+
+
+if (-32768 << 16 !== -2147483648) {
+ $ERROR('#528: -32768 << 16 === -2147483648. Actual: ' + (-32768 << 16));
+}
+
+
+if (-65536 << 16 !== 0) {
+ $ERROR('#529: -65536 << 16 === 0. Actual: ' + (-65536 << 16));
+}
+
+
+if (-131072 << 16 !== 0) {
+ $ERROR('#530: -131072 << 16 === 0. Actual: ' + (-131072 << 16));
+}
+
+
+if (-262144 << 16 !== 0) {
+ $ERROR('#531: -262144 << 16 === 0. Actual: ' + (-262144 << 16));
+}
+
+
+if (-524288 << 16 !== 0) {
+ $ERROR('#532: -524288 << 16 === 0. Actual: ' + (-524288 << 16));
+}
+
+
+if (-1048576 << 16 !== 0) {
+ $ERROR('#533: -1048576 << 16 === 0. Actual: ' + (-1048576 << 16));
+}
+
+
+if (-2097152 << 16 !== 0) {
+ $ERROR('#534: -2097152 << 16 === 0. Actual: ' + (-2097152 << 16));
+}
+
+
+if (-4194304 << 16 !== 0) {
+ $ERROR('#535: -4194304 << 16 === 0. Actual: ' + (-4194304 << 16));
+}
+
+
+if (-8388608 << 16 !== 0) {
+ $ERROR('#536: -8388608 << 16 === 0. Actual: ' + (-8388608 << 16));
+}
+
+
+if (-16777216 << 16 !== 0) {
+ $ERROR('#537: -16777216 << 16 === 0. Actual: ' + (-16777216 << 16));
+}
+
+
+if (-33554432 << 16 !== 0) {
+ $ERROR('#538: -33554432 << 16 === 0. Actual: ' + (-33554432 << 16));
+}
+
+
+if (-67108864 << 16 !== 0) {
+ $ERROR('#539: -67108864 << 16 === 0. Actual: ' + (-67108864 << 16));
+}
+
+
+if (-134217728 << 16 !== 0) {
+ $ERROR('#540: -134217728 << 16 === 0. Actual: ' + (-134217728 << 16));
+}
+
+
+if (-268435456 << 16 !== 0) {
+ $ERROR('#541: -268435456 << 16 === 0. Actual: ' + (-268435456 << 16));
+}
+
+
+if (-536870912 << 16 !== 0) {
+ $ERROR('#542: -536870912 << 16 === 0. Actual: ' + (-536870912 << 16));
+}
+
+
+if (-1073741824 << 16 !== 0) {
+ $ERROR('#543: -1073741824 << 16 === 0. Actual: ' + (-1073741824 << 16));
+}
+
+
+if (-2147483648 << 16 !== 0) {
+ $ERROR('#544: -2147483648 << 16 === 0. Actual: ' + (-2147483648 << 16));
+}
+
+
+if (-1 << 17 !== -131072) {
+ $ERROR('#545: -1 << 17 === -131072. Actual: ' + (-1 << 17));
+}
+
+
+if (-2 << 17 !== -262144) {
+ $ERROR('#546: -2 << 17 === -262144. Actual: ' + (-2 << 17));
+}
+
+
+if (-4 << 17 !== -524288) {
+ $ERROR('#547: -4 << 17 === -524288. Actual: ' + (-4 << 17));
+}
+
+
+if (-8 << 17 !== -1048576) {
+ $ERROR('#548: -8 << 17 === -1048576. Actual: ' + (-8 << 17));
+}
+
+
+if (-16 << 17 !== -2097152) {
+ $ERROR('#549: -16 << 17 === -2097152. Actual: ' + (-16 << 17));
+}
+
+
+if (-32 << 17 !== -4194304) {
+ $ERROR('#550: -32 << 17 === -4194304. Actual: ' + (-32 << 17));
+}
+
+
+if (-64 << 17 !== -8388608) {
+ $ERROR('#551: -64 << 17 === -8388608. Actual: ' + (-64 << 17));
+}
+
+
+if (-128 << 17 !== -16777216) {
+ $ERROR('#552: -128 << 17 === -16777216. Actual: ' + (-128 << 17));
+}
+
+
+if (-256 << 17 !== -33554432) {
+ $ERROR('#553: -256 << 17 === -33554432. Actual: ' + (-256 << 17));
+}
+
+
+if (-512 << 17 !== -67108864) {
+ $ERROR('#554: -512 << 17 === -67108864. Actual: ' + (-512 << 17));
+}
+
+
+if (-1024 << 17 !== -134217728) {
+ $ERROR('#555: -1024 << 17 === -134217728. Actual: ' + (-1024 << 17));
+}
+
+
+if (-2048 << 17 !== -268435456) {
+ $ERROR('#556: -2048 << 17 === -268435456. Actual: ' + (-2048 << 17));
+}
+
+
+if (-4096 << 17 !== -536870912) {
+ $ERROR('#557: -4096 << 17 === -536870912. Actual: ' + (-4096 << 17));
+}
+
+
+if (-8192 << 17 !== -1073741824) {
+ $ERROR('#558: -8192 << 17 === -1073741824. Actual: ' + (-8192 << 17));
+}
+
+
+if (-16384 << 17 !== -2147483648) {
+ $ERROR('#559: -16384 << 17 === -2147483648. Actual: ' + (-16384 << 17));
+}
+
+
+if (-32768 << 17 !== 0) {
+ $ERROR('#560: -32768 << 17 === 0. Actual: ' + (-32768 << 17));
+}
+
+
+if (-65536 << 17 !== 0) {
+ $ERROR('#561: -65536 << 17 === 0. Actual: ' + (-65536 << 17));
+}
+
+
+if (-131072 << 17 !== 0) {
+ $ERROR('#562: -131072 << 17 === 0. Actual: ' + (-131072 << 17));
+}
+
+
+if (-262144 << 17 !== 0) {
+ $ERROR('#563: -262144 << 17 === 0. Actual: ' + (-262144 << 17));
+}
+
+
+if (-524288 << 17 !== 0) {
+ $ERROR('#564: -524288 << 17 === 0. Actual: ' + (-524288 << 17));
+}
+
+
+if (-1048576 << 17 !== 0) {
+ $ERROR('#565: -1048576 << 17 === 0. Actual: ' + (-1048576 << 17));
+}
+
+
+if (-2097152 << 17 !== 0) {
+ $ERROR('#566: -2097152 << 17 === 0. Actual: ' + (-2097152 << 17));
+}
+
+
+if (-4194304 << 17 !== 0) {
+ $ERROR('#567: -4194304 << 17 === 0. Actual: ' + (-4194304 << 17));
+}
+
+
+if (-8388608 << 17 !== 0) {
+ $ERROR('#568: -8388608 << 17 === 0. Actual: ' + (-8388608 << 17));
+}
+
+
+if (-16777216 << 17 !== 0) {
+ $ERROR('#569: -16777216 << 17 === 0. Actual: ' + (-16777216 << 17));
+}
+
+
+if (-33554432 << 17 !== 0) {
+ $ERROR('#570: -33554432 << 17 === 0. Actual: ' + (-33554432 << 17));
+}
+
+
+if (-67108864 << 17 !== 0) {
+ $ERROR('#571: -67108864 << 17 === 0. Actual: ' + (-67108864 << 17));
+}
+
+
+if (-134217728 << 17 !== 0) {
+ $ERROR('#572: -134217728 << 17 === 0. Actual: ' + (-134217728 << 17));
+}
+
+
+if (-268435456 << 17 !== 0) {
+ $ERROR('#573: -268435456 << 17 === 0. Actual: ' + (-268435456 << 17));
+}
+
+
+if (-536870912 << 17 !== 0) {
+ $ERROR('#574: -536870912 << 17 === 0. Actual: ' + (-536870912 << 17));
+}
+
+
+if (-1073741824 << 17 !== 0) {
+ $ERROR('#575: -1073741824 << 17 === 0. Actual: ' + (-1073741824 << 17));
+}
+
+
+if (-2147483648 << 17 !== 0) {
+ $ERROR('#576: -2147483648 << 17 === 0. Actual: ' + (-2147483648 << 17));
+}
+
+
+if (-1 << 18 !== -262144) {
+ $ERROR('#577: -1 << 18 === -262144. Actual: ' + (-1 << 18));
+}
+
+
+if (-2 << 18 !== -524288) {
+ $ERROR('#578: -2 << 18 === -524288. Actual: ' + (-2 << 18));
+}
+
+
+if (-4 << 18 !== -1048576) {
+ $ERROR('#579: -4 << 18 === -1048576. Actual: ' + (-4 << 18));
+}
+
+
+if (-8 << 18 !== -2097152) {
+ $ERROR('#580: -8 << 18 === -2097152. Actual: ' + (-8 << 18));
+}
+
+
+if (-16 << 18 !== -4194304) {
+ $ERROR('#581: -16 << 18 === -4194304. Actual: ' + (-16 << 18));
+}
+
+
+if (-32 << 18 !== -8388608) {
+ $ERROR('#582: -32 << 18 === -8388608. Actual: ' + (-32 << 18));
+}
+
+
+if (-64 << 18 !== -16777216) {
+ $ERROR('#583: -64 << 18 === -16777216. Actual: ' + (-64 << 18));
+}
+
+
+if (-128 << 18 !== -33554432) {
+ $ERROR('#584: -128 << 18 === -33554432. Actual: ' + (-128 << 18));
+}
+
+
+if (-256 << 18 !== -67108864) {
+ $ERROR('#585: -256 << 18 === -67108864. Actual: ' + (-256 << 18));
+}
+
+
+if (-512 << 18 !== -134217728) {
+ $ERROR('#586: -512 << 18 === -134217728. Actual: ' + (-512 << 18));
+}
+
+
+if (-1024 << 18 !== -268435456) {
+ $ERROR('#587: -1024 << 18 === -268435456. Actual: ' + (-1024 << 18));
+}
+
+
+if (-2048 << 18 !== -536870912) {
+ $ERROR('#588: -2048 << 18 === -536870912. Actual: ' + (-2048 << 18));
+}
+
+
+if (-4096 << 18 !== -1073741824) {
+ $ERROR('#589: -4096 << 18 === -1073741824. Actual: ' + (-4096 << 18));
+}
+
+
+if (-8192 << 18 !== -2147483648) {
+ $ERROR('#590: -8192 << 18 === -2147483648. Actual: ' + (-8192 << 18));
+}
+
+
+if (-16384 << 18 !== 0) {
+ $ERROR('#591: -16384 << 18 === 0. Actual: ' + (-16384 << 18));
+}
+
+
+if (-32768 << 18 !== 0) {
+ $ERROR('#592: -32768 << 18 === 0. Actual: ' + (-32768 << 18));
+}
+
+
+if (-65536 << 18 !== 0) {
+ $ERROR('#593: -65536 << 18 === 0. Actual: ' + (-65536 << 18));
+}
+
+
+if (-131072 << 18 !== 0) {
+ $ERROR('#594: -131072 << 18 === 0. Actual: ' + (-131072 << 18));
+}
+
+
+if (-262144 << 18 !== 0) {
+ $ERROR('#595: -262144 << 18 === 0. Actual: ' + (-262144 << 18));
+}
+
+
+if (-524288 << 18 !== 0) {
+ $ERROR('#596: -524288 << 18 === 0. Actual: ' + (-524288 << 18));
+}
+
+
+if (-1048576 << 18 !== 0) {
+ $ERROR('#597: -1048576 << 18 === 0. Actual: ' + (-1048576 << 18));
+}
+
+
+if (-2097152 << 18 !== 0) {
+ $ERROR('#598: -2097152 << 18 === 0. Actual: ' + (-2097152 << 18));
+}
+
+
+if (-4194304 << 18 !== 0) {
+ $ERROR('#599: -4194304 << 18 === 0. Actual: ' + (-4194304 << 18));
+}
+
+
+if (-8388608 << 18 !== 0) {
+ $ERROR('#600: -8388608 << 18 === 0. Actual: ' + (-8388608 << 18));
+}
+
+
+if (-16777216 << 18 !== 0) {
+ $ERROR('#601: -16777216 << 18 === 0. Actual: ' + (-16777216 << 18));
+}
+
+
+if (-33554432 << 18 !== 0) {
+ $ERROR('#602: -33554432 << 18 === 0. Actual: ' + (-33554432 << 18));
+}
+
+
+if (-67108864 << 18 !== 0) {
+ $ERROR('#603: -67108864 << 18 === 0. Actual: ' + (-67108864 << 18));
+}
+
+
+if (-134217728 << 18 !== 0) {
+ $ERROR('#604: -134217728 << 18 === 0. Actual: ' + (-134217728 << 18));
+}
+
+
+if (-268435456 << 18 !== 0) {
+ $ERROR('#605: -268435456 << 18 === 0. Actual: ' + (-268435456 << 18));
+}
+
+
+if (-536870912 << 18 !== 0) {
+ $ERROR('#606: -536870912 << 18 === 0. Actual: ' + (-536870912 << 18));
+}
+
+
+if (-1073741824 << 18 !== 0) {
+ $ERROR('#607: -1073741824 << 18 === 0. Actual: ' + (-1073741824 << 18));
+}
+
+
+if (-2147483648 << 18 !== 0) {
+ $ERROR('#608: -2147483648 << 18 === 0. Actual: ' + (-2147483648 << 18));
+}
+
+
+if (-1 << 19 !== -524288) {
+ $ERROR('#609: -1 << 19 === -524288. Actual: ' + (-1 << 19));
+}
+
+
+if (-2 << 19 !== -1048576) {
+ $ERROR('#610: -2 << 19 === -1048576. Actual: ' + (-2 << 19));
+}
+
+
+if (-4 << 19 !== -2097152) {
+ $ERROR('#611: -4 << 19 === -2097152. Actual: ' + (-4 << 19));
+}
+
+
+if (-8 << 19 !== -4194304) {
+ $ERROR('#612: -8 << 19 === -4194304. Actual: ' + (-8 << 19));
+}
+
+
+if (-16 << 19 !== -8388608) {
+ $ERROR('#613: -16 << 19 === -8388608. Actual: ' + (-16 << 19));
+}
+
+
+if (-32 << 19 !== -16777216) {
+ $ERROR('#614: -32 << 19 === -16777216. Actual: ' + (-32 << 19));
+}
+
+
+if (-64 << 19 !== -33554432) {
+ $ERROR('#615: -64 << 19 === -33554432. Actual: ' + (-64 << 19));
+}
+
+
+if (-128 << 19 !== -67108864) {
+ $ERROR('#616: -128 << 19 === -67108864. Actual: ' + (-128 << 19));
+}
+
+
+if (-256 << 19 !== -134217728) {
+ $ERROR('#617: -256 << 19 === -134217728. Actual: ' + (-256 << 19));
+}
+
+
+if (-512 << 19 !== -268435456) {
+ $ERROR('#618: -512 << 19 === -268435456. Actual: ' + (-512 << 19));
+}
+
+
+if (-1024 << 19 !== -536870912) {
+ $ERROR('#619: -1024 << 19 === -536870912. Actual: ' + (-1024 << 19));
+}
+
+
+if (-2048 << 19 !== -1073741824) {
+ $ERROR('#620: -2048 << 19 === -1073741824. Actual: ' + (-2048 << 19));
+}
+
+
+if (-4096 << 19 !== -2147483648) {
+ $ERROR('#621: -4096 << 19 === -2147483648. Actual: ' + (-4096 << 19));
+}
+
+
+if (-8192 << 19 !== 0) {
+ $ERROR('#622: -8192 << 19 === 0. Actual: ' + (-8192 << 19));
+}
+
+
+if (-16384 << 19 !== 0) {
+ $ERROR('#623: -16384 << 19 === 0. Actual: ' + (-16384 << 19));
+}
+
+
+if (-32768 << 19 !== 0) {
+ $ERROR('#624: -32768 << 19 === 0. Actual: ' + (-32768 << 19));
+}
+
+
+if (-65536 << 19 !== 0) {
+ $ERROR('#625: -65536 << 19 === 0. Actual: ' + (-65536 << 19));
+}
+
+
+if (-131072 << 19 !== 0) {
+ $ERROR('#626: -131072 << 19 === 0. Actual: ' + (-131072 << 19));
+}
+
+
+if (-262144 << 19 !== 0) {
+ $ERROR('#627: -262144 << 19 === 0. Actual: ' + (-262144 << 19));
+}
+
+
+if (-524288 << 19 !== 0) {
+ $ERROR('#628: -524288 << 19 === 0. Actual: ' + (-524288 << 19));
+}
+
+
+if (-1048576 << 19 !== 0) {
+ $ERROR('#629: -1048576 << 19 === 0. Actual: ' + (-1048576 << 19));
+}
+
+
+if (-2097152 << 19 !== 0) {
+ $ERROR('#630: -2097152 << 19 === 0. Actual: ' + (-2097152 << 19));
+}
+
+
+if (-4194304 << 19 !== 0) {
+ $ERROR('#631: -4194304 << 19 === 0. Actual: ' + (-4194304 << 19));
+}
+
+
+if (-8388608 << 19 !== 0) {
+ $ERROR('#632: -8388608 << 19 === 0. Actual: ' + (-8388608 << 19));
+}
+
+
+if (-16777216 << 19 !== 0) {
+ $ERROR('#633: -16777216 << 19 === 0. Actual: ' + (-16777216 << 19));
+}
+
+
+if (-33554432 << 19 !== 0) {
+ $ERROR('#634: -33554432 << 19 === 0. Actual: ' + (-33554432 << 19));
+}
+
+
+if (-67108864 << 19 !== 0) {
+ $ERROR('#635: -67108864 << 19 === 0. Actual: ' + (-67108864 << 19));
+}
+
+
+if (-134217728 << 19 !== 0) {
+ $ERROR('#636: -134217728 << 19 === 0. Actual: ' + (-134217728 << 19));
+}
+
+
+if (-268435456 << 19 !== 0) {
+ $ERROR('#637: -268435456 << 19 === 0. Actual: ' + (-268435456 << 19));
+}
+
+
+if (-536870912 << 19 !== 0) {
+ $ERROR('#638: -536870912 << 19 === 0. Actual: ' + (-536870912 << 19));
+}
+
+
+if (-1073741824 << 19 !== 0) {
+ $ERROR('#639: -1073741824 << 19 === 0. Actual: ' + (-1073741824 << 19));
+}
+
+
+if (-2147483648 << 19 !== 0) {
+ $ERROR('#640: -2147483648 << 19 === 0. Actual: ' + (-2147483648 << 19));
+}
+
+
+if (-1 << 20 !== -1048576) {
+ $ERROR('#641: -1 << 20 === -1048576. Actual: ' + (-1 << 20));
+}
+
+
+if (-2 << 20 !== -2097152) {
+ $ERROR('#642: -2 << 20 === -2097152. Actual: ' + (-2 << 20));
+}
+
+
+if (-4 << 20 !== -4194304) {
+ $ERROR('#643: -4 << 20 === -4194304. Actual: ' + (-4 << 20));
+}
+
+
+if (-8 << 20 !== -8388608) {
+ $ERROR('#644: -8 << 20 === -8388608. Actual: ' + (-8 << 20));
+}
+
+
+if (-16 << 20 !== -16777216) {
+ $ERROR('#645: -16 << 20 === -16777216. Actual: ' + (-16 << 20));
+}
+
+
+if (-32 << 20 !== -33554432) {
+ $ERROR('#646: -32 << 20 === -33554432. Actual: ' + (-32 << 20));
+}
+
+
+if (-64 << 20 !== -67108864) {
+ $ERROR('#647: -64 << 20 === -67108864. Actual: ' + (-64 << 20));
+}
+
+
+if (-128 << 20 !== -134217728) {
+ $ERROR('#648: -128 << 20 === -134217728. Actual: ' + (-128 << 20));
+}
+
+
+if (-256 << 20 !== -268435456) {
+ $ERROR('#649: -256 << 20 === -268435456. Actual: ' + (-256 << 20));
+}
+
+
+if (-512 << 20 !== -536870912) {
+ $ERROR('#650: -512 << 20 === -536870912. Actual: ' + (-512 << 20));
+}
+
+
+if (-1024 << 20 !== -1073741824) {
+ $ERROR('#651: -1024 << 20 === -1073741824. Actual: ' + (-1024 << 20));
+}
+
+
+if (-2048 << 20 !== -2147483648) {
+ $ERROR('#652: -2048 << 20 === -2147483648. Actual: ' + (-2048 << 20));
+}
+
+
+if (-4096 << 20 !== 0) {
+ $ERROR('#653: -4096 << 20 === 0. Actual: ' + (-4096 << 20));
+}
+
+
+if (-8192 << 20 !== 0) {
+ $ERROR('#654: -8192 << 20 === 0. Actual: ' + (-8192 << 20));
+}
+
+
+if (-16384 << 20 !== 0) {
+ $ERROR('#655: -16384 << 20 === 0. Actual: ' + (-16384 << 20));
+}
+
+
+if (-32768 << 20 !== 0) {
+ $ERROR('#656: -32768 << 20 === 0. Actual: ' + (-32768 << 20));
+}
+
+
+if (-65536 << 20 !== 0) {
+ $ERROR('#657: -65536 << 20 === 0. Actual: ' + (-65536 << 20));
+}
+
+
+if (-131072 << 20 !== 0) {
+ $ERROR('#658: -131072 << 20 === 0. Actual: ' + (-131072 << 20));
+}
+
+
+if (-262144 << 20 !== 0) {
+ $ERROR('#659: -262144 << 20 === 0. Actual: ' + (-262144 << 20));
+}
+
+
+if (-524288 << 20 !== 0) {
+ $ERROR('#660: -524288 << 20 === 0. Actual: ' + (-524288 << 20));
+}
+
+
+if (-1048576 << 20 !== 0) {
+ $ERROR('#661: -1048576 << 20 === 0. Actual: ' + (-1048576 << 20));
+}
+
+
+if (-2097152 << 20 !== 0) {
+ $ERROR('#662: -2097152 << 20 === 0. Actual: ' + (-2097152 << 20));
+}
+
+
+if (-4194304 << 20 !== 0) {
+ $ERROR('#663: -4194304 << 20 === 0. Actual: ' + (-4194304 << 20));
+}
+
+
+if (-8388608 << 20 !== 0) {
+ $ERROR('#664: -8388608 << 20 === 0. Actual: ' + (-8388608 << 20));
+}
+
+
+if (-16777216 << 20 !== 0) {
+ $ERROR('#665: -16777216 << 20 === 0. Actual: ' + (-16777216 << 20));
+}
+
+
+if (-33554432 << 20 !== 0) {
+ $ERROR('#666: -33554432 << 20 === 0. Actual: ' + (-33554432 << 20));
+}
+
+
+if (-67108864 << 20 !== 0) {
+ $ERROR('#667: -67108864 << 20 === 0. Actual: ' + (-67108864 << 20));
+}
+
+
+if (-134217728 << 20 !== 0) {
+ $ERROR('#668: -134217728 << 20 === 0. Actual: ' + (-134217728 << 20));
+}
+
+
+if (-268435456 << 20 !== 0) {
+ $ERROR('#669: -268435456 << 20 === 0. Actual: ' + (-268435456 << 20));
+}
+
+
+if (-536870912 << 20 !== 0) {
+ $ERROR('#670: -536870912 << 20 === 0. Actual: ' + (-536870912 << 20));
+}
+
+
+if (-1073741824 << 20 !== 0) {
+ $ERROR('#671: -1073741824 << 20 === 0. Actual: ' + (-1073741824 << 20));
+}
+
+
+if (-2147483648 << 20 !== 0) {
+ $ERROR('#672: -2147483648 << 20 === 0. Actual: ' + (-2147483648 << 20));
+}
+
+
+if (-1 << 21 !== -2097152) {
+ $ERROR('#673: -1 << 21 === -2097152. Actual: ' + (-1 << 21));
+}
+
+
+if (-2 << 21 !== -4194304) {
+ $ERROR('#674: -2 << 21 === -4194304. Actual: ' + (-2 << 21));
+}
+
+
+if (-4 << 21 !== -8388608) {
+ $ERROR('#675: -4 << 21 === -8388608. Actual: ' + (-4 << 21));
+}
+
+
+if (-8 << 21 !== -16777216) {
+ $ERROR('#676: -8 << 21 === -16777216. Actual: ' + (-8 << 21));
+}
+
+
+if (-16 << 21 !== -33554432) {
+ $ERROR('#677: -16 << 21 === -33554432. Actual: ' + (-16 << 21));
+}
+
+
+if (-32 << 21 !== -67108864) {
+ $ERROR('#678: -32 << 21 === -67108864. Actual: ' + (-32 << 21));
+}
+
+
+if (-64 << 21 !== -134217728) {
+ $ERROR('#679: -64 << 21 === -134217728. Actual: ' + (-64 << 21));
+}
+
+
+if (-128 << 21 !== -268435456) {
+ $ERROR('#680: -128 << 21 === -268435456. Actual: ' + (-128 << 21));
+}
+
+
+if (-256 << 21 !== -536870912) {
+ $ERROR('#681: -256 << 21 === -536870912. Actual: ' + (-256 << 21));
+}
+
+
+if (-512 << 21 !== -1073741824) {
+ $ERROR('#682: -512 << 21 === -1073741824. Actual: ' + (-512 << 21));
+}
+
+
+if (-1024 << 21 !== -2147483648) {
+ $ERROR('#683: -1024 << 21 === -2147483648. Actual: ' + (-1024 << 21));
+}
+
+
+if (-2048 << 21 !== 0) {
+ $ERROR('#684: -2048 << 21 === 0. Actual: ' + (-2048 << 21));
+}
+
+
+if (-4096 << 21 !== 0) {
+ $ERROR('#685: -4096 << 21 === 0. Actual: ' + (-4096 << 21));
+}
+
+
+if (-8192 << 21 !== 0) {
+ $ERROR('#686: -8192 << 21 === 0. Actual: ' + (-8192 << 21));
+}
+
+
+if (-16384 << 21 !== 0) {
+ $ERROR('#687: -16384 << 21 === 0. Actual: ' + (-16384 << 21));
+}
+
+
+if (-32768 << 21 !== 0) {
+ $ERROR('#688: -32768 << 21 === 0. Actual: ' + (-32768 << 21));
+}
+
+
+if (-65536 << 21 !== 0) {
+ $ERROR('#689: -65536 << 21 === 0. Actual: ' + (-65536 << 21));
+}
+
+
+if (-131072 << 21 !== 0) {
+ $ERROR('#690: -131072 << 21 === 0. Actual: ' + (-131072 << 21));
+}
+
+
+if (-262144 << 21 !== 0) {
+ $ERROR('#691: -262144 << 21 === 0. Actual: ' + (-262144 << 21));
+}
+
+
+if (-524288 << 21 !== 0) {
+ $ERROR('#692: -524288 << 21 === 0. Actual: ' + (-524288 << 21));
+}
+
+
+if (-1048576 << 21 !== 0) {
+ $ERROR('#693: -1048576 << 21 === 0. Actual: ' + (-1048576 << 21));
+}
+
+
+if (-2097152 << 21 !== 0) {
+ $ERROR('#694: -2097152 << 21 === 0. Actual: ' + (-2097152 << 21));
+}
+
+
+if (-4194304 << 21 !== 0) {
+ $ERROR('#695: -4194304 << 21 === 0. Actual: ' + (-4194304 << 21));
+}
+
+
+if (-8388608 << 21 !== 0) {
+ $ERROR('#696: -8388608 << 21 === 0. Actual: ' + (-8388608 << 21));
+}
+
+
+if (-16777216 << 21 !== 0) {
+ $ERROR('#697: -16777216 << 21 === 0. Actual: ' + (-16777216 << 21));
+}
+
+
+if (-33554432 << 21 !== 0) {
+ $ERROR('#698: -33554432 << 21 === 0. Actual: ' + (-33554432 << 21));
+}
+
+
+if (-67108864 << 21 !== 0) {
+ $ERROR('#699: -67108864 << 21 === 0. Actual: ' + (-67108864 << 21));
+}
+
+
+if (-134217728 << 21 !== 0) {
+ $ERROR('#700: -134217728 << 21 === 0. Actual: ' + (-134217728 << 21));
+}
+
+
+if (-268435456 << 21 !== 0) {
+ $ERROR('#701: -268435456 << 21 === 0. Actual: ' + (-268435456 << 21));
+}
+
+
+if (-536870912 << 21 !== 0) {
+ $ERROR('#702: -536870912 << 21 === 0. Actual: ' + (-536870912 << 21));
+}
+
+
+if (-1073741824 << 21 !== 0) {
+ $ERROR('#703: -1073741824 << 21 === 0. Actual: ' + (-1073741824 << 21));
+}
+
+
+if (-2147483648 << 21 !== 0) {
+ $ERROR('#704: -2147483648 << 21 === 0. Actual: ' + (-2147483648 << 21));
+}
+
+
+if (-1 << 22 !== -4194304) {
+ $ERROR('#705: -1 << 22 === -4194304. Actual: ' + (-1 << 22));
+}
+
+
+if (-2 << 22 !== -8388608) {
+ $ERROR('#706: -2 << 22 === -8388608. Actual: ' + (-2 << 22));
+}
+
+
+if (-4 << 22 !== -16777216) {
+ $ERROR('#707: -4 << 22 === -16777216. Actual: ' + (-4 << 22));
+}
+
+
+if (-8 << 22 !== -33554432) {
+ $ERROR('#708: -8 << 22 === -33554432. Actual: ' + (-8 << 22));
+}
+
+
+if (-16 << 22 !== -67108864) {
+ $ERROR('#709: -16 << 22 === -67108864. Actual: ' + (-16 << 22));
+}
+
+
+if (-32 << 22 !== -134217728) {
+ $ERROR('#710: -32 << 22 === -134217728. Actual: ' + (-32 << 22));
+}
+
+
+if (-64 << 22 !== -268435456) {
+ $ERROR('#711: -64 << 22 === -268435456. Actual: ' + (-64 << 22));
+}
+
+
+if (-128 << 22 !== -536870912) {
+ $ERROR('#712: -128 << 22 === -536870912. Actual: ' + (-128 << 22));
+}
+
+
+if (-256 << 22 !== -1073741824) {
+ $ERROR('#713: -256 << 22 === -1073741824. Actual: ' + (-256 << 22));
+}
+
+
+if (-512 << 22 !== -2147483648) {
+ $ERROR('#714: -512 << 22 === -2147483648. Actual: ' + (-512 << 22));
+}
+
+
+if (-1024 << 22 !== 0) {
+ $ERROR('#715: -1024 << 22 === 0. Actual: ' + (-1024 << 22));
+}
+
+
+if (-2048 << 22 !== 0) {
+ $ERROR('#716: -2048 << 22 === 0. Actual: ' + (-2048 << 22));
+}
+
+
+if (-4096 << 22 !== 0) {
+ $ERROR('#717: -4096 << 22 === 0. Actual: ' + (-4096 << 22));
+}
+
+
+if (-8192 << 22 !== 0) {
+ $ERROR('#718: -8192 << 22 === 0. Actual: ' + (-8192 << 22));
+}
+
+
+if (-16384 << 22 !== 0) {
+ $ERROR('#719: -16384 << 22 === 0. Actual: ' + (-16384 << 22));
+}
+
+
+if (-32768 << 22 !== 0) {
+ $ERROR('#720: -32768 << 22 === 0. Actual: ' + (-32768 << 22));
+}
+
+
+if (-65536 << 22 !== 0) {
+ $ERROR('#721: -65536 << 22 === 0. Actual: ' + (-65536 << 22));
+}
+
+
+if (-131072 << 22 !== 0) {
+ $ERROR('#722: -131072 << 22 === 0. Actual: ' + (-131072 << 22));
+}
+
+
+if (-262144 << 22 !== 0) {
+ $ERROR('#723: -262144 << 22 === 0. Actual: ' + (-262144 << 22));
+}
+
+
+if (-524288 << 22 !== 0) {
+ $ERROR('#724: -524288 << 22 === 0. Actual: ' + (-524288 << 22));
+}
+
+
+if (-1048576 << 22 !== 0) {
+ $ERROR('#725: -1048576 << 22 === 0. Actual: ' + (-1048576 << 22));
+}
+
+
+if (-2097152 << 22 !== 0) {
+ $ERROR('#726: -2097152 << 22 === 0. Actual: ' + (-2097152 << 22));
+}
+
+
+if (-4194304 << 22 !== 0) {
+ $ERROR('#727: -4194304 << 22 === 0. Actual: ' + (-4194304 << 22));
+}
+
+
+if (-8388608 << 22 !== 0) {
+ $ERROR('#728: -8388608 << 22 === 0. Actual: ' + (-8388608 << 22));
+}
+
+
+if (-16777216 << 22 !== 0) {
+ $ERROR('#729: -16777216 << 22 === 0. Actual: ' + (-16777216 << 22));
+}
+
+
+if (-33554432 << 22 !== 0) {
+ $ERROR('#730: -33554432 << 22 === 0. Actual: ' + (-33554432 << 22));
+}
+
+
+if (-67108864 << 22 !== 0) {
+ $ERROR('#731: -67108864 << 22 === 0. Actual: ' + (-67108864 << 22));
+}
+
+
+if (-134217728 << 22 !== 0) {
+ $ERROR('#732: -134217728 << 22 === 0. Actual: ' + (-134217728 << 22));
+}
+
+
+if (-268435456 << 22 !== 0) {
+ $ERROR('#733: -268435456 << 22 === 0. Actual: ' + (-268435456 << 22));
+}
+
+
+if (-536870912 << 22 !== 0) {
+ $ERROR('#734: -536870912 << 22 === 0. Actual: ' + (-536870912 << 22));
+}
+
+
+if (-1073741824 << 22 !== 0) {
+ $ERROR('#735: -1073741824 << 22 === 0. Actual: ' + (-1073741824 << 22));
+}
+
+
+if (-2147483648 << 22 !== 0) {
+ $ERROR('#736: -2147483648 << 22 === 0. Actual: ' + (-2147483648 << 22));
+}
+
+
+if (-1 << 23 !== -8388608) {
+ $ERROR('#737: -1 << 23 === -8388608. Actual: ' + (-1 << 23));
+}
+
+
+if (-2 << 23 !== -16777216) {
+ $ERROR('#738: -2 << 23 === -16777216. Actual: ' + (-2 << 23));
+}
+
+
+if (-4 << 23 !== -33554432) {
+ $ERROR('#739: -4 << 23 === -33554432. Actual: ' + (-4 << 23));
+}
+
+
+if (-8 << 23 !== -67108864) {
+ $ERROR('#740: -8 << 23 === -67108864. Actual: ' + (-8 << 23));
+}
+
+
+if (-16 << 23 !== -134217728) {
+ $ERROR('#741: -16 << 23 === -134217728. Actual: ' + (-16 << 23));
+}
+
+
+if (-32 << 23 !== -268435456) {
+ $ERROR('#742: -32 << 23 === -268435456. Actual: ' + (-32 << 23));
+}
+
+
+if (-64 << 23 !== -536870912) {
+ $ERROR('#743: -64 << 23 === -536870912. Actual: ' + (-64 << 23));
+}
+
+
+if (-128 << 23 !== -1073741824) {
+ $ERROR('#744: -128 << 23 === -1073741824. Actual: ' + (-128 << 23));
+}
+
+
+if (-256 << 23 !== -2147483648) {
+ $ERROR('#745: -256 << 23 === -2147483648. Actual: ' + (-256 << 23));
+}
+
+
+if (-512 << 23 !== 0) {
+ $ERROR('#746: -512 << 23 === 0. Actual: ' + (-512 << 23));
+}
+
+
+if (-1024 << 23 !== 0) {
+ $ERROR('#747: -1024 << 23 === 0. Actual: ' + (-1024 << 23));
+}
+
+
+if (-2048 << 23 !== 0) {
+ $ERROR('#748: -2048 << 23 === 0. Actual: ' + (-2048 << 23));
+}
+
+
+if (-4096 << 23 !== 0) {
+ $ERROR('#749: -4096 << 23 === 0. Actual: ' + (-4096 << 23));
+}
+
+
+if (-8192 << 23 !== 0) {
+ $ERROR('#750: -8192 << 23 === 0. Actual: ' + (-8192 << 23));
+}
+
+
+if (-16384 << 23 !== 0) {
+ $ERROR('#751: -16384 << 23 === 0. Actual: ' + (-16384 << 23));
+}
+
+
+if (-32768 << 23 !== 0) {
+ $ERROR('#752: -32768 << 23 === 0. Actual: ' + (-32768 << 23));
+}
+
+
+if (-65536 << 23 !== 0) {
+ $ERROR('#753: -65536 << 23 === 0. Actual: ' + (-65536 << 23));
+}
+
+
+if (-131072 << 23 !== 0) {
+ $ERROR('#754: -131072 << 23 === 0. Actual: ' + (-131072 << 23));
+}
+
+
+if (-262144 << 23 !== 0) {
+ $ERROR('#755: -262144 << 23 === 0. Actual: ' + (-262144 << 23));
+}
+
+
+if (-524288 << 23 !== 0) {
+ $ERROR('#756: -524288 << 23 === 0. Actual: ' + (-524288 << 23));
+}
+
+
+if (-1048576 << 23 !== 0) {
+ $ERROR('#757: -1048576 << 23 === 0. Actual: ' + (-1048576 << 23));
+}
+
+
+if (-2097152 << 23 !== 0) {
+ $ERROR('#758: -2097152 << 23 === 0. Actual: ' + (-2097152 << 23));
+}
+
+
+if (-4194304 << 23 !== 0) {
+ $ERROR('#759: -4194304 << 23 === 0. Actual: ' + (-4194304 << 23));
+}
+
+
+if (-8388608 << 23 !== 0) {
+ $ERROR('#760: -8388608 << 23 === 0. Actual: ' + (-8388608 << 23));
+}
+
+
+if (-16777216 << 23 !== 0) {
+ $ERROR('#761: -16777216 << 23 === 0. Actual: ' + (-16777216 << 23));
+}
+
+
+if (-33554432 << 23 !== 0) {
+ $ERROR('#762: -33554432 << 23 === 0. Actual: ' + (-33554432 << 23));
+}
+
+
+if (-67108864 << 23 !== 0) {
+ $ERROR('#763: -67108864 << 23 === 0. Actual: ' + (-67108864 << 23));
+}
+
+
+if (-134217728 << 23 !== 0) {
+ $ERROR('#764: -134217728 << 23 === 0. Actual: ' + (-134217728 << 23));
+}
+
+
+if (-268435456 << 23 !== 0) {
+ $ERROR('#765: -268435456 << 23 === 0. Actual: ' + (-268435456 << 23));
+}
+
+
+if (-536870912 << 23 !== 0) {
+ $ERROR('#766: -536870912 << 23 === 0. Actual: ' + (-536870912 << 23));
+}
+
+
+if (-1073741824 << 23 !== 0) {
+ $ERROR('#767: -1073741824 << 23 === 0. Actual: ' + (-1073741824 << 23));
+}
+
+
+if (-2147483648 << 23 !== 0) {
+ $ERROR('#768: -2147483648 << 23 === 0. Actual: ' + (-2147483648 << 23));
+}
+
+
+if (-1 << 24 !== -16777216) {
+ $ERROR('#769: -1 << 24 === -16777216. Actual: ' + (-1 << 24));
+}
+
+
+if (-2 << 24 !== -33554432) {
+ $ERROR('#770: -2 << 24 === -33554432. Actual: ' + (-2 << 24));
+}
+
+
+if (-4 << 24 !== -67108864) {
+ $ERROR('#771: -4 << 24 === -67108864. Actual: ' + (-4 << 24));
+}
+
+
+if (-8 << 24 !== -134217728) {
+ $ERROR('#772: -8 << 24 === -134217728. Actual: ' + (-8 << 24));
+}
+
+
+if (-16 << 24 !== -268435456) {
+ $ERROR('#773: -16 << 24 === -268435456. Actual: ' + (-16 << 24));
+}
+
+
+if (-32 << 24 !== -536870912) {
+ $ERROR('#774: -32 << 24 === -536870912. Actual: ' + (-32 << 24));
+}
+
+
+if (-64 << 24 !== -1073741824) {
+ $ERROR('#775: -64 << 24 === -1073741824. Actual: ' + (-64 << 24));
+}
+
+
+if (-128 << 24 !== -2147483648) {
+ $ERROR('#776: -128 << 24 === -2147483648. Actual: ' + (-128 << 24));
+}
+
+
+if (-256 << 24 !== 0) {
+ $ERROR('#777: -256 << 24 === 0. Actual: ' + (-256 << 24));
+}
+
+
+if (-512 << 24 !== 0) {
+ $ERROR('#778: -512 << 24 === 0. Actual: ' + (-512 << 24));
+}
+
+
+if (-1024 << 24 !== 0) {
+ $ERROR('#779: -1024 << 24 === 0. Actual: ' + (-1024 << 24));
+}
+
+
+if (-2048 << 24 !== 0) {
+ $ERROR('#780: -2048 << 24 === 0. Actual: ' + (-2048 << 24));
+}
+
+
+if (-4096 << 24 !== 0) {
+ $ERROR('#781: -4096 << 24 === 0. Actual: ' + (-4096 << 24));
+}
+
+
+if (-8192 << 24 !== 0) {
+ $ERROR('#782: -8192 << 24 === 0. Actual: ' + (-8192 << 24));
+}
+
+
+if (-16384 << 24 !== 0) {
+ $ERROR('#783: -16384 << 24 === 0. Actual: ' + (-16384 << 24));
+}
+
+
+if (-32768 << 24 !== 0) {
+ $ERROR('#784: -32768 << 24 === 0. Actual: ' + (-32768 << 24));
+}
+
+
+if (-65536 << 24 !== 0) {
+ $ERROR('#785: -65536 << 24 === 0. Actual: ' + (-65536 << 24));
+}
+
+
+if (-131072 << 24 !== 0) {
+ $ERROR('#786: -131072 << 24 === 0. Actual: ' + (-131072 << 24));
+}
+
+
+if (-262144 << 24 !== 0) {
+ $ERROR('#787: -262144 << 24 === 0. Actual: ' + (-262144 << 24));
+}
+
+
+if (-524288 << 24 !== 0) {
+ $ERROR('#788: -524288 << 24 === 0. Actual: ' + (-524288 << 24));
+}
+
+
+if (-1048576 << 24 !== 0) {
+ $ERROR('#789: -1048576 << 24 === 0. Actual: ' + (-1048576 << 24));
+}
+
+
+if (-2097152 << 24 !== 0) {
+ $ERROR('#790: -2097152 << 24 === 0. Actual: ' + (-2097152 << 24));
+}
+
+
+if (-4194304 << 24 !== 0) {
+ $ERROR('#791: -4194304 << 24 === 0. Actual: ' + (-4194304 << 24));
+}
+
+
+if (-8388608 << 24 !== 0) {
+ $ERROR('#792: -8388608 << 24 === 0. Actual: ' + (-8388608 << 24));
+}
+
+
+if (-16777216 << 24 !== 0) {
+ $ERROR('#793: -16777216 << 24 === 0. Actual: ' + (-16777216 << 24));
+}
+
+
+if (-33554432 << 24 !== 0) {
+ $ERROR('#794: -33554432 << 24 === 0. Actual: ' + (-33554432 << 24));
+}
+
+
+if (-67108864 << 24 !== 0) {
+ $ERROR('#795: -67108864 << 24 === 0. Actual: ' + (-67108864 << 24));
+}
+
+
+if (-134217728 << 24 !== 0) {
+ $ERROR('#796: -134217728 << 24 === 0. Actual: ' + (-134217728 << 24));
+}
+
+
+if (-268435456 << 24 !== 0) {
+ $ERROR('#797: -268435456 << 24 === 0. Actual: ' + (-268435456 << 24));
+}
+
+
+if (-536870912 << 24 !== 0) {
+ $ERROR('#798: -536870912 << 24 === 0. Actual: ' + (-536870912 << 24));
+}
+
+
+if (-1073741824 << 24 !== 0) {
+ $ERROR('#799: -1073741824 << 24 === 0. Actual: ' + (-1073741824 << 24));
+}
+
+
+if (-2147483648 << 24 !== 0) {
+ $ERROR('#800: -2147483648 << 24 === 0. Actual: ' + (-2147483648 << 24));
+}
+
+
+if (-1 << 25 !== -33554432) {
+ $ERROR('#801: -1 << 25 === -33554432. Actual: ' + (-1 << 25));
+}
+
+
+if (-2 << 25 !== -67108864) {
+ $ERROR('#802: -2 << 25 === -67108864. Actual: ' + (-2 << 25));
+}
+
+
+if (-4 << 25 !== -134217728) {
+ $ERROR('#803: -4 << 25 === -134217728. Actual: ' + (-4 << 25));
+}
+
+
+if (-8 << 25 !== -268435456) {
+ $ERROR('#804: -8 << 25 === -268435456. Actual: ' + (-8 << 25));
+}
+
+
+if (-16 << 25 !== -536870912) {
+ $ERROR('#805: -16 << 25 === -536870912. Actual: ' + (-16 << 25));
+}
+
+
+if (-32 << 25 !== -1073741824) {
+ $ERROR('#806: -32 << 25 === -1073741824. Actual: ' + (-32 << 25));
+}
+
+
+if (-64 << 25 !== -2147483648) {
+ $ERROR('#807: -64 << 25 === -2147483648. Actual: ' + (-64 << 25));
+}
+
+
+if (-128 << 25 !== 0) {
+ $ERROR('#808: -128 << 25 === 0. Actual: ' + (-128 << 25));
+}
+
+
+if (-256 << 25 !== 0) {
+ $ERROR('#809: -256 << 25 === 0. Actual: ' + (-256 << 25));
+}
+
+
+if (-512 << 25 !== 0) {
+ $ERROR('#810: -512 << 25 === 0. Actual: ' + (-512 << 25));
+}
+
+
+if (-1024 << 25 !== 0) {
+ $ERROR('#811: -1024 << 25 === 0. Actual: ' + (-1024 << 25));
+}
+
+
+if (-2048 << 25 !== 0) {
+ $ERROR('#812: -2048 << 25 === 0. Actual: ' + (-2048 << 25));
+}
+
+
+if (-4096 << 25 !== 0) {
+ $ERROR('#813: -4096 << 25 === 0. Actual: ' + (-4096 << 25));
+}
+
+
+if (-8192 << 25 !== 0) {
+ $ERROR('#814: -8192 << 25 === 0. Actual: ' + (-8192 << 25));
+}
+
+
+if (-16384 << 25 !== 0) {
+ $ERROR('#815: -16384 << 25 === 0. Actual: ' + (-16384 << 25));
+}
+
+
+if (-32768 << 25 !== 0) {
+ $ERROR('#816: -32768 << 25 === 0. Actual: ' + (-32768 << 25));
+}
+
+
+if (-65536 << 25 !== 0) {
+ $ERROR('#817: -65536 << 25 === 0. Actual: ' + (-65536 << 25));
+}
+
+
+if (-131072 << 25 !== 0) {
+ $ERROR('#818: -131072 << 25 === 0. Actual: ' + (-131072 << 25));
+}
+
+
+if (-262144 << 25 !== 0) {
+ $ERROR('#819: -262144 << 25 === 0. Actual: ' + (-262144 << 25));
+}
+
+
+if (-524288 << 25 !== 0) {
+ $ERROR('#820: -524288 << 25 === 0. Actual: ' + (-524288 << 25));
+}
+
+
+if (-1048576 << 25 !== 0) {
+ $ERROR('#821: -1048576 << 25 === 0. Actual: ' + (-1048576 << 25));
+}
+
+
+if (-2097152 << 25 !== 0) {
+ $ERROR('#822: -2097152 << 25 === 0. Actual: ' + (-2097152 << 25));
+}
+
+
+if (-4194304 << 25 !== 0) {
+ $ERROR('#823: -4194304 << 25 === 0. Actual: ' + (-4194304 << 25));
+}
+
+
+if (-8388608 << 25 !== 0) {
+ $ERROR('#824: -8388608 << 25 === 0. Actual: ' + (-8388608 << 25));
+}
+
+
+if (-16777216 << 25 !== 0) {
+ $ERROR('#825: -16777216 << 25 === 0. Actual: ' + (-16777216 << 25));
+}
+
+
+if (-33554432 << 25 !== 0) {
+ $ERROR('#826: -33554432 << 25 === 0. Actual: ' + (-33554432 << 25));
+}
+
+
+if (-67108864 << 25 !== 0) {
+ $ERROR('#827: -67108864 << 25 === 0. Actual: ' + (-67108864 << 25));
+}
+
+
+if (-134217728 << 25 !== 0) {
+ $ERROR('#828: -134217728 << 25 === 0. Actual: ' + (-134217728 << 25));
+}
+
+
+if (-268435456 << 25 !== 0) {
+ $ERROR('#829: -268435456 << 25 === 0. Actual: ' + (-268435456 << 25));
+}
+
+
+if (-536870912 << 25 !== 0) {
+ $ERROR('#830: -536870912 << 25 === 0. Actual: ' + (-536870912 << 25));
+}
+
+
+if (-1073741824 << 25 !== 0) {
+ $ERROR('#831: -1073741824 << 25 === 0. Actual: ' + (-1073741824 << 25));
+}
+
+
+if (-2147483648 << 25 !== 0) {
+ $ERROR('#832: -2147483648 << 25 === 0. Actual: ' + (-2147483648 << 25));
+}
+
+
+if (-1 << 26 !== -67108864) {
+ $ERROR('#833: -1 << 26 === -67108864. Actual: ' + (-1 << 26));
+}
+
+
+if (-2 << 26 !== -134217728) {
+ $ERROR('#834: -2 << 26 === -134217728. Actual: ' + (-2 << 26));
+}
+
+
+if (-4 << 26 !== -268435456) {
+ $ERROR('#835: -4 << 26 === -268435456. Actual: ' + (-4 << 26));
+}
+
+
+if (-8 << 26 !== -536870912) {
+ $ERROR('#836: -8 << 26 === -536870912. Actual: ' + (-8 << 26));
+}
+
+
+if (-16 << 26 !== -1073741824) {
+ $ERROR('#837: -16 << 26 === -1073741824. Actual: ' + (-16 << 26));
+}
+
+
+if (-32 << 26 !== -2147483648) {
+ $ERROR('#838: -32 << 26 === -2147483648. Actual: ' + (-32 << 26));
+}
+
+
+if (-64 << 26 !== 0) {
+ $ERROR('#839: -64 << 26 === 0. Actual: ' + (-64 << 26));
+}
+
+
+if (-128 << 26 !== 0) {
+ $ERROR('#840: -128 << 26 === 0. Actual: ' + (-128 << 26));
+}
+
+
+if (-256 << 26 !== 0) {
+ $ERROR('#841: -256 << 26 === 0. Actual: ' + (-256 << 26));
+}
+
+
+if (-512 << 26 !== 0) {
+ $ERROR('#842: -512 << 26 === 0. Actual: ' + (-512 << 26));
+}
+
+
+if (-1024 << 26 !== 0) {
+ $ERROR('#843: -1024 << 26 === 0. Actual: ' + (-1024 << 26));
+}
+
+
+if (-2048 << 26 !== 0) {
+ $ERROR('#844: -2048 << 26 === 0. Actual: ' + (-2048 << 26));
+}
+
+
+if (-4096 << 26 !== 0) {
+ $ERROR('#845: -4096 << 26 === 0. Actual: ' + (-4096 << 26));
+}
+
+
+if (-8192 << 26 !== 0) {
+ $ERROR('#846: -8192 << 26 === 0. Actual: ' + (-8192 << 26));
+}
+
+
+if (-16384 << 26 !== 0) {
+ $ERROR('#847: -16384 << 26 === 0. Actual: ' + (-16384 << 26));
+}
+
+
+if (-32768 << 26 !== 0) {
+ $ERROR('#848: -32768 << 26 === 0. Actual: ' + (-32768 << 26));
+}
+
+
+if (-65536 << 26 !== 0) {
+ $ERROR('#849: -65536 << 26 === 0. Actual: ' + (-65536 << 26));
+}
+
+
+if (-131072 << 26 !== 0) {
+ $ERROR('#850: -131072 << 26 === 0. Actual: ' + (-131072 << 26));
+}
+
+
+if (-262144 << 26 !== 0) {
+ $ERROR('#851: -262144 << 26 === 0. Actual: ' + (-262144 << 26));
+}
+
+
+if (-524288 << 26 !== 0) {
+ $ERROR('#852: -524288 << 26 === 0. Actual: ' + (-524288 << 26));
+}
+
+
+if (-1048576 << 26 !== 0) {
+ $ERROR('#853: -1048576 << 26 === 0. Actual: ' + (-1048576 << 26));
+}
+
+
+if (-2097152 << 26 !== 0) {
+ $ERROR('#854: -2097152 << 26 === 0. Actual: ' + (-2097152 << 26));
+}
+
+
+if (-4194304 << 26 !== 0) {
+ $ERROR('#855: -4194304 << 26 === 0. Actual: ' + (-4194304 << 26));
+}
+
+
+if (-8388608 << 26 !== 0) {
+ $ERROR('#856: -8388608 << 26 === 0. Actual: ' + (-8388608 << 26));
+}
+
+
+if (-16777216 << 26 !== 0) {
+ $ERROR('#857: -16777216 << 26 === 0. Actual: ' + (-16777216 << 26));
+}
+
+
+if (-33554432 << 26 !== 0) {
+ $ERROR('#858: -33554432 << 26 === 0. Actual: ' + (-33554432 << 26));
+}
+
+
+if (-67108864 << 26 !== 0) {
+ $ERROR('#859: -67108864 << 26 === 0. Actual: ' + (-67108864 << 26));
+}
+
+
+if (-134217728 << 26 !== 0) {
+ $ERROR('#860: -134217728 << 26 === 0. Actual: ' + (-134217728 << 26));
+}
+
+
+if (-268435456 << 26 !== 0) {
+ $ERROR('#861: -268435456 << 26 === 0. Actual: ' + (-268435456 << 26));
+}
+
+
+if (-536870912 << 26 !== 0) {
+ $ERROR('#862: -536870912 << 26 === 0. Actual: ' + (-536870912 << 26));
+}
+
+
+if (-1073741824 << 26 !== 0) {
+ $ERROR('#863: -1073741824 << 26 === 0. Actual: ' + (-1073741824 << 26));
+}
+
+
+if (-2147483648 << 26 !== 0) {
+ $ERROR('#864: -2147483648 << 26 === 0. Actual: ' + (-2147483648 << 26));
+}
+
+
+if (-1 << 27 !== -134217728) {
+ $ERROR('#865: -1 << 27 === -134217728. Actual: ' + (-1 << 27));
+}
+
+
+if (-2 << 27 !== -268435456) {
+ $ERROR('#866: -2 << 27 === -268435456. Actual: ' + (-2 << 27));
+}
+
+
+if (-4 << 27 !== -536870912) {
+ $ERROR('#867: -4 << 27 === -536870912. Actual: ' + (-4 << 27));
+}
+
+
+if (-8 << 27 !== -1073741824) {
+ $ERROR('#868: -8 << 27 === -1073741824. Actual: ' + (-8 << 27));
+}
+
+
+if (-16 << 27 !== -2147483648) {
+ $ERROR('#869: -16 << 27 === -2147483648. Actual: ' + (-16 << 27));
+}
+
+
+if (-32 << 27 !== 0) {
+ $ERROR('#870: -32 << 27 === 0. Actual: ' + (-32 << 27));
+}
+
+
+if (-64 << 27 !== 0) {
+ $ERROR('#871: -64 << 27 === 0. Actual: ' + (-64 << 27));
+}
+
+
+if (-128 << 27 !== 0) {
+ $ERROR('#872: -128 << 27 === 0. Actual: ' + (-128 << 27));
+}
+
+
+if (-256 << 27 !== 0) {
+ $ERROR('#873: -256 << 27 === 0. Actual: ' + (-256 << 27));
+}
+
+
+if (-512 << 27 !== 0) {
+ $ERROR('#874: -512 << 27 === 0. Actual: ' + (-512 << 27));
+}
+
+
+if (-1024 << 27 !== 0) {
+ $ERROR('#875: -1024 << 27 === 0. Actual: ' + (-1024 << 27));
+}
+
+
+if (-2048 << 27 !== 0) {
+ $ERROR('#876: -2048 << 27 === 0. Actual: ' + (-2048 << 27));
+}
+
+
+if (-4096 << 27 !== 0) {
+ $ERROR('#877: -4096 << 27 === 0. Actual: ' + (-4096 << 27));
+}
+
+
+if (-8192 << 27 !== 0) {
+ $ERROR('#878: -8192 << 27 === 0. Actual: ' + (-8192 << 27));
+}
+
+
+if (-16384 << 27 !== 0) {
+ $ERROR('#879: -16384 << 27 === 0. Actual: ' + (-16384 << 27));
+}
+
+
+if (-32768 << 27 !== 0) {
+ $ERROR('#880: -32768 << 27 === 0. Actual: ' + (-32768 << 27));
+}
+
+
+if (-65536 << 27 !== 0) {
+ $ERROR('#881: -65536 << 27 === 0. Actual: ' + (-65536 << 27));
+}
+
+
+if (-131072 << 27 !== 0) {
+ $ERROR('#882: -131072 << 27 === 0. Actual: ' + (-131072 << 27));
+}
+
+
+if (-262144 << 27 !== 0) {
+ $ERROR('#883: -262144 << 27 === 0. Actual: ' + (-262144 << 27));
+}
+
+
+if (-524288 << 27 !== 0) {
+ $ERROR('#884: -524288 << 27 === 0. Actual: ' + (-524288 << 27));
+}
+
+
+if (-1048576 << 27 !== 0) {
+ $ERROR('#885: -1048576 << 27 === 0. Actual: ' + (-1048576 << 27));
+}
+
+
+if (-2097152 << 27 !== 0) {
+ $ERROR('#886: -2097152 << 27 === 0. Actual: ' + (-2097152 << 27));
+}
+
+
+if (-4194304 << 27 !== 0) {
+ $ERROR('#887: -4194304 << 27 === 0. Actual: ' + (-4194304 << 27));
+}
+
+
+if (-8388608 << 27 !== 0) {
+ $ERROR('#888: -8388608 << 27 === 0. Actual: ' + (-8388608 << 27));
+}
+
+
+if (-16777216 << 27 !== 0) {
+ $ERROR('#889: -16777216 << 27 === 0. Actual: ' + (-16777216 << 27));
+}
+
+
+if (-33554432 << 27 !== 0) {
+ $ERROR('#890: -33554432 << 27 === 0. Actual: ' + (-33554432 << 27));
+}
+
+
+if (-67108864 << 27 !== 0) {
+ $ERROR('#891: -67108864 << 27 === 0. Actual: ' + (-67108864 << 27));
+}
+
+
+if (-134217728 << 27 !== 0) {
+ $ERROR('#892: -134217728 << 27 === 0. Actual: ' + (-134217728 << 27));
+}
+
+
+if (-268435456 << 27 !== 0) {
+ $ERROR('#893: -268435456 << 27 === 0. Actual: ' + (-268435456 << 27));
+}
+
+
+if (-536870912 << 27 !== 0) {
+ $ERROR('#894: -536870912 << 27 === 0. Actual: ' + (-536870912 << 27));
+}
+
+
+if (-1073741824 << 27 !== 0) {
+ $ERROR('#895: -1073741824 << 27 === 0. Actual: ' + (-1073741824 << 27));
+}
+
+
+if (-2147483648 << 27 !== 0) {
+ $ERROR('#896: -2147483648 << 27 === 0. Actual: ' + (-2147483648 << 27));
+}
+
+
+if (-1 << 28 !== -268435456) {
+ $ERROR('#897: -1 << 28 === -268435456. Actual: ' + (-1 << 28));
+}
+
+
+if (-2 << 28 !== -536870912) {
+ $ERROR('#898: -2 << 28 === -536870912. Actual: ' + (-2 << 28));
+}
+
+
+if (-4 << 28 !== -1073741824) {
+ $ERROR('#899: -4 << 28 === -1073741824. Actual: ' + (-4 << 28));
+}
+
+
+if (-8 << 28 !== -2147483648) {
+ $ERROR('#900: -8 << 28 === -2147483648. Actual: ' + (-8 << 28));
+}
+
+
+if (-16 << 28 !== 0) {
+ $ERROR('#901: -16 << 28 === 0. Actual: ' + (-16 << 28));
+}
+
+
+if (-32 << 28 !== 0) {
+ $ERROR('#902: -32 << 28 === 0. Actual: ' + (-32 << 28));
+}
+
+
+if (-64 << 28 !== 0) {
+ $ERROR('#903: -64 << 28 === 0. Actual: ' + (-64 << 28));
+}
+
+
+if (-128 << 28 !== 0) {
+ $ERROR('#904: -128 << 28 === 0. Actual: ' + (-128 << 28));
+}
+
+
+if (-256 << 28 !== 0) {
+ $ERROR('#905: -256 << 28 === 0. Actual: ' + (-256 << 28));
+}
+
+
+if (-512 << 28 !== 0) {
+ $ERROR('#906: -512 << 28 === 0. Actual: ' + (-512 << 28));
+}
+
+
+if (-1024 << 28 !== 0) {
+ $ERROR('#907: -1024 << 28 === 0. Actual: ' + (-1024 << 28));
+}
+
+
+if (-2048 << 28 !== 0) {
+ $ERROR('#908: -2048 << 28 === 0. Actual: ' + (-2048 << 28));
+}
+
+
+if (-4096 << 28 !== 0) {
+ $ERROR('#909: -4096 << 28 === 0. Actual: ' + (-4096 << 28));
+}
+
+
+if (-8192 << 28 !== 0) {
+ $ERROR('#910: -8192 << 28 === 0. Actual: ' + (-8192 << 28));
+}
+
+
+if (-16384 << 28 !== 0) {
+ $ERROR('#911: -16384 << 28 === 0. Actual: ' + (-16384 << 28));
+}
+
+
+if (-32768 << 28 !== 0) {
+ $ERROR('#912: -32768 << 28 === 0. Actual: ' + (-32768 << 28));
+}
+
+
+if (-65536 << 28 !== 0) {
+ $ERROR('#913: -65536 << 28 === 0. Actual: ' + (-65536 << 28));
+}
+
+
+if (-131072 << 28 !== 0) {
+ $ERROR('#914: -131072 << 28 === 0. Actual: ' + (-131072 << 28));
+}
+
+
+if (-262144 << 28 !== 0) {
+ $ERROR('#915: -262144 << 28 === 0. Actual: ' + (-262144 << 28));
+}
+
+
+if (-524288 << 28 !== 0) {
+ $ERROR('#916: -524288 << 28 === 0. Actual: ' + (-524288 << 28));
+}
+
+
+if (-1048576 << 28 !== 0) {
+ $ERROR('#917: -1048576 << 28 === 0. Actual: ' + (-1048576 << 28));
+}
+
+
+if (-2097152 << 28 !== 0) {
+ $ERROR('#918: -2097152 << 28 === 0. Actual: ' + (-2097152 << 28));
+}
+
+
+if (-4194304 << 28 !== 0) {
+ $ERROR('#919: -4194304 << 28 === 0. Actual: ' + (-4194304 << 28));
+}
+
+
+if (-8388608 << 28 !== 0) {
+ $ERROR('#920: -8388608 << 28 === 0. Actual: ' + (-8388608 << 28));
+}
+
+
+if (-16777216 << 28 !== 0) {
+ $ERROR('#921: -16777216 << 28 === 0. Actual: ' + (-16777216 << 28));
+}
+
+
+if (-33554432 << 28 !== 0) {
+ $ERROR('#922: -33554432 << 28 === 0. Actual: ' + (-33554432 << 28));
+}
+
+
+if (-67108864 << 28 !== 0) {
+ $ERROR('#923: -67108864 << 28 === 0. Actual: ' + (-67108864 << 28));
+}
+
+
+if (-134217728 << 28 !== 0) {
+ $ERROR('#924: -134217728 << 28 === 0. Actual: ' + (-134217728 << 28));
+}
+
+
+if (-268435456 << 28 !== 0) {
+ $ERROR('#925: -268435456 << 28 === 0. Actual: ' + (-268435456 << 28));
+}
+
+
+if (-536870912 << 28 !== 0) {
+ $ERROR('#926: -536870912 << 28 === 0. Actual: ' + (-536870912 << 28));
+}
+
+
+if (-1073741824 << 28 !== 0) {
+ $ERROR('#927: -1073741824 << 28 === 0. Actual: ' + (-1073741824 << 28));
+}
+
+
+if (-2147483648 << 28 !== 0) {
+ $ERROR('#928: -2147483648 << 28 === 0. Actual: ' + (-2147483648 << 28));
+}
+
+
+if (-1 << 29 !== -536870912) {
+ $ERROR('#929: -1 << 29 === -536870912. Actual: ' + (-1 << 29));
+}
+
+
+if (-2 << 29 !== -1073741824) {
+ $ERROR('#930: -2 << 29 === -1073741824. Actual: ' + (-2 << 29));
+}
+
+
+if (-4 << 29 !== -2147483648) {
+ $ERROR('#931: -4 << 29 === -2147483648. Actual: ' + (-4 << 29));
+}
+
+
+if (-8 << 29 !== 0) {
+ $ERROR('#932: -8 << 29 === 0. Actual: ' + (-8 << 29));
+}
+
+
+if (-16 << 29 !== 0) {
+ $ERROR('#933: -16 << 29 === 0. Actual: ' + (-16 << 29));
+}
+
+
+if (-32 << 29 !== 0) {
+ $ERROR('#934: -32 << 29 === 0. Actual: ' + (-32 << 29));
+}
+
+
+if (-64 << 29 !== 0) {
+ $ERROR('#935: -64 << 29 === 0. Actual: ' + (-64 << 29));
+}
+
+
+if (-128 << 29 !== 0) {
+ $ERROR('#936: -128 << 29 === 0. Actual: ' + (-128 << 29));
+}
+
+
+if (-256 << 29 !== 0) {
+ $ERROR('#937: -256 << 29 === 0. Actual: ' + (-256 << 29));
+}
+
+
+if (-512 << 29 !== 0) {
+ $ERROR('#938: -512 << 29 === 0. Actual: ' + (-512 << 29));
+}
+
+
+if (-1024 << 29 !== 0) {
+ $ERROR('#939: -1024 << 29 === 0. Actual: ' + (-1024 << 29));
+}
+
+
+if (-2048 << 29 !== 0) {
+ $ERROR('#940: -2048 << 29 === 0. Actual: ' + (-2048 << 29));
+}
+
+
+if (-4096 << 29 !== 0) {
+ $ERROR('#941: -4096 << 29 === 0. Actual: ' + (-4096 << 29));
+}
+
+
+if (-8192 << 29 !== 0) {
+ $ERROR('#942: -8192 << 29 === 0. Actual: ' + (-8192 << 29));
+}
+
+
+if (-16384 << 29 !== 0) {
+ $ERROR('#943: -16384 << 29 === 0. Actual: ' + (-16384 << 29));
+}
+
+
+if (-32768 << 29 !== 0) {
+ $ERROR('#944: -32768 << 29 === 0. Actual: ' + (-32768 << 29));
+}
+
+
+if (-65536 << 29 !== 0) {
+ $ERROR('#945: -65536 << 29 === 0. Actual: ' + (-65536 << 29));
+}
+
+
+if (-131072 << 29 !== 0) {
+ $ERROR('#946: -131072 << 29 === 0. Actual: ' + (-131072 << 29));
+}
+
+
+if (-262144 << 29 !== 0) {
+ $ERROR('#947: -262144 << 29 === 0. Actual: ' + (-262144 << 29));
+}
+
+
+if (-524288 << 29 !== 0) {
+ $ERROR('#948: -524288 << 29 === 0. Actual: ' + (-524288 << 29));
+}
+
+
+if (-1048576 << 29 !== 0) {
+ $ERROR('#949: -1048576 << 29 === 0. Actual: ' + (-1048576 << 29));
+}
+
+
+if (-2097152 << 29 !== 0) {
+ $ERROR('#950: -2097152 << 29 === 0. Actual: ' + (-2097152 << 29));
+}
+
+
+if (-4194304 << 29 !== 0) {
+ $ERROR('#951: -4194304 << 29 === 0. Actual: ' + (-4194304 << 29));
+}
+
+
+if (-8388608 << 29 !== 0) {
+ $ERROR('#952: -8388608 << 29 === 0. Actual: ' + (-8388608 << 29));
+}
+
+
+if (-16777216 << 29 !== 0) {
+ $ERROR('#953: -16777216 << 29 === 0. Actual: ' + (-16777216 << 29));
+}
+
+
+if (-33554432 << 29 !== 0) {
+ $ERROR('#954: -33554432 << 29 === 0. Actual: ' + (-33554432 << 29));
+}
+
+
+if (-67108864 << 29 !== 0) {
+ $ERROR('#955: -67108864 << 29 === 0. Actual: ' + (-67108864 << 29));
+}
+
+
+if (-134217728 << 29 !== 0) {
+ $ERROR('#956: -134217728 << 29 === 0. Actual: ' + (-134217728 << 29));
+}
+
+
+if (-268435456 << 29 !== 0) {
+ $ERROR('#957: -268435456 << 29 === 0. Actual: ' + (-268435456 << 29));
+}
+
+
+if (-536870912 << 29 !== 0) {
+ $ERROR('#958: -536870912 << 29 === 0. Actual: ' + (-536870912 << 29));
+}
+
+
+if (-1073741824 << 29 !== 0) {
+ $ERROR('#959: -1073741824 << 29 === 0. Actual: ' + (-1073741824 << 29));
+}
+
+
+if (-2147483648 << 29 !== 0) {
+ $ERROR('#960: -2147483648 << 29 === 0. Actual: ' + (-2147483648 << 29));
+}
+
+
+if (-1 << 30 !== -1073741824) {
+ $ERROR('#961: -1 << 30 === -1073741824. Actual: ' + (-1 << 30));
+}
+
+
+if (-2 << 30 !== -2147483648) {
+ $ERROR('#962: -2 << 30 === -2147483648. Actual: ' + (-2 << 30));
+}
+
+
+if (-4 << 30 !== 0) {
+ $ERROR('#963: -4 << 30 === 0. Actual: ' + (-4 << 30));
+}
+
+
+if (-8 << 30 !== 0) {
+ $ERROR('#964: -8 << 30 === 0. Actual: ' + (-8 << 30));
+}
+
+
+if (-16 << 30 !== 0) {
+ $ERROR('#965: -16 << 30 === 0. Actual: ' + (-16 << 30));
+}
+
+
+if (-32 << 30 !== 0) {
+ $ERROR('#966: -32 << 30 === 0. Actual: ' + (-32 << 30));
+}
+
+
+if (-64 << 30 !== 0) {
+ $ERROR('#967: -64 << 30 === 0. Actual: ' + (-64 << 30));
+}
+
+
+if (-128 << 30 !== 0) {
+ $ERROR('#968: -128 << 30 === 0. Actual: ' + (-128 << 30));
+}
+
+
+if (-256 << 30 !== 0) {
+ $ERROR('#969: -256 << 30 === 0. Actual: ' + (-256 << 30));
+}
+
+
+if (-512 << 30 !== 0) {
+ $ERROR('#970: -512 << 30 === 0. Actual: ' + (-512 << 30));
+}
+
+
+if (-1024 << 30 !== 0) {
+ $ERROR('#971: -1024 << 30 === 0. Actual: ' + (-1024 << 30));
+}
+
+
+if (-2048 << 30 !== 0) {
+ $ERROR('#972: -2048 << 30 === 0. Actual: ' + (-2048 << 30));
+}
+
+
+if (-4096 << 30 !== 0) {
+ $ERROR('#973: -4096 << 30 === 0. Actual: ' + (-4096 << 30));
+}
+
+
+if (-8192 << 30 !== 0) {
+ $ERROR('#974: -8192 << 30 === 0. Actual: ' + (-8192 << 30));
+}
+
+
+if (-16384 << 30 !== 0) {
+ $ERROR('#975: -16384 << 30 === 0. Actual: ' + (-16384 << 30));
+}
+
+
+if (-32768 << 30 !== 0) {
+ $ERROR('#976: -32768 << 30 === 0. Actual: ' + (-32768 << 30));
+}
+
+
+if (-65536 << 30 !== 0) {
+ $ERROR('#977: -65536 << 30 === 0. Actual: ' + (-65536 << 30));
+}
+
+
+if (-131072 << 30 !== 0) {
+ $ERROR('#978: -131072 << 30 === 0. Actual: ' + (-131072 << 30));
+}
+
+
+if (-262144 << 30 !== 0) {
+ $ERROR('#979: -262144 << 30 === 0. Actual: ' + (-262144 << 30));
+}
+
+
+if (-524288 << 30 !== 0) {
+ $ERROR('#980: -524288 << 30 === 0. Actual: ' + (-524288 << 30));
+}
+
+
+if (-1048576 << 30 !== 0) {
+ $ERROR('#981: -1048576 << 30 === 0. Actual: ' + (-1048576 << 30));
+}
+
+
+if (-2097152 << 30 !== 0) {
+ $ERROR('#982: -2097152 << 30 === 0. Actual: ' + (-2097152 << 30));
+}
+
+
+if (-4194304 << 30 !== 0) {
+ $ERROR('#983: -4194304 << 30 === 0. Actual: ' + (-4194304 << 30));
+}
+
+
+if (-8388608 << 30 !== 0) {
+ $ERROR('#984: -8388608 << 30 === 0. Actual: ' + (-8388608 << 30));
+}
+
+
+if (-16777216 << 30 !== 0) {
+ $ERROR('#985: -16777216 << 30 === 0. Actual: ' + (-16777216 << 30));
+}
+
+
+if (-33554432 << 30 !== 0) {
+ $ERROR('#986: -33554432 << 30 === 0. Actual: ' + (-33554432 << 30));
+}
+
+
+if (-67108864 << 30 !== 0) {
+ $ERROR('#987: -67108864 << 30 === 0. Actual: ' + (-67108864 << 30));
+}
+
+
+if (-134217728 << 30 !== 0) {
+ $ERROR('#988: -134217728 << 30 === 0. Actual: ' + (-134217728 << 30));
+}
+
+
+if (-268435456 << 30 !== 0) {
+ $ERROR('#989: -268435456 << 30 === 0. Actual: ' + (-268435456 << 30));
+}
+
+
+if (-536870912 << 30 !== 0) {
+ $ERROR('#990: -536870912 << 30 === 0. Actual: ' + (-536870912 << 30));
+}
+
+
+if (-1073741824 << 30 !== 0) {
+ $ERROR('#991: -1073741824 << 30 === 0. Actual: ' + (-1073741824 << 30));
+}
+
+
+if (-2147483648 << 30 !== 0) {
+ $ERROR('#992: -2147483648 << 30 === 0. Actual: ' + (-2147483648 << 30));
+}
+
+
+if (-1 << 31 !== -2147483648) {
+ $ERROR('#993: -1 << 31 === -2147483648. Actual: ' + (-1 << 31));
+}
+
+
+if (-2 << 31 !== 0) {
+ $ERROR('#994: -2 << 31 === 0. Actual: ' + (-2 << 31));
+}
+
+
+if (-4 << 31 !== 0) {
+ $ERROR('#995: -4 << 31 === 0. Actual: ' + (-4 << 31));
+}
+
+
+if (-8 << 31 !== 0) {
+ $ERROR('#996: -8 << 31 === 0. Actual: ' + (-8 << 31));
+}
+
+
+if (-16 << 31 !== 0) {
+ $ERROR('#997: -16 << 31 === 0. Actual: ' + (-16 << 31));
+}
+
+
+if (-32 << 31 !== 0) {
+ $ERROR('#998: -32 << 31 === 0. Actual: ' + (-32 << 31));
+}
+
+
+if (-64 << 31 !== 0) {
+ $ERROR('#999: -64 << 31 === 0. Actual: ' + (-64 << 31));
+}
+
+
+if (-128 << 31 !== 0) {
+ $ERROR('#1000: -128 << 31 === 0. Actual: ' + (-128 << 31));
+}
+
+
+if (-256 << 31 !== 0) {
+ $ERROR('#1001: -256 << 31 === 0. Actual: ' + (-256 << 31));
+}
+
+
+if (-512 << 31 !== 0) {
+ $ERROR('#1002: -512 << 31 === 0. Actual: ' + (-512 << 31));
+}
+
+
+if (-1024 << 31 !== 0) {
+ $ERROR('#1003: -1024 << 31 === 0. Actual: ' + (-1024 << 31));
+}
+
+
+if (-2048 << 31 !== 0) {
+ $ERROR('#1004: -2048 << 31 === 0. Actual: ' + (-2048 << 31));
+}
+
+
+if (-4096 << 31 !== 0) {
+ $ERROR('#1005: -4096 << 31 === 0. Actual: ' + (-4096 << 31));
+}
+
+
+if (-8192 << 31 !== 0) {
+ $ERROR('#1006: -8192 << 31 === 0. Actual: ' + (-8192 << 31));
+}
+
+
+if (-16384 << 31 !== 0) {
+ $ERROR('#1007: -16384 << 31 === 0. Actual: ' + (-16384 << 31));
+}
+
+
+if (-32768 << 31 !== 0) {
+ $ERROR('#1008: -32768 << 31 === 0. Actual: ' + (-32768 << 31));
+}
+
+
+if (-65536 << 31 !== 0) {
+ $ERROR('#1009: -65536 << 31 === 0. Actual: ' + (-65536 << 31));
+}
+
+
+if (-131072 << 31 !== 0) {
+ $ERROR('#1010: -131072 << 31 === 0. Actual: ' + (-131072 << 31));
+}
+
+
+if (-262144 << 31 !== 0) {
+ $ERROR('#1011: -262144 << 31 === 0. Actual: ' + (-262144 << 31));
+}
+
+
+if (-524288 << 31 !== 0) {
+ $ERROR('#1012: -524288 << 31 === 0. Actual: ' + (-524288 << 31));
+}
+
+
+if (-1048576 << 31 !== 0) {
+ $ERROR('#1013: -1048576 << 31 === 0. Actual: ' + (-1048576 << 31));
+}
+
+
+if (-2097152 << 31 !== 0) {
+ $ERROR('#1014: -2097152 << 31 === 0. Actual: ' + (-2097152 << 31));
+}
+
+
+if (-4194304 << 31 !== 0) {
+ $ERROR('#1015: -4194304 << 31 === 0. Actual: ' + (-4194304 << 31));
+}
+
+
+if (-8388608 << 31 !== 0) {
+ $ERROR('#1016: -8388608 << 31 === 0. Actual: ' + (-8388608 << 31));
+}
+
+
+if (-16777216 << 31 !== 0) {
+ $ERROR('#1017: -16777216 << 31 === 0. Actual: ' + (-16777216 << 31));
+}
+
+
+if (-33554432 << 31 !== 0) {
+ $ERROR('#1018: -33554432 << 31 === 0. Actual: ' + (-33554432 << 31));
+}
+
+
+if (-67108864 << 31 !== 0) {
+ $ERROR('#1019: -67108864 << 31 === 0. Actual: ' + (-67108864 << 31));
+}
+
+
+if (-134217728 << 31 !== 0) {
+ $ERROR('#1020: -134217728 << 31 === 0. Actual: ' + (-134217728 << 31));
+}
+
+
+if (-268435456 << 31 !== 0) {
+ $ERROR('#1021: -268435456 << 31 === 0. Actual: ' + (-268435456 << 31));
+}
+
+
+if (-536870912 << 31 !== 0) {
+ $ERROR('#1022: -536870912 << 31 === 0. Actual: ' + (-536870912 << 31));
+}
+
+
+if (-1073741824 << 31 !== 0) {
+ $ERROR('#1023: -1073741824 << 31 === 0. Actual: ' + (-1073741824 << 31));
+}
+
+
+if (-2147483648 << 31 !== 0) {
+ $ERROR('#1024: -2147483648 << 31 === 0. Actual: ' + (-2147483648 << 31));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T3.js
new file mode 100644
index 000000000..21bad729a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T3.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A4_T3;
+ * @section: 11.7.1;
+ * @assertion: Check operator x << y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 0...15;
+ */
+
+//CHECK
+
+if (0 << 0 !== 0) {
+ $ERROR('#1: 0 << 0 === 0. Actual: ' + (0 << 0));
+}
+
+
+if (1 << 0 !== 1) {
+ $ERROR('#2: 1 << 0 === 1. Actual: ' + (1 << 0));
+}
+
+
+if (3 << 0 !== 3) {
+ $ERROR('#3: 3 << 0 === 3. Actual: ' + (3 << 0));
+}
+
+
+if (7 << 0 !== 7) {
+ $ERROR('#4: 7 << 0 === 7. Actual: ' + (7 << 0));
+}
+
+
+if (15 << 0 !== 15) {
+ $ERROR('#5: 15 << 0 === 15. Actual: ' + (15 << 0));
+}
+
+
+if (31 << 0 !== 31) {
+ $ERROR('#6: 31 << 0 === 31. Actual: ' + (31 << 0));
+}
+
+
+if (63 << 0 !== 63) {
+ $ERROR('#7: 63 << 0 === 63. Actual: ' + (63 << 0));
+}
+
+
+if (127 << 0 !== 127) {
+ $ERROR('#8: 127 << 0 === 127. Actual: ' + (127 << 0));
+}
+
+
+if (255 << 0 !== 255) {
+ $ERROR('#9: 255 << 0 === 255. Actual: ' + (255 << 0));
+}
+
+
+if (511 << 0 !== 511) {
+ $ERROR('#10: 511 << 0 === 511. Actual: ' + (511 << 0));
+}
+
+
+if (1023 << 0 !== 1023) {
+ $ERROR('#11: 1023 << 0 === 1023. Actual: ' + (1023 << 0));
+}
+
+
+if (2047 << 0 !== 2047) {
+ $ERROR('#12: 2047 << 0 === 2047. Actual: ' + (2047 << 0));
+}
+
+
+if (4095 << 0 !== 4095) {
+ $ERROR('#13: 4095 << 0 === 4095. Actual: ' + (4095 << 0));
+}
+
+
+if (8191 << 0 !== 8191) {
+ $ERROR('#14: 8191 << 0 === 8191. Actual: ' + (8191 << 0));
+}
+
+
+if (16383 << 0 !== 16383) {
+ $ERROR('#15: 16383 << 0 === 16383. Actual: ' + (16383 << 0));
+}
+
+
+if (32767 << 0 !== 32767) {
+ $ERROR('#16: 32767 << 0 === 32767. Actual: ' + (32767 << 0));
+}
+
+
+if (65535 << 0 !== 65535) {
+ $ERROR('#17: 65535 << 0 === 65535. Actual: ' + (65535 << 0));
+}
+
+
+if (131071 << 0 !== 131071) {
+ $ERROR('#18: 131071 << 0 === 131071. Actual: ' + (131071 << 0));
+}
+
+
+if (262143 << 0 !== 262143) {
+ $ERROR('#19: 262143 << 0 === 262143. Actual: ' + (262143 << 0));
+}
+
+
+if (524287 << 0 !== 524287) {
+ $ERROR('#20: 524287 << 0 === 524287. Actual: ' + (524287 << 0));
+}
+
+
+if (1048575 << 0 !== 1048575) {
+ $ERROR('#21: 1048575 << 0 === 1048575. Actual: ' + (1048575 << 0));
+}
+
+
+if (2097151 << 0 !== 2097151) {
+ $ERROR('#22: 2097151 << 0 === 2097151. Actual: ' + (2097151 << 0));
+}
+
+
+if (4194303 << 0 !== 4194303) {
+ $ERROR('#23: 4194303 << 0 === 4194303. Actual: ' + (4194303 << 0));
+}
+
+
+if (8388607 << 0 !== 8388607) {
+ $ERROR('#24: 8388607 << 0 === 8388607. Actual: ' + (8388607 << 0));
+}
+
+
+if (16777215 << 0 !== 16777215) {
+ $ERROR('#25: 16777215 << 0 === 16777215. Actual: ' + (16777215 << 0));
+}
+
+
+if (33554431 << 0 !== 33554431) {
+ $ERROR('#26: 33554431 << 0 === 33554431. Actual: ' + (33554431 << 0));
+}
+
+
+if (67108863 << 0 !== 67108863) {
+ $ERROR('#27: 67108863 << 0 === 67108863. Actual: ' + (67108863 << 0));
+}
+
+
+if (134217727 << 0 !== 134217727) {
+ $ERROR('#28: 134217727 << 0 === 134217727. Actual: ' + (134217727 << 0));
+}
+
+
+if (268435455 << 0 !== 268435455) {
+ $ERROR('#29: 268435455 << 0 === 268435455. Actual: ' + (268435455 << 0));
+}
+
+
+if (536870911 << 0 !== 536870911) {
+ $ERROR('#30: 536870911 << 0 === 536870911. Actual: ' + (536870911 << 0));
+}
+
+
+if (1073741823 << 0 !== 1073741823) {
+ $ERROR('#31: 1073741823 << 0 === 1073741823. Actual: ' + (1073741823 << 0));
+}
+
+
+if (2147483647 << 0 !== 2147483647) {
+ $ERROR('#32: 2147483647 << 0 === 2147483647. Actual: ' + (2147483647 << 0));
+}
+
+
+if (0 << 1 !== 0) {
+ $ERROR('#33: 0 << 1 === 0. Actual: ' + (0 << 1));
+}
+
+
+if (1 << 1 !== 2) {
+ $ERROR('#34: 1 << 1 === 2. Actual: ' + (1 << 1));
+}
+
+
+if (3 << 1 !== 6) {
+ $ERROR('#35: 3 << 1 === 6. Actual: ' + (3 << 1));
+}
+
+
+if (7 << 1 !== 14) {
+ $ERROR('#36: 7 << 1 === 14. Actual: ' + (7 << 1));
+}
+
+
+if (15 << 1 !== 30) {
+ $ERROR('#37: 15 << 1 === 30. Actual: ' + (15 << 1));
+}
+
+
+if (31 << 1 !== 62) {
+ $ERROR('#38: 31 << 1 === 62. Actual: ' + (31 << 1));
+}
+
+
+if (63 << 1 !== 126) {
+ $ERROR('#39: 63 << 1 === 126. Actual: ' + (63 << 1));
+}
+
+
+if (127 << 1 !== 254) {
+ $ERROR('#40: 127 << 1 === 254. Actual: ' + (127 << 1));
+}
+
+
+if (255 << 1 !== 510) {
+ $ERROR('#41: 255 << 1 === 510. Actual: ' + (255 << 1));
+}
+
+
+if (511 << 1 !== 1022) {
+ $ERROR('#42: 511 << 1 === 1022. Actual: ' + (511 << 1));
+}
+
+
+if (1023 << 1 !== 2046) {
+ $ERROR('#43: 1023 << 1 === 2046. Actual: ' + (1023 << 1));
+}
+
+
+if (2047 << 1 !== 4094) {
+ $ERROR('#44: 2047 << 1 === 4094. Actual: ' + (2047 << 1));
+}
+
+
+if (4095 << 1 !== 8190) {
+ $ERROR('#45: 4095 << 1 === 8190. Actual: ' + (4095 << 1));
+}
+
+
+if (8191 << 1 !== 16382) {
+ $ERROR('#46: 8191 << 1 === 16382. Actual: ' + (8191 << 1));
+}
+
+
+if (16383 << 1 !== 32766) {
+ $ERROR('#47: 16383 << 1 === 32766. Actual: ' + (16383 << 1));
+}
+
+
+if (32767 << 1 !== 65534) {
+ $ERROR('#48: 32767 << 1 === 65534. Actual: ' + (32767 << 1));
+}
+
+
+if (65535 << 1 !== 131070) {
+ $ERROR('#49: 65535 << 1 === 131070. Actual: ' + (65535 << 1));
+}
+
+
+if (131071 << 1 !== 262142) {
+ $ERROR('#50: 131071 << 1 === 262142. Actual: ' + (131071 << 1));
+}
+
+
+if (262143 << 1 !== 524286) {
+ $ERROR('#51: 262143 << 1 === 524286. Actual: ' + (262143 << 1));
+}
+
+
+if (524287 << 1 !== 1048574) {
+ $ERROR('#52: 524287 << 1 === 1048574. Actual: ' + (524287 << 1));
+}
+
+
+if (1048575 << 1 !== 2097150) {
+ $ERROR('#53: 1048575 << 1 === 2097150. Actual: ' + (1048575 << 1));
+}
+
+
+if (2097151 << 1 !== 4194302) {
+ $ERROR('#54: 2097151 << 1 === 4194302. Actual: ' + (2097151 << 1));
+}
+
+
+if (4194303 << 1 !== 8388606) {
+ $ERROR('#55: 4194303 << 1 === 8388606. Actual: ' + (4194303 << 1));
+}
+
+
+if (8388607 << 1 !== 16777214) {
+ $ERROR('#56: 8388607 << 1 === 16777214. Actual: ' + (8388607 << 1));
+}
+
+
+if (16777215 << 1 !== 33554430) {
+ $ERROR('#57: 16777215 << 1 === 33554430. Actual: ' + (16777215 << 1));
+}
+
+
+if (33554431 << 1 !== 67108862) {
+ $ERROR('#58: 33554431 << 1 === 67108862. Actual: ' + (33554431 << 1));
+}
+
+
+if (67108863 << 1 !== 134217726) {
+ $ERROR('#59: 67108863 << 1 === 134217726. Actual: ' + (67108863 << 1));
+}
+
+
+if (134217727 << 1 !== 268435454) {
+ $ERROR('#60: 134217727 << 1 === 268435454. Actual: ' + (134217727 << 1));
+}
+
+
+if (268435455 << 1 !== 536870910) {
+ $ERROR('#61: 268435455 << 1 === 536870910. Actual: ' + (268435455 << 1));
+}
+
+
+if (536870911 << 1 !== 1073741822) {
+ $ERROR('#62: 536870911 << 1 === 1073741822. Actual: ' + (536870911 << 1));
+}
+
+
+if (1073741823 << 1 !== 2147483646) {
+ $ERROR('#63: 1073741823 << 1 === 2147483646. Actual: ' + (1073741823 << 1));
+}
+
+
+if (2147483647 << 1 !== -2) {
+ $ERROR('#64: 2147483647 << 1 === -2. Actual: ' + (2147483647 << 1));
+}
+
+
+if (0 << 2 !== 0) {
+ $ERROR('#65: 0 << 2 === 0. Actual: ' + (0 << 2));
+}
+
+
+if (1 << 2 !== 4) {
+ $ERROR('#66: 1 << 2 === 4. Actual: ' + (1 << 2));
+}
+
+
+if (3 << 2 !== 12) {
+ $ERROR('#67: 3 << 2 === 12. Actual: ' + (3 << 2));
+}
+
+
+if (7 << 2 !== 28) {
+ $ERROR('#68: 7 << 2 === 28. Actual: ' + (7 << 2));
+}
+
+
+if (15 << 2 !== 60) {
+ $ERROR('#69: 15 << 2 === 60. Actual: ' + (15 << 2));
+}
+
+
+if (31 << 2 !== 124) {
+ $ERROR('#70: 31 << 2 === 124. Actual: ' + (31 << 2));
+}
+
+
+if (63 << 2 !== 252) {
+ $ERROR('#71: 63 << 2 === 252. Actual: ' + (63 << 2));
+}
+
+
+if (127 << 2 !== 508) {
+ $ERROR('#72: 127 << 2 === 508. Actual: ' + (127 << 2));
+}
+
+
+if (255 << 2 !== 1020) {
+ $ERROR('#73: 255 << 2 === 1020. Actual: ' + (255 << 2));
+}
+
+
+if (511 << 2 !== 2044) {
+ $ERROR('#74: 511 << 2 === 2044. Actual: ' + (511 << 2));
+}
+
+
+if (1023 << 2 !== 4092) {
+ $ERROR('#75: 1023 << 2 === 4092. Actual: ' + (1023 << 2));
+}
+
+
+if (2047 << 2 !== 8188) {
+ $ERROR('#76: 2047 << 2 === 8188. Actual: ' + (2047 << 2));
+}
+
+
+if (4095 << 2 !== 16380) {
+ $ERROR('#77: 4095 << 2 === 16380. Actual: ' + (4095 << 2));
+}
+
+
+if (8191 << 2 !== 32764) {
+ $ERROR('#78: 8191 << 2 === 32764. Actual: ' + (8191 << 2));
+}
+
+
+if (16383 << 2 !== 65532) {
+ $ERROR('#79: 16383 << 2 === 65532. Actual: ' + (16383 << 2));
+}
+
+
+if (32767 << 2 !== 131068) {
+ $ERROR('#80: 32767 << 2 === 131068. Actual: ' + (32767 << 2));
+}
+
+
+if (65535 << 2 !== 262140) {
+ $ERROR('#81: 65535 << 2 === 262140. Actual: ' + (65535 << 2));
+}
+
+
+if (131071 << 2 !== 524284) {
+ $ERROR('#82: 131071 << 2 === 524284. Actual: ' + (131071 << 2));
+}
+
+
+if (262143 << 2 !== 1048572) {
+ $ERROR('#83: 262143 << 2 === 1048572. Actual: ' + (262143 << 2));
+}
+
+
+if (524287 << 2 !== 2097148) {
+ $ERROR('#84: 524287 << 2 === 2097148. Actual: ' + (524287 << 2));
+}
+
+
+if (1048575 << 2 !== 4194300) {
+ $ERROR('#85: 1048575 << 2 === 4194300. Actual: ' + (1048575 << 2));
+}
+
+
+if (2097151 << 2 !== 8388604) {
+ $ERROR('#86: 2097151 << 2 === 8388604. Actual: ' + (2097151 << 2));
+}
+
+
+if (4194303 << 2 !== 16777212) {
+ $ERROR('#87: 4194303 << 2 === 16777212. Actual: ' + (4194303 << 2));
+}
+
+
+if (8388607 << 2 !== 33554428) {
+ $ERROR('#88: 8388607 << 2 === 33554428. Actual: ' + (8388607 << 2));
+}
+
+
+if (16777215 << 2 !== 67108860) {
+ $ERROR('#89: 16777215 << 2 === 67108860. Actual: ' + (16777215 << 2));
+}
+
+
+if (33554431 << 2 !== 134217724) {
+ $ERROR('#90: 33554431 << 2 === 134217724. Actual: ' + (33554431 << 2));
+}
+
+
+if (67108863 << 2 !== 268435452) {
+ $ERROR('#91: 67108863 << 2 === 268435452. Actual: ' + (67108863 << 2));
+}
+
+
+if (134217727 << 2 !== 536870908) {
+ $ERROR('#92: 134217727 << 2 === 536870908. Actual: ' + (134217727 << 2));
+}
+
+
+if (268435455 << 2 !== 1073741820) {
+ $ERROR('#93: 268435455 << 2 === 1073741820. Actual: ' + (268435455 << 2));
+}
+
+
+if (536870911 << 2 !== 2147483644) {
+ $ERROR('#94: 536870911 << 2 === 2147483644. Actual: ' + (536870911 << 2));
+}
+
+
+if (1073741823 << 2 !== -4) {
+ $ERROR('#95: 1073741823 << 2 === -4. Actual: ' + (1073741823 << 2));
+}
+
+
+if (2147483647 << 2 !== -4) {
+ $ERROR('#96: 2147483647 << 2 === -4. Actual: ' + (2147483647 << 2));
+}
+
+
+if (0 << 3 !== 0) {
+ $ERROR('#97: 0 << 3 === 0. Actual: ' + (0 << 3));
+}
+
+
+if (1 << 3 !== 8) {
+ $ERROR('#98: 1 << 3 === 8. Actual: ' + (1 << 3));
+}
+
+
+if (3 << 3 !== 24) {
+ $ERROR('#99: 3 << 3 === 24. Actual: ' + (3 << 3));
+}
+
+
+if (7 << 3 !== 56) {
+ $ERROR('#100: 7 << 3 === 56. Actual: ' + (7 << 3));
+}
+
+
+if (15 << 3 !== 120) {
+ $ERROR('#101: 15 << 3 === 120. Actual: ' + (15 << 3));
+}
+
+
+if (31 << 3 !== 248) {
+ $ERROR('#102: 31 << 3 === 248. Actual: ' + (31 << 3));
+}
+
+
+if (63 << 3 !== 504) {
+ $ERROR('#103: 63 << 3 === 504. Actual: ' + (63 << 3));
+}
+
+
+if (127 << 3 !== 1016) {
+ $ERROR('#104: 127 << 3 === 1016. Actual: ' + (127 << 3));
+}
+
+
+if (255 << 3 !== 2040) {
+ $ERROR('#105: 255 << 3 === 2040. Actual: ' + (255 << 3));
+}
+
+
+if (511 << 3 !== 4088) {
+ $ERROR('#106: 511 << 3 === 4088. Actual: ' + (511 << 3));
+}
+
+
+if (1023 << 3 !== 8184) {
+ $ERROR('#107: 1023 << 3 === 8184. Actual: ' + (1023 << 3));
+}
+
+
+if (2047 << 3 !== 16376) {
+ $ERROR('#108: 2047 << 3 === 16376. Actual: ' + (2047 << 3));
+}
+
+
+if (4095 << 3 !== 32760) {
+ $ERROR('#109: 4095 << 3 === 32760. Actual: ' + (4095 << 3));
+}
+
+
+if (8191 << 3 !== 65528) {
+ $ERROR('#110: 8191 << 3 === 65528. Actual: ' + (8191 << 3));
+}
+
+
+if (16383 << 3 !== 131064) {
+ $ERROR('#111: 16383 << 3 === 131064. Actual: ' + (16383 << 3));
+}
+
+
+if (32767 << 3 !== 262136) {
+ $ERROR('#112: 32767 << 3 === 262136. Actual: ' + (32767 << 3));
+}
+
+
+if (65535 << 3 !== 524280) {
+ $ERROR('#113: 65535 << 3 === 524280. Actual: ' + (65535 << 3));
+}
+
+
+if (131071 << 3 !== 1048568) {
+ $ERROR('#114: 131071 << 3 === 1048568. Actual: ' + (131071 << 3));
+}
+
+
+if (262143 << 3 !== 2097144) {
+ $ERROR('#115: 262143 << 3 === 2097144. Actual: ' + (262143 << 3));
+}
+
+
+if (524287 << 3 !== 4194296) {
+ $ERROR('#116: 524287 << 3 === 4194296. Actual: ' + (524287 << 3));
+}
+
+
+if (1048575 << 3 !== 8388600) {
+ $ERROR('#117: 1048575 << 3 === 8388600. Actual: ' + (1048575 << 3));
+}
+
+
+if (2097151 << 3 !== 16777208) {
+ $ERROR('#118: 2097151 << 3 === 16777208. Actual: ' + (2097151 << 3));
+}
+
+
+if (4194303 << 3 !== 33554424) {
+ $ERROR('#119: 4194303 << 3 === 33554424. Actual: ' + (4194303 << 3));
+}
+
+
+if (8388607 << 3 !== 67108856) {
+ $ERROR('#120: 8388607 << 3 === 67108856. Actual: ' + (8388607 << 3));
+}
+
+
+if (16777215 << 3 !== 134217720) {
+ $ERROR('#121: 16777215 << 3 === 134217720. Actual: ' + (16777215 << 3));
+}
+
+
+if (33554431 << 3 !== 268435448) {
+ $ERROR('#122: 33554431 << 3 === 268435448. Actual: ' + (33554431 << 3));
+}
+
+
+if (67108863 << 3 !== 536870904) {
+ $ERROR('#123: 67108863 << 3 === 536870904. Actual: ' + (67108863 << 3));
+}
+
+
+if (134217727 << 3 !== 1073741816) {
+ $ERROR('#124: 134217727 << 3 === 1073741816. Actual: ' + (134217727 << 3));
+}
+
+
+if (268435455 << 3 !== 2147483640) {
+ $ERROR('#125: 268435455 << 3 === 2147483640. Actual: ' + (268435455 << 3));
+}
+
+
+if (536870911 << 3 !== -8) {
+ $ERROR('#126: 536870911 << 3 === -8. Actual: ' + (536870911 << 3));
+}
+
+
+if (1073741823 << 3 !== -8) {
+ $ERROR('#127: 1073741823 << 3 === -8. Actual: ' + (1073741823 << 3));
+}
+
+
+if (2147483647 << 3 !== -8) {
+ $ERROR('#128: 2147483647 << 3 === -8. Actual: ' + (2147483647 << 3));
+}
+
+
+if (0 << 4 !== 0) {
+ $ERROR('#129: 0 << 4 === 0. Actual: ' + (0 << 4));
+}
+
+
+if (1 << 4 !== 16) {
+ $ERROR('#130: 1 << 4 === 16. Actual: ' + (1 << 4));
+}
+
+
+if (3 << 4 !== 48) {
+ $ERROR('#131: 3 << 4 === 48. Actual: ' + (3 << 4));
+}
+
+
+if (7 << 4 !== 112) {
+ $ERROR('#132: 7 << 4 === 112. Actual: ' + (7 << 4));
+}
+
+
+if (15 << 4 !== 240) {
+ $ERROR('#133: 15 << 4 === 240. Actual: ' + (15 << 4));
+}
+
+
+if (31 << 4 !== 496) {
+ $ERROR('#134: 31 << 4 === 496. Actual: ' + (31 << 4));
+}
+
+
+if (63 << 4 !== 1008) {
+ $ERROR('#135: 63 << 4 === 1008. Actual: ' + (63 << 4));
+}
+
+
+if (127 << 4 !== 2032) {
+ $ERROR('#136: 127 << 4 === 2032. Actual: ' + (127 << 4));
+}
+
+
+if (255 << 4 !== 4080) {
+ $ERROR('#137: 255 << 4 === 4080. Actual: ' + (255 << 4));
+}
+
+
+if (511 << 4 !== 8176) {
+ $ERROR('#138: 511 << 4 === 8176. Actual: ' + (511 << 4));
+}
+
+
+if (1023 << 4 !== 16368) {
+ $ERROR('#139: 1023 << 4 === 16368. Actual: ' + (1023 << 4));
+}
+
+
+if (2047 << 4 !== 32752) {
+ $ERROR('#140: 2047 << 4 === 32752. Actual: ' + (2047 << 4));
+}
+
+
+if (4095 << 4 !== 65520) {
+ $ERROR('#141: 4095 << 4 === 65520. Actual: ' + (4095 << 4));
+}
+
+
+if (8191 << 4 !== 131056) {
+ $ERROR('#142: 8191 << 4 === 131056. Actual: ' + (8191 << 4));
+}
+
+
+if (16383 << 4 !== 262128) {
+ $ERROR('#143: 16383 << 4 === 262128. Actual: ' + (16383 << 4));
+}
+
+
+if (32767 << 4 !== 524272) {
+ $ERROR('#144: 32767 << 4 === 524272. Actual: ' + (32767 << 4));
+}
+
+
+if (65535 << 4 !== 1048560) {
+ $ERROR('#145: 65535 << 4 === 1048560. Actual: ' + (65535 << 4));
+}
+
+
+if (131071 << 4 !== 2097136) {
+ $ERROR('#146: 131071 << 4 === 2097136. Actual: ' + (131071 << 4));
+}
+
+
+if (262143 << 4 !== 4194288) {
+ $ERROR('#147: 262143 << 4 === 4194288. Actual: ' + (262143 << 4));
+}
+
+
+if (524287 << 4 !== 8388592) {
+ $ERROR('#148: 524287 << 4 === 8388592. Actual: ' + (524287 << 4));
+}
+
+
+if (1048575 << 4 !== 16777200) {
+ $ERROR('#149: 1048575 << 4 === 16777200. Actual: ' + (1048575 << 4));
+}
+
+
+if (2097151 << 4 !== 33554416) {
+ $ERROR('#150: 2097151 << 4 === 33554416. Actual: ' + (2097151 << 4));
+}
+
+
+if (4194303 << 4 !== 67108848) {
+ $ERROR('#151: 4194303 << 4 === 67108848. Actual: ' + (4194303 << 4));
+}
+
+
+if (8388607 << 4 !== 134217712) {
+ $ERROR('#152: 8388607 << 4 === 134217712. Actual: ' + (8388607 << 4));
+}
+
+
+if (16777215 << 4 !== 268435440) {
+ $ERROR('#153: 16777215 << 4 === 268435440. Actual: ' + (16777215 << 4));
+}
+
+
+if (33554431 << 4 !== 536870896) {
+ $ERROR('#154: 33554431 << 4 === 536870896. Actual: ' + (33554431 << 4));
+}
+
+
+if (67108863 << 4 !== 1073741808) {
+ $ERROR('#155: 67108863 << 4 === 1073741808. Actual: ' + (67108863 << 4));
+}
+
+
+if (134217727 << 4 !== 2147483632) {
+ $ERROR('#156: 134217727 << 4 === 2147483632. Actual: ' + (134217727 << 4));
+}
+
+
+if (268435455 << 4 !== -16) {
+ $ERROR('#157: 268435455 << 4 === -16. Actual: ' + (268435455 << 4));
+}
+
+
+if (536870911 << 4 !== -16) {
+ $ERROR('#158: 536870911 << 4 === -16. Actual: ' + (536870911 << 4));
+}
+
+
+if (1073741823 << 4 !== -16) {
+ $ERROR('#159: 1073741823 << 4 === -16. Actual: ' + (1073741823 << 4));
+}
+
+
+if (2147483647 << 4 !== -16) {
+ $ERROR('#160: 2147483647 << 4 === -16. Actual: ' + (2147483647 << 4));
+}
+
+
+if (0 << 5 !== 0) {
+ $ERROR('#161: 0 << 5 === 0. Actual: ' + (0 << 5));
+}
+
+
+if (1 << 5 !== 32) {
+ $ERROR('#162: 1 << 5 === 32. Actual: ' + (1 << 5));
+}
+
+
+if (3 << 5 !== 96) {
+ $ERROR('#163: 3 << 5 === 96. Actual: ' + (3 << 5));
+}
+
+
+if (7 << 5 !== 224) {
+ $ERROR('#164: 7 << 5 === 224. Actual: ' + (7 << 5));
+}
+
+
+if (15 << 5 !== 480) {
+ $ERROR('#165: 15 << 5 === 480. Actual: ' + (15 << 5));
+}
+
+
+if (31 << 5 !== 992) {
+ $ERROR('#166: 31 << 5 === 992. Actual: ' + (31 << 5));
+}
+
+
+if (63 << 5 !== 2016) {
+ $ERROR('#167: 63 << 5 === 2016. Actual: ' + (63 << 5));
+}
+
+
+if (127 << 5 !== 4064) {
+ $ERROR('#168: 127 << 5 === 4064. Actual: ' + (127 << 5));
+}
+
+
+if (255 << 5 !== 8160) {
+ $ERROR('#169: 255 << 5 === 8160. Actual: ' + (255 << 5));
+}
+
+
+if (511 << 5 !== 16352) {
+ $ERROR('#170: 511 << 5 === 16352. Actual: ' + (511 << 5));
+}
+
+
+if (1023 << 5 !== 32736) {
+ $ERROR('#171: 1023 << 5 === 32736. Actual: ' + (1023 << 5));
+}
+
+
+if (2047 << 5 !== 65504) {
+ $ERROR('#172: 2047 << 5 === 65504. Actual: ' + (2047 << 5));
+}
+
+
+if (4095 << 5 !== 131040) {
+ $ERROR('#173: 4095 << 5 === 131040. Actual: ' + (4095 << 5));
+}
+
+
+if (8191 << 5 !== 262112) {
+ $ERROR('#174: 8191 << 5 === 262112. Actual: ' + (8191 << 5));
+}
+
+
+if (16383 << 5 !== 524256) {
+ $ERROR('#175: 16383 << 5 === 524256. Actual: ' + (16383 << 5));
+}
+
+
+if (32767 << 5 !== 1048544) {
+ $ERROR('#176: 32767 << 5 === 1048544. Actual: ' + (32767 << 5));
+}
+
+
+if (65535 << 5 !== 2097120) {
+ $ERROR('#177: 65535 << 5 === 2097120. Actual: ' + (65535 << 5));
+}
+
+
+if (131071 << 5 !== 4194272) {
+ $ERROR('#178: 131071 << 5 === 4194272. Actual: ' + (131071 << 5));
+}
+
+
+if (262143 << 5 !== 8388576) {
+ $ERROR('#179: 262143 << 5 === 8388576. Actual: ' + (262143 << 5));
+}
+
+
+if (524287 << 5 !== 16777184) {
+ $ERROR('#180: 524287 << 5 === 16777184. Actual: ' + (524287 << 5));
+}
+
+
+if (1048575 << 5 !== 33554400) {
+ $ERROR('#181: 1048575 << 5 === 33554400. Actual: ' + (1048575 << 5));
+}
+
+
+if (2097151 << 5 !== 67108832) {
+ $ERROR('#182: 2097151 << 5 === 67108832. Actual: ' + (2097151 << 5));
+}
+
+
+if (4194303 << 5 !== 134217696) {
+ $ERROR('#183: 4194303 << 5 === 134217696. Actual: ' + (4194303 << 5));
+}
+
+
+if (8388607 << 5 !== 268435424) {
+ $ERROR('#184: 8388607 << 5 === 268435424. Actual: ' + (8388607 << 5));
+}
+
+
+if (16777215 << 5 !== 536870880) {
+ $ERROR('#185: 16777215 << 5 === 536870880. Actual: ' + (16777215 << 5));
+}
+
+
+if (33554431 << 5 !== 1073741792) {
+ $ERROR('#186: 33554431 << 5 === 1073741792. Actual: ' + (33554431 << 5));
+}
+
+
+if (67108863 << 5 !== 2147483616) {
+ $ERROR('#187: 67108863 << 5 === 2147483616. Actual: ' + (67108863 << 5));
+}
+
+
+if (134217727 << 5 !== -32) {
+ $ERROR('#188: 134217727 << 5 === -32. Actual: ' + (134217727 << 5));
+}
+
+
+if (268435455 << 5 !== -32) {
+ $ERROR('#189: 268435455 << 5 === -32. Actual: ' + (268435455 << 5));
+}
+
+
+if (536870911 << 5 !== -32) {
+ $ERROR('#190: 536870911 << 5 === -32. Actual: ' + (536870911 << 5));
+}
+
+
+if (1073741823 << 5 !== -32) {
+ $ERROR('#191: 1073741823 << 5 === -32. Actual: ' + (1073741823 << 5));
+}
+
+
+if (2147483647 << 5 !== -32) {
+ $ERROR('#192: 2147483647 << 5 === -32. Actual: ' + (2147483647 << 5));
+}
+
+
+if (0 << 6 !== 0) {
+ $ERROR('#193: 0 << 6 === 0. Actual: ' + (0 << 6));
+}
+
+
+if (1 << 6 !== 64) {
+ $ERROR('#194: 1 << 6 === 64. Actual: ' + (1 << 6));
+}
+
+
+if (3 << 6 !== 192) {
+ $ERROR('#195: 3 << 6 === 192. Actual: ' + (3 << 6));
+}
+
+
+if (7 << 6 !== 448) {
+ $ERROR('#196: 7 << 6 === 448. Actual: ' + (7 << 6));
+}
+
+
+if (15 << 6 !== 960) {
+ $ERROR('#197: 15 << 6 === 960. Actual: ' + (15 << 6));
+}
+
+
+if (31 << 6 !== 1984) {
+ $ERROR('#198: 31 << 6 === 1984. Actual: ' + (31 << 6));
+}
+
+
+if (63 << 6 !== 4032) {
+ $ERROR('#199: 63 << 6 === 4032. Actual: ' + (63 << 6));
+}
+
+
+if (127 << 6 !== 8128) {
+ $ERROR('#200: 127 << 6 === 8128. Actual: ' + (127 << 6));
+}
+
+
+if (255 << 6 !== 16320) {
+ $ERROR('#201: 255 << 6 === 16320. Actual: ' + (255 << 6));
+}
+
+
+if (511 << 6 !== 32704) {
+ $ERROR('#202: 511 << 6 === 32704. Actual: ' + (511 << 6));
+}
+
+
+if (1023 << 6 !== 65472) {
+ $ERROR('#203: 1023 << 6 === 65472. Actual: ' + (1023 << 6));
+}
+
+
+if (2047 << 6 !== 131008) {
+ $ERROR('#204: 2047 << 6 === 131008. Actual: ' + (2047 << 6));
+}
+
+
+if (4095 << 6 !== 262080) {
+ $ERROR('#205: 4095 << 6 === 262080. Actual: ' + (4095 << 6));
+}
+
+
+if (8191 << 6 !== 524224) {
+ $ERROR('#206: 8191 << 6 === 524224. Actual: ' + (8191 << 6));
+}
+
+
+if (16383 << 6 !== 1048512) {
+ $ERROR('#207: 16383 << 6 === 1048512. Actual: ' + (16383 << 6));
+}
+
+
+if (32767 << 6 !== 2097088) {
+ $ERROR('#208: 32767 << 6 === 2097088. Actual: ' + (32767 << 6));
+}
+
+
+if (65535 << 6 !== 4194240) {
+ $ERROR('#209: 65535 << 6 === 4194240. Actual: ' + (65535 << 6));
+}
+
+
+if (131071 << 6 !== 8388544) {
+ $ERROR('#210: 131071 << 6 === 8388544. Actual: ' + (131071 << 6));
+}
+
+
+if (262143 << 6 !== 16777152) {
+ $ERROR('#211: 262143 << 6 === 16777152. Actual: ' + (262143 << 6));
+}
+
+
+if (524287 << 6 !== 33554368) {
+ $ERROR('#212: 524287 << 6 === 33554368. Actual: ' + (524287 << 6));
+}
+
+
+if (1048575 << 6 !== 67108800) {
+ $ERROR('#213: 1048575 << 6 === 67108800. Actual: ' + (1048575 << 6));
+}
+
+
+if (2097151 << 6 !== 134217664) {
+ $ERROR('#214: 2097151 << 6 === 134217664. Actual: ' + (2097151 << 6));
+}
+
+
+if (4194303 << 6 !== 268435392) {
+ $ERROR('#215: 4194303 << 6 === 268435392. Actual: ' + (4194303 << 6));
+}
+
+
+if (8388607 << 6 !== 536870848) {
+ $ERROR('#216: 8388607 << 6 === 536870848. Actual: ' + (8388607 << 6));
+}
+
+
+if (16777215 << 6 !== 1073741760) {
+ $ERROR('#217: 16777215 << 6 === 1073741760. Actual: ' + (16777215 << 6));
+}
+
+
+if (33554431 << 6 !== 2147483584) {
+ $ERROR('#218: 33554431 << 6 === 2147483584. Actual: ' + (33554431 << 6));
+}
+
+
+if (67108863 << 6 !== -64) {
+ $ERROR('#219: 67108863 << 6 === -64. Actual: ' + (67108863 << 6));
+}
+
+
+if (134217727 << 6 !== -64) {
+ $ERROR('#220: 134217727 << 6 === -64. Actual: ' + (134217727 << 6));
+}
+
+
+if (268435455 << 6 !== -64) {
+ $ERROR('#221: 268435455 << 6 === -64. Actual: ' + (268435455 << 6));
+}
+
+
+if (536870911 << 6 !== -64) {
+ $ERROR('#222: 536870911 << 6 === -64. Actual: ' + (536870911 << 6));
+}
+
+
+if (1073741823 << 6 !== -64) {
+ $ERROR('#223: 1073741823 << 6 === -64. Actual: ' + (1073741823 << 6));
+}
+
+
+if (2147483647 << 6 !== -64) {
+ $ERROR('#224: 2147483647 << 6 === -64. Actual: ' + (2147483647 << 6));
+}
+
+
+if (0 << 7 !== 0) {
+ $ERROR('#225: 0 << 7 === 0. Actual: ' + (0 << 7));
+}
+
+
+if (1 << 7 !== 128) {
+ $ERROR('#226: 1 << 7 === 128. Actual: ' + (1 << 7));
+}
+
+
+if (3 << 7 !== 384) {
+ $ERROR('#227: 3 << 7 === 384. Actual: ' + (3 << 7));
+}
+
+
+if (7 << 7 !== 896) {
+ $ERROR('#228: 7 << 7 === 896. Actual: ' + (7 << 7));
+}
+
+
+if (15 << 7 !== 1920) {
+ $ERROR('#229: 15 << 7 === 1920. Actual: ' + (15 << 7));
+}
+
+
+if (31 << 7 !== 3968) {
+ $ERROR('#230: 31 << 7 === 3968. Actual: ' + (31 << 7));
+}
+
+
+if (63 << 7 !== 8064) {
+ $ERROR('#231: 63 << 7 === 8064. Actual: ' + (63 << 7));
+}
+
+
+if (127 << 7 !== 16256) {
+ $ERROR('#232: 127 << 7 === 16256. Actual: ' + (127 << 7));
+}
+
+
+if (255 << 7 !== 32640) {
+ $ERROR('#233: 255 << 7 === 32640. Actual: ' + (255 << 7));
+}
+
+
+if (511 << 7 !== 65408) {
+ $ERROR('#234: 511 << 7 === 65408. Actual: ' + (511 << 7));
+}
+
+
+if (1023 << 7 !== 130944) {
+ $ERROR('#235: 1023 << 7 === 130944. Actual: ' + (1023 << 7));
+}
+
+
+if (2047 << 7 !== 262016) {
+ $ERROR('#236: 2047 << 7 === 262016. Actual: ' + (2047 << 7));
+}
+
+
+if (4095 << 7 !== 524160) {
+ $ERROR('#237: 4095 << 7 === 524160. Actual: ' + (4095 << 7));
+}
+
+
+if (8191 << 7 !== 1048448) {
+ $ERROR('#238: 8191 << 7 === 1048448. Actual: ' + (8191 << 7));
+}
+
+
+if (16383 << 7 !== 2097024) {
+ $ERROR('#239: 16383 << 7 === 2097024. Actual: ' + (16383 << 7));
+}
+
+
+if (32767 << 7 !== 4194176) {
+ $ERROR('#240: 32767 << 7 === 4194176. Actual: ' + (32767 << 7));
+}
+
+
+if (65535 << 7 !== 8388480) {
+ $ERROR('#241: 65535 << 7 === 8388480. Actual: ' + (65535 << 7));
+}
+
+
+if (131071 << 7 !== 16777088) {
+ $ERROR('#242: 131071 << 7 === 16777088. Actual: ' + (131071 << 7));
+}
+
+
+if (262143 << 7 !== 33554304) {
+ $ERROR('#243: 262143 << 7 === 33554304. Actual: ' + (262143 << 7));
+}
+
+
+if (524287 << 7 !== 67108736) {
+ $ERROR('#244: 524287 << 7 === 67108736. Actual: ' + (524287 << 7));
+}
+
+
+if (1048575 << 7 !== 134217600) {
+ $ERROR('#245: 1048575 << 7 === 134217600. Actual: ' + (1048575 << 7));
+}
+
+
+if (2097151 << 7 !== 268435328) {
+ $ERROR('#246: 2097151 << 7 === 268435328. Actual: ' + (2097151 << 7));
+}
+
+
+if (4194303 << 7 !== 536870784) {
+ $ERROR('#247: 4194303 << 7 === 536870784. Actual: ' + (4194303 << 7));
+}
+
+
+if (8388607 << 7 !== 1073741696) {
+ $ERROR('#248: 8388607 << 7 === 1073741696. Actual: ' + (8388607 << 7));
+}
+
+
+if (16777215 << 7 !== 2147483520) {
+ $ERROR('#249: 16777215 << 7 === 2147483520. Actual: ' + (16777215 << 7));
+}
+
+
+if (33554431 << 7 !== -128) {
+ $ERROR('#250: 33554431 << 7 === -128. Actual: ' + (33554431 << 7));
+}
+
+
+if (67108863 << 7 !== -128) {
+ $ERROR('#251: 67108863 << 7 === -128. Actual: ' + (67108863 << 7));
+}
+
+
+if (134217727 << 7 !== -128) {
+ $ERROR('#252: 134217727 << 7 === -128. Actual: ' + (134217727 << 7));
+}
+
+
+if (268435455 << 7 !== -128) {
+ $ERROR('#253: 268435455 << 7 === -128. Actual: ' + (268435455 << 7));
+}
+
+
+if (536870911 << 7 !== -128) {
+ $ERROR('#254: 536870911 << 7 === -128. Actual: ' + (536870911 << 7));
+}
+
+
+if (1073741823 << 7 !== -128) {
+ $ERROR('#255: 1073741823 << 7 === -128. Actual: ' + (1073741823 << 7));
+}
+
+
+if (2147483647 << 7 !== -128) {
+ $ERROR('#256: 2147483647 << 7 === -128. Actual: ' + (2147483647 << 7));
+}
+
+
+if (0 << 8 !== 0) {
+ $ERROR('#257: 0 << 8 === 0. Actual: ' + (0 << 8));
+}
+
+
+if (1 << 8 !== 256) {
+ $ERROR('#258: 1 << 8 === 256. Actual: ' + (1 << 8));
+}
+
+
+if (3 << 8 !== 768) {
+ $ERROR('#259: 3 << 8 === 768. Actual: ' + (3 << 8));
+}
+
+
+if (7 << 8 !== 1792) {
+ $ERROR('#260: 7 << 8 === 1792. Actual: ' + (7 << 8));
+}
+
+
+if (15 << 8 !== 3840) {
+ $ERROR('#261: 15 << 8 === 3840. Actual: ' + (15 << 8));
+}
+
+
+if (31 << 8 !== 7936) {
+ $ERROR('#262: 31 << 8 === 7936. Actual: ' + (31 << 8));
+}
+
+
+if (63 << 8 !== 16128) {
+ $ERROR('#263: 63 << 8 === 16128. Actual: ' + (63 << 8));
+}
+
+
+if (127 << 8 !== 32512) {
+ $ERROR('#264: 127 << 8 === 32512. Actual: ' + (127 << 8));
+}
+
+
+if (255 << 8 !== 65280) {
+ $ERROR('#265: 255 << 8 === 65280. Actual: ' + (255 << 8));
+}
+
+
+if (511 << 8 !== 130816) {
+ $ERROR('#266: 511 << 8 === 130816. Actual: ' + (511 << 8));
+}
+
+
+if (1023 << 8 !== 261888) {
+ $ERROR('#267: 1023 << 8 === 261888. Actual: ' + (1023 << 8));
+}
+
+
+if (2047 << 8 !== 524032) {
+ $ERROR('#268: 2047 << 8 === 524032. Actual: ' + (2047 << 8));
+}
+
+
+if (4095 << 8 !== 1048320) {
+ $ERROR('#269: 4095 << 8 === 1048320. Actual: ' + (4095 << 8));
+}
+
+
+if (8191 << 8 !== 2096896) {
+ $ERROR('#270: 8191 << 8 === 2096896. Actual: ' + (8191 << 8));
+}
+
+
+if (16383 << 8 !== 4194048) {
+ $ERROR('#271: 16383 << 8 === 4194048. Actual: ' + (16383 << 8));
+}
+
+
+if (32767 << 8 !== 8388352) {
+ $ERROR('#272: 32767 << 8 === 8388352. Actual: ' + (32767 << 8));
+}
+
+
+if (65535 << 8 !== 16776960) {
+ $ERROR('#273: 65535 << 8 === 16776960. Actual: ' + (65535 << 8));
+}
+
+
+if (131071 << 8 !== 33554176) {
+ $ERROR('#274: 131071 << 8 === 33554176. Actual: ' + (131071 << 8));
+}
+
+
+if (262143 << 8 !== 67108608) {
+ $ERROR('#275: 262143 << 8 === 67108608. Actual: ' + (262143 << 8));
+}
+
+
+if (524287 << 8 !== 134217472) {
+ $ERROR('#276: 524287 << 8 === 134217472. Actual: ' + (524287 << 8));
+}
+
+
+if (1048575 << 8 !== 268435200) {
+ $ERROR('#277: 1048575 << 8 === 268435200. Actual: ' + (1048575 << 8));
+}
+
+
+if (2097151 << 8 !== 536870656) {
+ $ERROR('#278: 2097151 << 8 === 536870656. Actual: ' + (2097151 << 8));
+}
+
+
+if (4194303 << 8 !== 1073741568) {
+ $ERROR('#279: 4194303 << 8 === 1073741568. Actual: ' + (4194303 << 8));
+}
+
+
+if (8388607 << 8 !== 2147483392) {
+ $ERROR('#280: 8388607 << 8 === 2147483392. Actual: ' + (8388607 << 8));
+}
+
+
+if (16777215 << 8 !== -256) {
+ $ERROR('#281: 16777215 << 8 === -256. Actual: ' + (16777215 << 8));
+}
+
+
+if (33554431 << 8 !== -256) {
+ $ERROR('#282: 33554431 << 8 === -256. Actual: ' + (33554431 << 8));
+}
+
+
+if (67108863 << 8 !== -256) {
+ $ERROR('#283: 67108863 << 8 === -256. Actual: ' + (67108863 << 8));
+}
+
+
+if (134217727 << 8 !== -256) {
+ $ERROR('#284: 134217727 << 8 === -256. Actual: ' + (134217727 << 8));
+}
+
+
+if (268435455 << 8 !== -256) {
+ $ERROR('#285: 268435455 << 8 === -256. Actual: ' + (268435455 << 8));
+}
+
+
+if (536870911 << 8 !== -256) {
+ $ERROR('#286: 536870911 << 8 === -256. Actual: ' + (536870911 << 8));
+}
+
+
+if (1073741823 << 8 !== -256) {
+ $ERROR('#287: 1073741823 << 8 === -256. Actual: ' + (1073741823 << 8));
+}
+
+
+if (2147483647 << 8 !== -256) {
+ $ERROR('#288: 2147483647 << 8 === -256. Actual: ' + (2147483647 << 8));
+}
+
+
+if (0 << 9 !== 0) {
+ $ERROR('#289: 0 << 9 === 0. Actual: ' + (0 << 9));
+}
+
+
+if (1 << 9 !== 512) {
+ $ERROR('#290: 1 << 9 === 512. Actual: ' + (1 << 9));
+}
+
+
+if (3 << 9 !== 1536) {
+ $ERROR('#291: 3 << 9 === 1536. Actual: ' + (3 << 9));
+}
+
+
+if (7 << 9 !== 3584) {
+ $ERROR('#292: 7 << 9 === 3584. Actual: ' + (7 << 9));
+}
+
+
+if (15 << 9 !== 7680) {
+ $ERROR('#293: 15 << 9 === 7680. Actual: ' + (15 << 9));
+}
+
+
+if (31 << 9 !== 15872) {
+ $ERROR('#294: 31 << 9 === 15872. Actual: ' + (31 << 9));
+}
+
+
+if (63 << 9 !== 32256) {
+ $ERROR('#295: 63 << 9 === 32256. Actual: ' + (63 << 9));
+}
+
+
+if (127 << 9 !== 65024) {
+ $ERROR('#296: 127 << 9 === 65024. Actual: ' + (127 << 9));
+}
+
+
+if (255 << 9 !== 130560) {
+ $ERROR('#297: 255 << 9 === 130560. Actual: ' + (255 << 9));
+}
+
+
+if (511 << 9 !== 261632) {
+ $ERROR('#298: 511 << 9 === 261632. Actual: ' + (511 << 9));
+}
+
+
+if (1023 << 9 !== 523776) {
+ $ERROR('#299: 1023 << 9 === 523776. Actual: ' + (1023 << 9));
+}
+
+
+if (2047 << 9 !== 1048064) {
+ $ERROR('#300: 2047 << 9 === 1048064. Actual: ' + (2047 << 9));
+}
+
+
+if (4095 << 9 !== 2096640) {
+ $ERROR('#301: 4095 << 9 === 2096640. Actual: ' + (4095 << 9));
+}
+
+
+if (8191 << 9 !== 4193792) {
+ $ERROR('#302: 8191 << 9 === 4193792. Actual: ' + (8191 << 9));
+}
+
+
+if (16383 << 9 !== 8388096) {
+ $ERROR('#303: 16383 << 9 === 8388096. Actual: ' + (16383 << 9));
+}
+
+
+if (32767 << 9 !== 16776704) {
+ $ERROR('#304: 32767 << 9 === 16776704. Actual: ' + (32767 << 9));
+}
+
+
+if (65535 << 9 !== 33553920) {
+ $ERROR('#305: 65535 << 9 === 33553920. Actual: ' + (65535 << 9));
+}
+
+
+if (131071 << 9 !== 67108352) {
+ $ERROR('#306: 131071 << 9 === 67108352. Actual: ' + (131071 << 9));
+}
+
+
+if (262143 << 9 !== 134217216) {
+ $ERROR('#307: 262143 << 9 === 134217216. Actual: ' + (262143 << 9));
+}
+
+
+if (524287 << 9 !== 268434944) {
+ $ERROR('#308: 524287 << 9 === 268434944. Actual: ' + (524287 << 9));
+}
+
+
+if (1048575 << 9 !== 536870400) {
+ $ERROR('#309: 1048575 << 9 === 536870400. Actual: ' + (1048575 << 9));
+}
+
+
+if (2097151 << 9 !== 1073741312) {
+ $ERROR('#310: 2097151 << 9 === 1073741312. Actual: ' + (2097151 << 9));
+}
+
+
+if (4194303 << 9 !== 2147483136) {
+ $ERROR('#311: 4194303 << 9 === 2147483136. Actual: ' + (4194303 << 9));
+}
+
+
+if (8388607 << 9 !== -512) {
+ $ERROR('#312: 8388607 << 9 === -512. Actual: ' + (8388607 << 9));
+}
+
+
+if (16777215 << 9 !== -512) {
+ $ERROR('#313: 16777215 << 9 === -512. Actual: ' + (16777215 << 9));
+}
+
+
+if (33554431 << 9 !== -512) {
+ $ERROR('#314: 33554431 << 9 === -512. Actual: ' + (33554431 << 9));
+}
+
+
+if (67108863 << 9 !== -512) {
+ $ERROR('#315: 67108863 << 9 === -512. Actual: ' + (67108863 << 9));
+}
+
+
+if (134217727 << 9 !== -512) {
+ $ERROR('#316: 134217727 << 9 === -512. Actual: ' + (134217727 << 9));
+}
+
+
+if (268435455 << 9 !== -512) {
+ $ERROR('#317: 268435455 << 9 === -512. Actual: ' + (268435455 << 9));
+}
+
+
+if (536870911 << 9 !== -512) {
+ $ERROR('#318: 536870911 << 9 === -512. Actual: ' + (536870911 << 9));
+}
+
+
+if (1073741823 << 9 !== -512) {
+ $ERROR('#319: 1073741823 << 9 === -512. Actual: ' + (1073741823 << 9));
+}
+
+
+if (2147483647 << 9 !== -512) {
+ $ERROR('#320: 2147483647 << 9 === -512. Actual: ' + (2147483647 << 9));
+}
+
+
+if (0 << 10 !== 0) {
+ $ERROR('#321: 0 << 10 === 0. Actual: ' + (0 << 10));
+}
+
+
+if (1 << 10 !== 1024) {
+ $ERROR('#322: 1 << 10 === 1024. Actual: ' + (1 << 10));
+}
+
+
+if (3 << 10 !== 3072) {
+ $ERROR('#323: 3 << 10 === 3072. Actual: ' + (3 << 10));
+}
+
+
+if (7 << 10 !== 7168) {
+ $ERROR('#324: 7 << 10 === 7168. Actual: ' + (7 << 10));
+}
+
+
+if (15 << 10 !== 15360) {
+ $ERROR('#325: 15 << 10 === 15360. Actual: ' + (15 << 10));
+}
+
+
+if (31 << 10 !== 31744) {
+ $ERROR('#326: 31 << 10 === 31744. Actual: ' + (31 << 10));
+}
+
+
+if (63 << 10 !== 64512) {
+ $ERROR('#327: 63 << 10 === 64512. Actual: ' + (63 << 10));
+}
+
+
+if (127 << 10 !== 130048) {
+ $ERROR('#328: 127 << 10 === 130048. Actual: ' + (127 << 10));
+}
+
+
+if (255 << 10 !== 261120) {
+ $ERROR('#329: 255 << 10 === 261120. Actual: ' + (255 << 10));
+}
+
+
+if (511 << 10 !== 523264) {
+ $ERROR('#330: 511 << 10 === 523264. Actual: ' + (511 << 10));
+}
+
+
+if (1023 << 10 !== 1047552) {
+ $ERROR('#331: 1023 << 10 === 1047552. Actual: ' + (1023 << 10));
+}
+
+
+if (2047 << 10 !== 2096128) {
+ $ERROR('#332: 2047 << 10 === 2096128. Actual: ' + (2047 << 10));
+}
+
+
+if (4095 << 10 !== 4193280) {
+ $ERROR('#333: 4095 << 10 === 4193280. Actual: ' + (4095 << 10));
+}
+
+
+if (8191 << 10 !== 8387584) {
+ $ERROR('#334: 8191 << 10 === 8387584. Actual: ' + (8191 << 10));
+}
+
+
+if (16383 << 10 !== 16776192) {
+ $ERROR('#335: 16383 << 10 === 16776192. Actual: ' + (16383 << 10));
+}
+
+
+if (32767 << 10 !== 33553408) {
+ $ERROR('#336: 32767 << 10 === 33553408. Actual: ' + (32767 << 10));
+}
+
+
+if (65535 << 10 !== 67107840) {
+ $ERROR('#337: 65535 << 10 === 67107840. Actual: ' + (65535 << 10));
+}
+
+
+if (131071 << 10 !== 134216704) {
+ $ERROR('#338: 131071 << 10 === 134216704. Actual: ' + (131071 << 10));
+}
+
+
+if (262143 << 10 !== 268434432) {
+ $ERROR('#339: 262143 << 10 === 268434432. Actual: ' + (262143 << 10));
+}
+
+
+if (524287 << 10 !== 536869888) {
+ $ERROR('#340: 524287 << 10 === 536869888. Actual: ' + (524287 << 10));
+}
+
+
+if (1048575 << 10 !== 1073740800) {
+ $ERROR('#341: 1048575 << 10 === 1073740800. Actual: ' + (1048575 << 10));
+}
+
+
+if (2097151 << 10 !== 2147482624) {
+ $ERROR('#342: 2097151 << 10 === 2147482624. Actual: ' + (2097151 << 10));
+}
+
+
+if (4194303 << 10 !== -1024) {
+ $ERROR('#343: 4194303 << 10 === -1024. Actual: ' + (4194303 << 10));
+}
+
+
+if (8388607 << 10 !== -1024) {
+ $ERROR('#344: 8388607 << 10 === -1024. Actual: ' + (8388607 << 10));
+}
+
+
+if (16777215 << 10 !== -1024) {
+ $ERROR('#345: 16777215 << 10 === -1024. Actual: ' + (16777215 << 10));
+}
+
+
+if (33554431 << 10 !== -1024) {
+ $ERROR('#346: 33554431 << 10 === -1024. Actual: ' + (33554431 << 10));
+}
+
+
+if (67108863 << 10 !== -1024) {
+ $ERROR('#347: 67108863 << 10 === -1024. Actual: ' + (67108863 << 10));
+}
+
+
+if (134217727 << 10 !== -1024) {
+ $ERROR('#348: 134217727 << 10 === -1024. Actual: ' + (134217727 << 10));
+}
+
+
+if (268435455 << 10 !== -1024) {
+ $ERROR('#349: 268435455 << 10 === -1024. Actual: ' + (268435455 << 10));
+}
+
+
+if (536870911 << 10 !== -1024) {
+ $ERROR('#350: 536870911 << 10 === -1024. Actual: ' + (536870911 << 10));
+}
+
+
+if (1073741823 << 10 !== -1024) {
+ $ERROR('#351: 1073741823 << 10 === -1024. Actual: ' + (1073741823 << 10));
+}
+
+
+if (2147483647 << 10 !== -1024) {
+ $ERROR('#352: 2147483647 << 10 === -1024. Actual: ' + (2147483647 << 10));
+}
+
+
+if (0 << 11 !== 0) {
+ $ERROR('#353: 0 << 11 === 0. Actual: ' + (0 << 11));
+}
+
+
+if (1 << 11 !== 2048) {
+ $ERROR('#354: 1 << 11 === 2048. Actual: ' + (1 << 11));
+}
+
+
+if (3 << 11 !== 6144) {
+ $ERROR('#355: 3 << 11 === 6144. Actual: ' + (3 << 11));
+}
+
+
+if (7 << 11 !== 14336) {
+ $ERROR('#356: 7 << 11 === 14336. Actual: ' + (7 << 11));
+}
+
+
+if (15 << 11 !== 30720) {
+ $ERROR('#357: 15 << 11 === 30720. Actual: ' + (15 << 11));
+}
+
+
+if (31 << 11 !== 63488) {
+ $ERROR('#358: 31 << 11 === 63488. Actual: ' + (31 << 11));
+}
+
+
+if (63 << 11 !== 129024) {
+ $ERROR('#359: 63 << 11 === 129024. Actual: ' + (63 << 11));
+}
+
+
+if (127 << 11 !== 260096) {
+ $ERROR('#360: 127 << 11 === 260096. Actual: ' + (127 << 11));
+}
+
+
+if (255 << 11 !== 522240) {
+ $ERROR('#361: 255 << 11 === 522240. Actual: ' + (255 << 11));
+}
+
+
+if (511 << 11 !== 1046528) {
+ $ERROR('#362: 511 << 11 === 1046528. Actual: ' + (511 << 11));
+}
+
+
+if (1023 << 11 !== 2095104) {
+ $ERROR('#363: 1023 << 11 === 2095104. Actual: ' + (1023 << 11));
+}
+
+
+if (2047 << 11 !== 4192256) {
+ $ERROR('#364: 2047 << 11 === 4192256. Actual: ' + (2047 << 11));
+}
+
+
+if (4095 << 11 !== 8386560) {
+ $ERROR('#365: 4095 << 11 === 8386560. Actual: ' + (4095 << 11));
+}
+
+
+if (8191 << 11 !== 16775168) {
+ $ERROR('#366: 8191 << 11 === 16775168. Actual: ' + (8191 << 11));
+}
+
+
+if (16383 << 11 !== 33552384) {
+ $ERROR('#367: 16383 << 11 === 33552384. Actual: ' + (16383 << 11));
+}
+
+
+if (32767 << 11 !== 67106816) {
+ $ERROR('#368: 32767 << 11 === 67106816. Actual: ' + (32767 << 11));
+}
+
+
+if (65535 << 11 !== 134215680) {
+ $ERROR('#369: 65535 << 11 === 134215680. Actual: ' + (65535 << 11));
+}
+
+
+if (131071 << 11 !== 268433408) {
+ $ERROR('#370: 131071 << 11 === 268433408. Actual: ' + (131071 << 11));
+}
+
+
+if (262143 << 11 !== 536868864) {
+ $ERROR('#371: 262143 << 11 === 536868864. Actual: ' + (262143 << 11));
+}
+
+
+if (524287 << 11 !== 1073739776) {
+ $ERROR('#372: 524287 << 11 === 1073739776. Actual: ' + (524287 << 11));
+}
+
+
+if (1048575 << 11 !== 2147481600) {
+ $ERROR('#373: 1048575 << 11 === 2147481600. Actual: ' + (1048575 << 11));
+}
+
+
+if (2097151 << 11 !== -2048) {
+ $ERROR('#374: 2097151 << 11 === -2048. Actual: ' + (2097151 << 11));
+}
+
+
+if (4194303 << 11 !== -2048) {
+ $ERROR('#375: 4194303 << 11 === -2048. Actual: ' + (4194303 << 11));
+}
+
+
+if (8388607 << 11 !== -2048) {
+ $ERROR('#376: 8388607 << 11 === -2048. Actual: ' + (8388607 << 11));
+}
+
+
+if (16777215 << 11 !== -2048) {
+ $ERROR('#377: 16777215 << 11 === -2048. Actual: ' + (16777215 << 11));
+}
+
+
+if (33554431 << 11 !== -2048) {
+ $ERROR('#378: 33554431 << 11 === -2048. Actual: ' + (33554431 << 11));
+}
+
+
+if (67108863 << 11 !== -2048) {
+ $ERROR('#379: 67108863 << 11 === -2048. Actual: ' + (67108863 << 11));
+}
+
+
+if (134217727 << 11 !== -2048) {
+ $ERROR('#380: 134217727 << 11 === -2048. Actual: ' + (134217727 << 11));
+}
+
+
+if (268435455 << 11 !== -2048) {
+ $ERROR('#381: 268435455 << 11 === -2048. Actual: ' + (268435455 << 11));
+}
+
+
+if (536870911 << 11 !== -2048) {
+ $ERROR('#382: 536870911 << 11 === -2048. Actual: ' + (536870911 << 11));
+}
+
+
+if (1073741823 << 11 !== -2048) {
+ $ERROR('#383: 1073741823 << 11 === -2048. Actual: ' + (1073741823 << 11));
+}
+
+
+if (2147483647 << 11 !== -2048) {
+ $ERROR('#384: 2147483647 << 11 === -2048. Actual: ' + (2147483647 << 11));
+}
+
+
+if (0 << 12 !== 0) {
+ $ERROR('#385: 0 << 12 === 0. Actual: ' + (0 << 12));
+}
+
+
+if (1 << 12 !== 4096) {
+ $ERROR('#386: 1 << 12 === 4096. Actual: ' + (1 << 12));
+}
+
+
+if (3 << 12 !== 12288) {
+ $ERROR('#387: 3 << 12 === 12288. Actual: ' + (3 << 12));
+}
+
+
+if (7 << 12 !== 28672) {
+ $ERROR('#388: 7 << 12 === 28672. Actual: ' + (7 << 12));
+}
+
+
+if (15 << 12 !== 61440) {
+ $ERROR('#389: 15 << 12 === 61440. Actual: ' + (15 << 12));
+}
+
+
+if (31 << 12 !== 126976) {
+ $ERROR('#390: 31 << 12 === 126976. Actual: ' + (31 << 12));
+}
+
+
+if (63 << 12 !== 258048) {
+ $ERROR('#391: 63 << 12 === 258048. Actual: ' + (63 << 12));
+}
+
+
+if (127 << 12 !== 520192) {
+ $ERROR('#392: 127 << 12 === 520192. Actual: ' + (127 << 12));
+}
+
+
+if (255 << 12 !== 1044480) {
+ $ERROR('#393: 255 << 12 === 1044480. Actual: ' + (255 << 12));
+}
+
+
+if (511 << 12 !== 2093056) {
+ $ERROR('#394: 511 << 12 === 2093056. Actual: ' + (511 << 12));
+}
+
+
+if (1023 << 12 !== 4190208) {
+ $ERROR('#395: 1023 << 12 === 4190208. Actual: ' + (1023 << 12));
+}
+
+
+if (2047 << 12 !== 8384512) {
+ $ERROR('#396: 2047 << 12 === 8384512. Actual: ' + (2047 << 12));
+}
+
+
+if (4095 << 12 !== 16773120) {
+ $ERROR('#397: 4095 << 12 === 16773120. Actual: ' + (4095 << 12));
+}
+
+
+if (8191 << 12 !== 33550336) {
+ $ERROR('#398: 8191 << 12 === 33550336. Actual: ' + (8191 << 12));
+}
+
+
+if (16383 << 12 !== 67104768) {
+ $ERROR('#399: 16383 << 12 === 67104768. Actual: ' + (16383 << 12));
+}
+
+
+if (32767 << 12 !== 134213632) {
+ $ERROR('#400: 32767 << 12 === 134213632. Actual: ' + (32767 << 12));
+}
+
+
+if (65535 << 12 !== 268431360) {
+ $ERROR('#401: 65535 << 12 === 268431360. Actual: ' + (65535 << 12));
+}
+
+
+if (131071 << 12 !== 536866816) {
+ $ERROR('#402: 131071 << 12 === 536866816. Actual: ' + (131071 << 12));
+}
+
+
+if (262143 << 12 !== 1073737728) {
+ $ERROR('#403: 262143 << 12 === 1073737728. Actual: ' + (262143 << 12));
+}
+
+
+if (524287 << 12 !== 2147479552) {
+ $ERROR('#404: 524287 << 12 === 2147479552. Actual: ' + (524287 << 12));
+}
+
+
+if (1048575 << 12 !== -4096) {
+ $ERROR('#405: 1048575 << 12 === -4096. Actual: ' + (1048575 << 12));
+}
+
+
+if (2097151 << 12 !== -4096) {
+ $ERROR('#406: 2097151 << 12 === -4096. Actual: ' + (2097151 << 12));
+}
+
+
+if (4194303 << 12 !== -4096) {
+ $ERROR('#407: 4194303 << 12 === -4096. Actual: ' + (4194303 << 12));
+}
+
+
+if (8388607 << 12 !== -4096) {
+ $ERROR('#408: 8388607 << 12 === -4096. Actual: ' + (8388607 << 12));
+}
+
+
+if (16777215 << 12 !== -4096) {
+ $ERROR('#409: 16777215 << 12 === -4096. Actual: ' + (16777215 << 12));
+}
+
+
+if (33554431 << 12 !== -4096) {
+ $ERROR('#410: 33554431 << 12 === -4096. Actual: ' + (33554431 << 12));
+}
+
+
+if (67108863 << 12 !== -4096) {
+ $ERROR('#411: 67108863 << 12 === -4096. Actual: ' + (67108863 << 12));
+}
+
+
+if (134217727 << 12 !== -4096) {
+ $ERROR('#412: 134217727 << 12 === -4096. Actual: ' + (134217727 << 12));
+}
+
+
+if (268435455 << 12 !== -4096) {
+ $ERROR('#413: 268435455 << 12 === -4096. Actual: ' + (268435455 << 12));
+}
+
+
+if (536870911 << 12 !== -4096) {
+ $ERROR('#414: 536870911 << 12 === -4096. Actual: ' + (536870911 << 12));
+}
+
+
+if (1073741823 << 12 !== -4096) {
+ $ERROR('#415: 1073741823 << 12 === -4096. Actual: ' + (1073741823 << 12));
+}
+
+
+if (2147483647 << 12 !== -4096) {
+ $ERROR('#416: 2147483647 << 12 === -4096. Actual: ' + (2147483647 << 12));
+}
+
+
+if (0 << 13 !== 0) {
+ $ERROR('#417: 0 << 13 === 0. Actual: ' + (0 << 13));
+}
+
+
+if (1 << 13 !== 8192) {
+ $ERROR('#418: 1 << 13 === 8192. Actual: ' + (1 << 13));
+}
+
+
+if (3 << 13 !== 24576) {
+ $ERROR('#419: 3 << 13 === 24576. Actual: ' + (3 << 13));
+}
+
+
+if (7 << 13 !== 57344) {
+ $ERROR('#420: 7 << 13 === 57344. Actual: ' + (7 << 13));
+}
+
+
+if (15 << 13 !== 122880) {
+ $ERROR('#421: 15 << 13 === 122880. Actual: ' + (15 << 13));
+}
+
+
+if (31 << 13 !== 253952) {
+ $ERROR('#422: 31 << 13 === 253952. Actual: ' + (31 << 13));
+}
+
+
+if (63 << 13 !== 516096) {
+ $ERROR('#423: 63 << 13 === 516096. Actual: ' + (63 << 13));
+}
+
+
+if (127 << 13 !== 1040384) {
+ $ERROR('#424: 127 << 13 === 1040384. Actual: ' + (127 << 13));
+}
+
+
+if (255 << 13 !== 2088960) {
+ $ERROR('#425: 255 << 13 === 2088960. Actual: ' + (255 << 13));
+}
+
+
+if (511 << 13 !== 4186112) {
+ $ERROR('#426: 511 << 13 === 4186112. Actual: ' + (511 << 13));
+}
+
+
+if (1023 << 13 !== 8380416) {
+ $ERROR('#427: 1023 << 13 === 8380416. Actual: ' + (1023 << 13));
+}
+
+
+if (2047 << 13 !== 16769024) {
+ $ERROR('#428: 2047 << 13 === 16769024. Actual: ' + (2047 << 13));
+}
+
+
+if (4095 << 13 !== 33546240) {
+ $ERROR('#429: 4095 << 13 === 33546240. Actual: ' + (4095 << 13));
+}
+
+
+if (8191 << 13 !== 67100672) {
+ $ERROR('#430: 8191 << 13 === 67100672. Actual: ' + (8191 << 13));
+}
+
+
+if (16383 << 13 !== 134209536) {
+ $ERROR('#431: 16383 << 13 === 134209536. Actual: ' + (16383 << 13));
+}
+
+
+if (32767 << 13 !== 268427264) {
+ $ERROR('#432: 32767 << 13 === 268427264. Actual: ' + (32767 << 13));
+}
+
+
+if (65535 << 13 !== 536862720) {
+ $ERROR('#433: 65535 << 13 === 536862720. Actual: ' + (65535 << 13));
+}
+
+
+if (131071 << 13 !== 1073733632) {
+ $ERROR('#434: 131071 << 13 === 1073733632. Actual: ' + (131071 << 13));
+}
+
+
+if (262143 << 13 !== 2147475456) {
+ $ERROR('#435: 262143 << 13 === 2147475456. Actual: ' + (262143 << 13));
+}
+
+
+if (524287 << 13 !== -8192) {
+ $ERROR('#436: 524287 << 13 === -8192. Actual: ' + (524287 << 13));
+}
+
+
+if (1048575 << 13 !== -8192) {
+ $ERROR('#437: 1048575 << 13 === -8192. Actual: ' + (1048575 << 13));
+}
+
+
+if (2097151 << 13 !== -8192) {
+ $ERROR('#438: 2097151 << 13 === -8192. Actual: ' + (2097151 << 13));
+}
+
+
+if (4194303 << 13 !== -8192) {
+ $ERROR('#439: 4194303 << 13 === -8192. Actual: ' + (4194303 << 13));
+}
+
+
+if (8388607 << 13 !== -8192) {
+ $ERROR('#440: 8388607 << 13 === -8192. Actual: ' + (8388607 << 13));
+}
+
+
+if (16777215 << 13 !== -8192) {
+ $ERROR('#441: 16777215 << 13 === -8192. Actual: ' + (16777215 << 13));
+}
+
+
+if (33554431 << 13 !== -8192) {
+ $ERROR('#442: 33554431 << 13 === -8192. Actual: ' + (33554431 << 13));
+}
+
+
+if (67108863 << 13 !== -8192) {
+ $ERROR('#443: 67108863 << 13 === -8192. Actual: ' + (67108863 << 13));
+}
+
+
+if (134217727 << 13 !== -8192) {
+ $ERROR('#444: 134217727 << 13 === -8192. Actual: ' + (134217727 << 13));
+}
+
+
+if (268435455 << 13 !== -8192) {
+ $ERROR('#445: 268435455 << 13 === -8192. Actual: ' + (268435455 << 13));
+}
+
+
+if (536870911 << 13 !== -8192) {
+ $ERROR('#446: 536870911 << 13 === -8192. Actual: ' + (536870911 << 13));
+}
+
+
+if (1073741823 << 13 !== -8192) {
+ $ERROR('#447: 1073741823 << 13 === -8192. Actual: ' + (1073741823 << 13));
+}
+
+
+if (2147483647 << 13 !== -8192) {
+ $ERROR('#448: 2147483647 << 13 === -8192. Actual: ' + (2147483647 << 13));
+}
+
+
+if (0 << 14 !== 0) {
+ $ERROR('#449: 0 << 14 === 0. Actual: ' + (0 << 14));
+}
+
+
+if (1 << 14 !== 16384) {
+ $ERROR('#450: 1 << 14 === 16384. Actual: ' + (1 << 14));
+}
+
+
+if (3 << 14 !== 49152) {
+ $ERROR('#451: 3 << 14 === 49152. Actual: ' + (3 << 14));
+}
+
+
+if (7 << 14 !== 114688) {
+ $ERROR('#452: 7 << 14 === 114688. Actual: ' + (7 << 14));
+}
+
+
+if (15 << 14 !== 245760) {
+ $ERROR('#453: 15 << 14 === 245760. Actual: ' + (15 << 14));
+}
+
+
+if (31 << 14 !== 507904) {
+ $ERROR('#454: 31 << 14 === 507904. Actual: ' + (31 << 14));
+}
+
+
+if (63 << 14 !== 1032192) {
+ $ERROR('#455: 63 << 14 === 1032192. Actual: ' + (63 << 14));
+}
+
+
+if (127 << 14 !== 2080768) {
+ $ERROR('#456: 127 << 14 === 2080768. Actual: ' + (127 << 14));
+}
+
+
+if (255 << 14 !== 4177920) {
+ $ERROR('#457: 255 << 14 === 4177920. Actual: ' + (255 << 14));
+}
+
+
+if (511 << 14 !== 8372224) {
+ $ERROR('#458: 511 << 14 === 8372224. Actual: ' + (511 << 14));
+}
+
+
+if (1023 << 14 !== 16760832) {
+ $ERROR('#459: 1023 << 14 === 16760832. Actual: ' + (1023 << 14));
+}
+
+
+if (2047 << 14 !== 33538048) {
+ $ERROR('#460: 2047 << 14 === 33538048. Actual: ' + (2047 << 14));
+}
+
+
+if (4095 << 14 !== 67092480) {
+ $ERROR('#461: 4095 << 14 === 67092480. Actual: ' + (4095 << 14));
+}
+
+
+if (8191 << 14 !== 134201344) {
+ $ERROR('#462: 8191 << 14 === 134201344. Actual: ' + (8191 << 14));
+}
+
+
+if (16383 << 14 !== 268419072) {
+ $ERROR('#463: 16383 << 14 === 268419072. Actual: ' + (16383 << 14));
+}
+
+
+if (32767 << 14 !== 536854528) {
+ $ERROR('#464: 32767 << 14 === 536854528. Actual: ' + (32767 << 14));
+}
+
+
+if (65535 << 14 !== 1073725440) {
+ $ERROR('#465: 65535 << 14 === 1073725440. Actual: ' + (65535 << 14));
+}
+
+
+if (131071 << 14 !== 2147467264) {
+ $ERROR('#466: 131071 << 14 === 2147467264. Actual: ' + (131071 << 14));
+}
+
+
+if (262143 << 14 !== -16384) {
+ $ERROR('#467: 262143 << 14 === -16384. Actual: ' + (262143 << 14));
+}
+
+
+if (524287 << 14 !== -16384) {
+ $ERROR('#468: 524287 << 14 === -16384. Actual: ' + (524287 << 14));
+}
+
+
+if (1048575 << 14 !== -16384) {
+ $ERROR('#469: 1048575 << 14 === -16384. Actual: ' + (1048575 << 14));
+}
+
+
+if (2097151 << 14 !== -16384) {
+ $ERROR('#470: 2097151 << 14 === -16384. Actual: ' + (2097151 << 14));
+}
+
+
+if (4194303 << 14 !== -16384) {
+ $ERROR('#471: 4194303 << 14 === -16384. Actual: ' + (4194303 << 14));
+}
+
+
+if (8388607 << 14 !== -16384) {
+ $ERROR('#472: 8388607 << 14 === -16384. Actual: ' + (8388607 << 14));
+}
+
+
+if (16777215 << 14 !== -16384) {
+ $ERROR('#473: 16777215 << 14 === -16384. Actual: ' + (16777215 << 14));
+}
+
+
+if (33554431 << 14 !== -16384) {
+ $ERROR('#474: 33554431 << 14 === -16384. Actual: ' + (33554431 << 14));
+}
+
+
+if (67108863 << 14 !== -16384) {
+ $ERROR('#475: 67108863 << 14 === -16384. Actual: ' + (67108863 << 14));
+}
+
+
+if (134217727 << 14 !== -16384) {
+ $ERROR('#476: 134217727 << 14 === -16384. Actual: ' + (134217727 << 14));
+}
+
+
+if (268435455 << 14 !== -16384) {
+ $ERROR('#477: 268435455 << 14 === -16384. Actual: ' + (268435455 << 14));
+}
+
+
+if (536870911 << 14 !== -16384) {
+ $ERROR('#478: 536870911 << 14 === -16384. Actual: ' + (536870911 << 14));
+}
+
+
+if (1073741823 << 14 !== -16384) {
+ $ERROR('#479: 1073741823 << 14 === -16384. Actual: ' + (1073741823 << 14));
+}
+
+
+if (2147483647 << 14 !== -16384) {
+ $ERROR('#480: 2147483647 << 14 === -16384. Actual: ' + (2147483647 << 14));
+}
+
+
+if (0 << 15 !== 0) {
+ $ERROR('#481: 0 << 15 === 0. Actual: ' + (0 << 15));
+}
+
+
+if (1 << 15 !== 32768) {
+ $ERROR('#482: 1 << 15 === 32768. Actual: ' + (1 << 15));
+}
+
+
+if (3 << 15 !== 98304) {
+ $ERROR('#483: 3 << 15 === 98304. Actual: ' + (3 << 15));
+}
+
+
+if (7 << 15 !== 229376) {
+ $ERROR('#484: 7 << 15 === 229376. Actual: ' + (7 << 15));
+}
+
+
+if (15 << 15 !== 491520) {
+ $ERROR('#485: 15 << 15 === 491520. Actual: ' + (15 << 15));
+}
+
+
+if (31 << 15 !== 1015808) {
+ $ERROR('#486: 31 << 15 === 1015808. Actual: ' + (31 << 15));
+}
+
+
+if (63 << 15 !== 2064384) {
+ $ERROR('#487: 63 << 15 === 2064384. Actual: ' + (63 << 15));
+}
+
+
+if (127 << 15 !== 4161536) {
+ $ERROR('#488: 127 << 15 === 4161536. Actual: ' + (127 << 15));
+}
+
+
+if (255 << 15 !== 8355840) {
+ $ERROR('#489: 255 << 15 === 8355840. Actual: ' + (255 << 15));
+}
+
+
+if (511 << 15 !== 16744448) {
+ $ERROR('#490: 511 << 15 === 16744448. Actual: ' + (511 << 15));
+}
+
+
+if (1023 << 15 !== 33521664) {
+ $ERROR('#491: 1023 << 15 === 33521664. Actual: ' + (1023 << 15));
+}
+
+
+if (2047 << 15 !== 67076096) {
+ $ERROR('#492: 2047 << 15 === 67076096. Actual: ' + (2047 << 15));
+}
+
+
+if (4095 << 15 !== 134184960) {
+ $ERROR('#493: 4095 << 15 === 134184960. Actual: ' + (4095 << 15));
+}
+
+
+if (8191 << 15 !== 268402688) {
+ $ERROR('#494: 8191 << 15 === 268402688. Actual: ' + (8191 << 15));
+}
+
+
+if (16383 << 15 !== 536838144) {
+ $ERROR('#495: 16383 << 15 === 536838144. Actual: ' + (16383 << 15));
+}
+
+
+if (32767 << 15 !== 1073709056) {
+ $ERROR('#496: 32767 << 15 === 1073709056. Actual: ' + (32767 << 15));
+}
+
+
+if (65535 << 15 !== 2147450880) {
+ $ERROR('#497: 65535 << 15 === 2147450880. Actual: ' + (65535 << 15));
+}
+
+
+if (131071 << 15 !== -32768) {
+ $ERROR('#498: 131071 << 15 === -32768. Actual: ' + (131071 << 15));
+}
+
+
+if (262143 << 15 !== -32768) {
+ $ERROR('#499: 262143 << 15 === -32768. Actual: ' + (262143 << 15));
+}
+
+
+if (524287 << 15 !== -32768) {
+ $ERROR('#500: 524287 << 15 === -32768. Actual: ' + (524287 << 15));
+}
+
+
+if (1048575 << 15 !== -32768) {
+ $ERROR('#501: 1048575 << 15 === -32768. Actual: ' + (1048575 << 15));
+}
+
+
+if (2097151 << 15 !== -32768) {
+ $ERROR('#502: 2097151 << 15 === -32768. Actual: ' + (2097151 << 15));
+}
+
+
+if (4194303 << 15 !== -32768) {
+ $ERROR('#503: 4194303 << 15 === -32768. Actual: ' + (4194303 << 15));
+}
+
+
+if (8388607 << 15 !== -32768) {
+ $ERROR('#504: 8388607 << 15 === -32768. Actual: ' + (8388607 << 15));
+}
+
+
+if (16777215 << 15 !== -32768) {
+ $ERROR('#505: 16777215 << 15 === -32768. Actual: ' + (16777215 << 15));
+}
+
+
+if (33554431 << 15 !== -32768) {
+ $ERROR('#506: 33554431 << 15 === -32768. Actual: ' + (33554431 << 15));
+}
+
+
+if (67108863 << 15 !== -32768) {
+ $ERROR('#507: 67108863 << 15 === -32768. Actual: ' + (67108863 << 15));
+}
+
+
+if (134217727 << 15 !== -32768) {
+ $ERROR('#508: 134217727 << 15 === -32768. Actual: ' + (134217727 << 15));
+}
+
+
+if (268435455 << 15 !== -32768) {
+ $ERROR('#509: 268435455 << 15 === -32768. Actual: ' + (268435455 << 15));
+}
+
+
+if (536870911 << 15 !== -32768) {
+ $ERROR('#510: 536870911 << 15 === -32768. Actual: ' + (536870911 << 15));
+}
+
+
+if (1073741823 << 15 !== -32768) {
+ $ERROR('#511: 1073741823 << 15 === -32768. Actual: ' + (1073741823 << 15));
+}
+
+
+if (2147483647 << 15 !== -32768) {
+ $ERROR('#512: 2147483647 << 15 === -32768. Actual: ' + (2147483647 << 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T4.js
new file mode 100644
index 000000000..93fbaf6dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T4.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A4_T4;
+ * @section: 11.7.1;
+ * @assertion: Check operator x << y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (0 << 16 !== 0) {
+ $ERROR('#513: 0 << 16 === 0. Actual: ' + (0 << 16));
+}
+
+
+if (1 << 16 !== 65536) {
+ $ERROR('#514: 1 << 16 === 65536. Actual: ' + (1 << 16));
+}
+
+
+if (3 << 16 !== 196608) {
+ $ERROR('#515: 3 << 16 === 196608. Actual: ' + (3 << 16));
+}
+
+
+if (7 << 16 !== 458752) {
+ $ERROR('#516: 7 << 16 === 458752. Actual: ' + (7 << 16));
+}
+
+
+if (15 << 16 !== 983040) {
+ $ERROR('#517: 15 << 16 === 983040. Actual: ' + (15 << 16));
+}
+
+
+if (31 << 16 !== 2031616) {
+ $ERROR('#518: 31 << 16 === 2031616. Actual: ' + (31 << 16));
+}
+
+
+if (63 << 16 !== 4128768) {
+ $ERROR('#519: 63 << 16 === 4128768. Actual: ' + (63 << 16));
+}
+
+
+if (127 << 16 !== 8323072) {
+ $ERROR('#520: 127 << 16 === 8323072. Actual: ' + (127 << 16));
+}
+
+
+if (255 << 16 !== 16711680) {
+ $ERROR('#521: 255 << 16 === 16711680. Actual: ' + (255 << 16));
+}
+
+
+if (511 << 16 !== 33488896) {
+ $ERROR('#522: 511 << 16 === 33488896. Actual: ' + (511 << 16));
+}
+
+
+if (1023 << 16 !== 67043328) {
+ $ERROR('#523: 1023 << 16 === 67043328. Actual: ' + (1023 << 16));
+}
+
+
+if (2047 << 16 !== 134152192) {
+ $ERROR('#524: 2047 << 16 === 134152192. Actual: ' + (2047 << 16));
+}
+
+
+if (4095 << 16 !== 268369920) {
+ $ERROR('#525: 4095 << 16 === 268369920. Actual: ' + (4095 << 16));
+}
+
+
+if (8191 << 16 !== 536805376) {
+ $ERROR('#526: 8191 << 16 === 536805376. Actual: ' + (8191 << 16));
+}
+
+
+if (16383 << 16 !== 1073676288) {
+ $ERROR('#527: 16383 << 16 === 1073676288. Actual: ' + (16383 << 16));
+}
+
+
+if (32767 << 16 !== 2147418112) {
+ $ERROR('#528: 32767 << 16 === 2147418112. Actual: ' + (32767 << 16));
+}
+
+
+if (65535 << 16 !== -65536) {
+ $ERROR('#529: 65535 << 16 === -65536. Actual: ' + (65535 << 16));
+}
+
+
+if (131071 << 16 !== -65536) {
+ $ERROR('#530: 131071 << 16 === -65536. Actual: ' + (131071 << 16));
+}
+
+
+if (262143 << 16 !== -65536) {
+ $ERROR('#531: 262143 << 16 === -65536. Actual: ' + (262143 << 16));
+}
+
+
+if (524287 << 16 !== -65536) {
+ $ERROR('#532: 524287 << 16 === -65536. Actual: ' + (524287 << 16));
+}
+
+
+if (1048575 << 16 !== -65536) {
+ $ERROR('#533: 1048575 << 16 === -65536. Actual: ' + (1048575 << 16));
+}
+
+
+if (2097151 << 16 !== -65536) {
+ $ERROR('#534: 2097151 << 16 === -65536. Actual: ' + (2097151 << 16));
+}
+
+
+if (4194303 << 16 !== -65536) {
+ $ERROR('#535: 4194303 << 16 === -65536. Actual: ' + (4194303 << 16));
+}
+
+
+if (8388607 << 16 !== -65536) {
+ $ERROR('#536: 8388607 << 16 === -65536. Actual: ' + (8388607 << 16));
+}
+
+
+if (16777215 << 16 !== -65536) {
+ $ERROR('#537: 16777215 << 16 === -65536. Actual: ' + (16777215 << 16));
+}
+
+
+if (33554431 << 16 !== -65536) {
+ $ERROR('#538: 33554431 << 16 === -65536. Actual: ' + (33554431 << 16));
+}
+
+
+if (67108863 << 16 !== -65536) {
+ $ERROR('#539: 67108863 << 16 === -65536. Actual: ' + (67108863 << 16));
+}
+
+
+if (134217727 << 16 !== -65536) {
+ $ERROR('#540: 134217727 << 16 === -65536. Actual: ' + (134217727 << 16));
+}
+
+
+if (268435455 << 16 !== -65536) {
+ $ERROR('#541: 268435455 << 16 === -65536. Actual: ' + (268435455 << 16));
+}
+
+
+if (536870911 << 16 !== -65536) {
+ $ERROR('#542: 536870911 << 16 === -65536. Actual: ' + (536870911 << 16));
+}
+
+
+if (1073741823 << 16 !== -65536) {
+ $ERROR('#543: 1073741823 << 16 === -65536. Actual: ' + (1073741823 << 16));
+}
+
+
+if (2147483647 << 16 !== -65536) {
+ $ERROR('#544: 2147483647 << 16 === -65536. Actual: ' + (2147483647 << 16));
+}
+
+
+if (0 << 17 !== 0) {
+ $ERROR('#545: 0 << 17 === 0. Actual: ' + (0 << 17));
+}
+
+
+if (1 << 17 !== 131072) {
+ $ERROR('#546: 1 << 17 === 131072. Actual: ' + (1 << 17));
+}
+
+
+if (3 << 17 !== 393216) {
+ $ERROR('#547: 3 << 17 === 393216. Actual: ' + (3 << 17));
+}
+
+
+if (7 << 17 !== 917504) {
+ $ERROR('#548: 7 << 17 === 917504. Actual: ' + (7 << 17));
+}
+
+
+if (15 << 17 !== 1966080) {
+ $ERROR('#549: 15 << 17 === 1966080. Actual: ' + (15 << 17));
+}
+
+
+if (31 << 17 !== 4063232) {
+ $ERROR('#550: 31 << 17 === 4063232. Actual: ' + (31 << 17));
+}
+
+
+if (63 << 17 !== 8257536) {
+ $ERROR('#551: 63 << 17 === 8257536. Actual: ' + (63 << 17));
+}
+
+
+if (127 << 17 !== 16646144) {
+ $ERROR('#552: 127 << 17 === 16646144. Actual: ' + (127 << 17));
+}
+
+
+if (255 << 17 !== 33423360) {
+ $ERROR('#553: 255 << 17 === 33423360. Actual: ' + (255 << 17));
+}
+
+
+if (511 << 17 !== 66977792) {
+ $ERROR('#554: 511 << 17 === 66977792. Actual: ' + (511 << 17));
+}
+
+
+if (1023 << 17 !== 134086656) {
+ $ERROR('#555: 1023 << 17 === 134086656. Actual: ' + (1023 << 17));
+}
+
+
+if (2047 << 17 !== 268304384) {
+ $ERROR('#556: 2047 << 17 === 268304384. Actual: ' + (2047 << 17));
+}
+
+
+if (4095 << 17 !== 536739840) {
+ $ERROR('#557: 4095 << 17 === 536739840. Actual: ' + (4095 << 17));
+}
+
+
+if (8191 << 17 !== 1073610752) {
+ $ERROR('#558: 8191 << 17 === 1073610752. Actual: ' + (8191 << 17));
+}
+
+
+if (16383 << 17 !== 2147352576) {
+ $ERROR('#559: 16383 << 17 === 2147352576. Actual: ' + (16383 << 17));
+}
+
+
+if (32767 << 17 !== -131072) {
+ $ERROR('#560: 32767 << 17 === -131072. Actual: ' + (32767 << 17));
+}
+
+
+if (65535 << 17 !== -131072) {
+ $ERROR('#561: 65535 << 17 === -131072. Actual: ' + (65535 << 17));
+}
+
+
+if (131071 << 17 !== -131072) {
+ $ERROR('#562: 131071 << 17 === -131072. Actual: ' + (131071 << 17));
+}
+
+
+if (262143 << 17 !== -131072) {
+ $ERROR('#563: 262143 << 17 === -131072. Actual: ' + (262143 << 17));
+}
+
+
+if (524287 << 17 !== -131072) {
+ $ERROR('#564: 524287 << 17 === -131072. Actual: ' + (524287 << 17));
+}
+
+
+if (1048575 << 17 !== -131072) {
+ $ERROR('#565: 1048575 << 17 === -131072. Actual: ' + (1048575 << 17));
+}
+
+
+if (2097151 << 17 !== -131072) {
+ $ERROR('#566: 2097151 << 17 === -131072. Actual: ' + (2097151 << 17));
+}
+
+
+if (4194303 << 17 !== -131072) {
+ $ERROR('#567: 4194303 << 17 === -131072. Actual: ' + (4194303 << 17));
+}
+
+
+if (8388607 << 17 !== -131072) {
+ $ERROR('#568: 8388607 << 17 === -131072. Actual: ' + (8388607 << 17));
+}
+
+
+if (16777215 << 17 !== -131072) {
+ $ERROR('#569: 16777215 << 17 === -131072. Actual: ' + (16777215 << 17));
+}
+
+
+if (33554431 << 17 !== -131072) {
+ $ERROR('#570: 33554431 << 17 === -131072. Actual: ' + (33554431 << 17));
+}
+
+
+if (67108863 << 17 !== -131072) {
+ $ERROR('#571: 67108863 << 17 === -131072. Actual: ' + (67108863 << 17));
+}
+
+
+if (134217727 << 17 !== -131072) {
+ $ERROR('#572: 134217727 << 17 === -131072. Actual: ' + (134217727 << 17));
+}
+
+
+if (268435455 << 17 !== -131072) {
+ $ERROR('#573: 268435455 << 17 === -131072. Actual: ' + (268435455 << 17));
+}
+
+
+if (536870911 << 17 !== -131072) {
+ $ERROR('#574: 536870911 << 17 === -131072. Actual: ' + (536870911 << 17));
+}
+
+
+if (1073741823 << 17 !== -131072) {
+ $ERROR('#575: 1073741823 << 17 === -131072. Actual: ' + (1073741823 << 17));
+}
+
+
+if (2147483647 << 17 !== -131072) {
+ $ERROR('#576: 2147483647 << 17 === -131072. Actual: ' + (2147483647 << 17));
+}
+
+
+if (0 << 18 !== 0) {
+ $ERROR('#577: 0 << 18 === 0. Actual: ' + (0 << 18));
+}
+
+
+if (1 << 18 !== 262144) {
+ $ERROR('#578: 1 << 18 === 262144. Actual: ' + (1 << 18));
+}
+
+
+if (3 << 18 !== 786432) {
+ $ERROR('#579: 3 << 18 === 786432. Actual: ' + (3 << 18));
+}
+
+
+if (7 << 18 !== 1835008) {
+ $ERROR('#580: 7 << 18 === 1835008. Actual: ' + (7 << 18));
+}
+
+
+if (15 << 18 !== 3932160) {
+ $ERROR('#581: 15 << 18 === 3932160. Actual: ' + (15 << 18));
+}
+
+
+if (31 << 18 !== 8126464) {
+ $ERROR('#582: 31 << 18 === 8126464. Actual: ' + (31 << 18));
+}
+
+
+if (63 << 18 !== 16515072) {
+ $ERROR('#583: 63 << 18 === 16515072. Actual: ' + (63 << 18));
+}
+
+
+if (127 << 18 !== 33292288) {
+ $ERROR('#584: 127 << 18 === 33292288. Actual: ' + (127 << 18));
+}
+
+
+if (255 << 18 !== 66846720) {
+ $ERROR('#585: 255 << 18 === 66846720. Actual: ' + (255 << 18));
+}
+
+
+if (511 << 18 !== 133955584) {
+ $ERROR('#586: 511 << 18 === 133955584. Actual: ' + (511 << 18));
+}
+
+
+if (1023 << 18 !== 268173312) {
+ $ERROR('#587: 1023 << 18 === 268173312. Actual: ' + (1023 << 18));
+}
+
+
+if (2047 << 18 !== 536608768) {
+ $ERROR('#588: 2047 << 18 === 536608768. Actual: ' + (2047 << 18));
+}
+
+
+if (4095 << 18 !== 1073479680) {
+ $ERROR('#589: 4095 << 18 === 1073479680. Actual: ' + (4095 << 18));
+}
+
+
+if (8191 << 18 !== 2147221504) {
+ $ERROR('#590: 8191 << 18 === 2147221504. Actual: ' + (8191 << 18));
+}
+
+
+if (16383 << 18 !== -262144) {
+ $ERROR('#591: 16383 << 18 === -262144. Actual: ' + (16383 << 18));
+}
+
+
+if (32767 << 18 !== -262144) {
+ $ERROR('#592: 32767 << 18 === -262144. Actual: ' + (32767 << 18));
+}
+
+
+if (65535 << 18 !== -262144) {
+ $ERROR('#593: 65535 << 18 === -262144. Actual: ' + (65535 << 18));
+}
+
+
+if (131071 << 18 !== -262144) {
+ $ERROR('#594: 131071 << 18 === -262144. Actual: ' + (131071 << 18));
+}
+
+
+if (262143 << 18 !== -262144) {
+ $ERROR('#595: 262143 << 18 === -262144. Actual: ' + (262143 << 18));
+}
+
+
+if (524287 << 18 !== -262144) {
+ $ERROR('#596: 524287 << 18 === -262144. Actual: ' + (524287 << 18));
+}
+
+
+if (1048575 << 18 !== -262144) {
+ $ERROR('#597: 1048575 << 18 === -262144. Actual: ' + (1048575 << 18));
+}
+
+
+if (2097151 << 18 !== -262144) {
+ $ERROR('#598: 2097151 << 18 === -262144. Actual: ' + (2097151 << 18));
+}
+
+
+if (4194303 << 18 !== -262144) {
+ $ERROR('#599: 4194303 << 18 === -262144. Actual: ' + (4194303 << 18));
+}
+
+
+if (8388607 << 18 !== -262144) {
+ $ERROR('#600: 8388607 << 18 === -262144. Actual: ' + (8388607 << 18));
+}
+
+
+if (16777215 << 18 !== -262144) {
+ $ERROR('#601: 16777215 << 18 === -262144. Actual: ' + (16777215 << 18));
+}
+
+
+if (33554431 << 18 !== -262144) {
+ $ERROR('#602: 33554431 << 18 === -262144. Actual: ' + (33554431 << 18));
+}
+
+
+if (67108863 << 18 !== -262144) {
+ $ERROR('#603: 67108863 << 18 === -262144. Actual: ' + (67108863 << 18));
+}
+
+
+if (134217727 << 18 !== -262144) {
+ $ERROR('#604: 134217727 << 18 === -262144. Actual: ' + (134217727 << 18));
+}
+
+
+if (268435455 << 18 !== -262144) {
+ $ERROR('#605: 268435455 << 18 === -262144. Actual: ' + (268435455 << 18));
+}
+
+
+if (536870911 << 18 !== -262144) {
+ $ERROR('#606: 536870911 << 18 === -262144. Actual: ' + (536870911 << 18));
+}
+
+
+if (1073741823 << 18 !== -262144) {
+ $ERROR('#607: 1073741823 << 18 === -262144. Actual: ' + (1073741823 << 18));
+}
+
+
+if (2147483647 << 18 !== -262144) {
+ $ERROR('#608: 2147483647 << 18 === -262144. Actual: ' + (2147483647 << 18));
+}
+
+
+if (0 << 19 !== 0) {
+ $ERROR('#609: 0 << 19 === 0. Actual: ' + (0 << 19));
+}
+
+
+if (1 << 19 !== 524288) {
+ $ERROR('#610: 1 << 19 === 524288. Actual: ' + (1 << 19));
+}
+
+
+if (3 << 19 !== 1572864) {
+ $ERROR('#611: 3 << 19 === 1572864. Actual: ' + (3 << 19));
+}
+
+
+if (7 << 19 !== 3670016) {
+ $ERROR('#612: 7 << 19 === 3670016. Actual: ' + (7 << 19));
+}
+
+
+if (15 << 19 !== 7864320) {
+ $ERROR('#613: 15 << 19 === 7864320. Actual: ' + (15 << 19));
+}
+
+
+if (31 << 19 !== 16252928) {
+ $ERROR('#614: 31 << 19 === 16252928. Actual: ' + (31 << 19));
+}
+
+
+if (63 << 19 !== 33030144) {
+ $ERROR('#615: 63 << 19 === 33030144. Actual: ' + (63 << 19));
+}
+
+
+if (127 << 19 !== 66584576) {
+ $ERROR('#616: 127 << 19 === 66584576. Actual: ' + (127 << 19));
+}
+
+
+if (255 << 19 !== 133693440) {
+ $ERROR('#617: 255 << 19 === 133693440. Actual: ' + (255 << 19));
+}
+
+
+if (511 << 19 !== 267911168) {
+ $ERROR('#618: 511 << 19 === 267911168. Actual: ' + (511 << 19));
+}
+
+
+if (1023 << 19 !== 536346624) {
+ $ERROR('#619: 1023 << 19 === 536346624. Actual: ' + (1023 << 19));
+}
+
+
+if (2047 << 19 !== 1073217536) {
+ $ERROR('#620: 2047 << 19 === 1073217536. Actual: ' + (2047 << 19));
+}
+
+
+if (4095 << 19 !== 2146959360) {
+ $ERROR('#621: 4095 << 19 === 2146959360. Actual: ' + (4095 << 19));
+}
+
+
+if (8191 << 19 !== -524288) {
+ $ERROR('#622: 8191 << 19 === -524288. Actual: ' + (8191 << 19));
+}
+
+
+if (16383 << 19 !== -524288) {
+ $ERROR('#623: 16383 << 19 === -524288. Actual: ' + (16383 << 19));
+}
+
+
+if (32767 << 19 !== -524288) {
+ $ERROR('#624: 32767 << 19 === -524288. Actual: ' + (32767 << 19));
+}
+
+
+if (65535 << 19 !== -524288) {
+ $ERROR('#625: 65535 << 19 === -524288. Actual: ' + (65535 << 19));
+}
+
+
+if (131071 << 19 !== -524288) {
+ $ERROR('#626: 131071 << 19 === -524288. Actual: ' + (131071 << 19));
+}
+
+
+if (262143 << 19 !== -524288) {
+ $ERROR('#627: 262143 << 19 === -524288. Actual: ' + (262143 << 19));
+}
+
+
+if (524287 << 19 !== -524288) {
+ $ERROR('#628: 524287 << 19 === -524288. Actual: ' + (524287 << 19));
+}
+
+
+if (1048575 << 19 !== -524288) {
+ $ERROR('#629: 1048575 << 19 === -524288. Actual: ' + (1048575 << 19));
+}
+
+
+if (2097151 << 19 !== -524288) {
+ $ERROR('#630: 2097151 << 19 === -524288. Actual: ' + (2097151 << 19));
+}
+
+
+if (4194303 << 19 !== -524288) {
+ $ERROR('#631: 4194303 << 19 === -524288. Actual: ' + (4194303 << 19));
+}
+
+
+if (8388607 << 19 !== -524288) {
+ $ERROR('#632: 8388607 << 19 === -524288. Actual: ' + (8388607 << 19));
+}
+
+
+if (16777215 << 19 !== -524288) {
+ $ERROR('#633: 16777215 << 19 === -524288. Actual: ' + (16777215 << 19));
+}
+
+
+if (33554431 << 19 !== -524288) {
+ $ERROR('#634: 33554431 << 19 === -524288. Actual: ' + (33554431 << 19));
+}
+
+
+if (67108863 << 19 !== -524288) {
+ $ERROR('#635: 67108863 << 19 === -524288. Actual: ' + (67108863 << 19));
+}
+
+
+if (134217727 << 19 !== -524288) {
+ $ERROR('#636: 134217727 << 19 === -524288. Actual: ' + (134217727 << 19));
+}
+
+
+if (268435455 << 19 !== -524288) {
+ $ERROR('#637: 268435455 << 19 === -524288. Actual: ' + (268435455 << 19));
+}
+
+
+if (536870911 << 19 !== -524288) {
+ $ERROR('#638: 536870911 << 19 === -524288. Actual: ' + (536870911 << 19));
+}
+
+
+if (1073741823 << 19 !== -524288) {
+ $ERROR('#639: 1073741823 << 19 === -524288. Actual: ' + (1073741823 << 19));
+}
+
+
+if (2147483647 << 19 !== -524288) {
+ $ERROR('#640: 2147483647 << 19 === -524288. Actual: ' + (2147483647 << 19));
+}
+
+
+if (0 << 20 !== 0) {
+ $ERROR('#641: 0 << 20 === 0. Actual: ' + (0 << 20));
+}
+
+
+if (1 << 20 !== 1048576) {
+ $ERROR('#642: 1 << 20 === 1048576. Actual: ' + (1 << 20));
+}
+
+
+if (3 << 20 !== 3145728) {
+ $ERROR('#643: 3 << 20 === 3145728. Actual: ' + (3 << 20));
+}
+
+
+if (7 << 20 !== 7340032) {
+ $ERROR('#644: 7 << 20 === 7340032. Actual: ' + (7 << 20));
+}
+
+
+if (15 << 20 !== 15728640) {
+ $ERROR('#645: 15 << 20 === 15728640. Actual: ' + (15 << 20));
+}
+
+
+if (31 << 20 !== 32505856) {
+ $ERROR('#646: 31 << 20 === 32505856. Actual: ' + (31 << 20));
+}
+
+
+if (63 << 20 !== 66060288) {
+ $ERROR('#647: 63 << 20 === 66060288. Actual: ' + (63 << 20));
+}
+
+
+if (127 << 20 !== 133169152) {
+ $ERROR('#648: 127 << 20 === 133169152. Actual: ' + (127 << 20));
+}
+
+
+if (255 << 20 !== 267386880) {
+ $ERROR('#649: 255 << 20 === 267386880. Actual: ' + (255 << 20));
+}
+
+
+if (511 << 20 !== 535822336) {
+ $ERROR('#650: 511 << 20 === 535822336. Actual: ' + (511 << 20));
+}
+
+
+if (1023 << 20 !== 1072693248) {
+ $ERROR('#651: 1023 << 20 === 1072693248. Actual: ' + (1023 << 20));
+}
+
+
+if (2047 << 20 !== 2146435072) {
+ $ERROR('#652: 2047 << 20 === 2146435072. Actual: ' + (2047 << 20));
+}
+
+
+if (4095 << 20 !== -1048576) {
+ $ERROR('#653: 4095 << 20 === -1048576. Actual: ' + (4095 << 20));
+}
+
+
+if (8191 << 20 !== -1048576) {
+ $ERROR('#654: 8191 << 20 === -1048576. Actual: ' + (8191 << 20));
+}
+
+
+if (16383 << 20 !== -1048576) {
+ $ERROR('#655: 16383 << 20 === -1048576. Actual: ' + (16383 << 20));
+}
+
+
+if (32767 << 20 !== -1048576) {
+ $ERROR('#656: 32767 << 20 === -1048576. Actual: ' + (32767 << 20));
+}
+
+
+if (65535 << 20 !== -1048576) {
+ $ERROR('#657: 65535 << 20 === -1048576. Actual: ' + (65535 << 20));
+}
+
+
+if (131071 << 20 !== -1048576) {
+ $ERROR('#658: 131071 << 20 === -1048576. Actual: ' + (131071 << 20));
+}
+
+
+if (262143 << 20 !== -1048576) {
+ $ERROR('#659: 262143 << 20 === -1048576. Actual: ' + (262143 << 20));
+}
+
+
+if (524287 << 20 !== -1048576) {
+ $ERROR('#660: 524287 << 20 === -1048576. Actual: ' + (524287 << 20));
+}
+
+
+if (1048575 << 20 !== -1048576) {
+ $ERROR('#661: 1048575 << 20 === -1048576. Actual: ' + (1048575 << 20));
+}
+
+
+if (2097151 << 20 !== -1048576) {
+ $ERROR('#662: 2097151 << 20 === -1048576. Actual: ' + (2097151 << 20));
+}
+
+
+if (4194303 << 20 !== -1048576) {
+ $ERROR('#663: 4194303 << 20 === -1048576. Actual: ' + (4194303 << 20));
+}
+
+
+if (8388607 << 20 !== -1048576) {
+ $ERROR('#664: 8388607 << 20 === -1048576. Actual: ' + (8388607 << 20));
+}
+
+
+if (16777215 << 20 !== -1048576) {
+ $ERROR('#665: 16777215 << 20 === -1048576. Actual: ' + (16777215 << 20));
+}
+
+
+if (33554431 << 20 !== -1048576) {
+ $ERROR('#666: 33554431 << 20 === -1048576. Actual: ' + (33554431 << 20));
+}
+
+
+if (67108863 << 20 !== -1048576) {
+ $ERROR('#667: 67108863 << 20 === -1048576. Actual: ' + (67108863 << 20));
+}
+
+
+if (134217727 << 20 !== -1048576) {
+ $ERROR('#668: 134217727 << 20 === -1048576. Actual: ' + (134217727 << 20));
+}
+
+
+if (268435455 << 20 !== -1048576) {
+ $ERROR('#669: 268435455 << 20 === -1048576. Actual: ' + (268435455 << 20));
+}
+
+
+if (536870911 << 20 !== -1048576) {
+ $ERROR('#670: 536870911 << 20 === -1048576. Actual: ' + (536870911 << 20));
+}
+
+
+if (1073741823 << 20 !== -1048576) {
+ $ERROR('#671: 1073741823 << 20 === -1048576. Actual: ' + (1073741823 << 20));
+}
+
+
+if (2147483647 << 20 !== -1048576) {
+ $ERROR('#672: 2147483647 << 20 === -1048576. Actual: ' + (2147483647 << 20));
+}
+
+
+if (0 << 21 !== 0) {
+ $ERROR('#673: 0 << 21 === 0. Actual: ' + (0 << 21));
+}
+
+
+if (1 << 21 !== 2097152) {
+ $ERROR('#674: 1 << 21 === 2097152. Actual: ' + (1 << 21));
+}
+
+
+if (3 << 21 !== 6291456) {
+ $ERROR('#675: 3 << 21 === 6291456. Actual: ' + (3 << 21));
+}
+
+
+if (7 << 21 !== 14680064) {
+ $ERROR('#676: 7 << 21 === 14680064. Actual: ' + (7 << 21));
+}
+
+
+if (15 << 21 !== 31457280) {
+ $ERROR('#677: 15 << 21 === 31457280. Actual: ' + (15 << 21));
+}
+
+
+if (31 << 21 !== 65011712) {
+ $ERROR('#678: 31 << 21 === 65011712. Actual: ' + (31 << 21));
+}
+
+
+if (63 << 21 !== 132120576) {
+ $ERROR('#679: 63 << 21 === 132120576. Actual: ' + (63 << 21));
+}
+
+
+if (127 << 21 !== 266338304) {
+ $ERROR('#680: 127 << 21 === 266338304. Actual: ' + (127 << 21));
+}
+
+
+if (255 << 21 !== 534773760) {
+ $ERROR('#681: 255 << 21 === 534773760. Actual: ' + (255 << 21));
+}
+
+
+if (511 << 21 !== 1071644672) {
+ $ERROR('#682: 511 << 21 === 1071644672. Actual: ' + (511 << 21));
+}
+
+
+if (1023 << 21 !== 2145386496) {
+ $ERROR('#683: 1023 << 21 === 2145386496. Actual: ' + (1023 << 21));
+}
+
+
+if (2047 << 21 !== -2097152) {
+ $ERROR('#684: 2047 << 21 === -2097152. Actual: ' + (2047 << 21));
+}
+
+
+if (4095 << 21 !== -2097152) {
+ $ERROR('#685: 4095 << 21 === -2097152. Actual: ' + (4095 << 21));
+}
+
+
+if (8191 << 21 !== -2097152) {
+ $ERROR('#686: 8191 << 21 === -2097152. Actual: ' + (8191 << 21));
+}
+
+
+if (16383 << 21 !== -2097152) {
+ $ERROR('#687: 16383 << 21 === -2097152. Actual: ' + (16383 << 21));
+}
+
+
+if (32767 << 21 !== -2097152) {
+ $ERROR('#688: 32767 << 21 === -2097152. Actual: ' + (32767 << 21));
+}
+
+
+if (65535 << 21 !== -2097152) {
+ $ERROR('#689: 65535 << 21 === -2097152. Actual: ' + (65535 << 21));
+}
+
+
+if (131071 << 21 !== -2097152) {
+ $ERROR('#690: 131071 << 21 === -2097152. Actual: ' + (131071 << 21));
+}
+
+
+if (262143 << 21 !== -2097152) {
+ $ERROR('#691: 262143 << 21 === -2097152. Actual: ' + (262143 << 21));
+}
+
+
+if (524287 << 21 !== -2097152) {
+ $ERROR('#692: 524287 << 21 === -2097152. Actual: ' + (524287 << 21));
+}
+
+
+if (1048575 << 21 !== -2097152) {
+ $ERROR('#693: 1048575 << 21 === -2097152. Actual: ' + (1048575 << 21));
+}
+
+
+if (2097151 << 21 !== -2097152) {
+ $ERROR('#694: 2097151 << 21 === -2097152. Actual: ' + (2097151 << 21));
+}
+
+
+if (4194303 << 21 !== -2097152) {
+ $ERROR('#695: 4194303 << 21 === -2097152. Actual: ' + (4194303 << 21));
+}
+
+
+if (8388607 << 21 !== -2097152) {
+ $ERROR('#696: 8388607 << 21 === -2097152. Actual: ' + (8388607 << 21));
+}
+
+
+if (16777215 << 21 !== -2097152) {
+ $ERROR('#697: 16777215 << 21 === -2097152. Actual: ' + (16777215 << 21));
+}
+
+
+if (33554431 << 21 !== -2097152) {
+ $ERROR('#698: 33554431 << 21 === -2097152. Actual: ' + (33554431 << 21));
+}
+
+
+if (67108863 << 21 !== -2097152) {
+ $ERROR('#699: 67108863 << 21 === -2097152. Actual: ' + (67108863 << 21));
+}
+
+
+if (134217727 << 21 !== -2097152) {
+ $ERROR('#700: 134217727 << 21 === -2097152. Actual: ' + (134217727 << 21));
+}
+
+
+if (268435455 << 21 !== -2097152) {
+ $ERROR('#701: 268435455 << 21 === -2097152. Actual: ' + (268435455 << 21));
+}
+
+
+if (536870911 << 21 !== -2097152) {
+ $ERROR('#702: 536870911 << 21 === -2097152. Actual: ' + (536870911 << 21));
+}
+
+
+if (1073741823 << 21 !== -2097152) {
+ $ERROR('#703: 1073741823 << 21 === -2097152. Actual: ' + (1073741823 << 21));
+}
+
+
+if (2147483647 << 21 !== -2097152) {
+ $ERROR('#704: 2147483647 << 21 === -2097152. Actual: ' + (2147483647 << 21));
+}
+
+
+if (0 << 22 !== 0) {
+ $ERROR('#705: 0 << 22 === 0. Actual: ' + (0 << 22));
+}
+
+
+if (1 << 22 !== 4194304) {
+ $ERROR('#706: 1 << 22 === 4194304. Actual: ' + (1 << 22));
+}
+
+
+if (3 << 22 !== 12582912) {
+ $ERROR('#707: 3 << 22 === 12582912. Actual: ' + (3 << 22));
+}
+
+
+if (7 << 22 !== 29360128) {
+ $ERROR('#708: 7 << 22 === 29360128. Actual: ' + (7 << 22));
+}
+
+
+if (15 << 22 !== 62914560) {
+ $ERROR('#709: 15 << 22 === 62914560. Actual: ' + (15 << 22));
+}
+
+
+if (31 << 22 !== 130023424) {
+ $ERROR('#710: 31 << 22 === 130023424. Actual: ' + (31 << 22));
+}
+
+
+if (63 << 22 !== 264241152) {
+ $ERROR('#711: 63 << 22 === 264241152. Actual: ' + (63 << 22));
+}
+
+
+if (127 << 22 !== 532676608) {
+ $ERROR('#712: 127 << 22 === 532676608. Actual: ' + (127 << 22));
+}
+
+
+if (255 << 22 !== 1069547520) {
+ $ERROR('#713: 255 << 22 === 1069547520. Actual: ' + (255 << 22));
+}
+
+
+if (511 << 22 !== 2143289344) {
+ $ERROR('#714: 511 << 22 === 2143289344. Actual: ' + (511 << 22));
+}
+
+
+if (1023 << 22 !== -4194304) {
+ $ERROR('#715: 1023 << 22 === -4194304. Actual: ' + (1023 << 22));
+}
+
+
+if (2047 << 22 !== -4194304) {
+ $ERROR('#716: 2047 << 22 === -4194304. Actual: ' + (2047 << 22));
+}
+
+
+if (4095 << 22 !== -4194304) {
+ $ERROR('#717: 4095 << 22 === -4194304. Actual: ' + (4095 << 22));
+}
+
+
+if (8191 << 22 !== -4194304) {
+ $ERROR('#718: 8191 << 22 === -4194304. Actual: ' + (8191 << 22));
+}
+
+
+if (16383 << 22 !== -4194304) {
+ $ERROR('#719: 16383 << 22 === -4194304. Actual: ' + (16383 << 22));
+}
+
+
+if (32767 << 22 !== -4194304) {
+ $ERROR('#720: 32767 << 22 === -4194304. Actual: ' + (32767 << 22));
+}
+
+
+if (65535 << 22 !== -4194304) {
+ $ERROR('#721: 65535 << 22 === -4194304. Actual: ' + (65535 << 22));
+}
+
+
+if (131071 << 22 !== -4194304) {
+ $ERROR('#722: 131071 << 22 === -4194304. Actual: ' + (131071 << 22));
+}
+
+
+if (262143 << 22 !== -4194304) {
+ $ERROR('#723: 262143 << 22 === -4194304. Actual: ' + (262143 << 22));
+}
+
+
+if (524287 << 22 !== -4194304) {
+ $ERROR('#724: 524287 << 22 === -4194304. Actual: ' + (524287 << 22));
+}
+
+
+if (1048575 << 22 !== -4194304) {
+ $ERROR('#725: 1048575 << 22 === -4194304. Actual: ' + (1048575 << 22));
+}
+
+
+if (2097151 << 22 !== -4194304) {
+ $ERROR('#726: 2097151 << 22 === -4194304. Actual: ' + (2097151 << 22));
+}
+
+
+if (4194303 << 22 !== -4194304) {
+ $ERROR('#727: 4194303 << 22 === -4194304. Actual: ' + (4194303 << 22));
+}
+
+
+if (8388607 << 22 !== -4194304) {
+ $ERROR('#728: 8388607 << 22 === -4194304. Actual: ' + (8388607 << 22));
+}
+
+
+if (16777215 << 22 !== -4194304) {
+ $ERROR('#729: 16777215 << 22 === -4194304. Actual: ' + (16777215 << 22));
+}
+
+
+if (33554431 << 22 !== -4194304) {
+ $ERROR('#730: 33554431 << 22 === -4194304. Actual: ' + (33554431 << 22));
+}
+
+
+if (67108863 << 22 !== -4194304) {
+ $ERROR('#731: 67108863 << 22 === -4194304. Actual: ' + (67108863 << 22));
+}
+
+
+if (134217727 << 22 !== -4194304) {
+ $ERROR('#732: 134217727 << 22 === -4194304. Actual: ' + (134217727 << 22));
+}
+
+
+if (268435455 << 22 !== -4194304) {
+ $ERROR('#733: 268435455 << 22 === -4194304. Actual: ' + (268435455 << 22));
+}
+
+
+if (536870911 << 22 !== -4194304) {
+ $ERROR('#734: 536870911 << 22 === -4194304. Actual: ' + (536870911 << 22));
+}
+
+
+if (1073741823 << 22 !== -4194304) {
+ $ERROR('#735: 1073741823 << 22 === -4194304. Actual: ' + (1073741823 << 22));
+}
+
+
+if (2147483647 << 22 !== -4194304) {
+ $ERROR('#736: 2147483647 << 22 === -4194304. Actual: ' + (2147483647 << 22));
+}
+
+
+if (0 << 23 !== 0) {
+ $ERROR('#737: 0 << 23 === 0. Actual: ' + (0 << 23));
+}
+
+
+if (1 << 23 !== 8388608) {
+ $ERROR('#738: 1 << 23 === 8388608. Actual: ' + (1 << 23));
+}
+
+
+if (3 << 23 !== 25165824) {
+ $ERROR('#739: 3 << 23 === 25165824. Actual: ' + (3 << 23));
+}
+
+
+if (7 << 23 !== 58720256) {
+ $ERROR('#740: 7 << 23 === 58720256. Actual: ' + (7 << 23));
+}
+
+
+if (15 << 23 !== 125829120) {
+ $ERROR('#741: 15 << 23 === 125829120. Actual: ' + (15 << 23));
+}
+
+
+if (31 << 23 !== 260046848) {
+ $ERROR('#742: 31 << 23 === 260046848. Actual: ' + (31 << 23));
+}
+
+
+if (63 << 23 !== 528482304) {
+ $ERROR('#743: 63 << 23 === 528482304. Actual: ' + (63 << 23));
+}
+
+
+if (127 << 23 !== 1065353216) {
+ $ERROR('#744: 127 << 23 === 1065353216. Actual: ' + (127 << 23));
+}
+
+
+if (255 << 23 !== 2139095040) {
+ $ERROR('#745: 255 << 23 === 2139095040. Actual: ' + (255 << 23));
+}
+
+
+if (511 << 23 !== -8388608) {
+ $ERROR('#746: 511 << 23 === -8388608. Actual: ' + (511 << 23));
+}
+
+
+if (1023 << 23 !== -8388608) {
+ $ERROR('#747: 1023 << 23 === -8388608. Actual: ' + (1023 << 23));
+}
+
+
+if (2047 << 23 !== -8388608) {
+ $ERROR('#748: 2047 << 23 === -8388608. Actual: ' + (2047 << 23));
+}
+
+
+if (4095 << 23 !== -8388608) {
+ $ERROR('#749: 4095 << 23 === -8388608. Actual: ' + (4095 << 23));
+}
+
+
+if (8191 << 23 !== -8388608) {
+ $ERROR('#750: 8191 << 23 === -8388608. Actual: ' + (8191 << 23));
+}
+
+
+if (16383 << 23 !== -8388608) {
+ $ERROR('#751: 16383 << 23 === -8388608. Actual: ' + (16383 << 23));
+}
+
+
+if (32767 << 23 !== -8388608) {
+ $ERROR('#752: 32767 << 23 === -8388608. Actual: ' + (32767 << 23));
+}
+
+
+if (65535 << 23 !== -8388608) {
+ $ERROR('#753: 65535 << 23 === -8388608. Actual: ' + (65535 << 23));
+}
+
+
+if (131071 << 23 !== -8388608) {
+ $ERROR('#754: 131071 << 23 === -8388608. Actual: ' + (131071 << 23));
+}
+
+
+if (262143 << 23 !== -8388608) {
+ $ERROR('#755: 262143 << 23 === -8388608. Actual: ' + (262143 << 23));
+}
+
+
+if (524287 << 23 !== -8388608) {
+ $ERROR('#756: 524287 << 23 === -8388608. Actual: ' + (524287 << 23));
+}
+
+
+if (1048575 << 23 !== -8388608) {
+ $ERROR('#757: 1048575 << 23 === -8388608. Actual: ' + (1048575 << 23));
+}
+
+
+if (2097151 << 23 !== -8388608) {
+ $ERROR('#758: 2097151 << 23 === -8388608. Actual: ' + (2097151 << 23));
+}
+
+
+if (4194303 << 23 !== -8388608) {
+ $ERROR('#759: 4194303 << 23 === -8388608. Actual: ' + (4194303 << 23));
+}
+
+
+if (8388607 << 23 !== -8388608) {
+ $ERROR('#760: 8388607 << 23 === -8388608. Actual: ' + (8388607 << 23));
+}
+
+
+if (16777215 << 23 !== -8388608) {
+ $ERROR('#761: 16777215 << 23 === -8388608. Actual: ' + (16777215 << 23));
+}
+
+
+if (33554431 << 23 !== -8388608) {
+ $ERROR('#762: 33554431 << 23 === -8388608. Actual: ' + (33554431 << 23));
+}
+
+
+if (67108863 << 23 !== -8388608) {
+ $ERROR('#763: 67108863 << 23 === -8388608. Actual: ' + (67108863 << 23));
+}
+
+
+if (134217727 << 23 !== -8388608) {
+ $ERROR('#764: 134217727 << 23 === -8388608. Actual: ' + (134217727 << 23));
+}
+
+
+if (268435455 << 23 !== -8388608) {
+ $ERROR('#765: 268435455 << 23 === -8388608. Actual: ' + (268435455 << 23));
+}
+
+
+if (536870911 << 23 !== -8388608) {
+ $ERROR('#766: 536870911 << 23 === -8388608. Actual: ' + (536870911 << 23));
+}
+
+
+if (1073741823 << 23 !== -8388608) {
+ $ERROR('#767: 1073741823 << 23 === -8388608. Actual: ' + (1073741823 << 23));
+}
+
+
+if (2147483647 << 23 !== -8388608) {
+ $ERROR('#768: 2147483647 << 23 === -8388608. Actual: ' + (2147483647 << 23));
+}
+
+
+if (0 << 24 !== 0) {
+ $ERROR('#769: 0 << 24 === 0. Actual: ' + (0 << 24));
+}
+
+
+if (1 << 24 !== 16777216) {
+ $ERROR('#770: 1 << 24 === 16777216. Actual: ' + (1 << 24));
+}
+
+
+if (3 << 24 !== 50331648) {
+ $ERROR('#771: 3 << 24 === 50331648. Actual: ' + (3 << 24));
+}
+
+
+if (7 << 24 !== 117440512) {
+ $ERROR('#772: 7 << 24 === 117440512. Actual: ' + (7 << 24));
+}
+
+
+if (15 << 24 !== 251658240) {
+ $ERROR('#773: 15 << 24 === 251658240. Actual: ' + (15 << 24));
+}
+
+
+if (31 << 24 !== 520093696) {
+ $ERROR('#774: 31 << 24 === 520093696. Actual: ' + (31 << 24));
+}
+
+
+if (63 << 24 !== 1056964608) {
+ $ERROR('#775: 63 << 24 === 1056964608. Actual: ' + (63 << 24));
+}
+
+
+if (127 << 24 !== 2130706432) {
+ $ERROR('#776: 127 << 24 === 2130706432. Actual: ' + (127 << 24));
+}
+
+
+if (255 << 24 !== -16777216) {
+ $ERROR('#777: 255 << 24 === -16777216. Actual: ' + (255 << 24));
+}
+
+
+if (511 << 24 !== -16777216) {
+ $ERROR('#778: 511 << 24 === -16777216. Actual: ' + (511 << 24));
+}
+
+
+if (1023 << 24 !== -16777216) {
+ $ERROR('#779: 1023 << 24 === -16777216. Actual: ' + (1023 << 24));
+}
+
+
+if (2047 << 24 !== -16777216) {
+ $ERROR('#780: 2047 << 24 === -16777216. Actual: ' + (2047 << 24));
+}
+
+
+if (4095 << 24 !== -16777216) {
+ $ERROR('#781: 4095 << 24 === -16777216. Actual: ' + (4095 << 24));
+}
+
+
+if (8191 << 24 !== -16777216) {
+ $ERROR('#782: 8191 << 24 === -16777216. Actual: ' + (8191 << 24));
+}
+
+
+if (16383 << 24 !== -16777216) {
+ $ERROR('#783: 16383 << 24 === -16777216. Actual: ' + (16383 << 24));
+}
+
+
+if (32767 << 24 !== -16777216) {
+ $ERROR('#784: 32767 << 24 === -16777216. Actual: ' + (32767 << 24));
+}
+
+
+if (65535 << 24 !== -16777216) {
+ $ERROR('#785: 65535 << 24 === -16777216. Actual: ' + (65535 << 24));
+}
+
+
+if (131071 << 24 !== -16777216) {
+ $ERROR('#786: 131071 << 24 === -16777216. Actual: ' + (131071 << 24));
+}
+
+
+if (262143 << 24 !== -16777216) {
+ $ERROR('#787: 262143 << 24 === -16777216. Actual: ' + (262143 << 24));
+}
+
+
+if (524287 << 24 !== -16777216) {
+ $ERROR('#788: 524287 << 24 === -16777216. Actual: ' + (524287 << 24));
+}
+
+
+if (1048575 << 24 !== -16777216) {
+ $ERROR('#789: 1048575 << 24 === -16777216. Actual: ' + (1048575 << 24));
+}
+
+
+if (2097151 << 24 !== -16777216) {
+ $ERROR('#790: 2097151 << 24 === -16777216. Actual: ' + (2097151 << 24));
+}
+
+
+if (4194303 << 24 !== -16777216) {
+ $ERROR('#791: 4194303 << 24 === -16777216. Actual: ' + (4194303 << 24));
+}
+
+
+if (8388607 << 24 !== -16777216) {
+ $ERROR('#792: 8388607 << 24 === -16777216. Actual: ' + (8388607 << 24));
+}
+
+
+if (16777215 << 24 !== -16777216) {
+ $ERROR('#793: 16777215 << 24 === -16777216. Actual: ' + (16777215 << 24));
+}
+
+
+if (33554431 << 24 !== -16777216) {
+ $ERROR('#794: 33554431 << 24 === -16777216. Actual: ' + (33554431 << 24));
+}
+
+
+if (67108863 << 24 !== -16777216) {
+ $ERROR('#795: 67108863 << 24 === -16777216. Actual: ' + (67108863 << 24));
+}
+
+
+if (134217727 << 24 !== -16777216) {
+ $ERROR('#796: 134217727 << 24 === -16777216. Actual: ' + (134217727 << 24));
+}
+
+
+if (268435455 << 24 !== -16777216) {
+ $ERROR('#797: 268435455 << 24 === -16777216. Actual: ' + (268435455 << 24));
+}
+
+
+if (536870911 << 24 !== -16777216) {
+ $ERROR('#798: 536870911 << 24 === -16777216. Actual: ' + (536870911 << 24));
+}
+
+
+if (1073741823 << 24 !== -16777216) {
+ $ERROR('#799: 1073741823 << 24 === -16777216. Actual: ' + (1073741823 << 24));
+}
+
+
+if (2147483647 << 24 !== -16777216) {
+ $ERROR('#800: 2147483647 << 24 === -16777216. Actual: ' + (2147483647 << 24));
+}
+
+
+if (0 << 25 !== 0) {
+ $ERROR('#801: 0 << 25 === 0. Actual: ' + (0 << 25));
+}
+
+
+if (1 << 25 !== 33554432) {
+ $ERROR('#802: 1 << 25 === 33554432. Actual: ' + (1 << 25));
+}
+
+
+if (3 << 25 !== 100663296) {
+ $ERROR('#803: 3 << 25 === 100663296. Actual: ' + (3 << 25));
+}
+
+
+if (7 << 25 !== 234881024) {
+ $ERROR('#804: 7 << 25 === 234881024. Actual: ' + (7 << 25));
+}
+
+
+if (15 << 25 !== 503316480) {
+ $ERROR('#805: 15 << 25 === 503316480. Actual: ' + (15 << 25));
+}
+
+
+if (31 << 25 !== 1040187392) {
+ $ERROR('#806: 31 << 25 === 1040187392. Actual: ' + (31 << 25));
+}
+
+
+if (63 << 25 !== 2113929216) {
+ $ERROR('#807: 63 << 25 === 2113929216. Actual: ' + (63 << 25));
+}
+
+
+if (127 << 25 !== -33554432) {
+ $ERROR('#808: 127 << 25 === -33554432. Actual: ' + (127 << 25));
+}
+
+
+if (255 << 25 !== -33554432) {
+ $ERROR('#809: 255 << 25 === -33554432. Actual: ' + (255 << 25));
+}
+
+
+if (511 << 25 !== -33554432) {
+ $ERROR('#810: 511 << 25 === -33554432. Actual: ' + (511 << 25));
+}
+
+
+if (1023 << 25 !== -33554432) {
+ $ERROR('#811: 1023 << 25 === -33554432. Actual: ' + (1023 << 25));
+}
+
+
+if (2047 << 25 !== -33554432) {
+ $ERROR('#812: 2047 << 25 === -33554432. Actual: ' + (2047 << 25));
+}
+
+
+if (4095 << 25 !== -33554432) {
+ $ERROR('#813: 4095 << 25 === -33554432. Actual: ' + (4095 << 25));
+}
+
+
+if (8191 << 25 !== -33554432) {
+ $ERROR('#814: 8191 << 25 === -33554432. Actual: ' + (8191 << 25));
+}
+
+
+if (16383 << 25 !== -33554432) {
+ $ERROR('#815: 16383 << 25 === -33554432. Actual: ' + (16383 << 25));
+}
+
+
+if (32767 << 25 !== -33554432) {
+ $ERROR('#816: 32767 << 25 === -33554432. Actual: ' + (32767 << 25));
+}
+
+
+if (65535 << 25 !== -33554432) {
+ $ERROR('#817: 65535 << 25 === -33554432. Actual: ' + (65535 << 25));
+}
+
+
+if (131071 << 25 !== -33554432) {
+ $ERROR('#818: 131071 << 25 === -33554432. Actual: ' + (131071 << 25));
+}
+
+
+if (262143 << 25 !== -33554432) {
+ $ERROR('#819: 262143 << 25 === -33554432. Actual: ' + (262143 << 25));
+}
+
+
+if (524287 << 25 !== -33554432) {
+ $ERROR('#820: 524287 << 25 === -33554432. Actual: ' + (524287 << 25));
+}
+
+
+if (1048575 << 25 !== -33554432) {
+ $ERROR('#821: 1048575 << 25 === -33554432. Actual: ' + (1048575 << 25));
+}
+
+
+if (2097151 << 25 !== -33554432) {
+ $ERROR('#822: 2097151 << 25 === -33554432. Actual: ' + (2097151 << 25));
+}
+
+
+if (4194303 << 25 !== -33554432) {
+ $ERROR('#823: 4194303 << 25 === -33554432. Actual: ' + (4194303 << 25));
+}
+
+
+if (8388607 << 25 !== -33554432) {
+ $ERROR('#824: 8388607 << 25 === -33554432. Actual: ' + (8388607 << 25));
+}
+
+
+if (16777215 << 25 !== -33554432) {
+ $ERROR('#825: 16777215 << 25 === -33554432. Actual: ' + (16777215 << 25));
+}
+
+
+if (33554431 << 25 !== -33554432) {
+ $ERROR('#826: 33554431 << 25 === -33554432. Actual: ' + (33554431 << 25));
+}
+
+
+if (67108863 << 25 !== -33554432) {
+ $ERROR('#827: 67108863 << 25 === -33554432. Actual: ' + (67108863 << 25));
+}
+
+
+if (134217727 << 25 !== -33554432) {
+ $ERROR('#828: 134217727 << 25 === -33554432. Actual: ' + (134217727 << 25));
+}
+
+
+if (268435455 << 25 !== -33554432) {
+ $ERROR('#829: 268435455 << 25 === -33554432. Actual: ' + (268435455 << 25));
+}
+
+
+if (536870911 << 25 !== -33554432) {
+ $ERROR('#830: 536870911 << 25 === -33554432. Actual: ' + (536870911 << 25));
+}
+
+
+if (1073741823 << 25 !== -33554432) {
+ $ERROR('#831: 1073741823 << 25 === -33554432. Actual: ' + (1073741823 << 25));
+}
+
+
+if (2147483647 << 25 !== -33554432) {
+ $ERROR('#832: 2147483647 << 25 === -33554432. Actual: ' + (2147483647 << 25));
+}
+
+
+if (0 << 26 !== 0) {
+ $ERROR('#833: 0 << 26 === 0. Actual: ' + (0 << 26));
+}
+
+
+if (1 << 26 !== 67108864) {
+ $ERROR('#834: 1 << 26 === 67108864. Actual: ' + (1 << 26));
+}
+
+
+if (3 << 26 !== 201326592) {
+ $ERROR('#835: 3 << 26 === 201326592. Actual: ' + (3 << 26));
+}
+
+
+if (7 << 26 !== 469762048) {
+ $ERROR('#836: 7 << 26 === 469762048. Actual: ' + (7 << 26));
+}
+
+
+if (15 << 26 !== 1006632960) {
+ $ERROR('#837: 15 << 26 === 1006632960. Actual: ' + (15 << 26));
+}
+
+
+if (31 << 26 !== 2080374784) {
+ $ERROR('#838: 31 << 26 === 2080374784. Actual: ' + (31 << 26));
+}
+
+
+if (63 << 26 !== -67108864) {
+ $ERROR('#839: 63 << 26 === -67108864. Actual: ' + (63 << 26));
+}
+
+
+if (127 << 26 !== -67108864) {
+ $ERROR('#840: 127 << 26 === -67108864. Actual: ' + (127 << 26));
+}
+
+
+if (255 << 26 !== -67108864) {
+ $ERROR('#841: 255 << 26 === -67108864. Actual: ' + (255 << 26));
+}
+
+
+if (511 << 26 !== -67108864) {
+ $ERROR('#842: 511 << 26 === -67108864. Actual: ' + (511 << 26));
+}
+
+
+if (1023 << 26 !== -67108864) {
+ $ERROR('#843: 1023 << 26 === -67108864. Actual: ' + (1023 << 26));
+}
+
+
+if (2047 << 26 !== -67108864) {
+ $ERROR('#844: 2047 << 26 === -67108864. Actual: ' + (2047 << 26));
+}
+
+
+if (4095 << 26 !== -67108864) {
+ $ERROR('#845: 4095 << 26 === -67108864. Actual: ' + (4095 << 26));
+}
+
+
+if (8191 << 26 !== -67108864) {
+ $ERROR('#846: 8191 << 26 === -67108864. Actual: ' + (8191 << 26));
+}
+
+
+if (16383 << 26 !== -67108864) {
+ $ERROR('#847: 16383 << 26 === -67108864. Actual: ' + (16383 << 26));
+}
+
+
+if (32767 << 26 !== -67108864) {
+ $ERROR('#848: 32767 << 26 === -67108864. Actual: ' + (32767 << 26));
+}
+
+
+if (65535 << 26 !== -67108864) {
+ $ERROR('#849: 65535 << 26 === -67108864. Actual: ' + (65535 << 26));
+}
+
+
+if (131071 << 26 !== -67108864) {
+ $ERROR('#850: 131071 << 26 === -67108864. Actual: ' + (131071 << 26));
+}
+
+
+if (262143 << 26 !== -67108864) {
+ $ERROR('#851: 262143 << 26 === -67108864. Actual: ' + (262143 << 26));
+}
+
+
+if (524287 << 26 !== -67108864) {
+ $ERROR('#852: 524287 << 26 === -67108864. Actual: ' + (524287 << 26));
+}
+
+
+if (1048575 << 26 !== -67108864) {
+ $ERROR('#853: 1048575 << 26 === -67108864. Actual: ' + (1048575 << 26));
+}
+
+
+if (2097151 << 26 !== -67108864) {
+ $ERROR('#854: 2097151 << 26 === -67108864. Actual: ' + (2097151 << 26));
+}
+
+
+if (4194303 << 26 !== -67108864) {
+ $ERROR('#855: 4194303 << 26 === -67108864. Actual: ' + (4194303 << 26));
+}
+
+
+if (8388607 << 26 !== -67108864) {
+ $ERROR('#856: 8388607 << 26 === -67108864. Actual: ' + (8388607 << 26));
+}
+
+
+if (16777215 << 26 !== -67108864) {
+ $ERROR('#857: 16777215 << 26 === -67108864. Actual: ' + (16777215 << 26));
+}
+
+
+if (33554431 << 26 !== -67108864) {
+ $ERROR('#858: 33554431 << 26 === -67108864. Actual: ' + (33554431 << 26));
+}
+
+
+if (67108863 << 26 !== -67108864) {
+ $ERROR('#859: 67108863 << 26 === -67108864. Actual: ' + (67108863 << 26));
+}
+
+
+if (134217727 << 26 !== -67108864) {
+ $ERROR('#860: 134217727 << 26 === -67108864. Actual: ' + (134217727 << 26));
+}
+
+
+if (268435455 << 26 !== -67108864) {
+ $ERROR('#861: 268435455 << 26 === -67108864. Actual: ' + (268435455 << 26));
+}
+
+
+if (536870911 << 26 !== -67108864) {
+ $ERROR('#862: 536870911 << 26 === -67108864. Actual: ' + (536870911 << 26));
+}
+
+
+if (1073741823 << 26 !== -67108864) {
+ $ERROR('#863: 1073741823 << 26 === -67108864. Actual: ' + (1073741823 << 26));
+}
+
+
+if (2147483647 << 26 !== -67108864) {
+ $ERROR('#864: 2147483647 << 26 === -67108864. Actual: ' + (2147483647 << 26));
+}
+
+
+if (0 << 27 !== 0) {
+ $ERROR('#865: 0 << 27 === 0. Actual: ' + (0 << 27));
+}
+
+
+if (1 << 27 !== 134217728) {
+ $ERROR('#866: 1 << 27 === 134217728. Actual: ' + (1 << 27));
+}
+
+
+if (3 << 27 !== 402653184) {
+ $ERROR('#867: 3 << 27 === 402653184. Actual: ' + (3 << 27));
+}
+
+
+if (7 << 27 !== 939524096) {
+ $ERROR('#868: 7 << 27 === 939524096. Actual: ' + (7 << 27));
+}
+
+
+if (15 << 27 !== 2013265920) {
+ $ERROR('#869: 15 << 27 === 2013265920. Actual: ' + (15 << 27));
+}
+
+
+if (31 << 27 !== -134217728) {
+ $ERROR('#870: 31 << 27 === -134217728. Actual: ' + (31 << 27));
+}
+
+
+if (63 << 27 !== -134217728) {
+ $ERROR('#871: 63 << 27 === -134217728. Actual: ' + (63 << 27));
+}
+
+
+if (127 << 27 !== -134217728) {
+ $ERROR('#872: 127 << 27 === -134217728. Actual: ' + (127 << 27));
+}
+
+
+if (255 << 27 !== -134217728) {
+ $ERROR('#873: 255 << 27 === -134217728. Actual: ' + (255 << 27));
+}
+
+
+if (511 << 27 !== -134217728) {
+ $ERROR('#874: 511 << 27 === -134217728. Actual: ' + (511 << 27));
+}
+
+
+if (1023 << 27 !== -134217728) {
+ $ERROR('#875: 1023 << 27 === -134217728. Actual: ' + (1023 << 27));
+}
+
+
+if (2047 << 27 !== -134217728) {
+ $ERROR('#876: 2047 << 27 === -134217728. Actual: ' + (2047 << 27));
+}
+
+
+if (4095 << 27 !== -134217728) {
+ $ERROR('#877: 4095 << 27 === -134217728. Actual: ' + (4095 << 27));
+}
+
+
+if (8191 << 27 !== -134217728) {
+ $ERROR('#878: 8191 << 27 === -134217728. Actual: ' + (8191 << 27));
+}
+
+
+if (16383 << 27 !== -134217728) {
+ $ERROR('#879: 16383 << 27 === -134217728. Actual: ' + (16383 << 27));
+}
+
+
+if (32767 << 27 !== -134217728) {
+ $ERROR('#880: 32767 << 27 === -134217728. Actual: ' + (32767 << 27));
+}
+
+
+if (65535 << 27 !== -134217728) {
+ $ERROR('#881: 65535 << 27 === -134217728. Actual: ' + (65535 << 27));
+}
+
+
+if (131071 << 27 !== -134217728) {
+ $ERROR('#882: 131071 << 27 === -134217728. Actual: ' + (131071 << 27));
+}
+
+
+if (262143 << 27 !== -134217728) {
+ $ERROR('#883: 262143 << 27 === -134217728. Actual: ' + (262143 << 27));
+}
+
+
+if (524287 << 27 !== -134217728) {
+ $ERROR('#884: 524287 << 27 === -134217728. Actual: ' + (524287 << 27));
+}
+
+
+if (1048575 << 27 !== -134217728) {
+ $ERROR('#885: 1048575 << 27 === -134217728. Actual: ' + (1048575 << 27));
+}
+
+
+if (2097151 << 27 !== -134217728) {
+ $ERROR('#886: 2097151 << 27 === -134217728. Actual: ' + (2097151 << 27));
+}
+
+
+if (4194303 << 27 !== -134217728) {
+ $ERROR('#887: 4194303 << 27 === -134217728. Actual: ' + (4194303 << 27));
+}
+
+
+if (8388607 << 27 !== -134217728) {
+ $ERROR('#888: 8388607 << 27 === -134217728. Actual: ' + (8388607 << 27));
+}
+
+
+if (16777215 << 27 !== -134217728) {
+ $ERROR('#889: 16777215 << 27 === -134217728. Actual: ' + (16777215 << 27));
+}
+
+
+if (33554431 << 27 !== -134217728) {
+ $ERROR('#890: 33554431 << 27 === -134217728. Actual: ' + (33554431 << 27));
+}
+
+
+if (67108863 << 27 !== -134217728) {
+ $ERROR('#891: 67108863 << 27 === -134217728. Actual: ' + (67108863 << 27));
+}
+
+
+if (134217727 << 27 !== -134217728) {
+ $ERROR('#892: 134217727 << 27 === -134217728. Actual: ' + (134217727 << 27));
+}
+
+
+if (268435455 << 27 !== -134217728) {
+ $ERROR('#893: 268435455 << 27 === -134217728. Actual: ' + (268435455 << 27));
+}
+
+
+if (536870911 << 27 !== -134217728) {
+ $ERROR('#894: 536870911 << 27 === -134217728. Actual: ' + (536870911 << 27));
+}
+
+
+if (1073741823 << 27 !== -134217728) {
+ $ERROR('#895: 1073741823 << 27 === -134217728. Actual: ' + (1073741823 << 27));
+}
+
+
+if (2147483647 << 27 !== -134217728) {
+ $ERROR('#896: 2147483647 << 27 === -134217728. Actual: ' + (2147483647 << 27));
+}
+
+
+if (0 << 28 !== 0) {
+ $ERROR('#897: 0 << 28 === 0. Actual: ' + (0 << 28));
+}
+
+
+if (1 << 28 !== 268435456) {
+ $ERROR('#898: 1 << 28 === 268435456. Actual: ' + (1 << 28));
+}
+
+
+if (3 << 28 !== 805306368) {
+ $ERROR('#899: 3 << 28 === 805306368. Actual: ' + (3 << 28));
+}
+
+
+if (7 << 28 !== 1879048192) {
+ $ERROR('#900: 7 << 28 === 1879048192. Actual: ' + (7 << 28));
+}
+
+
+if (15 << 28 !== -268435456) {
+ $ERROR('#901: 15 << 28 === -268435456. Actual: ' + (15 << 28));
+}
+
+
+if (31 << 28 !== -268435456) {
+ $ERROR('#902: 31 << 28 === -268435456. Actual: ' + (31 << 28));
+}
+
+
+if (63 << 28 !== -268435456) {
+ $ERROR('#903: 63 << 28 === -268435456. Actual: ' + (63 << 28));
+}
+
+
+if (127 << 28 !== -268435456) {
+ $ERROR('#904: 127 << 28 === -268435456. Actual: ' + (127 << 28));
+}
+
+
+if (255 << 28 !== -268435456) {
+ $ERROR('#905: 255 << 28 === -268435456. Actual: ' + (255 << 28));
+}
+
+
+if (511 << 28 !== -268435456) {
+ $ERROR('#906: 511 << 28 === -268435456. Actual: ' + (511 << 28));
+}
+
+
+if (1023 << 28 !== -268435456) {
+ $ERROR('#907: 1023 << 28 === -268435456. Actual: ' + (1023 << 28));
+}
+
+
+if (2047 << 28 !== -268435456) {
+ $ERROR('#908: 2047 << 28 === -268435456. Actual: ' + (2047 << 28));
+}
+
+
+if (4095 << 28 !== -268435456) {
+ $ERROR('#909: 4095 << 28 === -268435456. Actual: ' + (4095 << 28));
+}
+
+
+if (8191 << 28 !== -268435456) {
+ $ERROR('#910: 8191 << 28 === -268435456. Actual: ' + (8191 << 28));
+}
+
+
+if (16383 << 28 !== -268435456) {
+ $ERROR('#911: 16383 << 28 === -268435456. Actual: ' + (16383 << 28));
+}
+
+
+if (32767 << 28 !== -268435456) {
+ $ERROR('#912: 32767 << 28 === -268435456. Actual: ' + (32767 << 28));
+}
+
+
+if (65535 << 28 !== -268435456) {
+ $ERROR('#913: 65535 << 28 === -268435456. Actual: ' + (65535 << 28));
+}
+
+
+if (131071 << 28 !== -268435456) {
+ $ERROR('#914: 131071 << 28 === -268435456. Actual: ' + (131071 << 28));
+}
+
+
+if (262143 << 28 !== -268435456) {
+ $ERROR('#915: 262143 << 28 === -268435456. Actual: ' + (262143 << 28));
+}
+
+
+if (524287 << 28 !== -268435456) {
+ $ERROR('#916: 524287 << 28 === -268435456. Actual: ' + (524287 << 28));
+}
+
+
+if (1048575 << 28 !== -268435456) {
+ $ERROR('#917: 1048575 << 28 === -268435456. Actual: ' + (1048575 << 28));
+}
+
+
+if (2097151 << 28 !== -268435456) {
+ $ERROR('#918: 2097151 << 28 === -268435456. Actual: ' + (2097151 << 28));
+}
+
+
+if (4194303 << 28 !== -268435456) {
+ $ERROR('#919: 4194303 << 28 === -268435456. Actual: ' + (4194303 << 28));
+}
+
+
+if (8388607 << 28 !== -268435456) {
+ $ERROR('#920: 8388607 << 28 === -268435456. Actual: ' + (8388607 << 28));
+}
+
+
+if (16777215 << 28 !== -268435456) {
+ $ERROR('#921: 16777215 << 28 === -268435456. Actual: ' + (16777215 << 28));
+}
+
+
+if (33554431 << 28 !== -268435456) {
+ $ERROR('#922: 33554431 << 28 === -268435456. Actual: ' + (33554431 << 28));
+}
+
+
+if (67108863 << 28 !== -268435456) {
+ $ERROR('#923: 67108863 << 28 === -268435456. Actual: ' + (67108863 << 28));
+}
+
+
+if (134217727 << 28 !== -268435456) {
+ $ERROR('#924: 134217727 << 28 === -268435456. Actual: ' + (134217727 << 28));
+}
+
+
+if (268435455 << 28 !== -268435456) {
+ $ERROR('#925: 268435455 << 28 === -268435456. Actual: ' + (268435455 << 28));
+}
+
+
+if (536870911 << 28 !== -268435456) {
+ $ERROR('#926: 536870911 << 28 === -268435456. Actual: ' + (536870911 << 28));
+}
+
+
+if (1073741823 << 28 !== -268435456) {
+ $ERROR('#927: 1073741823 << 28 === -268435456. Actual: ' + (1073741823 << 28));
+}
+
+
+if (2147483647 << 28 !== -268435456) {
+ $ERROR('#928: 2147483647 << 28 === -268435456. Actual: ' + (2147483647 << 28));
+}
+
+
+if (0 << 29 !== 0) {
+ $ERROR('#929: 0 << 29 === 0. Actual: ' + (0 << 29));
+}
+
+
+if (1 << 29 !== 536870912) {
+ $ERROR('#930: 1 << 29 === 536870912. Actual: ' + (1 << 29));
+}
+
+
+if (3 << 29 !== 1610612736) {
+ $ERROR('#931: 3 << 29 === 1610612736. Actual: ' + (3 << 29));
+}
+
+
+if (7 << 29 !== -536870912) {
+ $ERROR('#932: 7 << 29 === -536870912. Actual: ' + (7 << 29));
+}
+
+
+if (15 << 29 !== -536870912) {
+ $ERROR('#933: 15 << 29 === -536870912. Actual: ' + (15 << 29));
+}
+
+
+if (31 << 29 !== -536870912) {
+ $ERROR('#934: 31 << 29 === -536870912. Actual: ' + (31 << 29));
+}
+
+
+if (63 << 29 !== -536870912) {
+ $ERROR('#935: 63 << 29 === -536870912. Actual: ' + (63 << 29));
+}
+
+
+if (127 << 29 !== -536870912) {
+ $ERROR('#936: 127 << 29 === -536870912. Actual: ' + (127 << 29));
+}
+
+
+if (255 << 29 !== -536870912) {
+ $ERROR('#937: 255 << 29 === -536870912. Actual: ' + (255 << 29));
+}
+
+
+if (511 << 29 !== -536870912) {
+ $ERROR('#938: 511 << 29 === -536870912. Actual: ' + (511 << 29));
+}
+
+
+if (1023 << 29 !== -536870912) {
+ $ERROR('#939: 1023 << 29 === -536870912. Actual: ' + (1023 << 29));
+}
+
+
+if (2047 << 29 !== -536870912) {
+ $ERROR('#940: 2047 << 29 === -536870912. Actual: ' + (2047 << 29));
+}
+
+
+if (4095 << 29 !== -536870912) {
+ $ERROR('#941: 4095 << 29 === -536870912. Actual: ' + (4095 << 29));
+}
+
+
+if (8191 << 29 !== -536870912) {
+ $ERROR('#942: 8191 << 29 === -536870912. Actual: ' + (8191 << 29));
+}
+
+
+if (16383 << 29 !== -536870912) {
+ $ERROR('#943: 16383 << 29 === -536870912. Actual: ' + (16383 << 29));
+}
+
+
+if (32767 << 29 !== -536870912) {
+ $ERROR('#944: 32767 << 29 === -536870912. Actual: ' + (32767 << 29));
+}
+
+
+if (65535 << 29 !== -536870912) {
+ $ERROR('#945: 65535 << 29 === -536870912. Actual: ' + (65535 << 29));
+}
+
+
+if (131071 << 29 !== -536870912) {
+ $ERROR('#946: 131071 << 29 === -536870912. Actual: ' + (131071 << 29));
+}
+
+
+if (262143 << 29 !== -536870912) {
+ $ERROR('#947: 262143 << 29 === -536870912. Actual: ' + (262143 << 29));
+}
+
+
+if (524287 << 29 !== -536870912) {
+ $ERROR('#948: 524287 << 29 === -536870912. Actual: ' + (524287 << 29));
+}
+
+
+if (1048575 << 29 !== -536870912) {
+ $ERROR('#949: 1048575 << 29 === -536870912. Actual: ' + (1048575 << 29));
+}
+
+
+if (2097151 << 29 !== -536870912) {
+ $ERROR('#950: 2097151 << 29 === -536870912. Actual: ' + (2097151 << 29));
+}
+
+
+if (4194303 << 29 !== -536870912) {
+ $ERROR('#951: 4194303 << 29 === -536870912. Actual: ' + (4194303 << 29));
+}
+
+
+if (8388607 << 29 !== -536870912) {
+ $ERROR('#952: 8388607 << 29 === -536870912. Actual: ' + (8388607 << 29));
+}
+
+
+if (16777215 << 29 !== -536870912) {
+ $ERROR('#953: 16777215 << 29 === -536870912. Actual: ' + (16777215 << 29));
+}
+
+
+if (33554431 << 29 !== -536870912) {
+ $ERROR('#954: 33554431 << 29 === -536870912. Actual: ' + (33554431 << 29));
+}
+
+
+if (67108863 << 29 !== -536870912) {
+ $ERROR('#955: 67108863 << 29 === -536870912. Actual: ' + (67108863 << 29));
+}
+
+
+if (134217727 << 29 !== -536870912) {
+ $ERROR('#956: 134217727 << 29 === -536870912. Actual: ' + (134217727 << 29));
+}
+
+
+if (268435455 << 29 !== -536870912) {
+ $ERROR('#957: 268435455 << 29 === -536870912. Actual: ' + (268435455 << 29));
+}
+
+
+if (536870911 << 29 !== -536870912) {
+ $ERROR('#958: 536870911 << 29 === -536870912. Actual: ' + (536870911 << 29));
+}
+
+
+if (1073741823 << 29 !== -536870912) {
+ $ERROR('#959: 1073741823 << 29 === -536870912. Actual: ' + (1073741823 << 29));
+}
+
+
+if (2147483647 << 29 !== -536870912) {
+ $ERROR('#960: 2147483647 << 29 === -536870912. Actual: ' + (2147483647 << 29));
+}
+
+
+if (0 << 30 !== 0) {
+ $ERROR('#961: 0 << 30 === 0. Actual: ' + (0 << 30));
+}
+
+
+if (1 << 30 !== 1073741824) {
+ $ERROR('#962: 1 << 30 === 1073741824. Actual: ' + (1 << 30));
+}
+
+
+if (3 << 30 !== -1073741824) {
+ $ERROR('#963: 3 << 30 === -1073741824. Actual: ' + (3 << 30));
+}
+
+
+if (7 << 30 !== -1073741824) {
+ $ERROR('#964: 7 << 30 === -1073741824. Actual: ' + (7 << 30));
+}
+
+
+if (15 << 30 !== -1073741824) {
+ $ERROR('#965: 15 << 30 === -1073741824. Actual: ' + (15 << 30));
+}
+
+
+if (31 << 30 !== -1073741824) {
+ $ERROR('#966: 31 << 30 === -1073741824. Actual: ' + (31 << 30));
+}
+
+
+if (63 << 30 !== -1073741824) {
+ $ERROR('#967: 63 << 30 === -1073741824. Actual: ' + (63 << 30));
+}
+
+
+if (127 << 30 !== -1073741824) {
+ $ERROR('#968: 127 << 30 === -1073741824. Actual: ' + (127 << 30));
+}
+
+
+if (255 << 30 !== -1073741824) {
+ $ERROR('#969: 255 << 30 === -1073741824. Actual: ' + (255 << 30));
+}
+
+
+if (511 << 30 !== -1073741824) {
+ $ERROR('#970: 511 << 30 === -1073741824. Actual: ' + (511 << 30));
+}
+
+
+if (1023 << 30 !== -1073741824) {
+ $ERROR('#971: 1023 << 30 === -1073741824. Actual: ' + (1023 << 30));
+}
+
+
+if (2047 << 30 !== -1073741824) {
+ $ERROR('#972: 2047 << 30 === -1073741824. Actual: ' + (2047 << 30));
+}
+
+
+if (4095 << 30 !== -1073741824) {
+ $ERROR('#973: 4095 << 30 === -1073741824. Actual: ' + (4095 << 30));
+}
+
+
+if (8191 << 30 !== -1073741824) {
+ $ERROR('#974: 8191 << 30 === -1073741824. Actual: ' + (8191 << 30));
+}
+
+
+if (16383 << 30 !== -1073741824) {
+ $ERROR('#975: 16383 << 30 === -1073741824. Actual: ' + (16383 << 30));
+}
+
+
+if (32767 << 30 !== -1073741824) {
+ $ERROR('#976: 32767 << 30 === -1073741824. Actual: ' + (32767 << 30));
+}
+
+
+if (65535 << 30 !== -1073741824) {
+ $ERROR('#977: 65535 << 30 === -1073741824. Actual: ' + (65535 << 30));
+}
+
+
+if (131071 << 30 !== -1073741824) {
+ $ERROR('#978: 131071 << 30 === -1073741824. Actual: ' + (131071 << 30));
+}
+
+
+if (262143 << 30 !== -1073741824) {
+ $ERROR('#979: 262143 << 30 === -1073741824. Actual: ' + (262143 << 30));
+}
+
+
+if (524287 << 30 !== -1073741824) {
+ $ERROR('#980: 524287 << 30 === -1073741824. Actual: ' + (524287 << 30));
+}
+
+
+if (1048575 << 30 !== -1073741824) {
+ $ERROR('#981: 1048575 << 30 === -1073741824. Actual: ' + (1048575 << 30));
+}
+
+
+if (2097151 << 30 !== -1073741824) {
+ $ERROR('#982: 2097151 << 30 === -1073741824. Actual: ' + (2097151 << 30));
+}
+
+
+if (4194303 << 30 !== -1073741824) {
+ $ERROR('#983: 4194303 << 30 === -1073741824. Actual: ' + (4194303 << 30));
+}
+
+
+if (8388607 << 30 !== -1073741824) {
+ $ERROR('#984: 8388607 << 30 === -1073741824. Actual: ' + (8388607 << 30));
+}
+
+
+if (16777215 << 30 !== -1073741824) {
+ $ERROR('#985: 16777215 << 30 === -1073741824. Actual: ' + (16777215 << 30));
+}
+
+
+if (33554431 << 30 !== -1073741824) {
+ $ERROR('#986: 33554431 << 30 === -1073741824. Actual: ' + (33554431 << 30));
+}
+
+
+if (67108863 << 30 !== -1073741824) {
+ $ERROR('#987: 67108863 << 30 === -1073741824. Actual: ' + (67108863 << 30));
+}
+
+
+if (134217727 << 30 !== -1073741824) {
+ $ERROR('#988: 134217727 << 30 === -1073741824. Actual: ' + (134217727 << 30));
+}
+
+
+if (268435455 << 30 !== -1073741824) {
+ $ERROR('#989: 268435455 << 30 === -1073741824. Actual: ' + (268435455 << 30));
+}
+
+
+if (536870911 << 30 !== -1073741824) {
+ $ERROR('#990: 536870911 << 30 === -1073741824. Actual: ' + (536870911 << 30));
+}
+
+
+if (1073741823 << 30 !== -1073741824) {
+ $ERROR('#991: 1073741823 << 30 === -1073741824. Actual: ' + (1073741823 << 30));
+}
+
+
+if (2147483647 << 30 !== -1073741824) {
+ $ERROR('#992: 2147483647 << 30 === -1073741824. Actual: ' + (2147483647 << 30));
+}
+
+
+if (0 << 31 !== 0) {
+ $ERROR('#993: 0 << 31 === 0. Actual: ' + (0 << 31));
+}
+
+
+if (1 << 31 !== -2147483648) {
+ $ERROR('#994: 1 << 31 === -2147483648. Actual: ' + (1 << 31));
+}
+
+
+if (3 << 31 !== -2147483648) {
+ $ERROR('#995: 3 << 31 === -2147483648. Actual: ' + (3 << 31));
+}
+
+
+if (7 << 31 !== -2147483648) {
+ $ERROR('#996: 7 << 31 === -2147483648. Actual: ' + (7 << 31));
+}
+
+
+if (15 << 31 !== -2147483648) {
+ $ERROR('#997: 15 << 31 === -2147483648. Actual: ' + (15 << 31));
+}
+
+
+if (31 << 31 !== -2147483648) {
+ $ERROR('#998: 31 << 31 === -2147483648. Actual: ' + (31 << 31));
+}
+
+
+if (63 << 31 !== -2147483648) {
+ $ERROR('#999: 63 << 31 === -2147483648. Actual: ' + (63 << 31));
+}
+
+
+if (127 << 31 !== -2147483648) {
+ $ERROR('#1000: 127 << 31 === -2147483648. Actual: ' + (127 << 31));
+}
+
+
+if (255 << 31 !== -2147483648) {
+ $ERROR('#1001: 255 << 31 === -2147483648. Actual: ' + (255 << 31));
+}
+
+
+if (511 << 31 !== -2147483648) {
+ $ERROR('#1002: 511 << 31 === -2147483648. Actual: ' + (511 << 31));
+}
+
+
+if (1023 << 31 !== -2147483648) {
+ $ERROR('#1003: 1023 << 31 === -2147483648. Actual: ' + (1023 << 31));
+}
+
+
+if (2047 << 31 !== -2147483648) {
+ $ERROR('#1004: 2047 << 31 === -2147483648. Actual: ' + (2047 << 31));
+}
+
+
+if (4095 << 31 !== -2147483648) {
+ $ERROR('#1005: 4095 << 31 === -2147483648. Actual: ' + (4095 << 31));
+}
+
+
+if (8191 << 31 !== -2147483648) {
+ $ERROR('#1006: 8191 << 31 === -2147483648. Actual: ' + (8191 << 31));
+}
+
+
+if (16383 << 31 !== -2147483648) {
+ $ERROR('#1007: 16383 << 31 === -2147483648. Actual: ' + (16383 << 31));
+}
+
+
+if (32767 << 31 !== -2147483648) {
+ $ERROR('#1008: 32767 << 31 === -2147483648. Actual: ' + (32767 << 31));
+}
+
+
+if (65535 << 31 !== -2147483648) {
+ $ERROR('#1009: 65535 << 31 === -2147483648. Actual: ' + (65535 << 31));
+}
+
+
+if (131071 << 31 !== -2147483648) {
+ $ERROR('#1010: 131071 << 31 === -2147483648. Actual: ' + (131071 << 31));
+}
+
+
+if (262143 << 31 !== -2147483648) {
+ $ERROR('#1011: 262143 << 31 === -2147483648. Actual: ' + (262143 << 31));
+}
+
+
+if (524287 << 31 !== -2147483648) {
+ $ERROR('#1012: 524287 << 31 === -2147483648. Actual: ' + (524287 << 31));
+}
+
+
+if (1048575 << 31 !== -2147483648) {
+ $ERROR('#1013: 1048575 << 31 === -2147483648. Actual: ' + (1048575 << 31));
+}
+
+
+if (2097151 << 31 !== -2147483648) {
+ $ERROR('#1014: 2097151 << 31 === -2147483648. Actual: ' + (2097151 << 31));
+}
+
+
+if (4194303 << 31 !== -2147483648) {
+ $ERROR('#1015: 4194303 << 31 === -2147483648. Actual: ' + (4194303 << 31));
+}
+
+
+if (8388607 << 31 !== -2147483648) {
+ $ERROR('#1016: 8388607 << 31 === -2147483648. Actual: ' + (8388607 << 31));
+}
+
+
+if (16777215 << 31 !== -2147483648) {
+ $ERROR('#1017: 16777215 << 31 === -2147483648. Actual: ' + (16777215 << 31));
+}
+
+
+if (33554431 << 31 !== -2147483648) {
+ $ERROR('#1018: 33554431 << 31 === -2147483648. Actual: ' + (33554431 << 31));
+}
+
+
+if (67108863 << 31 !== -2147483648) {
+ $ERROR('#1019: 67108863 << 31 === -2147483648. Actual: ' + (67108863 << 31));
+}
+
+
+if (134217727 << 31 !== -2147483648) {
+ $ERROR('#1020: 134217727 << 31 === -2147483648. Actual: ' + (134217727 << 31));
+}
+
+
+if (268435455 << 31 !== -2147483648) {
+ $ERROR('#1021: 268435455 << 31 === -2147483648. Actual: ' + (268435455 << 31));
+}
+
+
+if (536870911 << 31 !== -2147483648) {
+ $ERROR('#1022: 536870911 << 31 === -2147483648. Actual: ' + (536870911 << 31));
+}
+
+
+if (1073741823 << 31 !== -2147483648) {
+ $ERROR('#1023: 1073741823 << 31 === -2147483648. Actual: ' + (1073741823 << 31));
+}
+
+
+if (2147483647 << 31 !== -2147483648) {
+ $ERROR('#1024: 2147483647 << 31 === -2147483648. Actual: ' + (2147483647 << 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.1_T1.js
new file mode 100644
index 000000000..c619eee1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.1_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A5.1_T1;
+ * @section: 11.7.1, 9.5;
+ * @assertion: Operator x << y uses ToInt32(ShiftExpression);
+ * @description: Checking boundary points;
+ */
+
+//CHECK#1
+if (2147483648.1 << 0 !== -2147483648) {
+ $ERROR('#1: 2147483648.1 << 0 === -2147483648. Actual: ' + (2147483648.1 << 0));
+}
+
+//CHECK#2
+if (4294967296.1 << 0 !== 0) {
+ $ERROR('#2: 4294967296.1 << 0 === 0. Actual: ' + (4294967296.1 << 0));
+}
+
+//CHECK#3
+if (6442450944.1 << 0 !== -2147483648) {
+ $ERROR('#3: 6442450944.1 << 0 === -2147483648. Actual: ' + (6442450944.1 << 0));
+}
+
+//CHECK#4
+if (4294967295.1 << 0 !== -1) {
+ $ERROR('#4: 4294967295.1 << 0 === -1. Actual: ' + (4294967295.1 << 0));
+}
+
+//CHECK#5
+if (6442450943.1 << 0 !== 2147483647) {
+ $ERROR('#5: 6442450943.1 << 0 === 2147483647. Actual: ' + (6442450943.1 << 0));
+}
+
+//CHECK#6
+if (-2147483649.1 << 0 !== 2147483647) {
+ $ERROR('#6: -2147483649.1 << 0 === 2147483647. Actual: ' + (-2147483649.1 << 0));
+}
+
+//CHECK#7
+if (-4294967297.1 << 0 !== -1) {
+ $ERROR('#7: -4294967297.1 << 0 === -1. Actual: ' + (-4294967297.1 << 0));
+}
+
+//CHECK#8
+if (-6442450945.1 << 0 !== 2147483647) {
+ $ERROR('#8: -6442450945.1 << 0 === 2147483647. Actual: ' + (-6442450945.1 << 0));
+}
+
+//CHECK#9
+if (-4294967296.1 << 0 !== 0) {
+ $ERROR('#9: -4294967296.1 << 0 === 0 . Actual: ' + (-4294967296.1 << 0));
+}
+
+//CHECK#10
+if (-6442450944.1 << 0 !== -2147483648) {
+ $ERROR('#10: -6442450944.1 << 0 === -2147483648. Actual: ' + (-6442450944.1 << 0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.2_T1.js
new file mode 100644
index 000000000..5ae6d18f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.2_T1.js
@@ -0,0 +1,329 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A5.2_T1;
+ * @section: 11.7.1, 9.5;
+ * @assertion: Operator x << y uses ToUint32(AdditiveExpression) & 31;
+ * @description: Checking distinct points;
+ */
+
+//CHECK#1
+if (1 << -32.1 !== 1) {
+ $ERROR('#1: 1 << -32.1 === 1. Actual: ' + (1 << -32.1));
+}
+
+//CHECK#2
+if (1 << -31.1 !== 2) {
+ $ERROR('#2: 1 << -31.1 === 2. Actual: ' + (1 << -31.1));
+}
+
+//CHECK#3
+if (1 << -30.1 !== 4) {
+ $ERROR('#3: 1 << -30.1 === 4. Actual: ' + (1 << -30.1));
+}
+
+//CHECK#4
+if (1 << -29.1 !== 8) {
+ $ERROR('#4: 1 << -29.1 === 8. Actual: ' + (1 << -29.1));
+}
+
+//CHECK#5
+if (1 << -28.1 !== 16) {
+ $ERROR('#5: 1 << -28.1 === 16. Actual: ' + (1 << -28.1));
+}
+
+//CHECK#6
+if (1 << -27.1 !== 32) {
+ $ERROR('#6: 1 << -27.1 === 32. Actual: ' + (1 << -27.1));
+}
+
+//CHECK#7
+if (1 << -26.1 !== 64) {
+ $ERROR('#7: 1 << -26.1 === 64. Actual: ' + (1 << -26.1));
+}
+
+//CHECK#8
+if (1 << -25.1 !== 128) {
+ $ERROR('#8: 1 << -25.1 === 128. Actual: ' + (1 << -25.1));
+}
+
+//CHECK#9
+if (1 << -24.1 !== 256) {
+ $ERROR('#9: 1 << -24.1 === 256. Actual: ' + (1 << -24.1));
+}
+
+//CHECK#10
+if (1 << -23.1 !== 512) {
+ $ERROR('#10: 1 << -23.1 === 512. Actual: ' + (1 << -23.1));
+}
+
+//CHECK#11
+if (1 << -22.1 !== 1024) {
+ $ERROR('#11: 1 << -22.1 === 1024. Actual: ' + (1 << -22.1));
+}
+
+//CHECK#12
+if (1 << -21.1 !== 2048) {
+ $ERROR('#12: 1 << -21.1 === 2048. Actual: ' + (1 << -21.1));
+}
+
+//CHECK#13
+if (1 << -20.1 !== 4096) {
+ $ERROR('#13: 1 << -20.1 === 4096. Actual: ' + (1 << -20.1));
+}
+
+//CHECK#14
+if (1 << -19.1 !== 8192) {
+ $ERROR('#14: 1 << -19.1 === 8192. Actual: ' + (1 << -19.1));
+}
+
+//CHECK#15
+if (1 << -18.1 !== 16384) {
+ $ERROR('#15: 1 << -18.1 === 16384. Actual: ' + (1 << -18.1));
+}
+
+//CHECK#16
+if (1 << -17.1 !== 32768) {
+ $ERROR('#16: 1 << -17.1 === 32768. Actual: ' + (1 << -17.1));
+}
+
+//CHECK#17
+if (1 << -16.1 !== 65536) {
+ $ERROR('#17: 1 << -16.1 === 65536. Actual: ' + (1 << -16.1));
+}
+
+//CHECK#18
+if (1 << -15.1 !== 131072) {
+ $ERROR('#18: 1 << -15.1 === 131072. Actual: ' + (1 << -15.1));
+}
+
+//CHECK#19
+if (1 << -14.1 !== 262144) {
+ $ERROR('#19: 1 << -14.1 === 262144. Actual: ' + (1 << -14.1));
+}
+
+//CHECK#20
+if (1 << -13.1 !== 524288) {
+ $ERROR('#20: 1 << -13.1 === 524288. Actual: ' + (1 << -13.1));
+}
+
+//CHECK#21
+if (1 << -12.1 !== 1048576) {
+ $ERROR('#21: 1 << -12.1 === 1048576. Actual: ' + (1 << -12.1));
+}
+
+//CHECK#22
+if (1 << -11.1 !== 2097152) {
+ $ERROR('#22: 1 << -11.1 === 2097152. Actual: ' + (1 << -11.1));
+}
+
+//CHECK#23
+if (1 << -10.1 !== 4194304) {
+ $ERROR('#23: 1 << -10.1 === 4194304. Actual: ' + (1 << -10.1));
+}
+
+//CHECK#24
+if (1 << -9.1 !== 8388608) {
+ $ERROR('#24: 1 << -9.1 === 8388608. Actual: ' + (1 << -9.1));
+}
+
+//CHECK#25
+if (1 << -8.1 !== 16777216) {
+ $ERROR('#25: 1 << -8.1 === 16777216. Actual: ' + (1 << -8.1));
+}
+
+//CHECK#26
+if (1 << -7.1 !== 33554432) {
+ $ERROR('#26: 1 << -7.1 === 33554432. Actual: ' + (1 << -7.1));
+}
+
+//CHECK#27
+if (1 << -6.1 !== 67108864) {
+ $ERROR('#27: 1 << -6.1 === 67108864. Actual: ' + (1 << -6.1));
+}
+
+//CHECK#28
+if (1 << -5.1 !== 134217728) {
+ $ERROR('#28: 1 << -5.1 === 134217728. Actual: ' + (1 << -5.1));
+}
+
+//CHECK#29
+if (1 << -4.1 !== 268435456) {
+ $ERROR('#29: 1 << -4.1 === 268435456. Actual: ' + (1 << -4.1));
+}
+
+//CHECK#30
+if (1 << -3.1 !== 536870912) {
+ $ERROR('#30: 1 << -3.1 === 536870912. Actual: ' + (1 << -3.1));
+}
+
+//CHECK#31
+if (1 << -2.1 !== 1073741824) {
+ $ERROR('#31: 1 << -2.1 === 1073741824. Actual: ' + (1 << -2.1));
+}
+
+//CHECK#32
+if (1 << -1.1 !== -2147483648) {
+ $ERROR('#32: 1 << -1.1 === -2147483648. Actual: ' + (1 << -1.1));
+}
+
+//CHECK#33
+if (1 << 32.1 !== 1) {
+ $ERROR('#33: 1 << 32.1 === 1. Actual: ' + (1 << 32.1));
+}
+
+//CHECK#34
+if (1 << 33.1 !== 2) {
+ $ERROR('#34: 1 << 33.1 === 2. Actual: ' + (1 << 33.1));
+}
+
+//CHECK#35
+if (1 << 34.1 !== 4) {
+ $ERROR('#35: 1 << 34.1 === 4. Actual: ' + (1 << 34.1));
+}
+
+//CHECK#36
+if (1 << 35.1 !== 8) {
+ $ERROR('#36: 1 << 35.1 === 8. Actual: ' + (1 << 35.1));
+}
+
+//CHECK#37
+if (1 << 36.1 !== 16) {
+ $ERROR('#37: 1 << 36.1 === 16. Actual: ' + (1 << 36.1));
+}
+
+//CHECK#38
+if (1 << 37.1 !== 32) {
+ $ERROR('#38: 1 << 37.1 === 32. Actual: ' + (1 << 37.1));
+}
+
+//CHECK#39
+if (1 << 38.1 !== 64) {
+ $ERROR('#39: 1 << 38.1 === 64. Actual: ' + (1 << 38.1));
+}
+
+//CHECK#40
+if (1 << 39.1 !== 128) {
+ $ERROR('#40: 1 << 39.1 === 128. Actual: ' + (1 << 39.1));
+}
+
+//CHECK#41
+if (1 << 40.1 !== 256) {
+ $ERROR('#41: 1 << 40.1 === 256. Actual: ' + (1 << 40.1));
+}
+
+//CHECK#42
+if (1 << 41.1 !== 512) {
+ $ERROR('#42: 1 << 41.1 === 512. Actual: ' + (1 << 41.1));
+}
+
+//CHECK#43
+if (1 << 42.1 !== 1024) {
+ $ERROR('#43: 1 << 42.1 === 1024. Actual: ' + (1 << 42.1));
+}
+
+//CHECK#44
+if (1 << 43.1 !== 2048) {
+ $ERROR('#44: 1 << 43.1 === 2048. Actual: ' + (1 << 43.1));
+}
+
+//CHECK#45
+if (1 << 44.1 !== 4096) {
+ $ERROR('#45: 1 << 44.1 === 4096. Actual: ' + (1 << 44.1));
+}
+
+//CHECK#46
+if (1 << 45.1 !== 8192) {
+ $ERROR('#46: 1 << 45.1 === 8192. Actual: ' + (1 << 45.1));
+}
+
+//CHECK#47
+if (1 << 46.1 !== 16384) {
+ $ERROR('#47: 1 << 46.1 === 16384. Actual: ' + (1 << 46.1));
+}
+
+//CHECK#48
+if (1 << 47.1 !== 32768) {
+ $ERROR('#48: 1 << 47.1 === 32768. Actual: ' + (1 << 47.1));
+}
+
+//CHECK#49
+if (1 << 48.1 !== 65536) {
+ $ERROR('#49: 1 << 48.1 === 65536. Actual: ' + (1 << 48.1));
+}
+
+//CHECK#50
+if (1 << 49.1 !== 131072) {
+ $ERROR('#50: 1 << 49.1 === 131072. Actual: ' + (1 << 49.1));
+}
+
+//CHECK#51
+if (1 << 50.1 !== 262144) {
+ $ERROR('#51: 1 << 50.1 === 262144. Actual: ' + (1 << 50.1));
+}
+
+//CHECK#52
+if (1 << 51.1 !== 524288) {
+ $ERROR('#52: 1 << 51.1 === 524288. Actual: ' + (1 << 51.1));
+}
+
+//CHECK#53
+if (1 << 52.1 !== 1048576) {
+ $ERROR('#53: 1 << 52.1 === 1048576. Actual: ' + (1 << 52.1));
+}
+
+//CHECK#54
+if (1 << 53.1 !== 2097152) {
+ $ERROR('#54: 1 << 53.1 === 2097152. Actual: ' + (1 << 53.1));
+}
+
+//CHECK#55
+if (1 << 54.1 !== 4194304) {
+ $ERROR('#55: 1 << 54.1 === 4194304. Actual: ' + (1 << 54.1));
+}
+
+//CHECK#56
+if (1 << 55.1 !== 8388608) {
+ $ERROR('#56: 1 << 55.1 === 8388608. Actual: ' + (1 << 55.1));
+}
+
+//CHECK#57
+if (1 << 56.1 !== 16777216) {
+ $ERROR('#57: 1 << 56.1 === 16777216. Actual: ' + (1 << 56.1));
+}
+
+//CHECK#58
+if (1 << 57.1 !== 33554432) {
+ $ERROR('#58: 1 << 57.1 === 33554432. Actual: ' + (1 << 57.1));
+}
+
+//CHECK#59
+if (1 << 58.1 !== 67108864) {
+ $ERROR('#59: 1 << 58.1 === 67108864. Actual: ' + (1 << 58.1));
+}
+
+//CHECK#60
+if (1 << 59.1 !== 134217728) {
+ $ERROR('#60: 1 << 59.1 === 134217728. Actual: ' + (1 << 59.1));
+}
+
+//CHECK#61
+if (1 << 60.1 !== 268435456) {
+ $ERROR('#61: 1 << 60.1 === 268435456. Actual: ' + (1 << 60.1));
+}
+
+//CHECK#62
+if (1 << 61.1 !== 536870912) {
+ $ERROR('#62: 1 << 61.1 === 536870912. Actual: ' + (1 << 61.1));
+}
+
+//CHECK#63
+if (1 << 62.1 !== 1073741824) {
+ $ERROR('#63: 1 << 62.1 === 1073741824. Actual: ' + (1 << 62.1));
+}
+
+//CHECK#64
+if (1 << 63.1 !== -2147483648) {
+ $ERROR('#64: 1 << 63.1 === -2147483648. Actual: ' + (1 << 63.1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A1.js
new file mode 100644
index 000000000..238775f7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.2_A1;
+* @section: 11.7.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between ShiftExpression and ">>" or between ">>" and AdditiveExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("-4\u0009>>\u00091") !== -2) {
+ $ERROR('#1: -4\\u0009>>\\u00091 === -2');
+}
+
+//CHECK#2
+if (eval("-4\u000B>>\u000B1") !== -2) {
+ $ERROR('#2: -4\\u000B>>\\u000B1 === -2');
+}
+
+//CHECK#3
+if (eval("-4\u000C>>\u000C1") !== -2) {
+ $ERROR('#3: -4\\u000C>>\\u000C1 === -2');
+}
+
+//CHECK#4
+if (eval("-4\u0020>>\u00201") !== -2) {
+ $ERROR('#4: -4\\u0020>>\\u00201 === -2');
+}
+
+//CHECK#5
+if (eval("-4\u00A0>>\u00A01") !== -2) {
+ $ERROR('#5: -4\\u00A0>>\\u00A01 === -2');
+}
+
+//CHECK#6
+if (eval("-4\u000A>>\u000A1") !== -2) {
+ $ERROR('#6: -4\\u000A>>\\u000A1 === -2');
+}
+
+//CHECK#7
+if (eval("-4\u000D>>\u000D1") !== -2) {
+ $ERROR('#7: -4\\u000D>>\\u000D1 === -2');
+}
+
+//CHECK#8
+if (eval("-4\u2028>>\u20281") !== -2) {
+ $ERROR('#8: -4\\u2028>>\\u20281 === -2');
+}
+
+//CHECK#9
+if (eval("-4\u2029>>\u20291") !== -2) {
+ $ERROR('#9: -4\\u2029>>\\u20291 === -2');
+}
+
+//CHECK#10
+if (eval("-4\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== -2) {
+ $ERROR('#10: -4\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>>\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === -2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T1.js
new file mode 100644
index 000000000..1469a5261
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.2_A2.1_T1;
+* @section: 11.7.2;
+* @assertion: Operator x >> y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (-4 >> 1 !== -2) {
+ $ERROR('#1: -4 >> 1 === -2. Actual: ' + (-4 >> 1));
+}
+
+//CHECK#2
+var x = -4;
+if (x >> 1 !== -2) {
+ $ERROR('#2: var x = -4; x >> 1 === -2. Actual: ' + (x >> 1));
+}
+
+//CHECK#3
+var y = 1;
+if (-4 >> y !== -2) {
+ $ERROR('#3: var y = 1; -4 >> y === -2. Actual: ' + (-4 >> y));
+}
+
+//CHECK#4
+var x = -4;
+var y = 1;
+if (x >> y !== -2) {
+ $ERROR('#4: var x = -4; var y = 1; x >> y === -2. Actual: ' + (x >> y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = -4;
+objecty.prop = 1;
+if (objectx.prop >> objecty.prop !== -2) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = -4; objecty.prop = 1; objectx.prop >> objecty.prop === -2. Actual: ' + (objectx.prop >> objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T2.js
new file mode 100644
index 000000000..58ca08fa8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.1_T2;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x >> 1;
+ $ERROR('#1.1: x >> 1 throw ReferenceError. Actual: ' + (x >> 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >> 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T3.js
new file mode 100644
index 000000000..9ac3aa0bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.1_T3;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 >> y;
+ $ERROR('#1.1: 1 >> y throw ReferenceError. Actual: ' + (1 >> y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >> y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.2_T1.js
new file mode 100644
index 000000000..646f92798
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.2_T1;
+ * @section: 11.7.2, 8.6.2.6;
+ * @assertion: Operator x >> y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return -4}} >> 1 !== -2) {
+ $ERROR('#1: {valueOf: function() {return -4}} >> 1 === -2. Actual: ' + ({valueOf: function() {return -4}} >> 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return -4}, toString: function() {return 0}} >> 1 !== -2) {
+ $ERROR('#2: {valueOf: function() {return -4}, toString: function() {return 0}} >> 1 === -2. Actual: ' + ({valueOf: function() {return -4}, toString: function() {return 0}} >> 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return -4}, toString: function() {return {}}} >> 1 !== -2) {
+ $ERROR('#3: {valueOf: function() {return -4}, toString: function() {return {}}} >> 1 === -2. Actual: ' + ({valueOf: function() {return -4}, toString: function() {return {}}} >> 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1 !== -2) {
+ $ERROR('#4.1: {valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1 === -2. Actual: ' + ({valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (-4 >> {toString: function() {return 1}} !== -2) {
+ $ERROR('#5: -4 >> {toString: function() {return 1}} === -2. Actual: ' + (-4 >> {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (-4 >> {valueOf: function() {return {}}, toString: function() {return 1}} !== -2) {
+ $ERROR('#6: -4 >> {valueOf: function() {return {}}, toString: function() {return 1}} === -2. Actual: ' + (-4 >> {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ -4 >> {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: -4 >> {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (-4 >> {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: -4 >> {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ -4 >> {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: -4 >> {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (-4 >> {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: -4 >> {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.3_T1.js
new file mode 100644
index 000000000..fba3668e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.3_T1;
+ * @section: 11.7.2;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x >> y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >> y throw "x". Actual: ' + (x >> y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >> y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T1.js
new file mode 100644
index 000000000..2a70c67ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.4_T1;
+ * @section: 11.7.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) >> x !== 0) {
+ $ERROR('#1: var x = 0; (x = 1) >> x === 0. Actual: ' + ((x = 1) >> x));
+}
+
+//CHECK#2
+var x = -4;
+if (x >> (x = 1) !== -2) {
+ $ERROR('#2: var x = -4; x >> (x = 1) === -2. Actual: ' + (x >> (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T2.js
new file mode 100644
index 000000000..4168d109d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.4_T2;
+ * @section: 11.7.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() >> y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >> y() throw "x". Actual: ' + (x() >> y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >> y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T3.js
new file mode 100644
index 000000000..b426d1f7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.4_T3;
+ * @section: 11.7.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x >> (x = 1);
+ $ERROR('#1.1: x >> (x = 1) throw ReferenceError. Actual: ' + (x >> (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >> (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) >> y !== 0) {
+ $ERROR('#2: (y = 1) >> y === 0. Actual: ' + ((y = 1) >> y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.1.js
new file mode 100644
index 000000000..18a22e690
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.1;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true >> true !== 0) {
+ $ERROR('#1: true >> true === 0. Actual: ' + (true >> true));
+}
+
+//CHECK#2
+if (new Boolean(true) >> true !== 0) {
+ $ERROR('#2: new Boolean(true) >> true === 0. Actual: ' + (new Boolean(true) >> true));
+}
+
+//CHECK#3
+if (true >> new Boolean(true) !== 0) {
+ $ERROR('#3: true >> new Boolean(true) === 0. Actual: ' + (true >> new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) >> new Boolean(true) !== 0) {
+ $ERROR('#4: new Boolean(true) >> new Boolean(true) === 0. Actual: ' + (new Boolean(true) >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.2.js
new file mode 100644
index 000000000..8385d7509
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.2;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 >> 1 !== 0) {
+ $ERROR('#1: 1 >> 1 === 0. Actual: ' + (1 >> 1));
+}
+
+//CHECK#2
+if (new Number(1) >> 1 !== 0) {
+ $ERROR('#2: new Number(1) >> 1 === 0. Actual: ' + (new Number(1) >> 1));
+}
+
+//CHECK#3
+if (1 >> new Number(1) !== 0) {
+ $ERROR('#3: 1 >> new Number(1) === 0. Actual: ' + (1 >> new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) >> new Number(1) !== 0) {
+ $ERROR('#4: new Number(1) >> new Number(1) === 0. Actual: ' + (new Number(1) >> new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.3.js
new file mode 100644
index 000000000..690d27e5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.3;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" >> "1" !== 0) {
+ $ERROR('#1: "1" >> "1" === 0. Actual: ' + ("1" >> "1"));
+}
+
+//CHECK#2
+if (new String("1") >> "1" !== 0) {
+ $ERROR('#2: new String("1") >> "1" === 0. Actual: ' + (new String("1") >> "1"));
+}
+
+//CHECK#3
+if ("1" >> new String("1") !== 0) {
+ $ERROR('#3: "1" >> new String("1") === 0. Actual: ' + ("1" >> new String("1")));
+}
+
+//CHECK#4
+if (new String("1") >> new String("1") !== 0) {
+ $ERROR('#4: new String("1") >> new String("1") === 0. Actual: ' + (new String("1") >> new String("1")));
+}
+
+//CHECK#5
+if ("x" >> "1" !== 0) {
+ $ERROR('#5: "x" >> "1" === 0. Actual: ' + ("x" >> "1"));
+}
+
+//CHECK#6
+if ("1" >> "x" !== 1) {
+ $ERROR('#6: "1" >> "x" === 1. Actual: ' + ("1" >> "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.4.js
new file mode 100644
index 000000000..ba2d5ccbe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.4;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null >> undefined !== 0) {
+ $ERROR('#1: null >> undefined === 0. Actual: ' + (null >> undefined));
+}
+
+//CHECK#2
+if (undefined >> null !== 0) {
+ $ERROR('#2: undefined >> null === 0. Actual: ' + (undefined >> null));
+}
+
+//CHECK#3
+if (undefined >> undefined !== 0) {
+ $ERROR('#3: undefined >> undefined === 0. Actual: ' + (undefined >> undefined));
+}
+
+//CHECK#4
+if (null >> null !== 0) {
+ $ERROR('#4: null >> null === 0. Actual: ' + (null >> null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.5.js
new file mode 100644
index 000000000..134e3bf5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.5;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} >> function(){return 1}) !== 0) {
+ $ERROR('#1: ({} >> function(){return 1}) === 0. Actual: ' + (({} >> function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} >> {}) !== 0) {
+ $ERROR('#2: (function(){return 1} >> {}) === 0. Actual: ' + ((function(){return 1} >> {})));
+}
+
+//CHECK#3
+if ((function(){return 1} >> function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} >> function(){return 1}) === 0. Actual: ' + ((function(){return 1} >> function(){return 1})));
+}
+
+//CHECK#4
+if (({} >> {}) !== 0) {
+ $ERROR('#4: ({} >> {}) === 0. Actual: ' + (({} >> {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.1.js
new file mode 100644
index 000000000..10f291659
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.1;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true >> 1 !== 0) {
+ $ERROR('#1: true >> 1 === 0. Actual: ' + (true >> 1));
+}
+
+//CHECK#2
+if (1 >> true !== 0) {
+ $ERROR('#2: 1 >> true === 0. Actual: ' + (1 >> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >> 1 !== 0) {
+ $ERROR('#3: new Boolean(true) >> 1 === 0. Actual: ' + (new Boolean(true) >> 1));
+}
+
+//CHECK#4
+if (1 >> new Boolean(true) !== 0) {
+ $ERROR('#4: 1 >> new Boolean(true) === 0. Actual: ' + (1 >> new Boolean(true)));
+}
+
+//CHECK#5
+if (true >> new Number(1) !== 0) {
+ $ERROR('#5: true >> new Number(1) === 0. Actual: ' + (true >> new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) >> true !== 0) {
+ $ERROR('#6: new Number(1) >> true === 0. Actual: ' + (new Number(1) >> true));
+}
+
+//CHECK#7
+if (new Boolean(true) >> new Number(1) !== 0) {
+ $ERROR('#7: new Boolean(true) >> new Number(1) === 0. Actual: ' + (new Boolean(true) >> new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) >> new Boolean(true) !== 0) {
+ $ERROR('#8: new Number(1) >> new Boolean(true) === 0. Actual: ' + (new Number(1) >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.2.js
new file mode 100644
index 000000000..7a2078ebc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.2;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" >> 1 !== 0) {
+ $ERROR('#1: "1" >> 1 === 0. Actual: ' + ("1" >> 1));
+}
+
+//CHECK#2
+if (1 >> "1" !== 0) {
+ $ERROR('#2: 1 >> "1" === 0. Actual: ' + (1 >> "1"));
+}
+
+//CHECK#3
+if (new String("1") >> 1 !== 0) {
+ $ERROR('#3: new String("1") >> 1 === 0. Actual: ' + (new String("1") >> 1));
+}
+
+//CHECK#4
+if (1 >> new String("1") !== 0) {
+ $ERROR('#4: 1 >> new String("1") === 0. Actual: ' + (1 >> new String("1")));
+}
+
+//CHECK#5
+if ("1" >> new Number(1) !== 0) {
+ $ERROR('#5: "1" >> new Number(1) === 0. Actual: ' + ("1" >> new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) >> "1" !== 0) {
+ $ERROR('#6: new Number(1) >> "1" === 0. Actual: ' + (new Number(1) >> "1"));
+}
+
+//CHECK#7
+if (new String("1") >> new Number(1) !== 0) {
+ $ERROR('#7: new String("1") >> new Number(1) === 0. Actual: ' + (new String("1") >> new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) >> new String("1") !== 0) {
+ $ERROR('#8: new Number(1) >> new String("1") === 0. Actual: ' + (new Number(1) >> new String("1")));
+}
+
+//CHECK#9
+if ("x" >> 1 !== 0) {
+ $ERROR('#9: "x" >> 1 === 0. Actual: ' + ("x" >> 1));
+}
+
+//CHECK#10
+if (1 >> "x" !== 1) {
+ $ERROR('#10: 1 >> "x" === 1. Actual: ' + (1 >> "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.3.js
new file mode 100644
index 000000000..0b148f33d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.3;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 >> null !== 1) {
+ $ERROR('#1: 1 >> null === 1. Actual: ' + (1 >> null));
+}
+
+//CHECK#2
+if (null >> 1 !== 0) {
+ $ERROR('#2: null >> 1 === 0. Actual: ' + (null >> 1));
+}
+
+//CHECK#3
+if (new Number(1) >> null !== 1) {
+ $ERROR('#3: new Number(1) >> null === 1. Actual: ' + (new Number(1) >> null));
+}
+
+//CHECK#4
+if (null >> new Number(1) !== 0) {
+ $ERROR('#4: null >> new Number(1) === 0. Actual: ' + (null >> new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.4.js
new file mode 100644
index 000000000..f7f461f66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.4;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 >> undefined !== 1) {
+ $ERROR('#1: 1 >> undefined === 1. Actual: ' + (1 >> undefined));
+}
+
+//CHECK#2
+if (undefined >> 1 !== 0) {
+ $ERROR('#2: undefined >> 1 === 0. Actual: ' + (undefined >> 1));
+}
+
+//CHECK#3
+if (new Number(1) >> undefined !== 1) {
+ $ERROR('#3: new Number(1) >> undefined === 1. Actual: ' + (new Number(1) >> undefined));
+}
+
+//CHECK#4
+if (undefined >> new Number(1) !== 0) {
+ $ERROR('#4: undefined >> new Number(1) === 0. Actual: ' + (undefined >> new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.5.js
new file mode 100644
index 000000000..6c5d897be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.5;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true >> "1" !== 0) {
+ $ERROR('#1: true >> "1" === 0. Actual: ' + (true >> "1"));
+}
+
+//CHECK#2
+if ("1" >> true !== 0) {
+ $ERROR('#2: "1" >> true === 0. Actual: ' + ("1" >> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >> "1" !== 0) {
+ $ERROR('#3: new Boolean(true) >> "1" === 0. Actual: ' + (new Boolean(true) >> "1"));
+}
+
+//CHECK#4
+if ("1" >> new Boolean(true) !== 0) {
+ $ERROR('#4: "1" >> new Boolean(true) === 0. Actual: ' + ("1" >> new Boolean(true)));
+}
+
+//CHECK#5
+if (true >> new String("1") !== 0) {
+ $ERROR('#5: true >> new String("1") === 0. Actual: ' + (true >> new String("1")));
+}
+
+//CHECK#6
+if (new String("1") >> true !== 0) {
+ $ERROR('#6: new String("1") >> true === 0. Actual: ' + (new String("1") >> true));
+}
+
+//CHECK#7
+if (new Boolean(true) >> new String("1") !== 0) {
+ $ERROR('#7: new Boolean(true) >> new String("1") === 0. Actual: ' + (new Boolean(true) >> new String("1")));
+}
+
+//CHECK#8
+if (new String("1") >> new Boolean(true) !== 0) {
+ $ERROR('#8: new String("1") >> new Boolean(true) === 0. Actual: ' + (new String("1") >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.6.js
new file mode 100644
index 000000000..567d6b773
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.6;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" >> undefined !== 1) {
+ $ERROR('#1: "1" >> undefined === 1. Actual: ' + ("1" >> undefined));
+}
+
+//CHECK#2
+if (undefined >> "1" !== 0) {
+ $ERROR('#2: undefined >> "1" === 0. Actual: ' + (undefined >> "1"));
+}
+
+//CHECK#3
+if (new String("1") >> undefined !== 1) {
+ $ERROR('#3: new String("1") >> undefined === 1. Actual: ' + (new String("1") >> undefined));
+}
+
+//CHECK#4
+if (undefined >> new String("1") !== 0) {
+ $ERROR('#4: undefined >> new String("1") === 0. Actual: ' + (undefined >> new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.7.js
new file mode 100644
index 000000000..5e254c66b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.7;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" >> null !== 1) {
+ $ERROR('#1: "1" >> null === 1. Actual: ' + ("1" >> null));
+}
+
+//CHECK#2
+if (null >> "1" !== 0) {
+ $ERROR('#2: null >> "1" === 0. Actual: ' + (null >> "1"));
+}
+
+//CHECK#3
+if (new String("1") >> null !== 1) {
+ $ERROR('#3: new String("1") >> null === 1. Actual: ' + (new String("1") >> null));
+}
+
+//CHECK#4
+if (null >> new String("1") !== 0) {
+ $ERROR('#4: null >> new String("1") === 0. Actual: ' + (null >> new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.8.js
new file mode 100644
index 000000000..7f37aa219
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.8;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true >> undefined !== 1) {
+ $ERROR('#1: true >> undefined === 1. Actual: ' + (true >> undefined));
+}
+
+//CHECK#2
+if (undefined >> true !== 0) {
+ $ERROR('#2: undefined >> true === 0. Actual: ' + (undefined >> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >> undefined !== 1) {
+ $ERROR('#3: new Boolean(true) >> undefined === 1. Actual: ' + (new Boolean(true) >> undefined));
+}
+
+//CHECK#4
+if (undefined >> new Boolean(true) !== 0) {
+ $ERROR('#4: undefined >> new Boolean(true) === 0. Actual: ' + (undefined >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.9.js
new file mode 100644
index 000000000..733306fba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.9;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true >> null !== 1) {
+ $ERROR('#1: true >> null === 1. Actual: ' + (true >> null));
+}
+
+//CHECK#2
+if (null >> true !== 0) {
+ $ERROR('#2: null >> true === 0. Actual: ' + (null >> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >> null !== 1) {
+ $ERROR('#3: new Boolean(true) >> null === 1. Actual: ' + (new Boolean(true) >> null));
+}
+
+//CHECK#4
+if (null >> new Boolean(true) !== 0) {
+ $ERROR('#4: null >> new Boolean(true) === 0. Actual: ' + (null >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T1.js
new file mode 100644
index 000000000..1369a8649
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T1.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A4_T1;
+ * @section: 11.7.2;
+ * @assertion: Check x >> y operator in distinct points;
+ * @description: ShiftExpression = -2^n, n = 0...15;
+ */
+
+//CHECK
+
+if (-1 >> 0 !== -1) {
+ $ERROR('#1: -1 >> 0 === -1. Actual: ' + (-1 >> 0));
+}
+
+
+if (-2 >> 0 !== -2) {
+ $ERROR('#2: -2 >> 0 === -2. Actual: ' + (-2 >> 0));
+}
+
+
+if (-4 >> 0 !== -4) {
+ $ERROR('#3: -4 >> 0 === -4. Actual: ' + (-4 >> 0));
+}
+
+
+if (-8 >> 0 !== -8) {
+ $ERROR('#4: -8 >> 0 === -8. Actual: ' + (-8 >> 0));
+}
+
+
+if (-16 >> 0 !== -16) {
+ $ERROR('#5: -16 >> 0 === -16. Actual: ' + (-16 >> 0));
+}
+
+
+if (-32 >> 0 !== -32) {
+ $ERROR('#6: -32 >> 0 === -32. Actual: ' + (-32 >> 0));
+}
+
+
+if (-64 >> 0 !== -64) {
+ $ERROR('#7: -64 >> 0 === -64. Actual: ' + (-64 >> 0));
+}
+
+
+if (-128 >> 0 !== -128) {
+ $ERROR('#8: -128 >> 0 === -128. Actual: ' + (-128 >> 0));
+}
+
+
+if (-256 >> 0 !== -256) {
+ $ERROR('#9: -256 >> 0 === -256. Actual: ' + (-256 >> 0));
+}
+
+
+if (-512 >> 0 !== -512) {
+ $ERROR('#10: -512 >> 0 === -512. Actual: ' + (-512 >> 0));
+}
+
+
+if (-1024 >> 0 !== -1024) {
+ $ERROR('#11: -1024 >> 0 === -1024. Actual: ' + (-1024 >> 0));
+}
+
+
+if (-2048 >> 0 !== -2048) {
+ $ERROR('#12: -2048 >> 0 === -2048. Actual: ' + (-2048 >> 0));
+}
+
+
+if (-4096 >> 0 !== -4096) {
+ $ERROR('#13: -4096 >> 0 === -4096. Actual: ' + (-4096 >> 0));
+}
+
+
+if (-8192 >> 0 !== -8192) {
+ $ERROR('#14: -8192 >> 0 === -8192. Actual: ' + (-8192 >> 0));
+}
+
+
+if (-16384 >> 0 !== -16384) {
+ $ERROR('#15: -16384 >> 0 === -16384. Actual: ' + (-16384 >> 0));
+}
+
+
+if (-32768 >> 0 !== -32768) {
+ $ERROR('#16: -32768 >> 0 === -32768. Actual: ' + (-32768 >> 0));
+}
+
+
+if (-65536 >> 0 !== -65536) {
+ $ERROR('#17: -65536 >> 0 === -65536. Actual: ' + (-65536 >> 0));
+}
+
+
+if (-131072 >> 0 !== -131072) {
+ $ERROR('#18: -131072 >> 0 === -131072. Actual: ' + (-131072 >> 0));
+}
+
+
+if (-262144 >> 0 !== -262144) {
+ $ERROR('#19: -262144 >> 0 === -262144. Actual: ' + (-262144 >> 0));
+}
+
+
+if (-524288 >> 0 !== -524288) {
+ $ERROR('#20: -524288 >> 0 === -524288. Actual: ' + (-524288 >> 0));
+}
+
+
+if (-1048576 >> 0 !== -1048576) {
+ $ERROR('#21: -1048576 >> 0 === -1048576. Actual: ' + (-1048576 >> 0));
+}
+
+
+if (-2097152 >> 0 !== -2097152) {
+ $ERROR('#22: -2097152 >> 0 === -2097152. Actual: ' + (-2097152 >> 0));
+}
+
+
+if (-4194304 >> 0 !== -4194304) {
+ $ERROR('#23: -4194304 >> 0 === -4194304. Actual: ' + (-4194304 >> 0));
+}
+
+
+if (-8388608 >> 0 !== -8388608) {
+ $ERROR('#24: -8388608 >> 0 === -8388608. Actual: ' + (-8388608 >> 0));
+}
+
+
+if (-16777216 >> 0 !== -16777216) {
+ $ERROR('#25: -16777216 >> 0 === -16777216. Actual: ' + (-16777216 >> 0));
+}
+
+
+if (-33554432 >> 0 !== -33554432) {
+ $ERROR('#26: -33554432 >> 0 === -33554432. Actual: ' + (-33554432 >> 0));
+}
+
+
+if (-67108864 >> 0 !== -67108864) {
+ $ERROR('#27: -67108864 >> 0 === -67108864. Actual: ' + (-67108864 >> 0));
+}
+
+
+if (-134217728 >> 0 !== -134217728) {
+ $ERROR('#28: -134217728 >> 0 === -134217728. Actual: ' + (-134217728 >> 0));
+}
+
+
+if (-268435456 >> 0 !== -268435456) {
+ $ERROR('#29: -268435456 >> 0 === -268435456. Actual: ' + (-268435456 >> 0));
+}
+
+
+if (-536870912 >> 0 !== -536870912) {
+ $ERROR('#30: -536870912 >> 0 === -536870912. Actual: ' + (-536870912 >> 0));
+}
+
+
+if (-1073741824 >> 0 !== -1073741824) {
+ $ERROR('#31: -1073741824 >> 0 === -1073741824. Actual: ' + (-1073741824 >> 0));
+}
+
+
+if (-2147483648 >> 0 !== -2147483648) {
+ $ERROR('#32: -2147483648 >> 0 === -2147483648. Actual: ' + (-2147483648 >> 0));
+}
+
+
+if (-1 >> 1 !== -1) {
+ $ERROR('#33: -1 >> 1 === -1. Actual: ' + (-1 >> 1));
+}
+
+
+if (-2 >> 1 !== -1) {
+ $ERROR('#34: -2 >> 1 === -1. Actual: ' + (-2 >> 1));
+}
+
+
+if (-4 >> 1 !== -2) {
+ $ERROR('#35: -4 >> 1 === -2. Actual: ' + (-4 >> 1));
+}
+
+
+if (-8 >> 1 !== -4) {
+ $ERROR('#36: -8 >> 1 === -4. Actual: ' + (-8 >> 1));
+}
+
+
+if (-16 >> 1 !== -8) {
+ $ERROR('#37: -16 >> 1 === -8. Actual: ' + (-16 >> 1));
+}
+
+
+if (-32 >> 1 !== -16) {
+ $ERROR('#38: -32 >> 1 === -16. Actual: ' + (-32 >> 1));
+}
+
+
+if (-64 >> 1 !== -32) {
+ $ERROR('#39: -64 >> 1 === -32. Actual: ' + (-64 >> 1));
+}
+
+
+if (-128 >> 1 !== -64) {
+ $ERROR('#40: -128 >> 1 === -64. Actual: ' + (-128 >> 1));
+}
+
+
+if (-256 >> 1 !== -128) {
+ $ERROR('#41: -256 >> 1 === -128. Actual: ' + (-256 >> 1));
+}
+
+
+if (-512 >> 1 !== -256) {
+ $ERROR('#42: -512 >> 1 === -256. Actual: ' + (-512 >> 1));
+}
+
+
+if (-1024 >> 1 !== -512) {
+ $ERROR('#43: -1024 >> 1 === -512. Actual: ' + (-1024 >> 1));
+}
+
+
+if (-2048 >> 1 !== -1024) {
+ $ERROR('#44: -2048 >> 1 === -1024. Actual: ' + (-2048 >> 1));
+}
+
+
+if (-4096 >> 1 !== -2048) {
+ $ERROR('#45: -4096 >> 1 === -2048. Actual: ' + (-4096 >> 1));
+}
+
+
+if (-8192 >> 1 !== -4096) {
+ $ERROR('#46: -8192 >> 1 === -4096. Actual: ' + (-8192 >> 1));
+}
+
+
+if (-16384 >> 1 !== -8192) {
+ $ERROR('#47: -16384 >> 1 === -8192. Actual: ' + (-16384 >> 1));
+}
+
+
+if (-32768 >> 1 !== -16384) {
+ $ERROR('#48: -32768 >> 1 === -16384. Actual: ' + (-32768 >> 1));
+}
+
+
+if (-65536 >> 1 !== -32768) {
+ $ERROR('#49: -65536 >> 1 === -32768. Actual: ' + (-65536 >> 1));
+}
+
+
+if (-131072 >> 1 !== -65536) {
+ $ERROR('#50: -131072 >> 1 === -65536. Actual: ' + (-131072 >> 1));
+}
+
+
+if (-262144 >> 1 !== -131072) {
+ $ERROR('#51: -262144 >> 1 === -131072. Actual: ' + (-262144 >> 1));
+}
+
+
+if (-524288 >> 1 !== -262144) {
+ $ERROR('#52: -524288 >> 1 === -262144. Actual: ' + (-524288 >> 1));
+}
+
+
+if (-1048576 >> 1 !== -524288) {
+ $ERROR('#53: -1048576 >> 1 === -524288. Actual: ' + (-1048576 >> 1));
+}
+
+
+if (-2097152 >> 1 !== -1048576) {
+ $ERROR('#54: -2097152 >> 1 === -1048576. Actual: ' + (-2097152 >> 1));
+}
+
+
+if (-4194304 >> 1 !== -2097152) {
+ $ERROR('#55: -4194304 >> 1 === -2097152. Actual: ' + (-4194304 >> 1));
+}
+
+
+if (-8388608 >> 1 !== -4194304) {
+ $ERROR('#56: -8388608 >> 1 === -4194304. Actual: ' + (-8388608 >> 1));
+}
+
+
+if (-16777216 >> 1 !== -8388608) {
+ $ERROR('#57: -16777216 >> 1 === -8388608. Actual: ' + (-16777216 >> 1));
+}
+
+
+if (-33554432 >> 1 !== -16777216) {
+ $ERROR('#58: -33554432 >> 1 === -16777216. Actual: ' + (-33554432 >> 1));
+}
+
+
+if (-67108864 >> 1 !== -33554432) {
+ $ERROR('#59: -67108864 >> 1 === -33554432. Actual: ' + (-67108864 >> 1));
+}
+
+
+if (-134217728 >> 1 !== -67108864) {
+ $ERROR('#60: -134217728 >> 1 === -67108864. Actual: ' + (-134217728 >> 1));
+}
+
+
+if (-268435456 >> 1 !== -134217728) {
+ $ERROR('#61: -268435456 >> 1 === -134217728. Actual: ' + (-268435456 >> 1));
+}
+
+
+if (-536870912 >> 1 !== -268435456) {
+ $ERROR('#62: -536870912 >> 1 === -268435456. Actual: ' + (-536870912 >> 1));
+}
+
+
+if (-1073741824 >> 1 !== -536870912) {
+ $ERROR('#63: -1073741824 >> 1 === -536870912. Actual: ' + (-1073741824 >> 1));
+}
+
+
+if (-2147483648 >> 1 !== -1073741824) {
+ $ERROR('#64: -2147483648 >> 1 === -1073741824. Actual: ' + (-2147483648 >> 1));
+}
+
+
+if (-1 >> 2 !== -1) {
+ $ERROR('#65: -1 >> 2 === -1. Actual: ' + (-1 >> 2));
+}
+
+
+if (-2 >> 2 !== -1) {
+ $ERROR('#66: -2 >> 2 === -1. Actual: ' + (-2 >> 2));
+}
+
+
+if (-4 >> 2 !== -1) {
+ $ERROR('#67: -4 >> 2 === -1. Actual: ' + (-4 >> 2));
+}
+
+
+if (-8 >> 2 !== -2) {
+ $ERROR('#68: -8 >> 2 === -2. Actual: ' + (-8 >> 2));
+}
+
+
+if (-16 >> 2 !== -4) {
+ $ERROR('#69: -16 >> 2 === -4. Actual: ' + (-16 >> 2));
+}
+
+
+if (-32 >> 2 !== -8) {
+ $ERROR('#70: -32 >> 2 === -8. Actual: ' + (-32 >> 2));
+}
+
+
+if (-64 >> 2 !== -16) {
+ $ERROR('#71: -64 >> 2 === -16. Actual: ' + (-64 >> 2));
+}
+
+
+if (-128 >> 2 !== -32) {
+ $ERROR('#72: -128 >> 2 === -32. Actual: ' + (-128 >> 2));
+}
+
+
+if (-256 >> 2 !== -64) {
+ $ERROR('#73: -256 >> 2 === -64. Actual: ' + (-256 >> 2));
+}
+
+
+if (-512 >> 2 !== -128) {
+ $ERROR('#74: -512 >> 2 === -128. Actual: ' + (-512 >> 2));
+}
+
+
+if (-1024 >> 2 !== -256) {
+ $ERROR('#75: -1024 >> 2 === -256. Actual: ' + (-1024 >> 2));
+}
+
+
+if (-2048 >> 2 !== -512) {
+ $ERROR('#76: -2048 >> 2 === -512. Actual: ' + (-2048 >> 2));
+}
+
+
+if (-4096 >> 2 !== -1024) {
+ $ERROR('#77: -4096 >> 2 === -1024. Actual: ' + (-4096 >> 2));
+}
+
+
+if (-8192 >> 2 !== -2048) {
+ $ERROR('#78: -8192 >> 2 === -2048. Actual: ' + (-8192 >> 2));
+}
+
+
+if (-16384 >> 2 !== -4096) {
+ $ERROR('#79: -16384 >> 2 === -4096. Actual: ' + (-16384 >> 2));
+}
+
+
+if (-32768 >> 2 !== -8192) {
+ $ERROR('#80: -32768 >> 2 === -8192. Actual: ' + (-32768 >> 2));
+}
+
+
+if (-65536 >> 2 !== -16384) {
+ $ERROR('#81: -65536 >> 2 === -16384. Actual: ' + (-65536 >> 2));
+}
+
+
+if (-131072 >> 2 !== -32768) {
+ $ERROR('#82: -131072 >> 2 === -32768. Actual: ' + (-131072 >> 2));
+}
+
+
+if (-262144 >> 2 !== -65536) {
+ $ERROR('#83: -262144 >> 2 === -65536. Actual: ' + (-262144 >> 2));
+}
+
+
+if (-524288 >> 2 !== -131072) {
+ $ERROR('#84: -524288 >> 2 === -131072. Actual: ' + (-524288 >> 2));
+}
+
+
+if (-1048576 >> 2 !== -262144) {
+ $ERROR('#85: -1048576 >> 2 === -262144. Actual: ' + (-1048576 >> 2));
+}
+
+
+if (-2097152 >> 2 !== -524288) {
+ $ERROR('#86: -2097152 >> 2 === -524288. Actual: ' + (-2097152 >> 2));
+}
+
+
+if (-4194304 >> 2 !== -1048576) {
+ $ERROR('#87: -4194304 >> 2 === -1048576. Actual: ' + (-4194304 >> 2));
+}
+
+
+if (-8388608 >> 2 !== -2097152) {
+ $ERROR('#88: -8388608 >> 2 === -2097152. Actual: ' + (-8388608 >> 2));
+}
+
+
+if (-16777216 >> 2 !== -4194304) {
+ $ERROR('#89: -16777216 >> 2 === -4194304. Actual: ' + (-16777216 >> 2));
+}
+
+
+if (-33554432 >> 2 !== -8388608) {
+ $ERROR('#90: -33554432 >> 2 === -8388608. Actual: ' + (-33554432 >> 2));
+}
+
+
+if (-67108864 >> 2 !== -16777216) {
+ $ERROR('#91: -67108864 >> 2 === -16777216. Actual: ' + (-67108864 >> 2));
+}
+
+
+if (-134217728 >> 2 !== -33554432) {
+ $ERROR('#92: -134217728 >> 2 === -33554432. Actual: ' + (-134217728 >> 2));
+}
+
+
+if (-268435456 >> 2 !== -67108864) {
+ $ERROR('#93: -268435456 >> 2 === -67108864. Actual: ' + (-268435456 >> 2));
+}
+
+
+if (-536870912 >> 2 !== -134217728) {
+ $ERROR('#94: -536870912 >> 2 === -134217728. Actual: ' + (-536870912 >> 2));
+}
+
+
+if (-1073741824 >> 2 !== -268435456) {
+ $ERROR('#95: -1073741824 >> 2 === -268435456. Actual: ' + (-1073741824 >> 2));
+}
+
+
+if (-2147483648 >> 2 !== -536870912) {
+ $ERROR('#96: -2147483648 >> 2 === -536870912. Actual: ' + (-2147483648 >> 2));
+}
+
+
+if (-1 >> 3 !== -1) {
+ $ERROR('#97: -1 >> 3 === -1. Actual: ' + (-1 >> 3));
+}
+
+
+if (-2 >> 3 !== -1) {
+ $ERROR('#98: -2 >> 3 === -1. Actual: ' + (-2 >> 3));
+}
+
+
+if (-4 >> 3 !== -1) {
+ $ERROR('#99: -4 >> 3 === -1. Actual: ' + (-4 >> 3));
+}
+
+
+if (-8 >> 3 !== -1) {
+ $ERROR('#100: -8 >> 3 === -1. Actual: ' + (-8 >> 3));
+}
+
+
+if (-16 >> 3 !== -2) {
+ $ERROR('#101: -16 >> 3 === -2. Actual: ' + (-16 >> 3));
+}
+
+
+if (-32 >> 3 !== -4) {
+ $ERROR('#102: -32 >> 3 === -4. Actual: ' + (-32 >> 3));
+}
+
+
+if (-64 >> 3 !== -8) {
+ $ERROR('#103: -64 >> 3 === -8. Actual: ' + (-64 >> 3));
+}
+
+
+if (-128 >> 3 !== -16) {
+ $ERROR('#104: -128 >> 3 === -16. Actual: ' + (-128 >> 3));
+}
+
+
+if (-256 >> 3 !== -32) {
+ $ERROR('#105: -256 >> 3 === -32. Actual: ' + (-256 >> 3));
+}
+
+
+if (-512 >> 3 !== -64) {
+ $ERROR('#106: -512 >> 3 === -64. Actual: ' + (-512 >> 3));
+}
+
+
+if (-1024 >> 3 !== -128) {
+ $ERROR('#107: -1024 >> 3 === -128. Actual: ' + (-1024 >> 3));
+}
+
+
+if (-2048 >> 3 !== -256) {
+ $ERROR('#108: -2048 >> 3 === -256. Actual: ' + (-2048 >> 3));
+}
+
+
+if (-4096 >> 3 !== -512) {
+ $ERROR('#109: -4096 >> 3 === -512. Actual: ' + (-4096 >> 3));
+}
+
+
+if (-8192 >> 3 !== -1024) {
+ $ERROR('#110: -8192 >> 3 === -1024. Actual: ' + (-8192 >> 3));
+}
+
+
+if (-16384 >> 3 !== -2048) {
+ $ERROR('#111: -16384 >> 3 === -2048. Actual: ' + (-16384 >> 3));
+}
+
+
+if (-32768 >> 3 !== -4096) {
+ $ERROR('#112: -32768 >> 3 === -4096. Actual: ' + (-32768 >> 3));
+}
+
+
+if (-65536 >> 3 !== -8192) {
+ $ERROR('#113: -65536 >> 3 === -8192. Actual: ' + (-65536 >> 3));
+}
+
+
+if (-131072 >> 3 !== -16384) {
+ $ERROR('#114: -131072 >> 3 === -16384. Actual: ' + (-131072 >> 3));
+}
+
+
+if (-262144 >> 3 !== -32768) {
+ $ERROR('#115: -262144 >> 3 === -32768. Actual: ' + (-262144 >> 3));
+}
+
+
+if (-524288 >> 3 !== -65536) {
+ $ERROR('#116: -524288 >> 3 === -65536. Actual: ' + (-524288 >> 3));
+}
+
+
+if (-1048576 >> 3 !== -131072) {
+ $ERROR('#117: -1048576 >> 3 === -131072. Actual: ' + (-1048576 >> 3));
+}
+
+
+if (-2097152 >> 3 !== -262144) {
+ $ERROR('#118: -2097152 >> 3 === -262144. Actual: ' + (-2097152 >> 3));
+}
+
+
+if (-4194304 >> 3 !== -524288) {
+ $ERROR('#119: -4194304 >> 3 === -524288. Actual: ' + (-4194304 >> 3));
+}
+
+
+if (-8388608 >> 3 !== -1048576) {
+ $ERROR('#120: -8388608 >> 3 === -1048576. Actual: ' + (-8388608 >> 3));
+}
+
+
+if (-16777216 >> 3 !== -2097152) {
+ $ERROR('#121: -16777216 >> 3 === -2097152. Actual: ' + (-16777216 >> 3));
+}
+
+
+if (-33554432 >> 3 !== -4194304) {
+ $ERROR('#122: -33554432 >> 3 === -4194304. Actual: ' + (-33554432 >> 3));
+}
+
+
+if (-67108864 >> 3 !== -8388608) {
+ $ERROR('#123: -67108864 >> 3 === -8388608. Actual: ' + (-67108864 >> 3));
+}
+
+
+if (-134217728 >> 3 !== -16777216) {
+ $ERROR('#124: -134217728 >> 3 === -16777216. Actual: ' + (-134217728 >> 3));
+}
+
+
+if (-268435456 >> 3 !== -33554432) {
+ $ERROR('#125: -268435456 >> 3 === -33554432. Actual: ' + (-268435456 >> 3));
+}
+
+
+if (-536870912 >> 3 !== -67108864) {
+ $ERROR('#126: -536870912 >> 3 === -67108864. Actual: ' + (-536870912 >> 3));
+}
+
+
+if (-1073741824 >> 3 !== -134217728) {
+ $ERROR('#127: -1073741824 >> 3 === -134217728. Actual: ' + (-1073741824 >> 3));
+}
+
+
+if (-2147483648 >> 3 !== -268435456) {
+ $ERROR('#128: -2147483648 >> 3 === -268435456. Actual: ' + (-2147483648 >> 3));
+}
+
+
+if (-1 >> 4 !== -1) {
+ $ERROR('#129: -1 >> 4 === -1. Actual: ' + (-1 >> 4));
+}
+
+
+if (-2 >> 4 !== -1) {
+ $ERROR('#130: -2 >> 4 === -1. Actual: ' + (-2 >> 4));
+}
+
+
+if (-4 >> 4 !== -1) {
+ $ERROR('#131: -4 >> 4 === -1. Actual: ' + (-4 >> 4));
+}
+
+
+if (-8 >> 4 !== -1) {
+ $ERROR('#132: -8 >> 4 === -1. Actual: ' + (-8 >> 4));
+}
+
+
+if (-16 >> 4 !== -1) {
+ $ERROR('#133: -16 >> 4 === -1. Actual: ' + (-16 >> 4));
+}
+
+
+if (-32 >> 4 !== -2) {
+ $ERROR('#134: -32 >> 4 === -2. Actual: ' + (-32 >> 4));
+}
+
+
+if (-64 >> 4 !== -4) {
+ $ERROR('#135: -64 >> 4 === -4. Actual: ' + (-64 >> 4));
+}
+
+
+if (-128 >> 4 !== -8) {
+ $ERROR('#136: -128 >> 4 === -8. Actual: ' + (-128 >> 4));
+}
+
+
+if (-256 >> 4 !== -16) {
+ $ERROR('#137: -256 >> 4 === -16. Actual: ' + (-256 >> 4));
+}
+
+
+if (-512 >> 4 !== -32) {
+ $ERROR('#138: -512 >> 4 === -32. Actual: ' + (-512 >> 4));
+}
+
+
+if (-1024 >> 4 !== -64) {
+ $ERROR('#139: -1024 >> 4 === -64. Actual: ' + (-1024 >> 4));
+}
+
+
+if (-2048 >> 4 !== -128) {
+ $ERROR('#140: -2048 >> 4 === -128. Actual: ' + (-2048 >> 4));
+}
+
+
+if (-4096 >> 4 !== -256) {
+ $ERROR('#141: -4096 >> 4 === -256. Actual: ' + (-4096 >> 4));
+}
+
+
+if (-8192 >> 4 !== -512) {
+ $ERROR('#142: -8192 >> 4 === -512. Actual: ' + (-8192 >> 4));
+}
+
+
+if (-16384 >> 4 !== -1024) {
+ $ERROR('#143: -16384 >> 4 === -1024. Actual: ' + (-16384 >> 4));
+}
+
+
+if (-32768 >> 4 !== -2048) {
+ $ERROR('#144: -32768 >> 4 === -2048. Actual: ' + (-32768 >> 4));
+}
+
+
+if (-65536 >> 4 !== -4096) {
+ $ERROR('#145: -65536 >> 4 === -4096. Actual: ' + (-65536 >> 4));
+}
+
+
+if (-131072 >> 4 !== -8192) {
+ $ERROR('#146: -131072 >> 4 === -8192. Actual: ' + (-131072 >> 4));
+}
+
+
+if (-262144 >> 4 !== -16384) {
+ $ERROR('#147: -262144 >> 4 === -16384. Actual: ' + (-262144 >> 4));
+}
+
+
+if (-524288 >> 4 !== -32768) {
+ $ERROR('#148: -524288 >> 4 === -32768. Actual: ' + (-524288 >> 4));
+}
+
+
+if (-1048576 >> 4 !== -65536) {
+ $ERROR('#149: -1048576 >> 4 === -65536. Actual: ' + (-1048576 >> 4));
+}
+
+
+if (-2097152 >> 4 !== -131072) {
+ $ERROR('#150: -2097152 >> 4 === -131072. Actual: ' + (-2097152 >> 4));
+}
+
+
+if (-4194304 >> 4 !== -262144) {
+ $ERROR('#151: -4194304 >> 4 === -262144. Actual: ' + (-4194304 >> 4));
+}
+
+
+if (-8388608 >> 4 !== -524288) {
+ $ERROR('#152: -8388608 >> 4 === -524288. Actual: ' + (-8388608 >> 4));
+}
+
+
+if (-16777216 >> 4 !== -1048576) {
+ $ERROR('#153: -16777216 >> 4 === -1048576. Actual: ' + (-16777216 >> 4));
+}
+
+
+if (-33554432 >> 4 !== -2097152) {
+ $ERROR('#154: -33554432 >> 4 === -2097152. Actual: ' + (-33554432 >> 4));
+}
+
+
+if (-67108864 >> 4 !== -4194304) {
+ $ERROR('#155: -67108864 >> 4 === -4194304. Actual: ' + (-67108864 >> 4));
+}
+
+
+if (-134217728 >> 4 !== -8388608) {
+ $ERROR('#156: -134217728 >> 4 === -8388608. Actual: ' + (-134217728 >> 4));
+}
+
+
+if (-268435456 >> 4 !== -16777216) {
+ $ERROR('#157: -268435456 >> 4 === -16777216. Actual: ' + (-268435456 >> 4));
+}
+
+
+if (-536870912 >> 4 !== -33554432) {
+ $ERROR('#158: -536870912 >> 4 === -33554432. Actual: ' + (-536870912 >> 4));
+}
+
+
+if (-1073741824 >> 4 !== -67108864) {
+ $ERROR('#159: -1073741824 >> 4 === -67108864. Actual: ' + (-1073741824 >> 4));
+}
+
+
+if (-2147483648 >> 4 !== -134217728) {
+ $ERROR('#160: -2147483648 >> 4 === -134217728. Actual: ' + (-2147483648 >> 4));
+}
+
+
+if (-1 >> 5 !== -1) {
+ $ERROR('#161: -1 >> 5 === -1. Actual: ' + (-1 >> 5));
+}
+
+
+if (-2 >> 5 !== -1) {
+ $ERROR('#162: -2 >> 5 === -1. Actual: ' + (-2 >> 5));
+}
+
+
+if (-4 >> 5 !== -1) {
+ $ERROR('#163: -4 >> 5 === -1. Actual: ' + (-4 >> 5));
+}
+
+
+if (-8 >> 5 !== -1) {
+ $ERROR('#164: -8 >> 5 === -1. Actual: ' + (-8 >> 5));
+}
+
+
+if (-16 >> 5 !== -1) {
+ $ERROR('#165: -16 >> 5 === -1. Actual: ' + (-16 >> 5));
+}
+
+
+if (-32 >> 5 !== -1) {
+ $ERROR('#166: -32 >> 5 === -1. Actual: ' + (-32 >> 5));
+}
+
+
+if (-64 >> 5 !== -2) {
+ $ERROR('#167: -64 >> 5 === -2. Actual: ' + (-64 >> 5));
+}
+
+
+if (-128 >> 5 !== -4) {
+ $ERROR('#168: -128 >> 5 === -4. Actual: ' + (-128 >> 5));
+}
+
+
+if (-256 >> 5 !== -8) {
+ $ERROR('#169: -256 >> 5 === -8. Actual: ' + (-256 >> 5));
+}
+
+
+if (-512 >> 5 !== -16) {
+ $ERROR('#170: -512 >> 5 === -16. Actual: ' + (-512 >> 5));
+}
+
+
+if (-1024 >> 5 !== -32) {
+ $ERROR('#171: -1024 >> 5 === -32. Actual: ' + (-1024 >> 5));
+}
+
+
+if (-2048 >> 5 !== -64) {
+ $ERROR('#172: -2048 >> 5 === -64. Actual: ' + (-2048 >> 5));
+}
+
+
+if (-4096 >> 5 !== -128) {
+ $ERROR('#173: -4096 >> 5 === -128. Actual: ' + (-4096 >> 5));
+}
+
+
+if (-8192 >> 5 !== -256) {
+ $ERROR('#174: -8192 >> 5 === -256. Actual: ' + (-8192 >> 5));
+}
+
+
+if (-16384 >> 5 !== -512) {
+ $ERROR('#175: -16384 >> 5 === -512. Actual: ' + (-16384 >> 5));
+}
+
+
+if (-32768 >> 5 !== -1024) {
+ $ERROR('#176: -32768 >> 5 === -1024. Actual: ' + (-32768 >> 5));
+}
+
+
+if (-65536 >> 5 !== -2048) {
+ $ERROR('#177: -65536 >> 5 === -2048. Actual: ' + (-65536 >> 5));
+}
+
+
+if (-131072 >> 5 !== -4096) {
+ $ERROR('#178: -131072 >> 5 === -4096. Actual: ' + (-131072 >> 5));
+}
+
+
+if (-262144 >> 5 !== -8192) {
+ $ERROR('#179: -262144 >> 5 === -8192. Actual: ' + (-262144 >> 5));
+}
+
+
+if (-524288 >> 5 !== -16384) {
+ $ERROR('#180: -524288 >> 5 === -16384. Actual: ' + (-524288 >> 5));
+}
+
+
+if (-1048576 >> 5 !== -32768) {
+ $ERROR('#181: -1048576 >> 5 === -32768. Actual: ' + (-1048576 >> 5));
+}
+
+
+if (-2097152 >> 5 !== -65536) {
+ $ERROR('#182: -2097152 >> 5 === -65536. Actual: ' + (-2097152 >> 5));
+}
+
+
+if (-4194304 >> 5 !== -131072) {
+ $ERROR('#183: -4194304 >> 5 === -131072. Actual: ' + (-4194304 >> 5));
+}
+
+
+if (-8388608 >> 5 !== -262144) {
+ $ERROR('#184: -8388608 >> 5 === -262144. Actual: ' + (-8388608 >> 5));
+}
+
+
+if (-16777216 >> 5 !== -524288) {
+ $ERROR('#185: -16777216 >> 5 === -524288. Actual: ' + (-16777216 >> 5));
+}
+
+
+if (-33554432 >> 5 !== -1048576) {
+ $ERROR('#186: -33554432 >> 5 === -1048576. Actual: ' + (-33554432 >> 5));
+}
+
+
+if (-67108864 >> 5 !== -2097152) {
+ $ERROR('#187: -67108864 >> 5 === -2097152. Actual: ' + (-67108864 >> 5));
+}
+
+
+if (-134217728 >> 5 !== -4194304) {
+ $ERROR('#188: -134217728 >> 5 === -4194304. Actual: ' + (-134217728 >> 5));
+}
+
+
+if (-268435456 >> 5 !== -8388608) {
+ $ERROR('#189: -268435456 >> 5 === -8388608. Actual: ' + (-268435456 >> 5));
+}
+
+
+if (-536870912 >> 5 !== -16777216) {
+ $ERROR('#190: -536870912 >> 5 === -16777216. Actual: ' + (-536870912 >> 5));
+}
+
+
+if (-1073741824 >> 5 !== -33554432) {
+ $ERROR('#191: -1073741824 >> 5 === -33554432. Actual: ' + (-1073741824 >> 5));
+}
+
+
+if (-2147483648 >> 5 !== -67108864) {
+ $ERROR('#192: -2147483648 >> 5 === -67108864. Actual: ' + (-2147483648 >> 5));
+}
+
+
+if (-1 >> 6 !== -1) {
+ $ERROR('#193: -1 >> 6 === -1. Actual: ' + (-1 >> 6));
+}
+
+
+if (-2 >> 6 !== -1) {
+ $ERROR('#194: -2 >> 6 === -1. Actual: ' + (-2 >> 6));
+}
+
+
+if (-4 >> 6 !== -1) {
+ $ERROR('#195: -4 >> 6 === -1. Actual: ' + (-4 >> 6));
+}
+
+
+if (-8 >> 6 !== -1) {
+ $ERROR('#196: -8 >> 6 === -1. Actual: ' + (-8 >> 6));
+}
+
+
+if (-16 >> 6 !== -1) {
+ $ERROR('#197: -16 >> 6 === -1. Actual: ' + (-16 >> 6));
+}
+
+
+if (-32 >> 6 !== -1) {
+ $ERROR('#198: -32 >> 6 === -1. Actual: ' + (-32 >> 6));
+}
+
+
+if (-64 >> 6 !== -1) {
+ $ERROR('#199: -64 >> 6 === -1. Actual: ' + (-64 >> 6));
+}
+
+
+if (-128 >> 6 !== -2) {
+ $ERROR('#200: -128 >> 6 === -2. Actual: ' + (-128 >> 6));
+}
+
+
+if (-256 >> 6 !== -4) {
+ $ERROR('#201: -256 >> 6 === -4. Actual: ' + (-256 >> 6));
+}
+
+
+if (-512 >> 6 !== -8) {
+ $ERROR('#202: -512 >> 6 === -8. Actual: ' + (-512 >> 6));
+}
+
+
+if (-1024 >> 6 !== -16) {
+ $ERROR('#203: -1024 >> 6 === -16. Actual: ' + (-1024 >> 6));
+}
+
+
+if (-2048 >> 6 !== -32) {
+ $ERROR('#204: -2048 >> 6 === -32. Actual: ' + (-2048 >> 6));
+}
+
+
+if (-4096 >> 6 !== -64) {
+ $ERROR('#205: -4096 >> 6 === -64. Actual: ' + (-4096 >> 6));
+}
+
+
+if (-8192 >> 6 !== -128) {
+ $ERROR('#206: -8192 >> 6 === -128. Actual: ' + (-8192 >> 6));
+}
+
+
+if (-16384 >> 6 !== -256) {
+ $ERROR('#207: -16384 >> 6 === -256. Actual: ' + (-16384 >> 6));
+}
+
+
+if (-32768 >> 6 !== -512) {
+ $ERROR('#208: -32768 >> 6 === -512. Actual: ' + (-32768 >> 6));
+}
+
+
+if (-65536 >> 6 !== -1024) {
+ $ERROR('#209: -65536 >> 6 === -1024. Actual: ' + (-65536 >> 6));
+}
+
+
+if (-131072 >> 6 !== -2048) {
+ $ERROR('#210: -131072 >> 6 === -2048. Actual: ' + (-131072 >> 6));
+}
+
+
+if (-262144 >> 6 !== -4096) {
+ $ERROR('#211: -262144 >> 6 === -4096. Actual: ' + (-262144 >> 6));
+}
+
+
+if (-524288 >> 6 !== -8192) {
+ $ERROR('#212: -524288 >> 6 === -8192. Actual: ' + (-524288 >> 6));
+}
+
+
+if (-1048576 >> 6 !== -16384) {
+ $ERROR('#213: -1048576 >> 6 === -16384. Actual: ' + (-1048576 >> 6));
+}
+
+
+if (-2097152 >> 6 !== -32768) {
+ $ERROR('#214: -2097152 >> 6 === -32768. Actual: ' + (-2097152 >> 6));
+}
+
+
+if (-4194304 >> 6 !== -65536) {
+ $ERROR('#215: -4194304 >> 6 === -65536. Actual: ' + (-4194304 >> 6));
+}
+
+
+if (-8388608 >> 6 !== -131072) {
+ $ERROR('#216: -8388608 >> 6 === -131072. Actual: ' + (-8388608 >> 6));
+}
+
+
+if (-16777216 >> 6 !== -262144) {
+ $ERROR('#217: -16777216 >> 6 === -262144. Actual: ' + (-16777216 >> 6));
+}
+
+
+if (-33554432 >> 6 !== -524288) {
+ $ERROR('#218: -33554432 >> 6 === -524288. Actual: ' + (-33554432 >> 6));
+}
+
+
+if (-67108864 >> 6 !== -1048576) {
+ $ERROR('#219: -67108864 >> 6 === -1048576. Actual: ' + (-67108864 >> 6));
+}
+
+
+if (-134217728 >> 6 !== -2097152) {
+ $ERROR('#220: -134217728 >> 6 === -2097152. Actual: ' + (-134217728 >> 6));
+}
+
+
+if (-268435456 >> 6 !== -4194304) {
+ $ERROR('#221: -268435456 >> 6 === -4194304. Actual: ' + (-268435456 >> 6));
+}
+
+
+if (-536870912 >> 6 !== -8388608) {
+ $ERROR('#222: -536870912 >> 6 === -8388608. Actual: ' + (-536870912 >> 6));
+}
+
+
+if (-1073741824 >> 6 !== -16777216) {
+ $ERROR('#223: -1073741824 >> 6 === -16777216. Actual: ' + (-1073741824 >> 6));
+}
+
+
+if (-2147483648 >> 6 !== -33554432) {
+ $ERROR('#224: -2147483648 >> 6 === -33554432. Actual: ' + (-2147483648 >> 6));
+}
+
+
+if (-1 >> 7 !== -1) {
+ $ERROR('#225: -1 >> 7 === -1. Actual: ' + (-1 >> 7));
+}
+
+
+if (-2 >> 7 !== -1) {
+ $ERROR('#226: -2 >> 7 === -1. Actual: ' + (-2 >> 7));
+}
+
+
+if (-4 >> 7 !== -1) {
+ $ERROR('#227: -4 >> 7 === -1. Actual: ' + (-4 >> 7));
+}
+
+
+if (-8 >> 7 !== -1) {
+ $ERROR('#228: -8 >> 7 === -1. Actual: ' + (-8 >> 7));
+}
+
+
+if (-16 >> 7 !== -1) {
+ $ERROR('#229: -16 >> 7 === -1. Actual: ' + (-16 >> 7));
+}
+
+
+if (-32 >> 7 !== -1) {
+ $ERROR('#230: -32 >> 7 === -1. Actual: ' + (-32 >> 7));
+}
+
+
+if (-64 >> 7 !== -1) {
+ $ERROR('#231: -64 >> 7 === -1. Actual: ' + (-64 >> 7));
+}
+
+
+if (-128 >> 7 !== -1) {
+ $ERROR('#232: -128 >> 7 === -1. Actual: ' + (-128 >> 7));
+}
+
+
+if (-256 >> 7 !== -2) {
+ $ERROR('#233: -256 >> 7 === -2. Actual: ' + (-256 >> 7));
+}
+
+
+if (-512 >> 7 !== -4) {
+ $ERROR('#234: -512 >> 7 === -4. Actual: ' + (-512 >> 7));
+}
+
+
+if (-1024 >> 7 !== -8) {
+ $ERROR('#235: -1024 >> 7 === -8. Actual: ' + (-1024 >> 7));
+}
+
+
+if (-2048 >> 7 !== -16) {
+ $ERROR('#236: -2048 >> 7 === -16. Actual: ' + (-2048 >> 7));
+}
+
+
+if (-4096 >> 7 !== -32) {
+ $ERROR('#237: -4096 >> 7 === -32. Actual: ' + (-4096 >> 7));
+}
+
+
+if (-8192 >> 7 !== -64) {
+ $ERROR('#238: -8192 >> 7 === -64. Actual: ' + (-8192 >> 7));
+}
+
+
+if (-16384 >> 7 !== -128) {
+ $ERROR('#239: -16384 >> 7 === -128. Actual: ' + (-16384 >> 7));
+}
+
+
+if (-32768 >> 7 !== -256) {
+ $ERROR('#240: -32768 >> 7 === -256. Actual: ' + (-32768 >> 7));
+}
+
+
+if (-65536 >> 7 !== -512) {
+ $ERROR('#241: -65536 >> 7 === -512. Actual: ' + (-65536 >> 7));
+}
+
+
+if (-131072 >> 7 !== -1024) {
+ $ERROR('#242: -131072 >> 7 === -1024. Actual: ' + (-131072 >> 7));
+}
+
+
+if (-262144 >> 7 !== -2048) {
+ $ERROR('#243: -262144 >> 7 === -2048. Actual: ' + (-262144 >> 7));
+}
+
+
+if (-524288 >> 7 !== -4096) {
+ $ERROR('#244: -524288 >> 7 === -4096. Actual: ' + (-524288 >> 7));
+}
+
+
+if (-1048576 >> 7 !== -8192) {
+ $ERROR('#245: -1048576 >> 7 === -8192. Actual: ' + (-1048576 >> 7));
+}
+
+
+if (-2097152 >> 7 !== -16384) {
+ $ERROR('#246: -2097152 >> 7 === -16384. Actual: ' + (-2097152 >> 7));
+}
+
+
+if (-4194304 >> 7 !== -32768) {
+ $ERROR('#247: -4194304 >> 7 === -32768. Actual: ' + (-4194304 >> 7));
+}
+
+
+if (-8388608 >> 7 !== -65536) {
+ $ERROR('#248: -8388608 >> 7 === -65536. Actual: ' + (-8388608 >> 7));
+}
+
+
+if (-16777216 >> 7 !== -131072) {
+ $ERROR('#249: -16777216 >> 7 === -131072. Actual: ' + (-16777216 >> 7));
+}
+
+
+if (-33554432 >> 7 !== -262144) {
+ $ERROR('#250: -33554432 >> 7 === -262144. Actual: ' + (-33554432 >> 7));
+}
+
+
+if (-67108864 >> 7 !== -524288) {
+ $ERROR('#251: -67108864 >> 7 === -524288. Actual: ' + (-67108864 >> 7));
+}
+
+
+if (-134217728 >> 7 !== -1048576) {
+ $ERROR('#252: -134217728 >> 7 === -1048576. Actual: ' + (-134217728 >> 7));
+}
+
+
+if (-268435456 >> 7 !== -2097152) {
+ $ERROR('#253: -268435456 >> 7 === -2097152. Actual: ' + (-268435456 >> 7));
+}
+
+
+if (-536870912 >> 7 !== -4194304) {
+ $ERROR('#254: -536870912 >> 7 === -4194304. Actual: ' + (-536870912 >> 7));
+}
+
+
+if (-1073741824 >> 7 !== -8388608) {
+ $ERROR('#255: -1073741824 >> 7 === -8388608. Actual: ' + (-1073741824 >> 7));
+}
+
+
+if (-2147483648 >> 7 !== -16777216) {
+ $ERROR('#256: -2147483648 >> 7 === -16777216. Actual: ' + (-2147483648 >> 7));
+}
+
+
+if (-1 >> 8 !== -1) {
+ $ERROR('#257: -1 >> 8 === -1. Actual: ' + (-1 >> 8));
+}
+
+
+if (-2 >> 8 !== -1) {
+ $ERROR('#258: -2 >> 8 === -1. Actual: ' + (-2 >> 8));
+}
+
+
+if (-4 >> 8 !== -1) {
+ $ERROR('#259: -4 >> 8 === -1. Actual: ' + (-4 >> 8));
+}
+
+
+if (-8 >> 8 !== -1) {
+ $ERROR('#260: -8 >> 8 === -1. Actual: ' + (-8 >> 8));
+}
+
+
+if (-16 >> 8 !== -1) {
+ $ERROR('#261: -16 >> 8 === -1. Actual: ' + (-16 >> 8));
+}
+
+
+if (-32 >> 8 !== -1) {
+ $ERROR('#262: -32 >> 8 === -1. Actual: ' + (-32 >> 8));
+}
+
+
+if (-64 >> 8 !== -1) {
+ $ERROR('#263: -64 >> 8 === -1. Actual: ' + (-64 >> 8));
+}
+
+
+if (-128 >> 8 !== -1) {
+ $ERROR('#264: -128 >> 8 === -1. Actual: ' + (-128 >> 8));
+}
+
+
+if (-256 >> 8 !== -1) {
+ $ERROR('#265: -256 >> 8 === -1. Actual: ' + (-256 >> 8));
+}
+
+
+if (-512 >> 8 !== -2) {
+ $ERROR('#266: -512 >> 8 === -2. Actual: ' + (-512 >> 8));
+}
+
+
+if (-1024 >> 8 !== -4) {
+ $ERROR('#267: -1024 >> 8 === -4. Actual: ' + (-1024 >> 8));
+}
+
+
+if (-2048 >> 8 !== -8) {
+ $ERROR('#268: -2048 >> 8 === -8. Actual: ' + (-2048 >> 8));
+}
+
+
+if (-4096 >> 8 !== -16) {
+ $ERROR('#269: -4096 >> 8 === -16. Actual: ' + (-4096 >> 8));
+}
+
+
+if (-8192 >> 8 !== -32) {
+ $ERROR('#270: -8192 >> 8 === -32. Actual: ' + (-8192 >> 8));
+}
+
+
+if (-16384 >> 8 !== -64) {
+ $ERROR('#271: -16384 >> 8 === -64. Actual: ' + (-16384 >> 8));
+}
+
+
+if (-32768 >> 8 !== -128) {
+ $ERROR('#272: -32768 >> 8 === -128. Actual: ' + (-32768 >> 8));
+}
+
+
+if (-65536 >> 8 !== -256) {
+ $ERROR('#273: -65536 >> 8 === -256. Actual: ' + (-65536 >> 8));
+}
+
+
+if (-131072 >> 8 !== -512) {
+ $ERROR('#274: -131072 >> 8 === -512. Actual: ' + (-131072 >> 8));
+}
+
+
+if (-262144 >> 8 !== -1024) {
+ $ERROR('#275: -262144 >> 8 === -1024. Actual: ' + (-262144 >> 8));
+}
+
+
+if (-524288 >> 8 !== -2048) {
+ $ERROR('#276: -524288 >> 8 === -2048. Actual: ' + (-524288 >> 8));
+}
+
+
+if (-1048576 >> 8 !== -4096) {
+ $ERROR('#277: -1048576 >> 8 === -4096. Actual: ' + (-1048576 >> 8));
+}
+
+
+if (-2097152 >> 8 !== -8192) {
+ $ERROR('#278: -2097152 >> 8 === -8192. Actual: ' + (-2097152 >> 8));
+}
+
+
+if (-4194304 >> 8 !== -16384) {
+ $ERROR('#279: -4194304 >> 8 === -16384. Actual: ' + (-4194304 >> 8));
+}
+
+
+if (-8388608 >> 8 !== -32768) {
+ $ERROR('#280: -8388608 >> 8 === -32768. Actual: ' + (-8388608 >> 8));
+}
+
+
+if (-16777216 >> 8 !== -65536) {
+ $ERROR('#281: -16777216 >> 8 === -65536. Actual: ' + (-16777216 >> 8));
+}
+
+
+if (-33554432 >> 8 !== -131072) {
+ $ERROR('#282: -33554432 >> 8 === -131072. Actual: ' + (-33554432 >> 8));
+}
+
+
+if (-67108864 >> 8 !== -262144) {
+ $ERROR('#283: -67108864 >> 8 === -262144. Actual: ' + (-67108864 >> 8));
+}
+
+
+if (-134217728 >> 8 !== -524288) {
+ $ERROR('#284: -134217728 >> 8 === -524288. Actual: ' + (-134217728 >> 8));
+}
+
+
+if (-268435456 >> 8 !== -1048576) {
+ $ERROR('#285: -268435456 >> 8 === -1048576. Actual: ' + (-268435456 >> 8));
+}
+
+
+if (-536870912 >> 8 !== -2097152) {
+ $ERROR('#286: -536870912 >> 8 === -2097152. Actual: ' + (-536870912 >> 8));
+}
+
+
+if (-1073741824 >> 8 !== -4194304) {
+ $ERROR('#287: -1073741824 >> 8 === -4194304. Actual: ' + (-1073741824 >> 8));
+}
+
+
+if (-2147483648 >> 8 !== -8388608) {
+ $ERROR('#288: -2147483648 >> 8 === -8388608. Actual: ' + (-2147483648 >> 8));
+}
+
+
+if (-1 >> 9 !== -1) {
+ $ERROR('#289: -1 >> 9 === -1. Actual: ' + (-1 >> 9));
+}
+
+
+if (-2 >> 9 !== -1) {
+ $ERROR('#290: -2 >> 9 === -1. Actual: ' + (-2 >> 9));
+}
+
+
+if (-4 >> 9 !== -1) {
+ $ERROR('#291: -4 >> 9 === -1. Actual: ' + (-4 >> 9));
+}
+
+
+if (-8 >> 9 !== -1) {
+ $ERROR('#292: -8 >> 9 === -1. Actual: ' + (-8 >> 9));
+}
+
+
+if (-16 >> 9 !== -1) {
+ $ERROR('#293: -16 >> 9 === -1. Actual: ' + (-16 >> 9));
+}
+
+
+if (-32 >> 9 !== -1) {
+ $ERROR('#294: -32 >> 9 === -1. Actual: ' + (-32 >> 9));
+}
+
+
+if (-64 >> 9 !== -1) {
+ $ERROR('#295: -64 >> 9 === -1. Actual: ' + (-64 >> 9));
+}
+
+
+if (-128 >> 9 !== -1) {
+ $ERROR('#296: -128 >> 9 === -1. Actual: ' + (-128 >> 9));
+}
+
+
+if (-256 >> 9 !== -1) {
+ $ERROR('#297: -256 >> 9 === -1. Actual: ' + (-256 >> 9));
+}
+
+
+if (-512 >> 9 !== -1) {
+ $ERROR('#298: -512 >> 9 === -1. Actual: ' + (-512 >> 9));
+}
+
+
+if (-1024 >> 9 !== -2) {
+ $ERROR('#299: -1024 >> 9 === -2. Actual: ' + (-1024 >> 9));
+}
+
+
+if (-2048 >> 9 !== -4) {
+ $ERROR('#300: -2048 >> 9 === -4. Actual: ' + (-2048 >> 9));
+}
+
+
+if (-4096 >> 9 !== -8) {
+ $ERROR('#301: -4096 >> 9 === -8. Actual: ' + (-4096 >> 9));
+}
+
+
+if (-8192 >> 9 !== -16) {
+ $ERROR('#302: -8192 >> 9 === -16. Actual: ' + (-8192 >> 9));
+}
+
+
+if (-16384 >> 9 !== -32) {
+ $ERROR('#303: -16384 >> 9 === -32. Actual: ' + (-16384 >> 9));
+}
+
+
+if (-32768 >> 9 !== -64) {
+ $ERROR('#304: -32768 >> 9 === -64. Actual: ' + (-32768 >> 9));
+}
+
+
+if (-65536 >> 9 !== -128) {
+ $ERROR('#305: -65536 >> 9 === -128. Actual: ' + (-65536 >> 9));
+}
+
+
+if (-131072 >> 9 !== -256) {
+ $ERROR('#306: -131072 >> 9 === -256. Actual: ' + (-131072 >> 9));
+}
+
+
+if (-262144 >> 9 !== -512) {
+ $ERROR('#307: -262144 >> 9 === -512. Actual: ' + (-262144 >> 9));
+}
+
+
+if (-524288 >> 9 !== -1024) {
+ $ERROR('#308: -524288 >> 9 === -1024. Actual: ' + (-524288 >> 9));
+}
+
+
+if (-1048576 >> 9 !== -2048) {
+ $ERROR('#309: -1048576 >> 9 === -2048. Actual: ' + (-1048576 >> 9));
+}
+
+
+if (-2097152 >> 9 !== -4096) {
+ $ERROR('#310: -2097152 >> 9 === -4096. Actual: ' + (-2097152 >> 9));
+}
+
+
+if (-4194304 >> 9 !== -8192) {
+ $ERROR('#311: -4194304 >> 9 === -8192. Actual: ' + (-4194304 >> 9));
+}
+
+
+if (-8388608 >> 9 !== -16384) {
+ $ERROR('#312: -8388608 >> 9 === -16384. Actual: ' + (-8388608 >> 9));
+}
+
+
+if (-16777216 >> 9 !== -32768) {
+ $ERROR('#313: -16777216 >> 9 === -32768. Actual: ' + (-16777216 >> 9));
+}
+
+
+if (-33554432 >> 9 !== -65536) {
+ $ERROR('#314: -33554432 >> 9 === -65536. Actual: ' + (-33554432 >> 9));
+}
+
+
+if (-67108864 >> 9 !== -131072) {
+ $ERROR('#315: -67108864 >> 9 === -131072. Actual: ' + (-67108864 >> 9));
+}
+
+
+if (-134217728 >> 9 !== -262144) {
+ $ERROR('#316: -134217728 >> 9 === -262144. Actual: ' + (-134217728 >> 9));
+}
+
+
+if (-268435456 >> 9 !== -524288) {
+ $ERROR('#317: -268435456 >> 9 === -524288. Actual: ' + (-268435456 >> 9));
+}
+
+
+if (-536870912 >> 9 !== -1048576) {
+ $ERROR('#318: -536870912 >> 9 === -1048576. Actual: ' + (-536870912 >> 9));
+}
+
+
+if (-1073741824 >> 9 !== -2097152) {
+ $ERROR('#319: -1073741824 >> 9 === -2097152. Actual: ' + (-1073741824 >> 9));
+}
+
+
+if (-2147483648 >> 9 !== -4194304) {
+ $ERROR('#320: -2147483648 >> 9 === -4194304. Actual: ' + (-2147483648 >> 9));
+}
+
+
+if (-1 >> 10 !== -1) {
+ $ERROR('#321: -1 >> 10 === -1. Actual: ' + (-1 >> 10));
+}
+
+
+if (-2 >> 10 !== -1) {
+ $ERROR('#322: -2 >> 10 === -1. Actual: ' + (-2 >> 10));
+}
+
+
+if (-4 >> 10 !== -1) {
+ $ERROR('#323: -4 >> 10 === -1. Actual: ' + (-4 >> 10));
+}
+
+
+if (-8 >> 10 !== -1) {
+ $ERROR('#324: -8 >> 10 === -1. Actual: ' + (-8 >> 10));
+}
+
+
+if (-16 >> 10 !== -1) {
+ $ERROR('#325: -16 >> 10 === -1. Actual: ' + (-16 >> 10));
+}
+
+
+if (-32 >> 10 !== -1) {
+ $ERROR('#326: -32 >> 10 === -1. Actual: ' + (-32 >> 10));
+}
+
+
+if (-64 >> 10 !== -1) {
+ $ERROR('#327: -64 >> 10 === -1. Actual: ' + (-64 >> 10));
+}
+
+
+if (-128 >> 10 !== -1) {
+ $ERROR('#328: -128 >> 10 === -1. Actual: ' + (-128 >> 10));
+}
+
+
+if (-256 >> 10 !== -1) {
+ $ERROR('#329: -256 >> 10 === -1. Actual: ' + (-256 >> 10));
+}
+
+
+if (-512 >> 10 !== -1) {
+ $ERROR('#330: -512 >> 10 === -1. Actual: ' + (-512 >> 10));
+}
+
+
+if (-1024 >> 10 !== -1) {
+ $ERROR('#331: -1024 >> 10 === -1. Actual: ' + (-1024 >> 10));
+}
+
+
+if (-2048 >> 10 !== -2) {
+ $ERROR('#332: -2048 >> 10 === -2. Actual: ' + (-2048 >> 10));
+}
+
+
+if (-4096 >> 10 !== -4) {
+ $ERROR('#333: -4096 >> 10 === -4. Actual: ' + (-4096 >> 10));
+}
+
+
+if (-8192 >> 10 !== -8) {
+ $ERROR('#334: -8192 >> 10 === -8. Actual: ' + (-8192 >> 10));
+}
+
+
+if (-16384 >> 10 !== -16) {
+ $ERROR('#335: -16384 >> 10 === -16. Actual: ' + (-16384 >> 10));
+}
+
+
+if (-32768 >> 10 !== -32) {
+ $ERROR('#336: -32768 >> 10 === -32. Actual: ' + (-32768 >> 10));
+}
+
+
+if (-65536 >> 10 !== -64) {
+ $ERROR('#337: -65536 >> 10 === -64. Actual: ' + (-65536 >> 10));
+}
+
+
+if (-131072 >> 10 !== -128) {
+ $ERROR('#338: -131072 >> 10 === -128. Actual: ' + (-131072 >> 10));
+}
+
+
+if (-262144 >> 10 !== -256) {
+ $ERROR('#339: -262144 >> 10 === -256. Actual: ' + (-262144 >> 10));
+}
+
+
+if (-524288 >> 10 !== -512) {
+ $ERROR('#340: -524288 >> 10 === -512. Actual: ' + (-524288 >> 10));
+}
+
+
+if (-1048576 >> 10 !== -1024) {
+ $ERROR('#341: -1048576 >> 10 === -1024. Actual: ' + (-1048576 >> 10));
+}
+
+
+if (-2097152 >> 10 !== -2048) {
+ $ERROR('#342: -2097152 >> 10 === -2048. Actual: ' + (-2097152 >> 10));
+}
+
+
+if (-4194304 >> 10 !== -4096) {
+ $ERROR('#343: -4194304 >> 10 === -4096. Actual: ' + (-4194304 >> 10));
+}
+
+
+if (-8388608 >> 10 !== -8192) {
+ $ERROR('#344: -8388608 >> 10 === -8192. Actual: ' + (-8388608 >> 10));
+}
+
+
+if (-16777216 >> 10 !== -16384) {
+ $ERROR('#345: -16777216 >> 10 === -16384. Actual: ' + (-16777216 >> 10));
+}
+
+
+if (-33554432 >> 10 !== -32768) {
+ $ERROR('#346: -33554432 >> 10 === -32768. Actual: ' + (-33554432 >> 10));
+}
+
+
+if (-67108864 >> 10 !== -65536) {
+ $ERROR('#347: -67108864 >> 10 === -65536. Actual: ' + (-67108864 >> 10));
+}
+
+
+if (-134217728 >> 10 !== -131072) {
+ $ERROR('#348: -134217728 >> 10 === -131072. Actual: ' + (-134217728 >> 10));
+}
+
+
+if (-268435456 >> 10 !== -262144) {
+ $ERROR('#349: -268435456 >> 10 === -262144. Actual: ' + (-268435456 >> 10));
+}
+
+
+if (-536870912 >> 10 !== -524288) {
+ $ERROR('#350: -536870912 >> 10 === -524288. Actual: ' + (-536870912 >> 10));
+}
+
+
+if (-1073741824 >> 10 !== -1048576) {
+ $ERROR('#351: -1073741824 >> 10 === -1048576. Actual: ' + (-1073741824 >> 10));
+}
+
+
+if (-2147483648 >> 10 !== -2097152) {
+ $ERROR('#352: -2147483648 >> 10 === -2097152. Actual: ' + (-2147483648 >> 10));
+}
+
+
+if (-1 >> 11 !== -1) {
+ $ERROR('#353: -1 >> 11 === -1. Actual: ' + (-1 >> 11));
+}
+
+
+if (-2 >> 11 !== -1) {
+ $ERROR('#354: -2 >> 11 === -1. Actual: ' + (-2 >> 11));
+}
+
+
+if (-4 >> 11 !== -1) {
+ $ERROR('#355: -4 >> 11 === -1. Actual: ' + (-4 >> 11));
+}
+
+
+if (-8 >> 11 !== -1) {
+ $ERROR('#356: -8 >> 11 === -1. Actual: ' + (-8 >> 11));
+}
+
+
+if (-16 >> 11 !== -1) {
+ $ERROR('#357: -16 >> 11 === -1. Actual: ' + (-16 >> 11));
+}
+
+
+if (-32 >> 11 !== -1) {
+ $ERROR('#358: -32 >> 11 === -1. Actual: ' + (-32 >> 11));
+}
+
+
+if (-64 >> 11 !== -1) {
+ $ERROR('#359: -64 >> 11 === -1. Actual: ' + (-64 >> 11));
+}
+
+
+if (-128 >> 11 !== -1) {
+ $ERROR('#360: -128 >> 11 === -1. Actual: ' + (-128 >> 11));
+}
+
+
+if (-256 >> 11 !== -1) {
+ $ERROR('#361: -256 >> 11 === -1. Actual: ' + (-256 >> 11));
+}
+
+
+if (-512 >> 11 !== -1) {
+ $ERROR('#362: -512 >> 11 === -1. Actual: ' + (-512 >> 11));
+}
+
+
+if (-1024 >> 11 !== -1) {
+ $ERROR('#363: -1024 >> 11 === -1. Actual: ' + (-1024 >> 11));
+}
+
+
+if (-2048 >> 11 !== -1) {
+ $ERROR('#364: -2048 >> 11 === -1. Actual: ' + (-2048 >> 11));
+}
+
+
+if (-4096 >> 11 !== -2) {
+ $ERROR('#365: -4096 >> 11 === -2. Actual: ' + (-4096 >> 11));
+}
+
+
+if (-8192 >> 11 !== -4) {
+ $ERROR('#366: -8192 >> 11 === -4. Actual: ' + (-8192 >> 11));
+}
+
+
+if (-16384 >> 11 !== -8) {
+ $ERROR('#367: -16384 >> 11 === -8. Actual: ' + (-16384 >> 11));
+}
+
+
+if (-32768 >> 11 !== -16) {
+ $ERROR('#368: -32768 >> 11 === -16. Actual: ' + (-32768 >> 11));
+}
+
+
+if (-65536 >> 11 !== -32) {
+ $ERROR('#369: -65536 >> 11 === -32. Actual: ' + (-65536 >> 11));
+}
+
+
+if (-131072 >> 11 !== -64) {
+ $ERROR('#370: -131072 >> 11 === -64. Actual: ' + (-131072 >> 11));
+}
+
+
+if (-262144 >> 11 !== -128) {
+ $ERROR('#371: -262144 >> 11 === -128. Actual: ' + (-262144 >> 11));
+}
+
+
+if (-524288 >> 11 !== -256) {
+ $ERROR('#372: -524288 >> 11 === -256. Actual: ' + (-524288 >> 11));
+}
+
+
+if (-1048576 >> 11 !== -512) {
+ $ERROR('#373: -1048576 >> 11 === -512. Actual: ' + (-1048576 >> 11));
+}
+
+
+if (-2097152 >> 11 !== -1024) {
+ $ERROR('#374: -2097152 >> 11 === -1024. Actual: ' + (-2097152 >> 11));
+}
+
+
+if (-4194304 >> 11 !== -2048) {
+ $ERROR('#375: -4194304 >> 11 === -2048. Actual: ' + (-4194304 >> 11));
+}
+
+
+if (-8388608 >> 11 !== -4096) {
+ $ERROR('#376: -8388608 >> 11 === -4096. Actual: ' + (-8388608 >> 11));
+}
+
+
+if (-16777216 >> 11 !== -8192) {
+ $ERROR('#377: -16777216 >> 11 === -8192. Actual: ' + (-16777216 >> 11));
+}
+
+
+if (-33554432 >> 11 !== -16384) {
+ $ERROR('#378: -33554432 >> 11 === -16384. Actual: ' + (-33554432 >> 11));
+}
+
+
+if (-67108864 >> 11 !== -32768) {
+ $ERROR('#379: -67108864 >> 11 === -32768. Actual: ' + (-67108864 >> 11));
+}
+
+
+if (-134217728 >> 11 !== -65536) {
+ $ERROR('#380: -134217728 >> 11 === -65536. Actual: ' + (-134217728 >> 11));
+}
+
+
+if (-268435456 >> 11 !== -131072) {
+ $ERROR('#381: -268435456 >> 11 === -131072. Actual: ' + (-268435456 >> 11));
+}
+
+
+if (-536870912 >> 11 !== -262144) {
+ $ERROR('#382: -536870912 >> 11 === -262144. Actual: ' + (-536870912 >> 11));
+}
+
+
+if (-1073741824 >> 11 !== -524288) {
+ $ERROR('#383: -1073741824 >> 11 === -524288. Actual: ' + (-1073741824 >> 11));
+}
+
+
+if (-2147483648 >> 11 !== -1048576) {
+ $ERROR('#384: -2147483648 >> 11 === -1048576. Actual: ' + (-2147483648 >> 11));
+}
+
+
+if (-1 >> 12 !== -1) {
+ $ERROR('#385: -1 >> 12 === -1. Actual: ' + (-1 >> 12));
+}
+
+
+if (-2 >> 12 !== -1) {
+ $ERROR('#386: -2 >> 12 === -1. Actual: ' + (-2 >> 12));
+}
+
+
+if (-4 >> 12 !== -1) {
+ $ERROR('#387: -4 >> 12 === -1. Actual: ' + (-4 >> 12));
+}
+
+
+if (-8 >> 12 !== -1) {
+ $ERROR('#388: -8 >> 12 === -1. Actual: ' + (-8 >> 12));
+}
+
+
+if (-16 >> 12 !== -1) {
+ $ERROR('#389: -16 >> 12 === -1. Actual: ' + (-16 >> 12));
+}
+
+
+if (-32 >> 12 !== -1) {
+ $ERROR('#390: -32 >> 12 === -1. Actual: ' + (-32 >> 12));
+}
+
+
+if (-64 >> 12 !== -1) {
+ $ERROR('#391: -64 >> 12 === -1. Actual: ' + (-64 >> 12));
+}
+
+
+if (-128 >> 12 !== -1) {
+ $ERROR('#392: -128 >> 12 === -1. Actual: ' + (-128 >> 12));
+}
+
+
+if (-256 >> 12 !== -1) {
+ $ERROR('#393: -256 >> 12 === -1. Actual: ' + (-256 >> 12));
+}
+
+
+if (-512 >> 12 !== -1) {
+ $ERROR('#394: -512 >> 12 === -1. Actual: ' + (-512 >> 12));
+}
+
+
+if (-1024 >> 12 !== -1) {
+ $ERROR('#395: -1024 >> 12 === -1. Actual: ' + (-1024 >> 12));
+}
+
+
+if (-2048 >> 12 !== -1) {
+ $ERROR('#396: -2048 >> 12 === -1. Actual: ' + (-2048 >> 12));
+}
+
+
+if (-4096 >> 12 !== -1) {
+ $ERROR('#397: -4096 >> 12 === -1. Actual: ' + (-4096 >> 12));
+}
+
+
+if (-8192 >> 12 !== -2) {
+ $ERROR('#398: -8192 >> 12 === -2. Actual: ' + (-8192 >> 12));
+}
+
+
+if (-16384 >> 12 !== -4) {
+ $ERROR('#399: -16384 >> 12 === -4. Actual: ' + (-16384 >> 12));
+}
+
+
+if (-32768 >> 12 !== -8) {
+ $ERROR('#400: -32768 >> 12 === -8. Actual: ' + (-32768 >> 12));
+}
+
+
+if (-65536 >> 12 !== -16) {
+ $ERROR('#401: -65536 >> 12 === -16. Actual: ' + (-65536 >> 12));
+}
+
+
+if (-131072 >> 12 !== -32) {
+ $ERROR('#402: -131072 >> 12 === -32. Actual: ' + (-131072 >> 12));
+}
+
+
+if (-262144 >> 12 !== -64) {
+ $ERROR('#403: -262144 >> 12 === -64. Actual: ' + (-262144 >> 12));
+}
+
+
+if (-524288 >> 12 !== -128) {
+ $ERROR('#404: -524288 >> 12 === -128. Actual: ' + (-524288 >> 12));
+}
+
+
+if (-1048576 >> 12 !== -256) {
+ $ERROR('#405: -1048576 >> 12 === -256. Actual: ' + (-1048576 >> 12));
+}
+
+
+if (-2097152 >> 12 !== -512) {
+ $ERROR('#406: -2097152 >> 12 === -512. Actual: ' + (-2097152 >> 12));
+}
+
+
+if (-4194304 >> 12 !== -1024) {
+ $ERROR('#407: -4194304 >> 12 === -1024. Actual: ' + (-4194304 >> 12));
+}
+
+
+if (-8388608 >> 12 !== -2048) {
+ $ERROR('#408: -8388608 >> 12 === -2048. Actual: ' + (-8388608 >> 12));
+}
+
+
+if (-16777216 >> 12 !== -4096) {
+ $ERROR('#409: -16777216 >> 12 === -4096. Actual: ' + (-16777216 >> 12));
+}
+
+
+if (-33554432 >> 12 !== -8192) {
+ $ERROR('#410: -33554432 >> 12 === -8192. Actual: ' + (-33554432 >> 12));
+}
+
+
+if (-67108864 >> 12 !== -16384) {
+ $ERROR('#411: -67108864 >> 12 === -16384. Actual: ' + (-67108864 >> 12));
+}
+
+
+if (-134217728 >> 12 !== -32768) {
+ $ERROR('#412: -134217728 >> 12 === -32768. Actual: ' + (-134217728 >> 12));
+}
+
+
+if (-268435456 >> 12 !== -65536) {
+ $ERROR('#413: -268435456 >> 12 === -65536. Actual: ' + (-268435456 >> 12));
+}
+
+
+if (-536870912 >> 12 !== -131072) {
+ $ERROR('#414: -536870912 >> 12 === -131072. Actual: ' + (-536870912 >> 12));
+}
+
+
+if (-1073741824 >> 12 !== -262144) {
+ $ERROR('#415: -1073741824 >> 12 === -262144. Actual: ' + (-1073741824 >> 12));
+}
+
+
+if (-2147483648 >> 12 !== -524288) {
+ $ERROR('#416: -2147483648 >> 12 === -524288. Actual: ' + (-2147483648 >> 12));
+}
+
+
+if (-1 >> 13 !== -1) {
+ $ERROR('#417: -1 >> 13 === -1. Actual: ' + (-1 >> 13));
+}
+
+
+if (-2 >> 13 !== -1) {
+ $ERROR('#418: -2 >> 13 === -1. Actual: ' + (-2 >> 13));
+}
+
+
+if (-4 >> 13 !== -1) {
+ $ERROR('#419: -4 >> 13 === -1. Actual: ' + (-4 >> 13));
+}
+
+
+if (-8 >> 13 !== -1) {
+ $ERROR('#420: -8 >> 13 === -1. Actual: ' + (-8 >> 13));
+}
+
+
+if (-16 >> 13 !== -1) {
+ $ERROR('#421: -16 >> 13 === -1. Actual: ' + (-16 >> 13));
+}
+
+
+if (-32 >> 13 !== -1) {
+ $ERROR('#422: -32 >> 13 === -1. Actual: ' + (-32 >> 13));
+}
+
+
+if (-64 >> 13 !== -1) {
+ $ERROR('#423: -64 >> 13 === -1. Actual: ' + (-64 >> 13));
+}
+
+
+if (-128 >> 13 !== -1) {
+ $ERROR('#424: -128 >> 13 === -1. Actual: ' + (-128 >> 13));
+}
+
+
+if (-256 >> 13 !== -1) {
+ $ERROR('#425: -256 >> 13 === -1. Actual: ' + (-256 >> 13));
+}
+
+
+if (-512 >> 13 !== -1) {
+ $ERROR('#426: -512 >> 13 === -1. Actual: ' + (-512 >> 13));
+}
+
+
+if (-1024 >> 13 !== -1) {
+ $ERROR('#427: -1024 >> 13 === -1. Actual: ' + (-1024 >> 13));
+}
+
+
+if (-2048 >> 13 !== -1) {
+ $ERROR('#428: -2048 >> 13 === -1. Actual: ' + (-2048 >> 13));
+}
+
+
+if (-4096 >> 13 !== -1) {
+ $ERROR('#429: -4096 >> 13 === -1. Actual: ' + (-4096 >> 13));
+}
+
+
+if (-8192 >> 13 !== -1) {
+ $ERROR('#430: -8192 >> 13 === -1. Actual: ' + (-8192 >> 13));
+}
+
+
+if (-16384 >> 13 !== -2) {
+ $ERROR('#431: -16384 >> 13 === -2. Actual: ' + (-16384 >> 13));
+}
+
+
+if (-32768 >> 13 !== -4) {
+ $ERROR('#432: -32768 >> 13 === -4. Actual: ' + (-32768 >> 13));
+}
+
+
+if (-65536 >> 13 !== -8) {
+ $ERROR('#433: -65536 >> 13 === -8. Actual: ' + (-65536 >> 13));
+}
+
+
+if (-131072 >> 13 !== -16) {
+ $ERROR('#434: -131072 >> 13 === -16. Actual: ' + (-131072 >> 13));
+}
+
+
+if (-262144 >> 13 !== -32) {
+ $ERROR('#435: -262144 >> 13 === -32. Actual: ' + (-262144 >> 13));
+}
+
+
+if (-524288 >> 13 !== -64) {
+ $ERROR('#436: -524288 >> 13 === -64. Actual: ' + (-524288 >> 13));
+}
+
+
+if (-1048576 >> 13 !== -128) {
+ $ERROR('#437: -1048576 >> 13 === -128. Actual: ' + (-1048576 >> 13));
+}
+
+
+if (-2097152 >> 13 !== -256) {
+ $ERROR('#438: -2097152 >> 13 === -256. Actual: ' + (-2097152 >> 13));
+}
+
+
+if (-4194304 >> 13 !== -512) {
+ $ERROR('#439: -4194304 >> 13 === -512. Actual: ' + (-4194304 >> 13));
+}
+
+
+if (-8388608 >> 13 !== -1024) {
+ $ERROR('#440: -8388608 >> 13 === -1024. Actual: ' + (-8388608 >> 13));
+}
+
+
+if (-16777216 >> 13 !== -2048) {
+ $ERROR('#441: -16777216 >> 13 === -2048. Actual: ' + (-16777216 >> 13));
+}
+
+
+if (-33554432 >> 13 !== -4096) {
+ $ERROR('#442: -33554432 >> 13 === -4096. Actual: ' + (-33554432 >> 13));
+}
+
+
+if (-67108864 >> 13 !== -8192) {
+ $ERROR('#443: -67108864 >> 13 === -8192. Actual: ' + (-67108864 >> 13));
+}
+
+
+if (-134217728 >> 13 !== -16384) {
+ $ERROR('#444: -134217728 >> 13 === -16384. Actual: ' + (-134217728 >> 13));
+}
+
+
+if (-268435456 >> 13 !== -32768) {
+ $ERROR('#445: -268435456 >> 13 === -32768. Actual: ' + (-268435456 >> 13));
+}
+
+
+if (-536870912 >> 13 !== -65536) {
+ $ERROR('#446: -536870912 >> 13 === -65536. Actual: ' + (-536870912 >> 13));
+}
+
+
+if (-1073741824 >> 13 !== -131072) {
+ $ERROR('#447: -1073741824 >> 13 === -131072. Actual: ' + (-1073741824 >> 13));
+}
+
+
+if (-2147483648 >> 13 !== -262144) {
+ $ERROR('#448: -2147483648 >> 13 === -262144. Actual: ' + (-2147483648 >> 13));
+}
+
+
+if (-1 >> 14 !== -1) {
+ $ERROR('#449: -1 >> 14 === -1. Actual: ' + (-1 >> 14));
+}
+
+
+if (-2 >> 14 !== -1) {
+ $ERROR('#450: -2 >> 14 === -1. Actual: ' + (-2 >> 14));
+}
+
+
+if (-4 >> 14 !== -1) {
+ $ERROR('#451: -4 >> 14 === -1. Actual: ' + (-4 >> 14));
+}
+
+
+if (-8 >> 14 !== -1) {
+ $ERROR('#452: -8 >> 14 === -1. Actual: ' + (-8 >> 14));
+}
+
+
+if (-16 >> 14 !== -1) {
+ $ERROR('#453: -16 >> 14 === -1. Actual: ' + (-16 >> 14));
+}
+
+
+if (-32 >> 14 !== -1) {
+ $ERROR('#454: -32 >> 14 === -1. Actual: ' + (-32 >> 14));
+}
+
+
+if (-64 >> 14 !== -1) {
+ $ERROR('#455: -64 >> 14 === -1. Actual: ' + (-64 >> 14));
+}
+
+
+if (-128 >> 14 !== -1) {
+ $ERROR('#456: -128 >> 14 === -1. Actual: ' + (-128 >> 14));
+}
+
+
+if (-256 >> 14 !== -1) {
+ $ERROR('#457: -256 >> 14 === -1. Actual: ' + (-256 >> 14));
+}
+
+
+if (-512 >> 14 !== -1) {
+ $ERROR('#458: -512 >> 14 === -1. Actual: ' + (-512 >> 14));
+}
+
+
+if (-1024 >> 14 !== -1) {
+ $ERROR('#459: -1024 >> 14 === -1. Actual: ' + (-1024 >> 14));
+}
+
+
+if (-2048 >> 14 !== -1) {
+ $ERROR('#460: -2048 >> 14 === -1. Actual: ' + (-2048 >> 14));
+}
+
+
+if (-4096 >> 14 !== -1) {
+ $ERROR('#461: -4096 >> 14 === -1. Actual: ' + (-4096 >> 14));
+}
+
+
+if (-8192 >> 14 !== -1) {
+ $ERROR('#462: -8192 >> 14 === -1. Actual: ' + (-8192 >> 14));
+}
+
+
+if (-16384 >> 14 !== -1) {
+ $ERROR('#463: -16384 >> 14 === -1. Actual: ' + (-16384 >> 14));
+}
+
+
+if (-32768 >> 14 !== -2) {
+ $ERROR('#464: -32768 >> 14 === -2. Actual: ' + (-32768 >> 14));
+}
+
+
+if (-65536 >> 14 !== -4) {
+ $ERROR('#465: -65536 >> 14 === -4. Actual: ' + (-65536 >> 14));
+}
+
+
+if (-131072 >> 14 !== -8) {
+ $ERROR('#466: -131072 >> 14 === -8. Actual: ' + (-131072 >> 14));
+}
+
+
+if (-262144 >> 14 !== -16) {
+ $ERROR('#467: -262144 >> 14 === -16. Actual: ' + (-262144 >> 14));
+}
+
+
+if (-524288 >> 14 !== -32) {
+ $ERROR('#468: -524288 >> 14 === -32. Actual: ' + (-524288 >> 14));
+}
+
+
+if (-1048576 >> 14 !== -64) {
+ $ERROR('#469: -1048576 >> 14 === -64. Actual: ' + (-1048576 >> 14));
+}
+
+
+if (-2097152 >> 14 !== -128) {
+ $ERROR('#470: -2097152 >> 14 === -128. Actual: ' + (-2097152 >> 14));
+}
+
+
+if (-4194304 >> 14 !== -256) {
+ $ERROR('#471: -4194304 >> 14 === -256. Actual: ' + (-4194304 >> 14));
+}
+
+
+if (-8388608 >> 14 !== -512) {
+ $ERROR('#472: -8388608 >> 14 === -512. Actual: ' + (-8388608 >> 14));
+}
+
+
+if (-16777216 >> 14 !== -1024) {
+ $ERROR('#473: -16777216 >> 14 === -1024. Actual: ' + (-16777216 >> 14));
+}
+
+
+if (-33554432 >> 14 !== -2048) {
+ $ERROR('#474: -33554432 >> 14 === -2048. Actual: ' + (-33554432 >> 14));
+}
+
+
+if (-67108864 >> 14 !== -4096) {
+ $ERROR('#475: -67108864 >> 14 === -4096. Actual: ' + (-67108864 >> 14));
+}
+
+
+if (-134217728 >> 14 !== -8192) {
+ $ERROR('#476: -134217728 >> 14 === -8192. Actual: ' + (-134217728 >> 14));
+}
+
+
+if (-268435456 >> 14 !== -16384) {
+ $ERROR('#477: -268435456 >> 14 === -16384. Actual: ' + (-268435456 >> 14));
+}
+
+
+if (-536870912 >> 14 !== -32768) {
+ $ERROR('#478: -536870912 >> 14 === -32768. Actual: ' + (-536870912 >> 14));
+}
+
+
+if (-1073741824 >> 14 !== -65536) {
+ $ERROR('#479: -1073741824 >> 14 === -65536. Actual: ' + (-1073741824 >> 14));
+}
+
+
+if (-2147483648 >> 14 !== -131072) {
+ $ERROR('#480: -2147483648 >> 14 === -131072. Actual: ' + (-2147483648 >> 14));
+}
+
+
+if (-1 >> 15 !== -1) {
+ $ERROR('#481: -1 >> 15 === -1. Actual: ' + (-1 >> 15));
+}
+
+
+if (-2 >> 15 !== -1) {
+ $ERROR('#482: -2 >> 15 === -1. Actual: ' + (-2 >> 15));
+}
+
+
+if (-4 >> 15 !== -1) {
+ $ERROR('#483: -4 >> 15 === -1. Actual: ' + (-4 >> 15));
+}
+
+
+if (-8 >> 15 !== -1) {
+ $ERROR('#484: -8 >> 15 === -1. Actual: ' + (-8 >> 15));
+}
+
+
+if (-16 >> 15 !== -1) {
+ $ERROR('#485: -16 >> 15 === -1. Actual: ' + (-16 >> 15));
+}
+
+
+if (-32 >> 15 !== -1) {
+ $ERROR('#486: -32 >> 15 === -1. Actual: ' + (-32 >> 15));
+}
+
+
+if (-64 >> 15 !== -1) {
+ $ERROR('#487: -64 >> 15 === -1. Actual: ' + (-64 >> 15));
+}
+
+
+if (-128 >> 15 !== -1) {
+ $ERROR('#488: -128 >> 15 === -1. Actual: ' + (-128 >> 15));
+}
+
+
+if (-256 >> 15 !== -1) {
+ $ERROR('#489: -256 >> 15 === -1. Actual: ' + (-256 >> 15));
+}
+
+
+if (-512 >> 15 !== -1) {
+ $ERROR('#490: -512 >> 15 === -1. Actual: ' + (-512 >> 15));
+}
+
+
+if (-1024 >> 15 !== -1) {
+ $ERROR('#491: -1024 >> 15 === -1. Actual: ' + (-1024 >> 15));
+}
+
+
+if (-2048 >> 15 !== -1) {
+ $ERROR('#492: -2048 >> 15 === -1. Actual: ' + (-2048 >> 15));
+}
+
+
+if (-4096 >> 15 !== -1) {
+ $ERROR('#493: -4096 >> 15 === -1. Actual: ' + (-4096 >> 15));
+}
+
+
+if (-8192 >> 15 !== -1) {
+ $ERROR('#494: -8192 >> 15 === -1. Actual: ' + (-8192 >> 15));
+}
+
+
+if (-16384 >> 15 !== -1) {
+ $ERROR('#495: -16384 >> 15 === -1. Actual: ' + (-16384 >> 15));
+}
+
+
+if (-32768 >> 15 !== -1) {
+ $ERROR('#496: -32768 >> 15 === -1. Actual: ' + (-32768 >> 15));
+}
+
+
+if (-65536 >> 15 !== -2) {
+ $ERROR('#497: -65536 >> 15 === -2. Actual: ' + (-65536 >> 15));
+}
+
+
+if (-131072 >> 15 !== -4) {
+ $ERROR('#498: -131072 >> 15 === -4. Actual: ' + (-131072 >> 15));
+}
+
+
+if (-262144 >> 15 !== -8) {
+ $ERROR('#499: -262144 >> 15 === -8. Actual: ' + (-262144 >> 15));
+}
+
+
+if (-524288 >> 15 !== -16) {
+ $ERROR('#500: -524288 >> 15 === -16. Actual: ' + (-524288 >> 15));
+}
+
+
+if (-1048576 >> 15 !== -32) {
+ $ERROR('#501: -1048576 >> 15 === -32. Actual: ' + (-1048576 >> 15));
+}
+
+
+if (-2097152 >> 15 !== -64) {
+ $ERROR('#502: -2097152 >> 15 === -64. Actual: ' + (-2097152 >> 15));
+}
+
+
+if (-4194304 >> 15 !== -128) {
+ $ERROR('#503: -4194304 >> 15 === -128. Actual: ' + (-4194304 >> 15));
+}
+
+
+if (-8388608 >> 15 !== -256) {
+ $ERROR('#504: -8388608 >> 15 === -256. Actual: ' + (-8388608 >> 15));
+}
+
+
+if (-16777216 >> 15 !== -512) {
+ $ERROR('#505: -16777216 >> 15 === -512. Actual: ' + (-16777216 >> 15));
+}
+
+
+if (-33554432 >> 15 !== -1024) {
+ $ERROR('#506: -33554432 >> 15 === -1024. Actual: ' + (-33554432 >> 15));
+}
+
+
+if (-67108864 >> 15 !== -2048) {
+ $ERROR('#507: -67108864 >> 15 === -2048. Actual: ' + (-67108864 >> 15));
+}
+
+
+if (-134217728 >> 15 !== -4096) {
+ $ERROR('#508: -134217728 >> 15 === -4096. Actual: ' + (-134217728 >> 15));
+}
+
+
+if (-268435456 >> 15 !== -8192) {
+ $ERROR('#509: -268435456 >> 15 === -8192. Actual: ' + (-268435456 >> 15));
+}
+
+
+if (-536870912 >> 15 !== -16384) {
+ $ERROR('#510: -536870912 >> 15 === -16384. Actual: ' + (-536870912 >> 15));
+}
+
+
+if (-1073741824 >> 15 !== -32768) {
+ $ERROR('#511: -1073741824 >> 15 === -32768. Actual: ' + (-1073741824 >> 15));
+}
+
+
+if (-2147483648 >> 15 !== -65536) {
+ $ERROR('#512: -2147483648 >> 15 === -65536. Actual: ' + (-2147483648 >> 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T2.js
new file mode 100644
index 000000000..77fbfb2c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T2.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A4_T2;
+ * @section: 11.7.2;
+ * @assertion: Check x >> y operator in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (-1 >> 16 !== -1) {
+ $ERROR('#513: -1 >> 16 === -1. Actual: ' + (-1 >> 16));
+}
+
+
+if (-2 >> 16 !== -1) {
+ $ERROR('#514: -2 >> 16 === -1. Actual: ' + (-2 >> 16));
+}
+
+
+if (-4 >> 16 !== -1) {
+ $ERROR('#515: -4 >> 16 === -1. Actual: ' + (-4 >> 16));
+}
+
+
+if (-8 >> 16 !== -1) {
+ $ERROR('#516: -8 >> 16 === -1. Actual: ' + (-8 >> 16));
+}
+
+
+if (-16 >> 16 !== -1) {
+ $ERROR('#517: -16 >> 16 === -1. Actual: ' + (-16 >> 16));
+}
+
+
+if (-32 >> 16 !== -1) {
+ $ERROR('#518: -32 >> 16 === -1. Actual: ' + (-32 >> 16));
+}
+
+
+if (-64 >> 16 !== -1) {
+ $ERROR('#519: -64 >> 16 === -1. Actual: ' + (-64 >> 16));
+}
+
+
+if (-128 >> 16 !== -1) {
+ $ERROR('#520: -128 >> 16 === -1. Actual: ' + (-128 >> 16));
+}
+
+
+if (-256 >> 16 !== -1) {
+ $ERROR('#521: -256 >> 16 === -1. Actual: ' + (-256 >> 16));
+}
+
+
+if (-512 >> 16 !== -1) {
+ $ERROR('#522: -512 >> 16 === -1. Actual: ' + (-512 >> 16));
+}
+
+
+if (-1024 >> 16 !== -1) {
+ $ERROR('#523: -1024 >> 16 === -1. Actual: ' + (-1024 >> 16));
+}
+
+
+if (-2048 >> 16 !== -1) {
+ $ERROR('#524: -2048 >> 16 === -1. Actual: ' + (-2048 >> 16));
+}
+
+
+if (-4096 >> 16 !== -1) {
+ $ERROR('#525: -4096 >> 16 === -1. Actual: ' + (-4096 >> 16));
+}
+
+
+if (-8192 >> 16 !== -1) {
+ $ERROR('#526: -8192 >> 16 === -1. Actual: ' + (-8192 >> 16));
+}
+
+
+if (-16384 >> 16 !== -1) {
+ $ERROR('#527: -16384 >> 16 === -1. Actual: ' + (-16384 >> 16));
+}
+
+
+if (-32768 >> 16 !== -1) {
+ $ERROR('#528: -32768 >> 16 === -1. Actual: ' + (-32768 >> 16));
+}
+
+
+if (-65536 >> 16 !== -1) {
+ $ERROR('#529: -65536 >> 16 === -1. Actual: ' + (-65536 >> 16));
+}
+
+
+if (-131072 >> 16 !== -2) {
+ $ERROR('#530: -131072 >> 16 === -2. Actual: ' + (-131072 >> 16));
+}
+
+
+if (-262144 >> 16 !== -4) {
+ $ERROR('#531: -262144 >> 16 === -4. Actual: ' + (-262144 >> 16));
+}
+
+
+if (-524288 >> 16 !== -8) {
+ $ERROR('#532: -524288 >> 16 === -8. Actual: ' + (-524288 >> 16));
+}
+
+
+if (-1048576 >> 16 !== -16) {
+ $ERROR('#533: -1048576 >> 16 === -16. Actual: ' + (-1048576 >> 16));
+}
+
+
+if (-2097152 >> 16 !== -32) {
+ $ERROR('#534: -2097152 >> 16 === -32. Actual: ' + (-2097152 >> 16));
+}
+
+
+if (-4194304 >> 16 !== -64) {
+ $ERROR('#535: -4194304 >> 16 === -64. Actual: ' + (-4194304 >> 16));
+}
+
+
+if (-8388608 >> 16 !== -128) {
+ $ERROR('#536: -8388608 >> 16 === -128. Actual: ' + (-8388608 >> 16));
+}
+
+
+if (-16777216 >> 16 !== -256) {
+ $ERROR('#537: -16777216 >> 16 === -256. Actual: ' + (-16777216 >> 16));
+}
+
+
+if (-33554432 >> 16 !== -512) {
+ $ERROR('#538: -33554432 >> 16 === -512. Actual: ' + (-33554432 >> 16));
+}
+
+
+if (-67108864 >> 16 !== -1024) {
+ $ERROR('#539: -67108864 >> 16 === -1024. Actual: ' + (-67108864 >> 16));
+}
+
+
+if (-134217728 >> 16 !== -2048) {
+ $ERROR('#540: -134217728 >> 16 === -2048. Actual: ' + (-134217728 >> 16));
+}
+
+
+if (-268435456 >> 16 !== -4096) {
+ $ERROR('#541: -268435456 >> 16 === -4096. Actual: ' + (-268435456 >> 16));
+}
+
+
+if (-536870912 >> 16 !== -8192) {
+ $ERROR('#542: -536870912 >> 16 === -8192. Actual: ' + (-536870912 >> 16));
+}
+
+
+if (-1073741824 >> 16 !== -16384) {
+ $ERROR('#543: -1073741824 >> 16 === -16384. Actual: ' + (-1073741824 >> 16));
+}
+
+
+if (-2147483648 >> 16 !== -32768) {
+ $ERROR('#544: -2147483648 >> 16 === -32768. Actual: ' + (-2147483648 >> 16));
+}
+
+
+if (-1 >> 17 !== -1) {
+ $ERROR('#545: -1 >> 17 === -1. Actual: ' + (-1 >> 17));
+}
+
+
+if (-2 >> 17 !== -1) {
+ $ERROR('#546: -2 >> 17 === -1. Actual: ' + (-2 >> 17));
+}
+
+
+if (-4 >> 17 !== -1) {
+ $ERROR('#547: -4 >> 17 === -1. Actual: ' + (-4 >> 17));
+}
+
+
+if (-8 >> 17 !== -1) {
+ $ERROR('#548: -8 >> 17 === -1. Actual: ' + (-8 >> 17));
+}
+
+
+if (-16 >> 17 !== -1) {
+ $ERROR('#549: -16 >> 17 === -1. Actual: ' + (-16 >> 17));
+}
+
+
+if (-32 >> 17 !== -1) {
+ $ERROR('#550: -32 >> 17 === -1. Actual: ' + (-32 >> 17));
+}
+
+
+if (-64 >> 17 !== -1) {
+ $ERROR('#551: -64 >> 17 === -1. Actual: ' + (-64 >> 17));
+}
+
+
+if (-128 >> 17 !== -1) {
+ $ERROR('#552: -128 >> 17 === -1. Actual: ' + (-128 >> 17));
+}
+
+
+if (-256 >> 17 !== -1) {
+ $ERROR('#553: -256 >> 17 === -1. Actual: ' + (-256 >> 17));
+}
+
+
+if (-512 >> 17 !== -1) {
+ $ERROR('#554: -512 >> 17 === -1. Actual: ' + (-512 >> 17));
+}
+
+
+if (-1024 >> 17 !== -1) {
+ $ERROR('#555: -1024 >> 17 === -1. Actual: ' + (-1024 >> 17));
+}
+
+
+if (-2048 >> 17 !== -1) {
+ $ERROR('#556: -2048 >> 17 === -1. Actual: ' + (-2048 >> 17));
+}
+
+
+if (-4096 >> 17 !== -1) {
+ $ERROR('#557: -4096 >> 17 === -1. Actual: ' + (-4096 >> 17));
+}
+
+
+if (-8192 >> 17 !== -1) {
+ $ERROR('#558: -8192 >> 17 === -1. Actual: ' + (-8192 >> 17));
+}
+
+
+if (-16384 >> 17 !== -1) {
+ $ERROR('#559: -16384 >> 17 === -1. Actual: ' + (-16384 >> 17));
+}
+
+
+if (-32768 >> 17 !== -1) {
+ $ERROR('#560: -32768 >> 17 === -1. Actual: ' + (-32768 >> 17));
+}
+
+
+if (-65536 >> 17 !== -1) {
+ $ERROR('#561: -65536 >> 17 === -1. Actual: ' + (-65536 >> 17));
+}
+
+
+if (-131072 >> 17 !== -1) {
+ $ERROR('#562: -131072 >> 17 === -1. Actual: ' + (-131072 >> 17));
+}
+
+
+if (-262144 >> 17 !== -2) {
+ $ERROR('#563: -262144 >> 17 === -2. Actual: ' + (-262144 >> 17));
+}
+
+
+if (-524288 >> 17 !== -4) {
+ $ERROR('#564: -524288 >> 17 === -4. Actual: ' + (-524288 >> 17));
+}
+
+
+if (-1048576 >> 17 !== -8) {
+ $ERROR('#565: -1048576 >> 17 === -8. Actual: ' + (-1048576 >> 17));
+}
+
+
+if (-2097152 >> 17 !== -16) {
+ $ERROR('#566: -2097152 >> 17 === -16. Actual: ' + (-2097152 >> 17));
+}
+
+
+if (-4194304 >> 17 !== -32) {
+ $ERROR('#567: -4194304 >> 17 === -32. Actual: ' + (-4194304 >> 17));
+}
+
+
+if (-8388608 >> 17 !== -64) {
+ $ERROR('#568: -8388608 >> 17 === -64. Actual: ' + (-8388608 >> 17));
+}
+
+
+if (-16777216 >> 17 !== -128) {
+ $ERROR('#569: -16777216 >> 17 === -128. Actual: ' + (-16777216 >> 17));
+}
+
+
+if (-33554432 >> 17 !== -256) {
+ $ERROR('#570: -33554432 >> 17 === -256. Actual: ' + (-33554432 >> 17));
+}
+
+
+if (-67108864 >> 17 !== -512) {
+ $ERROR('#571: -67108864 >> 17 === -512. Actual: ' + (-67108864 >> 17));
+}
+
+
+if (-134217728 >> 17 !== -1024) {
+ $ERROR('#572: -134217728 >> 17 === -1024. Actual: ' + (-134217728 >> 17));
+}
+
+
+if (-268435456 >> 17 !== -2048) {
+ $ERROR('#573: -268435456 >> 17 === -2048. Actual: ' + (-268435456 >> 17));
+}
+
+
+if (-536870912 >> 17 !== -4096) {
+ $ERROR('#574: -536870912 >> 17 === -4096. Actual: ' + (-536870912 >> 17));
+}
+
+
+if (-1073741824 >> 17 !== -8192) {
+ $ERROR('#575: -1073741824 >> 17 === -8192. Actual: ' + (-1073741824 >> 17));
+}
+
+
+if (-2147483648 >> 17 !== -16384) {
+ $ERROR('#576: -2147483648 >> 17 === -16384. Actual: ' + (-2147483648 >> 17));
+}
+
+
+if (-1 >> 18 !== -1) {
+ $ERROR('#577: -1 >> 18 === -1. Actual: ' + (-1 >> 18));
+}
+
+
+if (-2 >> 18 !== -1) {
+ $ERROR('#578: -2 >> 18 === -1. Actual: ' + (-2 >> 18));
+}
+
+
+if (-4 >> 18 !== -1) {
+ $ERROR('#579: -4 >> 18 === -1. Actual: ' + (-4 >> 18));
+}
+
+
+if (-8 >> 18 !== -1) {
+ $ERROR('#580: -8 >> 18 === -1. Actual: ' + (-8 >> 18));
+}
+
+
+if (-16 >> 18 !== -1) {
+ $ERROR('#581: -16 >> 18 === -1. Actual: ' + (-16 >> 18));
+}
+
+
+if (-32 >> 18 !== -1) {
+ $ERROR('#582: -32 >> 18 === -1. Actual: ' + (-32 >> 18));
+}
+
+
+if (-64 >> 18 !== -1) {
+ $ERROR('#583: -64 >> 18 === -1. Actual: ' + (-64 >> 18));
+}
+
+
+if (-128 >> 18 !== -1) {
+ $ERROR('#584: -128 >> 18 === -1. Actual: ' + (-128 >> 18));
+}
+
+
+if (-256 >> 18 !== -1) {
+ $ERROR('#585: -256 >> 18 === -1. Actual: ' + (-256 >> 18));
+}
+
+
+if (-512 >> 18 !== -1) {
+ $ERROR('#586: -512 >> 18 === -1. Actual: ' + (-512 >> 18));
+}
+
+
+if (-1024 >> 18 !== -1) {
+ $ERROR('#587: -1024 >> 18 === -1. Actual: ' + (-1024 >> 18));
+}
+
+
+if (-2048 >> 18 !== -1) {
+ $ERROR('#588: -2048 >> 18 === -1. Actual: ' + (-2048 >> 18));
+}
+
+
+if (-4096 >> 18 !== -1) {
+ $ERROR('#589: -4096 >> 18 === -1. Actual: ' + (-4096 >> 18));
+}
+
+
+if (-8192 >> 18 !== -1) {
+ $ERROR('#590: -8192 >> 18 === -1. Actual: ' + (-8192 >> 18));
+}
+
+
+if (-16384 >> 18 !== -1) {
+ $ERROR('#591: -16384 >> 18 === -1. Actual: ' + (-16384 >> 18));
+}
+
+
+if (-32768 >> 18 !== -1) {
+ $ERROR('#592: -32768 >> 18 === -1. Actual: ' + (-32768 >> 18));
+}
+
+
+if (-65536 >> 18 !== -1) {
+ $ERROR('#593: -65536 >> 18 === -1. Actual: ' + (-65536 >> 18));
+}
+
+
+if (-131072 >> 18 !== -1) {
+ $ERROR('#594: -131072 >> 18 === -1. Actual: ' + (-131072 >> 18));
+}
+
+
+if (-262144 >> 18 !== -1) {
+ $ERROR('#595: -262144 >> 18 === -1. Actual: ' + (-262144 >> 18));
+}
+
+
+if (-524288 >> 18 !== -2) {
+ $ERROR('#596: -524288 >> 18 === -2. Actual: ' + (-524288 >> 18));
+}
+
+
+if (-1048576 >> 18 !== -4) {
+ $ERROR('#597: -1048576 >> 18 === -4. Actual: ' + (-1048576 >> 18));
+}
+
+
+if (-2097152 >> 18 !== -8) {
+ $ERROR('#598: -2097152 >> 18 === -8. Actual: ' + (-2097152 >> 18));
+}
+
+
+if (-4194304 >> 18 !== -16) {
+ $ERROR('#599: -4194304 >> 18 === -16. Actual: ' + (-4194304 >> 18));
+}
+
+
+if (-8388608 >> 18 !== -32) {
+ $ERROR('#600: -8388608 >> 18 === -32. Actual: ' + (-8388608 >> 18));
+}
+
+
+if (-16777216 >> 18 !== -64) {
+ $ERROR('#601: -16777216 >> 18 === -64. Actual: ' + (-16777216 >> 18));
+}
+
+
+if (-33554432 >> 18 !== -128) {
+ $ERROR('#602: -33554432 >> 18 === -128. Actual: ' + (-33554432 >> 18));
+}
+
+
+if (-67108864 >> 18 !== -256) {
+ $ERROR('#603: -67108864 >> 18 === -256. Actual: ' + (-67108864 >> 18));
+}
+
+
+if (-134217728 >> 18 !== -512) {
+ $ERROR('#604: -134217728 >> 18 === -512. Actual: ' + (-134217728 >> 18));
+}
+
+
+if (-268435456 >> 18 !== -1024) {
+ $ERROR('#605: -268435456 >> 18 === -1024. Actual: ' + (-268435456 >> 18));
+}
+
+
+if (-536870912 >> 18 !== -2048) {
+ $ERROR('#606: -536870912 >> 18 === -2048. Actual: ' + (-536870912 >> 18));
+}
+
+
+if (-1073741824 >> 18 !== -4096) {
+ $ERROR('#607: -1073741824 >> 18 === -4096. Actual: ' + (-1073741824 >> 18));
+}
+
+
+if (-2147483648 >> 18 !== -8192) {
+ $ERROR('#608: -2147483648 >> 18 === -8192. Actual: ' + (-2147483648 >> 18));
+}
+
+
+if (-1 >> 19 !== -1) {
+ $ERROR('#609: -1 >> 19 === -1. Actual: ' + (-1 >> 19));
+}
+
+
+if (-2 >> 19 !== -1) {
+ $ERROR('#610: -2 >> 19 === -1. Actual: ' + (-2 >> 19));
+}
+
+
+if (-4 >> 19 !== -1) {
+ $ERROR('#611: -4 >> 19 === -1. Actual: ' + (-4 >> 19));
+}
+
+
+if (-8 >> 19 !== -1) {
+ $ERROR('#612: -8 >> 19 === -1. Actual: ' + (-8 >> 19));
+}
+
+
+if (-16 >> 19 !== -1) {
+ $ERROR('#613: -16 >> 19 === -1. Actual: ' + (-16 >> 19));
+}
+
+
+if (-32 >> 19 !== -1) {
+ $ERROR('#614: -32 >> 19 === -1. Actual: ' + (-32 >> 19));
+}
+
+
+if (-64 >> 19 !== -1) {
+ $ERROR('#615: -64 >> 19 === -1. Actual: ' + (-64 >> 19));
+}
+
+
+if (-128 >> 19 !== -1) {
+ $ERROR('#616: -128 >> 19 === -1. Actual: ' + (-128 >> 19));
+}
+
+
+if (-256 >> 19 !== -1) {
+ $ERROR('#617: -256 >> 19 === -1. Actual: ' + (-256 >> 19));
+}
+
+
+if (-512 >> 19 !== -1) {
+ $ERROR('#618: -512 >> 19 === -1. Actual: ' + (-512 >> 19));
+}
+
+
+if (-1024 >> 19 !== -1) {
+ $ERROR('#619: -1024 >> 19 === -1. Actual: ' + (-1024 >> 19));
+}
+
+
+if (-2048 >> 19 !== -1) {
+ $ERROR('#620: -2048 >> 19 === -1. Actual: ' + (-2048 >> 19));
+}
+
+
+if (-4096 >> 19 !== -1) {
+ $ERROR('#621: -4096 >> 19 === -1. Actual: ' + (-4096 >> 19));
+}
+
+
+if (-8192 >> 19 !== -1) {
+ $ERROR('#622: -8192 >> 19 === -1. Actual: ' + (-8192 >> 19));
+}
+
+
+if (-16384 >> 19 !== -1) {
+ $ERROR('#623: -16384 >> 19 === -1. Actual: ' + (-16384 >> 19));
+}
+
+
+if (-32768 >> 19 !== -1) {
+ $ERROR('#624: -32768 >> 19 === -1. Actual: ' + (-32768 >> 19));
+}
+
+
+if (-65536 >> 19 !== -1) {
+ $ERROR('#625: -65536 >> 19 === -1. Actual: ' + (-65536 >> 19));
+}
+
+
+if (-131072 >> 19 !== -1) {
+ $ERROR('#626: -131072 >> 19 === -1. Actual: ' + (-131072 >> 19));
+}
+
+
+if (-262144 >> 19 !== -1) {
+ $ERROR('#627: -262144 >> 19 === -1. Actual: ' + (-262144 >> 19));
+}
+
+
+if (-524288 >> 19 !== -1) {
+ $ERROR('#628: -524288 >> 19 === -1. Actual: ' + (-524288 >> 19));
+}
+
+
+if (-1048576 >> 19 !== -2) {
+ $ERROR('#629: -1048576 >> 19 === -2. Actual: ' + (-1048576 >> 19));
+}
+
+
+if (-2097152 >> 19 !== -4) {
+ $ERROR('#630: -2097152 >> 19 === -4. Actual: ' + (-2097152 >> 19));
+}
+
+
+if (-4194304 >> 19 !== -8) {
+ $ERROR('#631: -4194304 >> 19 === -8. Actual: ' + (-4194304 >> 19));
+}
+
+
+if (-8388608 >> 19 !== -16) {
+ $ERROR('#632: -8388608 >> 19 === -16. Actual: ' + (-8388608 >> 19));
+}
+
+
+if (-16777216 >> 19 !== -32) {
+ $ERROR('#633: -16777216 >> 19 === -32. Actual: ' + (-16777216 >> 19));
+}
+
+
+if (-33554432 >> 19 !== -64) {
+ $ERROR('#634: -33554432 >> 19 === -64. Actual: ' + (-33554432 >> 19));
+}
+
+
+if (-67108864 >> 19 !== -128) {
+ $ERROR('#635: -67108864 >> 19 === -128. Actual: ' + (-67108864 >> 19));
+}
+
+
+if (-134217728 >> 19 !== -256) {
+ $ERROR('#636: -134217728 >> 19 === -256. Actual: ' + (-134217728 >> 19));
+}
+
+
+if (-268435456 >> 19 !== -512) {
+ $ERROR('#637: -268435456 >> 19 === -512. Actual: ' + (-268435456 >> 19));
+}
+
+
+if (-536870912 >> 19 !== -1024) {
+ $ERROR('#638: -536870912 >> 19 === -1024. Actual: ' + (-536870912 >> 19));
+}
+
+
+if (-1073741824 >> 19 !== -2048) {
+ $ERROR('#639: -1073741824 >> 19 === -2048. Actual: ' + (-1073741824 >> 19));
+}
+
+
+if (-2147483648 >> 19 !== -4096) {
+ $ERROR('#640: -2147483648 >> 19 === -4096. Actual: ' + (-2147483648 >> 19));
+}
+
+
+if (-1 >> 20 !== -1) {
+ $ERROR('#641: -1 >> 20 === -1. Actual: ' + (-1 >> 20));
+}
+
+
+if (-2 >> 20 !== -1) {
+ $ERROR('#642: -2 >> 20 === -1. Actual: ' + (-2 >> 20));
+}
+
+
+if (-4 >> 20 !== -1) {
+ $ERROR('#643: -4 >> 20 === -1. Actual: ' + (-4 >> 20));
+}
+
+
+if (-8 >> 20 !== -1) {
+ $ERROR('#644: -8 >> 20 === -1. Actual: ' + (-8 >> 20));
+}
+
+
+if (-16 >> 20 !== -1) {
+ $ERROR('#645: -16 >> 20 === -1. Actual: ' + (-16 >> 20));
+}
+
+
+if (-32 >> 20 !== -1) {
+ $ERROR('#646: -32 >> 20 === -1. Actual: ' + (-32 >> 20));
+}
+
+
+if (-64 >> 20 !== -1) {
+ $ERROR('#647: -64 >> 20 === -1. Actual: ' + (-64 >> 20));
+}
+
+
+if (-128 >> 20 !== -1) {
+ $ERROR('#648: -128 >> 20 === -1. Actual: ' + (-128 >> 20));
+}
+
+
+if (-256 >> 20 !== -1) {
+ $ERROR('#649: -256 >> 20 === -1. Actual: ' + (-256 >> 20));
+}
+
+
+if (-512 >> 20 !== -1) {
+ $ERROR('#650: -512 >> 20 === -1. Actual: ' + (-512 >> 20));
+}
+
+
+if (-1024 >> 20 !== -1) {
+ $ERROR('#651: -1024 >> 20 === -1. Actual: ' + (-1024 >> 20));
+}
+
+
+if (-2048 >> 20 !== -1) {
+ $ERROR('#652: -2048 >> 20 === -1. Actual: ' + (-2048 >> 20));
+}
+
+
+if (-4096 >> 20 !== -1) {
+ $ERROR('#653: -4096 >> 20 === -1. Actual: ' + (-4096 >> 20));
+}
+
+
+if (-8192 >> 20 !== -1) {
+ $ERROR('#654: -8192 >> 20 === -1. Actual: ' + (-8192 >> 20));
+}
+
+
+if (-16384 >> 20 !== -1) {
+ $ERROR('#655: -16384 >> 20 === -1. Actual: ' + (-16384 >> 20));
+}
+
+
+if (-32768 >> 20 !== -1) {
+ $ERROR('#656: -32768 >> 20 === -1. Actual: ' + (-32768 >> 20));
+}
+
+
+if (-65536 >> 20 !== -1) {
+ $ERROR('#657: -65536 >> 20 === -1. Actual: ' + (-65536 >> 20));
+}
+
+
+if (-131072 >> 20 !== -1) {
+ $ERROR('#658: -131072 >> 20 === -1. Actual: ' + (-131072 >> 20));
+}
+
+
+if (-262144 >> 20 !== -1) {
+ $ERROR('#659: -262144 >> 20 === -1. Actual: ' + (-262144 >> 20));
+}
+
+
+if (-524288 >> 20 !== -1) {
+ $ERROR('#660: -524288 >> 20 === -1. Actual: ' + (-524288 >> 20));
+}
+
+
+if (-1048576 >> 20 !== -1) {
+ $ERROR('#661: -1048576 >> 20 === -1. Actual: ' + (-1048576 >> 20));
+}
+
+
+if (-2097152 >> 20 !== -2) {
+ $ERROR('#662: -2097152 >> 20 === -2. Actual: ' + (-2097152 >> 20));
+}
+
+
+if (-4194304 >> 20 !== -4) {
+ $ERROR('#663: -4194304 >> 20 === -4. Actual: ' + (-4194304 >> 20));
+}
+
+
+if (-8388608 >> 20 !== -8) {
+ $ERROR('#664: -8388608 >> 20 === -8. Actual: ' + (-8388608 >> 20));
+}
+
+
+if (-16777216 >> 20 !== -16) {
+ $ERROR('#665: -16777216 >> 20 === -16. Actual: ' + (-16777216 >> 20));
+}
+
+
+if (-33554432 >> 20 !== -32) {
+ $ERROR('#666: -33554432 >> 20 === -32. Actual: ' + (-33554432 >> 20));
+}
+
+
+if (-67108864 >> 20 !== -64) {
+ $ERROR('#667: -67108864 >> 20 === -64. Actual: ' + (-67108864 >> 20));
+}
+
+
+if (-134217728 >> 20 !== -128) {
+ $ERROR('#668: -134217728 >> 20 === -128. Actual: ' + (-134217728 >> 20));
+}
+
+
+if (-268435456 >> 20 !== -256) {
+ $ERROR('#669: -268435456 >> 20 === -256. Actual: ' + (-268435456 >> 20));
+}
+
+
+if (-536870912 >> 20 !== -512) {
+ $ERROR('#670: -536870912 >> 20 === -512. Actual: ' + (-536870912 >> 20));
+}
+
+
+if (-1073741824 >> 20 !== -1024) {
+ $ERROR('#671: -1073741824 >> 20 === -1024. Actual: ' + (-1073741824 >> 20));
+}
+
+
+if (-2147483648 >> 20 !== -2048) {
+ $ERROR('#672: -2147483648 >> 20 === -2048. Actual: ' + (-2147483648 >> 20));
+}
+
+
+if (-1 >> 21 !== -1) {
+ $ERROR('#673: -1 >> 21 === -1. Actual: ' + (-1 >> 21));
+}
+
+
+if (-2 >> 21 !== -1) {
+ $ERROR('#674: -2 >> 21 === -1. Actual: ' + (-2 >> 21));
+}
+
+
+if (-4 >> 21 !== -1) {
+ $ERROR('#675: -4 >> 21 === -1. Actual: ' + (-4 >> 21));
+}
+
+
+if (-8 >> 21 !== -1) {
+ $ERROR('#676: -8 >> 21 === -1. Actual: ' + (-8 >> 21));
+}
+
+
+if (-16 >> 21 !== -1) {
+ $ERROR('#677: -16 >> 21 === -1. Actual: ' + (-16 >> 21));
+}
+
+
+if (-32 >> 21 !== -1) {
+ $ERROR('#678: -32 >> 21 === -1. Actual: ' + (-32 >> 21));
+}
+
+
+if (-64 >> 21 !== -1) {
+ $ERROR('#679: -64 >> 21 === -1. Actual: ' + (-64 >> 21));
+}
+
+
+if (-128 >> 21 !== -1) {
+ $ERROR('#680: -128 >> 21 === -1. Actual: ' + (-128 >> 21));
+}
+
+
+if (-256 >> 21 !== -1) {
+ $ERROR('#681: -256 >> 21 === -1. Actual: ' + (-256 >> 21));
+}
+
+
+if (-512 >> 21 !== -1) {
+ $ERROR('#682: -512 >> 21 === -1. Actual: ' + (-512 >> 21));
+}
+
+
+if (-1024 >> 21 !== -1) {
+ $ERROR('#683: -1024 >> 21 === -1. Actual: ' + (-1024 >> 21));
+}
+
+
+if (-2048 >> 21 !== -1) {
+ $ERROR('#684: -2048 >> 21 === -1. Actual: ' + (-2048 >> 21));
+}
+
+
+if (-4096 >> 21 !== -1) {
+ $ERROR('#685: -4096 >> 21 === -1. Actual: ' + (-4096 >> 21));
+}
+
+
+if (-8192 >> 21 !== -1) {
+ $ERROR('#686: -8192 >> 21 === -1. Actual: ' + (-8192 >> 21));
+}
+
+
+if (-16384 >> 21 !== -1) {
+ $ERROR('#687: -16384 >> 21 === -1. Actual: ' + (-16384 >> 21));
+}
+
+
+if (-32768 >> 21 !== -1) {
+ $ERROR('#688: -32768 >> 21 === -1. Actual: ' + (-32768 >> 21));
+}
+
+
+if (-65536 >> 21 !== -1) {
+ $ERROR('#689: -65536 >> 21 === -1. Actual: ' + (-65536 >> 21));
+}
+
+
+if (-131072 >> 21 !== -1) {
+ $ERROR('#690: -131072 >> 21 === -1. Actual: ' + (-131072 >> 21));
+}
+
+
+if (-262144 >> 21 !== -1) {
+ $ERROR('#691: -262144 >> 21 === -1. Actual: ' + (-262144 >> 21));
+}
+
+
+if (-524288 >> 21 !== -1) {
+ $ERROR('#692: -524288 >> 21 === -1. Actual: ' + (-524288 >> 21));
+}
+
+
+if (-1048576 >> 21 !== -1) {
+ $ERROR('#693: -1048576 >> 21 === -1. Actual: ' + (-1048576 >> 21));
+}
+
+
+if (-2097152 >> 21 !== -1) {
+ $ERROR('#694: -2097152 >> 21 === -1. Actual: ' + (-2097152 >> 21));
+}
+
+
+if (-4194304 >> 21 !== -2) {
+ $ERROR('#695: -4194304 >> 21 === -2. Actual: ' + (-4194304 >> 21));
+}
+
+
+if (-8388608 >> 21 !== -4) {
+ $ERROR('#696: -8388608 >> 21 === -4. Actual: ' + (-8388608 >> 21));
+}
+
+
+if (-16777216 >> 21 !== -8) {
+ $ERROR('#697: -16777216 >> 21 === -8. Actual: ' + (-16777216 >> 21));
+}
+
+
+if (-33554432 >> 21 !== -16) {
+ $ERROR('#698: -33554432 >> 21 === -16. Actual: ' + (-33554432 >> 21));
+}
+
+
+if (-67108864 >> 21 !== -32) {
+ $ERROR('#699: -67108864 >> 21 === -32. Actual: ' + (-67108864 >> 21));
+}
+
+
+if (-134217728 >> 21 !== -64) {
+ $ERROR('#700: -134217728 >> 21 === -64. Actual: ' + (-134217728 >> 21));
+}
+
+
+if (-268435456 >> 21 !== -128) {
+ $ERROR('#701: -268435456 >> 21 === -128. Actual: ' + (-268435456 >> 21));
+}
+
+
+if (-536870912 >> 21 !== -256) {
+ $ERROR('#702: -536870912 >> 21 === -256. Actual: ' + (-536870912 >> 21));
+}
+
+
+if (-1073741824 >> 21 !== -512) {
+ $ERROR('#703: -1073741824 >> 21 === -512. Actual: ' + (-1073741824 >> 21));
+}
+
+
+if (-2147483648 >> 21 !== -1024) {
+ $ERROR('#704: -2147483648 >> 21 === -1024. Actual: ' + (-2147483648 >> 21));
+}
+
+
+if (-1 >> 22 !== -1) {
+ $ERROR('#705: -1 >> 22 === -1. Actual: ' + (-1 >> 22));
+}
+
+
+if (-2 >> 22 !== -1) {
+ $ERROR('#706: -2 >> 22 === -1. Actual: ' + (-2 >> 22));
+}
+
+
+if (-4 >> 22 !== -1) {
+ $ERROR('#707: -4 >> 22 === -1. Actual: ' + (-4 >> 22));
+}
+
+
+if (-8 >> 22 !== -1) {
+ $ERROR('#708: -8 >> 22 === -1. Actual: ' + (-8 >> 22));
+}
+
+
+if (-16 >> 22 !== -1) {
+ $ERROR('#709: -16 >> 22 === -1. Actual: ' + (-16 >> 22));
+}
+
+
+if (-32 >> 22 !== -1) {
+ $ERROR('#710: -32 >> 22 === -1. Actual: ' + (-32 >> 22));
+}
+
+
+if (-64 >> 22 !== -1) {
+ $ERROR('#711: -64 >> 22 === -1. Actual: ' + (-64 >> 22));
+}
+
+
+if (-128 >> 22 !== -1) {
+ $ERROR('#712: -128 >> 22 === -1. Actual: ' + (-128 >> 22));
+}
+
+
+if (-256 >> 22 !== -1) {
+ $ERROR('#713: -256 >> 22 === -1. Actual: ' + (-256 >> 22));
+}
+
+
+if (-512 >> 22 !== -1) {
+ $ERROR('#714: -512 >> 22 === -1. Actual: ' + (-512 >> 22));
+}
+
+
+if (-1024 >> 22 !== -1) {
+ $ERROR('#715: -1024 >> 22 === -1. Actual: ' + (-1024 >> 22));
+}
+
+
+if (-2048 >> 22 !== -1) {
+ $ERROR('#716: -2048 >> 22 === -1. Actual: ' + (-2048 >> 22));
+}
+
+
+if (-4096 >> 22 !== -1) {
+ $ERROR('#717: -4096 >> 22 === -1. Actual: ' + (-4096 >> 22));
+}
+
+
+if (-8192 >> 22 !== -1) {
+ $ERROR('#718: -8192 >> 22 === -1. Actual: ' + (-8192 >> 22));
+}
+
+
+if (-16384 >> 22 !== -1) {
+ $ERROR('#719: -16384 >> 22 === -1. Actual: ' + (-16384 >> 22));
+}
+
+
+if (-32768 >> 22 !== -1) {
+ $ERROR('#720: -32768 >> 22 === -1. Actual: ' + (-32768 >> 22));
+}
+
+
+if (-65536 >> 22 !== -1) {
+ $ERROR('#721: -65536 >> 22 === -1. Actual: ' + (-65536 >> 22));
+}
+
+
+if (-131072 >> 22 !== -1) {
+ $ERROR('#722: -131072 >> 22 === -1. Actual: ' + (-131072 >> 22));
+}
+
+
+if (-262144 >> 22 !== -1) {
+ $ERROR('#723: -262144 >> 22 === -1. Actual: ' + (-262144 >> 22));
+}
+
+
+if (-524288 >> 22 !== -1) {
+ $ERROR('#724: -524288 >> 22 === -1. Actual: ' + (-524288 >> 22));
+}
+
+
+if (-1048576 >> 22 !== -1) {
+ $ERROR('#725: -1048576 >> 22 === -1. Actual: ' + (-1048576 >> 22));
+}
+
+
+if (-2097152 >> 22 !== -1) {
+ $ERROR('#726: -2097152 >> 22 === -1. Actual: ' + (-2097152 >> 22));
+}
+
+
+if (-4194304 >> 22 !== -1) {
+ $ERROR('#727: -4194304 >> 22 === -1. Actual: ' + (-4194304 >> 22));
+}
+
+
+if (-8388608 >> 22 !== -2) {
+ $ERROR('#728: -8388608 >> 22 === -2. Actual: ' + (-8388608 >> 22));
+}
+
+
+if (-16777216 >> 22 !== -4) {
+ $ERROR('#729: -16777216 >> 22 === -4. Actual: ' + (-16777216 >> 22));
+}
+
+
+if (-33554432 >> 22 !== -8) {
+ $ERROR('#730: -33554432 >> 22 === -8. Actual: ' + (-33554432 >> 22));
+}
+
+
+if (-67108864 >> 22 !== -16) {
+ $ERROR('#731: -67108864 >> 22 === -16. Actual: ' + (-67108864 >> 22));
+}
+
+
+if (-134217728 >> 22 !== -32) {
+ $ERROR('#732: -134217728 >> 22 === -32. Actual: ' + (-134217728 >> 22));
+}
+
+
+if (-268435456 >> 22 !== -64) {
+ $ERROR('#733: -268435456 >> 22 === -64. Actual: ' + (-268435456 >> 22));
+}
+
+
+if (-536870912 >> 22 !== -128) {
+ $ERROR('#734: -536870912 >> 22 === -128. Actual: ' + (-536870912 >> 22));
+}
+
+
+if (-1073741824 >> 22 !== -256) {
+ $ERROR('#735: -1073741824 >> 22 === -256. Actual: ' + (-1073741824 >> 22));
+}
+
+
+if (-2147483648 >> 22 !== -512) {
+ $ERROR('#736: -2147483648 >> 22 === -512. Actual: ' + (-2147483648 >> 22));
+}
+
+
+if (-1 >> 23 !== -1) {
+ $ERROR('#737: -1 >> 23 === -1. Actual: ' + (-1 >> 23));
+}
+
+
+if (-2 >> 23 !== -1) {
+ $ERROR('#738: -2 >> 23 === -1. Actual: ' + (-2 >> 23));
+}
+
+
+if (-4 >> 23 !== -1) {
+ $ERROR('#739: -4 >> 23 === -1. Actual: ' + (-4 >> 23));
+}
+
+
+if (-8 >> 23 !== -1) {
+ $ERROR('#740: -8 >> 23 === -1. Actual: ' + (-8 >> 23));
+}
+
+
+if (-16 >> 23 !== -1) {
+ $ERROR('#741: -16 >> 23 === -1. Actual: ' + (-16 >> 23));
+}
+
+
+if (-32 >> 23 !== -1) {
+ $ERROR('#742: -32 >> 23 === -1. Actual: ' + (-32 >> 23));
+}
+
+
+if (-64 >> 23 !== -1) {
+ $ERROR('#743: -64 >> 23 === -1. Actual: ' + (-64 >> 23));
+}
+
+
+if (-128 >> 23 !== -1) {
+ $ERROR('#744: -128 >> 23 === -1. Actual: ' + (-128 >> 23));
+}
+
+
+if (-256 >> 23 !== -1) {
+ $ERROR('#745: -256 >> 23 === -1. Actual: ' + (-256 >> 23));
+}
+
+
+if (-512 >> 23 !== -1) {
+ $ERROR('#746: -512 >> 23 === -1. Actual: ' + (-512 >> 23));
+}
+
+
+if (-1024 >> 23 !== -1) {
+ $ERROR('#747: -1024 >> 23 === -1. Actual: ' + (-1024 >> 23));
+}
+
+
+if (-2048 >> 23 !== -1) {
+ $ERROR('#748: -2048 >> 23 === -1. Actual: ' + (-2048 >> 23));
+}
+
+
+if (-4096 >> 23 !== -1) {
+ $ERROR('#749: -4096 >> 23 === -1. Actual: ' + (-4096 >> 23));
+}
+
+
+if (-8192 >> 23 !== -1) {
+ $ERROR('#750: -8192 >> 23 === -1. Actual: ' + (-8192 >> 23));
+}
+
+
+if (-16384 >> 23 !== -1) {
+ $ERROR('#751: -16384 >> 23 === -1. Actual: ' + (-16384 >> 23));
+}
+
+
+if (-32768 >> 23 !== -1) {
+ $ERROR('#752: -32768 >> 23 === -1. Actual: ' + (-32768 >> 23));
+}
+
+
+if (-65536 >> 23 !== -1) {
+ $ERROR('#753: -65536 >> 23 === -1. Actual: ' + (-65536 >> 23));
+}
+
+
+if (-131072 >> 23 !== -1) {
+ $ERROR('#754: -131072 >> 23 === -1. Actual: ' + (-131072 >> 23));
+}
+
+
+if (-262144 >> 23 !== -1) {
+ $ERROR('#755: -262144 >> 23 === -1. Actual: ' + (-262144 >> 23));
+}
+
+
+if (-524288 >> 23 !== -1) {
+ $ERROR('#756: -524288 >> 23 === -1. Actual: ' + (-524288 >> 23));
+}
+
+
+if (-1048576 >> 23 !== -1) {
+ $ERROR('#757: -1048576 >> 23 === -1. Actual: ' + (-1048576 >> 23));
+}
+
+
+if (-2097152 >> 23 !== -1) {
+ $ERROR('#758: -2097152 >> 23 === -1. Actual: ' + (-2097152 >> 23));
+}
+
+
+if (-4194304 >> 23 !== -1) {
+ $ERROR('#759: -4194304 >> 23 === -1. Actual: ' + (-4194304 >> 23));
+}
+
+
+if (-8388608 >> 23 !== -1) {
+ $ERROR('#760: -8388608 >> 23 === -1. Actual: ' + (-8388608 >> 23));
+}
+
+
+if (-16777216 >> 23 !== -2) {
+ $ERROR('#761: -16777216 >> 23 === -2. Actual: ' + (-16777216 >> 23));
+}
+
+
+if (-33554432 >> 23 !== -4) {
+ $ERROR('#762: -33554432 >> 23 === -4. Actual: ' + (-33554432 >> 23));
+}
+
+
+if (-67108864 >> 23 !== -8) {
+ $ERROR('#763: -67108864 >> 23 === -8. Actual: ' + (-67108864 >> 23));
+}
+
+
+if (-134217728 >> 23 !== -16) {
+ $ERROR('#764: -134217728 >> 23 === -16. Actual: ' + (-134217728 >> 23));
+}
+
+
+if (-268435456 >> 23 !== -32) {
+ $ERROR('#765: -268435456 >> 23 === -32. Actual: ' + (-268435456 >> 23));
+}
+
+
+if (-536870912 >> 23 !== -64) {
+ $ERROR('#766: -536870912 >> 23 === -64. Actual: ' + (-536870912 >> 23));
+}
+
+
+if (-1073741824 >> 23 !== -128) {
+ $ERROR('#767: -1073741824 >> 23 === -128. Actual: ' + (-1073741824 >> 23));
+}
+
+
+if (-2147483648 >> 23 !== -256) {
+ $ERROR('#768: -2147483648 >> 23 === -256. Actual: ' + (-2147483648 >> 23));
+}
+
+
+if (-1 >> 24 !== -1) {
+ $ERROR('#769: -1 >> 24 === -1. Actual: ' + (-1 >> 24));
+}
+
+
+if (-2 >> 24 !== -1) {
+ $ERROR('#770: -2 >> 24 === -1. Actual: ' + (-2 >> 24));
+}
+
+
+if (-4 >> 24 !== -1) {
+ $ERROR('#771: -4 >> 24 === -1. Actual: ' + (-4 >> 24));
+}
+
+
+if (-8 >> 24 !== -1) {
+ $ERROR('#772: -8 >> 24 === -1. Actual: ' + (-8 >> 24));
+}
+
+
+if (-16 >> 24 !== -1) {
+ $ERROR('#773: -16 >> 24 === -1. Actual: ' + (-16 >> 24));
+}
+
+
+if (-32 >> 24 !== -1) {
+ $ERROR('#774: -32 >> 24 === -1. Actual: ' + (-32 >> 24));
+}
+
+
+if (-64 >> 24 !== -1) {
+ $ERROR('#775: -64 >> 24 === -1. Actual: ' + (-64 >> 24));
+}
+
+
+if (-128 >> 24 !== -1) {
+ $ERROR('#776: -128 >> 24 === -1. Actual: ' + (-128 >> 24));
+}
+
+
+if (-256 >> 24 !== -1) {
+ $ERROR('#777: -256 >> 24 === -1. Actual: ' + (-256 >> 24));
+}
+
+
+if (-512 >> 24 !== -1) {
+ $ERROR('#778: -512 >> 24 === -1. Actual: ' + (-512 >> 24));
+}
+
+
+if (-1024 >> 24 !== -1) {
+ $ERROR('#779: -1024 >> 24 === -1. Actual: ' + (-1024 >> 24));
+}
+
+
+if (-2048 >> 24 !== -1) {
+ $ERROR('#780: -2048 >> 24 === -1. Actual: ' + (-2048 >> 24));
+}
+
+
+if (-4096 >> 24 !== -1) {
+ $ERROR('#781: -4096 >> 24 === -1. Actual: ' + (-4096 >> 24));
+}
+
+
+if (-8192 >> 24 !== -1) {
+ $ERROR('#782: -8192 >> 24 === -1. Actual: ' + (-8192 >> 24));
+}
+
+
+if (-16384 >> 24 !== -1) {
+ $ERROR('#783: -16384 >> 24 === -1. Actual: ' + (-16384 >> 24));
+}
+
+
+if (-32768 >> 24 !== -1) {
+ $ERROR('#784: -32768 >> 24 === -1. Actual: ' + (-32768 >> 24));
+}
+
+
+if (-65536 >> 24 !== -1) {
+ $ERROR('#785: -65536 >> 24 === -1. Actual: ' + (-65536 >> 24));
+}
+
+
+if (-131072 >> 24 !== -1) {
+ $ERROR('#786: -131072 >> 24 === -1. Actual: ' + (-131072 >> 24));
+}
+
+
+if (-262144 >> 24 !== -1) {
+ $ERROR('#787: -262144 >> 24 === -1. Actual: ' + (-262144 >> 24));
+}
+
+
+if (-524288 >> 24 !== -1) {
+ $ERROR('#788: -524288 >> 24 === -1. Actual: ' + (-524288 >> 24));
+}
+
+
+if (-1048576 >> 24 !== -1) {
+ $ERROR('#789: -1048576 >> 24 === -1. Actual: ' + (-1048576 >> 24));
+}
+
+
+if (-2097152 >> 24 !== -1) {
+ $ERROR('#790: -2097152 >> 24 === -1. Actual: ' + (-2097152 >> 24));
+}
+
+
+if (-4194304 >> 24 !== -1) {
+ $ERROR('#791: -4194304 >> 24 === -1. Actual: ' + (-4194304 >> 24));
+}
+
+
+if (-8388608 >> 24 !== -1) {
+ $ERROR('#792: -8388608 >> 24 === -1. Actual: ' + (-8388608 >> 24));
+}
+
+
+if (-16777216 >> 24 !== -1) {
+ $ERROR('#793: -16777216 >> 24 === -1. Actual: ' + (-16777216 >> 24));
+}
+
+
+if (-33554432 >> 24 !== -2) {
+ $ERROR('#794: -33554432 >> 24 === -2. Actual: ' + (-33554432 >> 24));
+}
+
+
+if (-67108864 >> 24 !== -4) {
+ $ERROR('#795: -67108864 >> 24 === -4. Actual: ' + (-67108864 >> 24));
+}
+
+
+if (-134217728 >> 24 !== -8) {
+ $ERROR('#796: -134217728 >> 24 === -8. Actual: ' + (-134217728 >> 24));
+}
+
+
+if (-268435456 >> 24 !== -16) {
+ $ERROR('#797: -268435456 >> 24 === -16. Actual: ' + (-268435456 >> 24));
+}
+
+
+if (-536870912 >> 24 !== -32) {
+ $ERROR('#798: -536870912 >> 24 === -32. Actual: ' + (-536870912 >> 24));
+}
+
+
+if (-1073741824 >> 24 !== -64) {
+ $ERROR('#799: -1073741824 >> 24 === -64. Actual: ' + (-1073741824 >> 24));
+}
+
+
+if (-2147483648 >> 24 !== -128) {
+ $ERROR('#800: -2147483648 >> 24 === -128. Actual: ' + (-2147483648 >> 24));
+}
+
+
+if (-1 >> 25 !== -1) {
+ $ERROR('#801: -1 >> 25 === -1. Actual: ' + (-1 >> 25));
+}
+
+
+if (-2 >> 25 !== -1) {
+ $ERROR('#802: -2 >> 25 === -1. Actual: ' + (-2 >> 25));
+}
+
+
+if (-4 >> 25 !== -1) {
+ $ERROR('#803: -4 >> 25 === -1. Actual: ' + (-4 >> 25));
+}
+
+
+if (-8 >> 25 !== -1) {
+ $ERROR('#804: -8 >> 25 === -1. Actual: ' + (-8 >> 25));
+}
+
+
+if (-16 >> 25 !== -1) {
+ $ERROR('#805: -16 >> 25 === -1. Actual: ' + (-16 >> 25));
+}
+
+
+if (-32 >> 25 !== -1) {
+ $ERROR('#806: -32 >> 25 === -1. Actual: ' + (-32 >> 25));
+}
+
+
+if (-64 >> 25 !== -1) {
+ $ERROR('#807: -64 >> 25 === -1. Actual: ' + (-64 >> 25));
+}
+
+
+if (-128 >> 25 !== -1) {
+ $ERROR('#808: -128 >> 25 === -1. Actual: ' + (-128 >> 25));
+}
+
+
+if (-256 >> 25 !== -1) {
+ $ERROR('#809: -256 >> 25 === -1. Actual: ' + (-256 >> 25));
+}
+
+
+if (-512 >> 25 !== -1) {
+ $ERROR('#810: -512 >> 25 === -1. Actual: ' + (-512 >> 25));
+}
+
+
+if (-1024 >> 25 !== -1) {
+ $ERROR('#811: -1024 >> 25 === -1. Actual: ' + (-1024 >> 25));
+}
+
+
+if (-2048 >> 25 !== -1) {
+ $ERROR('#812: -2048 >> 25 === -1. Actual: ' + (-2048 >> 25));
+}
+
+
+if (-4096 >> 25 !== -1) {
+ $ERROR('#813: -4096 >> 25 === -1. Actual: ' + (-4096 >> 25));
+}
+
+
+if (-8192 >> 25 !== -1) {
+ $ERROR('#814: -8192 >> 25 === -1. Actual: ' + (-8192 >> 25));
+}
+
+
+if (-16384 >> 25 !== -1) {
+ $ERROR('#815: -16384 >> 25 === -1. Actual: ' + (-16384 >> 25));
+}
+
+
+if (-32768 >> 25 !== -1) {
+ $ERROR('#816: -32768 >> 25 === -1. Actual: ' + (-32768 >> 25));
+}
+
+
+if (-65536 >> 25 !== -1) {
+ $ERROR('#817: -65536 >> 25 === -1. Actual: ' + (-65536 >> 25));
+}
+
+
+if (-131072 >> 25 !== -1) {
+ $ERROR('#818: -131072 >> 25 === -1. Actual: ' + (-131072 >> 25));
+}
+
+
+if (-262144 >> 25 !== -1) {
+ $ERROR('#819: -262144 >> 25 === -1. Actual: ' + (-262144 >> 25));
+}
+
+
+if (-524288 >> 25 !== -1) {
+ $ERROR('#820: -524288 >> 25 === -1. Actual: ' + (-524288 >> 25));
+}
+
+
+if (-1048576 >> 25 !== -1) {
+ $ERROR('#821: -1048576 >> 25 === -1. Actual: ' + (-1048576 >> 25));
+}
+
+
+if (-2097152 >> 25 !== -1) {
+ $ERROR('#822: -2097152 >> 25 === -1. Actual: ' + (-2097152 >> 25));
+}
+
+
+if (-4194304 >> 25 !== -1) {
+ $ERROR('#823: -4194304 >> 25 === -1. Actual: ' + (-4194304 >> 25));
+}
+
+
+if (-8388608 >> 25 !== -1) {
+ $ERROR('#824: -8388608 >> 25 === -1. Actual: ' + (-8388608 >> 25));
+}
+
+
+if (-16777216 >> 25 !== -1) {
+ $ERROR('#825: -16777216 >> 25 === -1. Actual: ' + (-16777216 >> 25));
+}
+
+
+if (-33554432 >> 25 !== -1) {
+ $ERROR('#826: -33554432 >> 25 === -1. Actual: ' + (-33554432 >> 25));
+}
+
+
+if (-67108864 >> 25 !== -2) {
+ $ERROR('#827: -67108864 >> 25 === -2. Actual: ' + (-67108864 >> 25));
+}
+
+
+if (-134217728 >> 25 !== -4) {
+ $ERROR('#828: -134217728 >> 25 === -4. Actual: ' + (-134217728 >> 25));
+}
+
+
+if (-268435456 >> 25 !== -8) {
+ $ERROR('#829: -268435456 >> 25 === -8. Actual: ' + (-268435456 >> 25));
+}
+
+
+if (-536870912 >> 25 !== -16) {
+ $ERROR('#830: -536870912 >> 25 === -16. Actual: ' + (-536870912 >> 25));
+}
+
+
+if (-1073741824 >> 25 !== -32) {
+ $ERROR('#831: -1073741824 >> 25 === -32. Actual: ' + (-1073741824 >> 25));
+}
+
+
+if (-2147483648 >> 25 !== -64) {
+ $ERROR('#832: -2147483648 >> 25 === -64. Actual: ' + (-2147483648 >> 25));
+}
+
+
+if (-1 >> 26 !== -1) {
+ $ERROR('#833: -1 >> 26 === -1. Actual: ' + (-1 >> 26));
+}
+
+
+if (-2 >> 26 !== -1) {
+ $ERROR('#834: -2 >> 26 === -1. Actual: ' + (-2 >> 26));
+}
+
+
+if (-4 >> 26 !== -1) {
+ $ERROR('#835: -4 >> 26 === -1. Actual: ' + (-4 >> 26));
+}
+
+
+if (-8 >> 26 !== -1) {
+ $ERROR('#836: -8 >> 26 === -1. Actual: ' + (-8 >> 26));
+}
+
+
+if (-16 >> 26 !== -1) {
+ $ERROR('#837: -16 >> 26 === -1. Actual: ' + (-16 >> 26));
+}
+
+
+if (-32 >> 26 !== -1) {
+ $ERROR('#838: -32 >> 26 === -1. Actual: ' + (-32 >> 26));
+}
+
+
+if (-64 >> 26 !== -1) {
+ $ERROR('#839: -64 >> 26 === -1. Actual: ' + (-64 >> 26));
+}
+
+
+if (-128 >> 26 !== -1) {
+ $ERROR('#840: -128 >> 26 === -1. Actual: ' + (-128 >> 26));
+}
+
+
+if (-256 >> 26 !== -1) {
+ $ERROR('#841: -256 >> 26 === -1. Actual: ' + (-256 >> 26));
+}
+
+
+if (-512 >> 26 !== -1) {
+ $ERROR('#842: -512 >> 26 === -1. Actual: ' + (-512 >> 26));
+}
+
+
+if (-1024 >> 26 !== -1) {
+ $ERROR('#843: -1024 >> 26 === -1. Actual: ' + (-1024 >> 26));
+}
+
+
+if (-2048 >> 26 !== -1) {
+ $ERROR('#844: -2048 >> 26 === -1. Actual: ' + (-2048 >> 26));
+}
+
+
+if (-4096 >> 26 !== -1) {
+ $ERROR('#845: -4096 >> 26 === -1. Actual: ' + (-4096 >> 26));
+}
+
+
+if (-8192 >> 26 !== -1) {
+ $ERROR('#846: -8192 >> 26 === -1. Actual: ' + (-8192 >> 26));
+}
+
+
+if (-16384 >> 26 !== -1) {
+ $ERROR('#847: -16384 >> 26 === -1. Actual: ' + (-16384 >> 26));
+}
+
+
+if (-32768 >> 26 !== -1) {
+ $ERROR('#848: -32768 >> 26 === -1. Actual: ' + (-32768 >> 26));
+}
+
+
+if (-65536 >> 26 !== -1) {
+ $ERROR('#849: -65536 >> 26 === -1. Actual: ' + (-65536 >> 26));
+}
+
+
+if (-131072 >> 26 !== -1) {
+ $ERROR('#850: -131072 >> 26 === -1. Actual: ' + (-131072 >> 26));
+}
+
+
+if (-262144 >> 26 !== -1) {
+ $ERROR('#851: -262144 >> 26 === -1. Actual: ' + (-262144 >> 26));
+}
+
+
+if (-524288 >> 26 !== -1) {
+ $ERROR('#852: -524288 >> 26 === -1. Actual: ' + (-524288 >> 26));
+}
+
+
+if (-1048576 >> 26 !== -1) {
+ $ERROR('#853: -1048576 >> 26 === -1. Actual: ' + (-1048576 >> 26));
+}
+
+
+if (-2097152 >> 26 !== -1) {
+ $ERROR('#854: -2097152 >> 26 === -1. Actual: ' + (-2097152 >> 26));
+}
+
+
+if (-4194304 >> 26 !== -1) {
+ $ERROR('#855: -4194304 >> 26 === -1. Actual: ' + (-4194304 >> 26));
+}
+
+
+if (-8388608 >> 26 !== -1) {
+ $ERROR('#856: -8388608 >> 26 === -1. Actual: ' + (-8388608 >> 26));
+}
+
+
+if (-16777216 >> 26 !== -1) {
+ $ERROR('#857: -16777216 >> 26 === -1. Actual: ' + (-16777216 >> 26));
+}
+
+
+if (-33554432 >> 26 !== -1) {
+ $ERROR('#858: -33554432 >> 26 === -1. Actual: ' + (-33554432 >> 26));
+}
+
+
+if (-67108864 >> 26 !== -1) {
+ $ERROR('#859: -67108864 >> 26 === -1. Actual: ' + (-67108864 >> 26));
+}
+
+
+if (-134217728 >> 26 !== -2) {
+ $ERROR('#860: -134217728 >> 26 === -2. Actual: ' + (-134217728 >> 26));
+}
+
+
+if (-268435456 >> 26 !== -4) {
+ $ERROR('#861: -268435456 >> 26 === -4. Actual: ' + (-268435456 >> 26));
+}
+
+
+if (-536870912 >> 26 !== -8) {
+ $ERROR('#862: -536870912 >> 26 === -8. Actual: ' + (-536870912 >> 26));
+}
+
+
+if (-1073741824 >> 26 !== -16) {
+ $ERROR('#863: -1073741824 >> 26 === -16. Actual: ' + (-1073741824 >> 26));
+}
+
+
+if (-2147483648 >> 26 !== -32) {
+ $ERROR('#864: -2147483648 >> 26 === -32. Actual: ' + (-2147483648 >> 26));
+}
+
+
+if (-1 >> 27 !== -1) {
+ $ERROR('#865: -1 >> 27 === -1. Actual: ' + (-1 >> 27));
+}
+
+
+if (-2 >> 27 !== -1) {
+ $ERROR('#866: -2 >> 27 === -1. Actual: ' + (-2 >> 27));
+}
+
+
+if (-4 >> 27 !== -1) {
+ $ERROR('#867: -4 >> 27 === -1. Actual: ' + (-4 >> 27));
+}
+
+
+if (-8 >> 27 !== -1) {
+ $ERROR('#868: -8 >> 27 === -1. Actual: ' + (-8 >> 27));
+}
+
+
+if (-16 >> 27 !== -1) {
+ $ERROR('#869: -16 >> 27 === -1. Actual: ' + (-16 >> 27));
+}
+
+
+if (-32 >> 27 !== -1) {
+ $ERROR('#870: -32 >> 27 === -1. Actual: ' + (-32 >> 27));
+}
+
+
+if (-64 >> 27 !== -1) {
+ $ERROR('#871: -64 >> 27 === -1. Actual: ' + (-64 >> 27));
+}
+
+
+if (-128 >> 27 !== -1) {
+ $ERROR('#872: -128 >> 27 === -1. Actual: ' + (-128 >> 27));
+}
+
+
+if (-256 >> 27 !== -1) {
+ $ERROR('#873: -256 >> 27 === -1. Actual: ' + (-256 >> 27));
+}
+
+
+if (-512 >> 27 !== -1) {
+ $ERROR('#874: -512 >> 27 === -1. Actual: ' + (-512 >> 27));
+}
+
+
+if (-1024 >> 27 !== -1) {
+ $ERROR('#875: -1024 >> 27 === -1. Actual: ' + (-1024 >> 27));
+}
+
+
+if (-2048 >> 27 !== -1) {
+ $ERROR('#876: -2048 >> 27 === -1. Actual: ' + (-2048 >> 27));
+}
+
+
+if (-4096 >> 27 !== -1) {
+ $ERROR('#877: -4096 >> 27 === -1. Actual: ' + (-4096 >> 27));
+}
+
+
+if (-8192 >> 27 !== -1) {
+ $ERROR('#878: -8192 >> 27 === -1. Actual: ' + (-8192 >> 27));
+}
+
+
+if (-16384 >> 27 !== -1) {
+ $ERROR('#879: -16384 >> 27 === -1. Actual: ' + (-16384 >> 27));
+}
+
+
+if (-32768 >> 27 !== -1) {
+ $ERROR('#880: -32768 >> 27 === -1. Actual: ' + (-32768 >> 27));
+}
+
+
+if (-65536 >> 27 !== -1) {
+ $ERROR('#881: -65536 >> 27 === -1. Actual: ' + (-65536 >> 27));
+}
+
+
+if (-131072 >> 27 !== -1) {
+ $ERROR('#882: -131072 >> 27 === -1. Actual: ' + (-131072 >> 27));
+}
+
+
+if (-262144 >> 27 !== -1) {
+ $ERROR('#883: -262144 >> 27 === -1. Actual: ' + (-262144 >> 27));
+}
+
+
+if (-524288 >> 27 !== -1) {
+ $ERROR('#884: -524288 >> 27 === -1. Actual: ' + (-524288 >> 27));
+}
+
+
+if (-1048576 >> 27 !== -1) {
+ $ERROR('#885: -1048576 >> 27 === -1. Actual: ' + (-1048576 >> 27));
+}
+
+
+if (-2097152 >> 27 !== -1) {
+ $ERROR('#886: -2097152 >> 27 === -1. Actual: ' + (-2097152 >> 27));
+}
+
+
+if (-4194304 >> 27 !== -1) {
+ $ERROR('#887: -4194304 >> 27 === -1. Actual: ' + (-4194304 >> 27));
+}
+
+
+if (-8388608 >> 27 !== -1) {
+ $ERROR('#888: -8388608 >> 27 === -1. Actual: ' + (-8388608 >> 27));
+}
+
+
+if (-16777216 >> 27 !== -1) {
+ $ERROR('#889: -16777216 >> 27 === -1. Actual: ' + (-16777216 >> 27));
+}
+
+
+if (-33554432 >> 27 !== -1) {
+ $ERROR('#890: -33554432 >> 27 === -1. Actual: ' + (-33554432 >> 27));
+}
+
+
+if (-67108864 >> 27 !== -1) {
+ $ERROR('#891: -67108864 >> 27 === -1. Actual: ' + (-67108864 >> 27));
+}
+
+
+if (-134217728 >> 27 !== -1) {
+ $ERROR('#892: -134217728 >> 27 === -1. Actual: ' + (-134217728 >> 27));
+}
+
+
+if (-268435456 >> 27 !== -2) {
+ $ERROR('#893: -268435456 >> 27 === -2. Actual: ' + (-268435456 >> 27));
+}
+
+
+if (-536870912 >> 27 !== -4) {
+ $ERROR('#894: -536870912 >> 27 === -4. Actual: ' + (-536870912 >> 27));
+}
+
+
+if (-1073741824 >> 27 !== -8) {
+ $ERROR('#895: -1073741824 >> 27 === -8. Actual: ' + (-1073741824 >> 27));
+}
+
+
+if (-2147483648 >> 27 !== -16) {
+ $ERROR('#896: -2147483648 >> 27 === -16. Actual: ' + (-2147483648 >> 27));
+}
+
+
+if (-1 >> 28 !== -1) {
+ $ERROR('#897: -1 >> 28 === -1. Actual: ' + (-1 >> 28));
+}
+
+
+if (-2 >> 28 !== -1) {
+ $ERROR('#898: -2 >> 28 === -1. Actual: ' + (-2 >> 28));
+}
+
+
+if (-4 >> 28 !== -1) {
+ $ERROR('#899: -4 >> 28 === -1. Actual: ' + (-4 >> 28));
+}
+
+
+if (-8 >> 28 !== -1) {
+ $ERROR('#900: -8 >> 28 === -1. Actual: ' + (-8 >> 28));
+}
+
+
+if (-16 >> 28 !== -1) {
+ $ERROR('#901: -16 >> 28 === -1. Actual: ' + (-16 >> 28));
+}
+
+
+if (-32 >> 28 !== -1) {
+ $ERROR('#902: -32 >> 28 === -1. Actual: ' + (-32 >> 28));
+}
+
+
+if (-64 >> 28 !== -1) {
+ $ERROR('#903: -64 >> 28 === -1. Actual: ' + (-64 >> 28));
+}
+
+
+if (-128 >> 28 !== -1) {
+ $ERROR('#904: -128 >> 28 === -1. Actual: ' + (-128 >> 28));
+}
+
+
+if (-256 >> 28 !== -1) {
+ $ERROR('#905: -256 >> 28 === -1. Actual: ' + (-256 >> 28));
+}
+
+
+if (-512 >> 28 !== -1) {
+ $ERROR('#906: -512 >> 28 === -1. Actual: ' + (-512 >> 28));
+}
+
+
+if (-1024 >> 28 !== -1) {
+ $ERROR('#907: -1024 >> 28 === -1. Actual: ' + (-1024 >> 28));
+}
+
+
+if (-2048 >> 28 !== -1) {
+ $ERROR('#908: -2048 >> 28 === -1. Actual: ' + (-2048 >> 28));
+}
+
+
+if (-4096 >> 28 !== -1) {
+ $ERROR('#909: -4096 >> 28 === -1. Actual: ' + (-4096 >> 28));
+}
+
+
+if (-8192 >> 28 !== -1) {
+ $ERROR('#910: -8192 >> 28 === -1. Actual: ' + (-8192 >> 28));
+}
+
+
+if (-16384 >> 28 !== -1) {
+ $ERROR('#911: -16384 >> 28 === -1. Actual: ' + (-16384 >> 28));
+}
+
+
+if (-32768 >> 28 !== -1) {
+ $ERROR('#912: -32768 >> 28 === -1. Actual: ' + (-32768 >> 28));
+}
+
+
+if (-65536 >> 28 !== -1) {
+ $ERROR('#913: -65536 >> 28 === -1. Actual: ' + (-65536 >> 28));
+}
+
+
+if (-131072 >> 28 !== -1) {
+ $ERROR('#914: -131072 >> 28 === -1. Actual: ' + (-131072 >> 28));
+}
+
+
+if (-262144 >> 28 !== -1) {
+ $ERROR('#915: -262144 >> 28 === -1. Actual: ' + (-262144 >> 28));
+}
+
+
+if (-524288 >> 28 !== -1) {
+ $ERROR('#916: -524288 >> 28 === -1. Actual: ' + (-524288 >> 28));
+}
+
+
+if (-1048576 >> 28 !== -1) {
+ $ERROR('#917: -1048576 >> 28 === -1. Actual: ' + (-1048576 >> 28));
+}
+
+
+if (-2097152 >> 28 !== -1) {
+ $ERROR('#918: -2097152 >> 28 === -1. Actual: ' + (-2097152 >> 28));
+}
+
+
+if (-4194304 >> 28 !== -1) {
+ $ERROR('#919: -4194304 >> 28 === -1. Actual: ' + (-4194304 >> 28));
+}
+
+
+if (-8388608 >> 28 !== -1) {
+ $ERROR('#920: -8388608 >> 28 === -1. Actual: ' + (-8388608 >> 28));
+}
+
+
+if (-16777216 >> 28 !== -1) {
+ $ERROR('#921: -16777216 >> 28 === -1. Actual: ' + (-16777216 >> 28));
+}
+
+
+if (-33554432 >> 28 !== -1) {
+ $ERROR('#922: -33554432 >> 28 === -1. Actual: ' + (-33554432 >> 28));
+}
+
+
+if (-67108864 >> 28 !== -1) {
+ $ERROR('#923: -67108864 >> 28 === -1. Actual: ' + (-67108864 >> 28));
+}
+
+
+if (-134217728 >> 28 !== -1) {
+ $ERROR('#924: -134217728 >> 28 === -1. Actual: ' + (-134217728 >> 28));
+}
+
+
+if (-268435456 >> 28 !== -1) {
+ $ERROR('#925: -268435456 >> 28 === -1. Actual: ' + (-268435456 >> 28));
+}
+
+
+if (-536870912 >> 28 !== -2) {
+ $ERROR('#926: -536870912 >> 28 === -2. Actual: ' + (-536870912 >> 28));
+}
+
+
+if (-1073741824 >> 28 !== -4) {
+ $ERROR('#927: -1073741824 >> 28 === -4. Actual: ' + (-1073741824 >> 28));
+}
+
+
+if (-2147483648 >> 28 !== -8) {
+ $ERROR('#928: -2147483648 >> 28 === -8. Actual: ' + (-2147483648 >> 28));
+}
+
+
+if (-1 >> 29 !== -1) {
+ $ERROR('#929: -1 >> 29 === -1. Actual: ' + (-1 >> 29));
+}
+
+
+if (-2 >> 29 !== -1) {
+ $ERROR('#930: -2 >> 29 === -1. Actual: ' + (-2 >> 29));
+}
+
+
+if (-4 >> 29 !== -1) {
+ $ERROR('#931: -4 >> 29 === -1. Actual: ' + (-4 >> 29));
+}
+
+
+if (-8 >> 29 !== -1) {
+ $ERROR('#932: -8 >> 29 === -1. Actual: ' + (-8 >> 29));
+}
+
+
+if (-16 >> 29 !== -1) {
+ $ERROR('#933: -16 >> 29 === -1. Actual: ' + (-16 >> 29));
+}
+
+
+if (-32 >> 29 !== -1) {
+ $ERROR('#934: -32 >> 29 === -1. Actual: ' + (-32 >> 29));
+}
+
+
+if (-64 >> 29 !== -1) {
+ $ERROR('#935: -64 >> 29 === -1. Actual: ' + (-64 >> 29));
+}
+
+
+if (-128 >> 29 !== -1) {
+ $ERROR('#936: -128 >> 29 === -1. Actual: ' + (-128 >> 29));
+}
+
+
+if (-256 >> 29 !== -1) {
+ $ERROR('#937: -256 >> 29 === -1. Actual: ' + (-256 >> 29));
+}
+
+
+if (-512 >> 29 !== -1) {
+ $ERROR('#938: -512 >> 29 === -1. Actual: ' + (-512 >> 29));
+}
+
+
+if (-1024 >> 29 !== -1) {
+ $ERROR('#939: -1024 >> 29 === -1. Actual: ' + (-1024 >> 29));
+}
+
+
+if (-2048 >> 29 !== -1) {
+ $ERROR('#940: -2048 >> 29 === -1. Actual: ' + (-2048 >> 29));
+}
+
+
+if (-4096 >> 29 !== -1) {
+ $ERROR('#941: -4096 >> 29 === -1. Actual: ' + (-4096 >> 29));
+}
+
+
+if (-8192 >> 29 !== -1) {
+ $ERROR('#942: -8192 >> 29 === -1. Actual: ' + (-8192 >> 29));
+}
+
+
+if (-16384 >> 29 !== -1) {
+ $ERROR('#943: -16384 >> 29 === -1. Actual: ' + (-16384 >> 29));
+}
+
+
+if (-32768 >> 29 !== -1) {
+ $ERROR('#944: -32768 >> 29 === -1. Actual: ' + (-32768 >> 29));
+}
+
+
+if (-65536 >> 29 !== -1) {
+ $ERROR('#945: -65536 >> 29 === -1. Actual: ' + (-65536 >> 29));
+}
+
+
+if (-131072 >> 29 !== -1) {
+ $ERROR('#946: -131072 >> 29 === -1. Actual: ' + (-131072 >> 29));
+}
+
+
+if (-262144 >> 29 !== -1) {
+ $ERROR('#947: -262144 >> 29 === -1. Actual: ' + (-262144 >> 29));
+}
+
+
+if (-524288 >> 29 !== -1) {
+ $ERROR('#948: -524288 >> 29 === -1. Actual: ' + (-524288 >> 29));
+}
+
+
+if (-1048576 >> 29 !== -1) {
+ $ERROR('#949: -1048576 >> 29 === -1. Actual: ' + (-1048576 >> 29));
+}
+
+
+if (-2097152 >> 29 !== -1) {
+ $ERROR('#950: -2097152 >> 29 === -1. Actual: ' + (-2097152 >> 29));
+}
+
+
+if (-4194304 >> 29 !== -1) {
+ $ERROR('#951: -4194304 >> 29 === -1. Actual: ' + (-4194304 >> 29));
+}
+
+
+if (-8388608 >> 29 !== -1) {
+ $ERROR('#952: -8388608 >> 29 === -1. Actual: ' + (-8388608 >> 29));
+}
+
+
+if (-16777216 >> 29 !== -1) {
+ $ERROR('#953: -16777216 >> 29 === -1. Actual: ' + (-16777216 >> 29));
+}
+
+
+if (-33554432 >> 29 !== -1) {
+ $ERROR('#954: -33554432 >> 29 === -1. Actual: ' + (-33554432 >> 29));
+}
+
+
+if (-67108864 >> 29 !== -1) {
+ $ERROR('#955: -67108864 >> 29 === -1. Actual: ' + (-67108864 >> 29));
+}
+
+
+if (-134217728 >> 29 !== -1) {
+ $ERROR('#956: -134217728 >> 29 === -1. Actual: ' + (-134217728 >> 29));
+}
+
+
+if (-268435456 >> 29 !== -1) {
+ $ERROR('#957: -268435456 >> 29 === -1. Actual: ' + (-268435456 >> 29));
+}
+
+
+if (-536870912 >> 29 !== -1) {
+ $ERROR('#958: -536870912 >> 29 === -1. Actual: ' + (-536870912 >> 29));
+}
+
+
+if (-1073741824 >> 29 !== -2) {
+ $ERROR('#959: -1073741824 >> 29 === -2. Actual: ' + (-1073741824 >> 29));
+}
+
+
+if (-2147483648 >> 29 !== -4) {
+ $ERROR('#960: -2147483648 >> 29 === -4. Actual: ' + (-2147483648 >> 29));
+}
+
+
+if (-1 >> 30 !== -1) {
+ $ERROR('#961: -1 >> 30 === -1. Actual: ' + (-1 >> 30));
+}
+
+
+if (-2 >> 30 !== -1) {
+ $ERROR('#962: -2 >> 30 === -1. Actual: ' + (-2 >> 30));
+}
+
+
+if (-4 >> 30 !== -1) {
+ $ERROR('#963: -4 >> 30 === -1. Actual: ' + (-4 >> 30));
+}
+
+
+if (-8 >> 30 !== -1) {
+ $ERROR('#964: -8 >> 30 === -1. Actual: ' + (-8 >> 30));
+}
+
+
+if (-16 >> 30 !== -1) {
+ $ERROR('#965: -16 >> 30 === -1. Actual: ' + (-16 >> 30));
+}
+
+
+if (-32 >> 30 !== -1) {
+ $ERROR('#966: -32 >> 30 === -1. Actual: ' + (-32 >> 30));
+}
+
+
+if (-64 >> 30 !== -1) {
+ $ERROR('#967: -64 >> 30 === -1. Actual: ' + (-64 >> 30));
+}
+
+
+if (-128 >> 30 !== -1) {
+ $ERROR('#968: -128 >> 30 === -1. Actual: ' + (-128 >> 30));
+}
+
+
+if (-256 >> 30 !== -1) {
+ $ERROR('#969: -256 >> 30 === -1. Actual: ' + (-256 >> 30));
+}
+
+
+if (-512 >> 30 !== -1) {
+ $ERROR('#970: -512 >> 30 === -1. Actual: ' + (-512 >> 30));
+}
+
+
+if (-1024 >> 30 !== -1) {
+ $ERROR('#971: -1024 >> 30 === -1. Actual: ' + (-1024 >> 30));
+}
+
+
+if (-2048 >> 30 !== -1) {
+ $ERROR('#972: -2048 >> 30 === -1. Actual: ' + (-2048 >> 30));
+}
+
+
+if (-4096 >> 30 !== -1) {
+ $ERROR('#973: -4096 >> 30 === -1. Actual: ' + (-4096 >> 30));
+}
+
+
+if (-8192 >> 30 !== -1) {
+ $ERROR('#974: -8192 >> 30 === -1. Actual: ' + (-8192 >> 30));
+}
+
+
+if (-16384 >> 30 !== -1) {
+ $ERROR('#975: -16384 >> 30 === -1. Actual: ' + (-16384 >> 30));
+}
+
+
+if (-32768 >> 30 !== -1) {
+ $ERROR('#976: -32768 >> 30 === -1. Actual: ' + (-32768 >> 30));
+}
+
+
+if (-65536 >> 30 !== -1) {
+ $ERROR('#977: -65536 >> 30 === -1. Actual: ' + (-65536 >> 30));
+}
+
+
+if (-131072 >> 30 !== -1) {
+ $ERROR('#978: -131072 >> 30 === -1. Actual: ' + (-131072 >> 30));
+}
+
+
+if (-262144 >> 30 !== -1) {
+ $ERROR('#979: -262144 >> 30 === -1. Actual: ' + (-262144 >> 30));
+}
+
+
+if (-524288 >> 30 !== -1) {
+ $ERROR('#980: -524288 >> 30 === -1. Actual: ' + (-524288 >> 30));
+}
+
+
+if (-1048576 >> 30 !== -1) {
+ $ERROR('#981: -1048576 >> 30 === -1. Actual: ' + (-1048576 >> 30));
+}
+
+
+if (-2097152 >> 30 !== -1) {
+ $ERROR('#982: -2097152 >> 30 === -1. Actual: ' + (-2097152 >> 30));
+}
+
+
+if (-4194304 >> 30 !== -1) {
+ $ERROR('#983: -4194304 >> 30 === -1. Actual: ' + (-4194304 >> 30));
+}
+
+
+if (-8388608 >> 30 !== -1) {
+ $ERROR('#984: -8388608 >> 30 === -1. Actual: ' + (-8388608 >> 30));
+}
+
+
+if (-16777216 >> 30 !== -1) {
+ $ERROR('#985: -16777216 >> 30 === -1. Actual: ' + (-16777216 >> 30));
+}
+
+
+if (-33554432 >> 30 !== -1) {
+ $ERROR('#986: -33554432 >> 30 === -1. Actual: ' + (-33554432 >> 30));
+}
+
+
+if (-67108864 >> 30 !== -1) {
+ $ERROR('#987: -67108864 >> 30 === -1. Actual: ' + (-67108864 >> 30));
+}
+
+
+if (-134217728 >> 30 !== -1) {
+ $ERROR('#988: -134217728 >> 30 === -1. Actual: ' + (-134217728 >> 30));
+}
+
+
+if (-268435456 >> 30 !== -1) {
+ $ERROR('#989: -268435456 >> 30 === -1. Actual: ' + (-268435456 >> 30));
+}
+
+
+if (-536870912 >> 30 !== -1) {
+ $ERROR('#990: -536870912 >> 30 === -1. Actual: ' + (-536870912 >> 30));
+}
+
+
+if (-1073741824 >> 30 !== -1) {
+ $ERROR('#991: -1073741824 >> 30 === -1. Actual: ' + (-1073741824 >> 30));
+}
+
+
+if (-2147483648 >> 30 !== -2) {
+ $ERROR('#992: -2147483648 >> 30 === -2. Actual: ' + (-2147483648 >> 30));
+}
+
+
+if (-1 >> 31 !== -1) {
+ $ERROR('#993: -1 >> 31 === -1. Actual: ' + (-1 >> 31));
+}
+
+
+if (-2 >> 31 !== -1) {
+ $ERROR('#994: -2 >> 31 === -1. Actual: ' + (-2 >> 31));
+}
+
+
+if (-4 >> 31 !== -1) {
+ $ERROR('#995: -4 >> 31 === -1. Actual: ' + (-4 >> 31));
+}
+
+
+if (-8 >> 31 !== -1) {
+ $ERROR('#996: -8 >> 31 === -1. Actual: ' + (-8 >> 31));
+}
+
+
+if (-16 >> 31 !== -1) {
+ $ERROR('#997: -16 >> 31 === -1. Actual: ' + (-16 >> 31));
+}
+
+
+if (-32 >> 31 !== -1) {
+ $ERROR('#998: -32 >> 31 === -1. Actual: ' + (-32 >> 31));
+}
+
+
+if (-64 >> 31 !== -1) {
+ $ERROR('#999: -64 >> 31 === -1. Actual: ' + (-64 >> 31));
+}
+
+
+if (-128 >> 31 !== -1) {
+ $ERROR('#1000: -128 >> 31 === -1. Actual: ' + (-128 >> 31));
+}
+
+
+if (-256 >> 31 !== -1) {
+ $ERROR('#1001: -256 >> 31 === -1. Actual: ' + (-256 >> 31));
+}
+
+
+if (-512 >> 31 !== -1) {
+ $ERROR('#1002: -512 >> 31 === -1. Actual: ' + (-512 >> 31));
+}
+
+
+if (-1024 >> 31 !== -1) {
+ $ERROR('#1003: -1024 >> 31 === -1. Actual: ' + (-1024 >> 31));
+}
+
+
+if (-2048 >> 31 !== -1) {
+ $ERROR('#1004: -2048 >> 31 === -1. Actual: ' + (-2048 >> 31));
+}
+
+
+if (-4096 >> 31 !== -1) {
+ $ERROR('#1005: -4096 >> 31 === -1. Actual: ' + (-4096 >> 31));
+}
+
+
+if (-8192 >> 31 !== -1) {
+ $ERROR('#1006: -8192 >> 31 === -1. Actual: ' + (-8192 >> 31));
+}
+
+
+if (-16384 >> 31 !== -1) {
+ $ERROR('#1007: -16384 >> 31 === -1. Actual: ' + (-16384 >> 31));
+}
+
+
+if (-32768 >> 31 !== -1) {
+ $ERROR('#1008: -32768 >> 31 === -1. Actual: ' + (-32768 >> 31));
+}
+
+
+if (-65536 >> 31 !== -1) {
+ $ERROR('#1009: -65536 >> 31 === -1. Actual: ' + (-65536 >> 31));
+}
+
+
+if (-131072 >> 31 !== -1) {
+ $ERROR('#1010: -131072 >> 31 === -1. Actual: ' + (-131072 >> 31));
+}
+
+
+if (-262144 >> 31 !== -1) {
+ $ERROR('#1011: -262144 >> 31 === -1. Actual: ' + (-262144 >> 31));
+}
+
+
+if (-524288 >> 31 !== -1) {
+ $ERROR('#1012: -524288 >> 31 === -1. Actual: ' + (-524288 >> 31));
+}
+
+
+if (-1048576 >> 31 !== -1) {
+ $ERROR('#1013: -1048576 >> 31 === -1. Actual: ' + (-1048576 >> 31));
+}
+
+
+if (-2097152 >> 31 !== -1) {
+ $ERROR('#1014: -2097152 >> 31 === -1. Actual: ' + (-2097152 >> 31));
+}
+
+
+if (-4194304 >> 31 !== -1) {
+ $ERROR('#1015: -4194304 >> 31 === -1. Actual: ' + (-4194304 >> 31));
+}
+
+
+if (-8388608 >> 31 !== -1) {
+ $ERROR('#1016: -8388608 >> 31 === -1. Actual: ' + (-8388608 >> 31));
+}
+
+
+if (-16777216 >> 31 !== -1) {
+ $ERROR('#1017: -16777216 >> 31 === -1. Actual: ' + (-16777216 >> 31));
+}
+
+
+if (-33554432 >> 31 !== -1) {
+ $ERROR('#1018: -33554432 >> 31 === -1. Actual: ' + (-33554432 >> 31));
+}
+
+
+if (-67108864 >> 31 !== -1) {
+ $ERROR('#1019: -67108864 >> 31 === -1. Actual: ' + (-67108864 >> 31));
+}
+
+
+if (-134217728 >> 31 !== -1) {
+ $ERROR('#1020: -134217728 >> 31 === -1. Actual: ' + (-134217728 >> 31));
+}
+
+
+if (-268435456 >> 31 !== -1) {
+ $ERROR('#1021: -268435456 >> 31 === -1. Actual: ' + (-268435456 >> 31));
+}
+
+
+if (-536870912 >> 31 !== -1) {
+ $ERROR('#1022: -536870912 >> 31 === -1. Actual: ' + (-536870912 >> 31));
+}
+
+
+if (-1073741824 >> 31 !== -1) {
+ $ERROR('#1023: -1073741824 >> 31 === -1. Actual: ' + (-1073741824 >> 31));
+}
+
+
+if (-2147483648 >> 31 !== -1) {
+ $ERROR('#1024: -2147483648 >> 31 === -1. Actual: ' + (-2147483648 >> 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T3.js
new file mode 100644
index 000000000..a64be3de7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T3.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A4_T3;
+ * @section: 11.7.2;
+ * @assertion: Check x >> y operator in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 0...15;
+ */
+
+//CHECK
+
+if (0 >> 0 !== 0) {
+ $ERROR('#1: 0 >> 0 === 0. Actual: ' + (0 >> 0));
+}
+
+
+if (1 >> 0 !== 1) {
+ $ERROR('#2: 1 >> 0 === 1. Actual: ' + (1 >> 0));
+}
+
+
+if (3 >> 0 !== 3) {
+ $ERROR('#3: 3 >> 0 === 3. Actual: ' + (3 >> 0));
+}
+
+
+if (7 >> 0 !== 7) {
+ $ERROR('#4: 7 >> 0 === 7. Actual: ' + (7 >> 0));
+}
+
+
+if (15 >> 0 !== 15) {
+ $ERROR('#5: 15 >> 0 === 15. Actual: ' + (15 >> 0));
+}
+
+
+if (31 >> 0 !== 31) {
+ $ERROR('#6: 31 >> 0 === 31. Actual: ' + (31 >> 0));
+}
+
+
+if (63 >> 0 !== 63) {
+ $ERROR('#7: 63 >> 0 === 63. Actual: ' + (63 >> 0));
+}
+
+
+if (127 >> 0 !== 127) {
+ $ERROR('#8: 127 >> 0 === 127. Actual: ' + (127 >> 0));
+}
+
+
+if (255 >> 0 !== 255) {
+ $ERROR('#9: 255 >> 0 === 255. Actual: ' + (255 >> 0));
+}
+
+
+if (511 >> 0 !== 511) {
+ $ERROR('#10: 511 >> 0 === 511. Actual: ' + (511 >> 0));
+}
+
+
+if (1023 >> 0 !== 1023) {
+ $ERROR('#11: 1023 >> 0 === 1023. Actual: ' + (1023 >> 0));
+}
+
+
+if (2047 >> 0 !== 2047) {
+ $ERROR('#12: 2047 >> 0 === 2047. Actual: ' + (2047 >> 0));
+}
+
+
+if (4095 >> 0 !== 4095) {
+ $ERROR('#13: 4095 >> 0 === 4095. Actual: ' + (4095 >> 0));
+}
+
+
+if (8191 >> 0 !== 8191) {
+ $ERROR('#14: 8191 >> 0 === 8191. Actual: ' + (8191 >> 0));
+}
+
+
+if (16383 >> 0 !== 16383) {
+ $ERROR('#15: 16383 >> 0 === 16383. Actual: ' + (16383 >> 0));
+}
+
+
+if (32767 >> 0 !== 32767) {
+ $ERROR('#16: 32767 >> 0 === 32767. Actual: ' + (32767 >> 0));
+}
+
+
+if (65535 >> 0 !== 65535) {
+ $ERROR('#17: 65535 >> 0 === 65535. Actual: ' + (65535 >> 0));
+}
+
+
+if (131071 >> 0 !== 131071) {
+ $ERROR('#18: 131071 >> 0 === 131071. Actual: ' + (131071 >> 0));
+}
+
+
+if (262143 >> 0 !== 262143) {
+ $ERROR('#19: 262143 >> 0 === 262143. Actual: ' + (262143 >> 0));
+}
+
+
+if (524287 >> 0 !== 524287) {
+ $ERROR('#20: 524287 >> 0 === 524287. Actual: ' + (524287 >> 0));
+}
+
+
+if (1048575 >> 0 !== 1048575) {
+ $ERROR('#21: 1048575 >> 0 === 1048575. Actual: ' + (1048575 >> 0));
+}
+
+
+if (2097151 >> 0 !== 2097151) {
+ $ERROR('#22: 2097151 >> 0 === 2097151. Actual: ' + (2097151 >> 0));
+}
+
+
+if (4194303 >> 0 !== 4194303) {
+ $ERROR('#23: 4194303 >> 0 === 4194303. Actual: ' + (4194303 >> 0));
+}
+
+
+if (8388607 >> 0 !== 8388607) {
+ $ERROR('#24: 8388607 >> 0 === 8388607. Actual: ' + (8388607 >> 0));
+}
+
+
+if (16777215 >> 0 !== 16777215) {
+ $ERROR('#25: 16777215 >> 0 === 16777215. Actual: ' + (16777215 >> 0));
+}
+
+
+if (33554431 >> 0 !== 33554431) {
+ $ERROR('#26: 33554431 >> 0 === 33554431. Actual: ' + (33554431 >> 0));
+}
+
+
+if (67108863 >> 0 !== 67108863) {
+ $ERROR('#27: 67108863 >> 0 === 67108863. Actual: ' + (67108863 >> 0));
+}
+
+
+if (134217727 >> 0 !== 134217727) {
+ $ERROR('#28: 134217727 >> 0 === 134217727. Actual: ' + (134217727 >> 0));
+}
+
+
+if (268435455 >> 0 !== 268435455) {
+ $ERROR('#29: 268435455 >> 0 === 268435455. Actual: ' + (268435455 >> 0));
+}
+
+
+if (536870911 >> 0 !== 536870911) {
+ $ERROR('#30: 536870911 >> 0 === 536870911. Actual: ' + (536870911 >> 0));
+}
+
+
+if (1073741823 >> 0 !== 1073741823) {
+ $ERROR('#31: 1073741823 >> 0 === 1073741823. Actual: ' + (1073741823 >> 0));
+}
+
+
+if (2147483647 >> 0 !== 2147483647) {
+ $ERROR('#32: 2147483647 >> 0 === 2147483647. Actual: ' + (2147483647 >> 0));
+}
+
+
+if (0 >> 1 !== 0) {
+ $ERROR('#33: 0 >> 1 === 0. Actual: ' + (0 >> 1));
+}
+
+
+if (1 >> 1 !== 0) {
+ $ERROR('#34: 1 >> 1 === 0. Actual: ' + (1 >> 1));
+}
+
+
+if (3 >> 1 !== 1) {
+ $ERROR('#35: 3 >> 1 === 1. Actual: ' + (3 >> 1));
+}
+
+
+if (7 >> 1 !== 3) {
+ $ERROR('#36: 7 >> 1 === 3. Actual: ' + (7 >> 1));
+}
+
+
+if (15 >> 1 !== 7) {
+ $ERROR('#37: 15 >> 1 === 7. Actual: ' + (15 >> 1));
+}
+
+
+if (31 >> 1 !== 15) {
+ $ERROR('#38: 31 >> 1 === 15. Actual: ' + (31 >> 1));
+}
+
+
+if (63 >> 1 !== 31) {
+ $ERROR('#39: 63 >> 1 === 31. Actual: ' + (63 >> 1));
+}
+
+
+if (127 >> 1 !== 63) {
+ $ERROR('#40: 127 >> 1 === 63. Actual: ' + (127 >> 1));
+}
+
+
+if (255 >> 1 !== 127) {
+ $ERROR('#41: 255 >> 1 === 127. Actual: ' + (255 >> 1));
+}
+
+
+if (511 >> 1 !== 255) {
+ $ERROR('#42: 511 >> 1 === 255. Actual: ' + (511 >> 1));
+}
+
+
+if (1023 >> 1 !== 511) {
+ $ERROR('#43: 1023 >> 1 === 511. Actual: ' + (1023 >> 1));
+}
+
+
+if (2047 >> 1 !== 1023) {
+ $ERROR('#44: 2047 >> 1 === 1023. Actual: ' + (2047 >> 1));
+}
+
+
+if (4095 >> 1 !== 2047) {
+ $ERROR('#45: 4095 >> 1 === 2047. Actual: ' + (4095 >> 1));
+}
+
+
+if (8191 >> 1 !== 4095) {
+ $ERROR('#46: 8191 >> 1 === 4095. Actual: ' + (8191 >> 1));
+}
+
+
+if (16383 >> 1 !== 8191) {
+ $ERROR('#47: 16383 >> 1 === 8191. Actual: ' + (16383 >> 1));
+}
+
+
+if (32767 >> 1 !== 16383) {
+ $ERROR('#48: 32767 >> 1 === 16383. Actual: ' + (32767 >> 1));
+}
+
+
+if (65535 >> 1 !== 32767) {
+ $ERROR('#49: 65535 >> 1 === 32767. Actual: ' + (65535 >> 1));
+}
+
+
+if (131071 >> 1 !== 65535) {
+ $ERROR('#50: 131071 >> 1 === 65535. Actual: ' + (131071 >> 1));
+}
+
+
+if (262143 >> 1 !== 131071) {
+ $ERROR('#51: 262143 >> 1 === 131071. Actual: ' + (262143 >> 1));
+}
+
+
+if (524287 >> 1 !== 262143) {
+ $ERROR('#52: 524287 >> 1 === 262143. Actual: ' + (524287 >> 1));
+}
+
+
+if (1048575 >> 1 !== 524287) {
+ $ERROR('#53: 1048575 >> 1 === 524287. Actual: ' + (1048575 >> 1));
+}
+
+
+if (2097151 >> 1 !== 1048575) {
+ $ERROR('#54: 2097151 >> 1 === 1048575. Actual: ' + (2097151 >> 1));
+}
+
+
+if (4194303 >> 1 !== 2097151) {
+ $ERROR('#55: 4194303 >> 1 === 2097151. Actual: ' + (4194303 >> 1));
+}
+
+
+if (8388607 >> 1 !== 4194303) {
+ $ERROR('#56: 8388607 >> 1 === 4194303. Actual: ' + (8388607 >> 1));
+}
+
+
+if (16777215 >> 1 !== 8388607) {
+ $ERROR('#57: 16777215 >> 1 === 8388607. Actual: ' + (16777215 >> 1));
+}
+
+
+if (33554431 >> 1 !== 16777215) {
+ $ERROR('#58: 33554431 >> 1 === 16777215. Actual: ' + (33554431 >> 1));
+}
+
+
+if (67108863 >> 1 !== 33554431) {
+ $ERROR('#59: 67108863 >> 1 === 33554431. Actual: ' + (67108863 >> 1));
+}
+
+
+if (134217727 >> 1 !== 67108863) {
+ $ERROR('#60: 134217727 >> 1 === 67108863. Actual: ' + (134217727 >> 1));
+}
+
+
+if (268435455 >> 1 !== 134217727) {
+ $ERROR('#61: 268435455 >> 1 === 134217727. Actual: ' + (268435455 >> 1));
+}
+
+
+if (536870911 >> 1 !== 268435455) {
+ $ERROR('#62: 536870911 >> 1 === 268435455. Actual: ' + (536870911 >> 1));
+}
+
+
+if (1073741823 >> 1 !== 536870911) {
+ $ERROR('#63: 1073741823 >> 1 === 536870911. Actual: ' + (1073741823 >> 1));
+}
+
+
+if (2147483647 >> 1 !== 1073741823) {
+ $ERROR('#64: 2147483647 >> 1 === 1073741823. Actual: ' + (2147483647 >> 1));
+}
+
+
+if (0 >> 2 !== 0) {
+ $ERROR('#65: 0 >> 2 === 0. Actual: ' + (0 >> 2));
+}
+
+
+if (1 >> 2 !== 0) {
+ $ERROR('#66: 1 >> 2 === 0. Actual: ' + (1 >> 2));
+}
+
+
+if (3 >> 2 !== 0) {
+ $ERROR('#67: 3 >> 2 === 0. Actual: ' + (3 >> 2));
+}
+
+
+if (7 >> 2 !== 1) {
+ $ERROR('#68: 7 >> 2 === 1. Actual: ' + (7 >> 2));
+}
+
+
+if (15 >> 2 !== 3) {
+ $ERROR('#69: 15 >> 2 === 3. Actual: ' + (15 >> 2));
+}
+
+
+if (31 >> 2 !== 7) {
+ $ERROR('#70: 31 >> 2 === 7. Actual: ' + (31 >> 2));
+}
+
+
+if (63 >> 2 !== 15) {
+ $ERROR('#71: 63 >> 2 === 15. Actual: ' + (63 >> 2));
+}
+
+
+if (127 >> 2 !== 31) {
+ $ERROR('#72: 127 >> 2 === 31. Actual: ' + (127 >> 2));
+}
+
+
+if (255 >> 2 !== 63) {
+ $ERROR('#73: 255 >> 2 === 63. Actual: ' + (255 >> 2));
+}
+
+
+if (511 >> 2 !== 127) {
+ $ERROR('#74: 511 >> 2 === 127. Actual: ' + (511 >> 2));
+}
+
+
+if (1023 >> 2 !== 255) {
+ $ERROR('#75: 1023 >> 2 === 255. Actual: ' + (1023 >> 2));
+}
+
+
+if (2047 >> 2 !== 511) {
+ $ERROR('#76: 2047 >> 2 === 511. Actual: ' + (2047 >> 2));
+}
+
+
+if (4095 >> 2 !== 1023) {
+ $ERROR('#77: 4095 >> 2 === 1023. Actual: ' + (4095 >> 2));
+}
+
+
+if (8191 >> 2 !== 2047) {
+ $ERROR('#78: 8191 >> 2 === 2047. Actual: ' + (8191 >> 2));
+}
+
+
+if (16383 >> 2 !== 4095) {
+ $ERROR('#79: 16383 >> 2 === 4095. Actual: ' + (16383 >> 2));
+}
+
+
+if (32767 >> 2 !== 8191) {
+ $ERROR('#80: 32767 >> 2 === 8191. Actual: ' + (32767 >> 2));
+}
+
+
+if (65535 >> 2 !== 16383) {
+ $ERROR('#81: 65535 >> 2 === 16383. Actual: ' + (65535 >> 2));
+}
+
+
+if (131071 >> 2 !== 32767) {
+ $ERROR('#82: 131071 >> 2 === 32767. Actual: ' + (131071 >> 2));
+}
+
+
+if (262143 >> 2 !== 65535) {
+ $ERROR('#83: 262143 >> 2 === 65535. Actual: ' + (262143 >> 2));
+}
+
+
+if (524287 >> 2 !== 131071) {
+ $ERROR('#84: 524287 >> 2 === 131071. Actual: ' + (524287 >> 2));
+}
+
+
+if (1048575 >> 2 !== 262143) {
+ $ERROR('#85: 1048575 >> 2 === 262143. Actual: ' + (1048575 >> 2));
+}
+
+
+if (2097151 >> 2 !== 524287) {
+ $ERROR('#86: 2097151 >> 2 === 524287. Actual: ' + (2097151 >> 2));
+}
+
+
+if (4194303 >> 2 !== 1048575) {
+ $ERROR('#87: 4194303 >> 2 === 1048575. Actual: ' + (4194303 >> 2));
+}
+
+
+if (8388607 >> 2 !== 2097151) {
+ $ERROR('#88: 8388607 >> 2 === 2097151. Actual: ' + (8388607 >> 2));
+}
+
+
+if (16777215 >> 2 !== 4194303) {
+ $ERROR('#89: 16777215 >> 2 === 4194303. Actual: ' + (16777215 >> 2));
+}
+
+
+if (33554431 >> 2 !== 8388607) {
+ $ERROR('#90: 33554431 >> 2 === 8388607. Actual: ' + (33554431 >> 2));
+}
+
+
+if (67108863 >> 2 !== 16777215) {
+ $ERROR('#91: 67108863 >> 2 === 16777215. Actual: ' + (67108863 >> 2));
+}
+
+
+if (134217727 >> 2 !== 33554431) {
+ $ERROR('#92: 134217727 >> 2 === 33554431. Actual: ' + (134217727 >> 2));
+}
+
+
+if (268435455 >> 2 !== 67108863) {
+ $ERROR('#93: 268435455 >> 2 === 67108863. Actual: ' + (268435455 >> 2));
+}
+
+
+if (536870911 >> 2 !== 134217727) {
+ $ERROR('#94: 536870911 >> 2 === 134217727. Actual: ' + (536870911 >> 2));
+}
+
+
+if (1073741823 >> 2 !== 268435455) {
+ $ERROR('#95: 1073741823 >> 2 === 268435455. Actual: ' + (1073741823 >> 2));
+}
+
+
+if (2147483647 >> 2 !== 536870911) {
+ $ERROR('#96: 2147483647 >> 2 === 536870911. Actual: ' + (2147483647 >> 2));
+}
+
+
+if (0 >> 3 !== 0) {
+ $ERROR('#97: 0 >> 3 === 0. Actual: ' + (0 >> 3));
+}
+
+
+if (1 >> 3 !== 0) {
+ $ERROR('#98: 1 >> 3 === 0. Actual: ' + (1 >> 3));
+}
+
+
+if (3 >> 3 !== 0) {
+ $ERROR('#99: 3 >> 3 === 0. Actual: ' + (3 >> 3));
+}
+
+
+if (7 >> 3 !== 0) {
+ $ERROR('#100: 7 >> 3 === 0. Actual: ' + (7 >> 3));
+}
+
+
+if (15 >> 3 !== 1) {
+ $ERROR('#101: 15 >> 3 === 1. Actual: ' + (15 >> 3));
+}
+
+
+if (31 >> 3 !== 3) {
+ $ERROR('#102: 31 >> 3 === 3. Actual: ' + (31 >> 3));
+}
+
+
+if (63 >> 3 !== 7) {
+ $ERROR('#103: 63 >> 3 === 7. Actual: ' + (63 >> 3));
+}
+
+
+if (127 >> 3 !== 15) {
+ $ERROR('#104: 127 >> 3 === 15. Actual: ' + (127 >> 3));
+}
+
+
+if (255 >> 3 !== 31) {
+ $ERROR('#105: 255 >> 3 === 31. Actual: ' + (255 >> 3));
+}
+
+
+if (511 >> 3 !== 63) {
+ $ERROR('#106: 511 >> 3 === 63. Actual: ' + (511 >> 3));
+}
+
+
+if (1023 >> 3 !== 127) {
+ $ERROR('#107: 1023 >> 3 === 127. Actual: ' + (1023 >> 3));
+}
+
+
+if (2047 >> 3 !== 255) {
+ $ERROR('#108: 2047 >> 3 === 255. Actual: ' + (2047 >> 3));
+}
+
+
+if (4095 >> 3 !== 511) {
+ $ERROR('#109: 4095 >> 3 === 511. Actual: ' + (4095 >> 3));
+}
+
+
+if (8191 >> 3 !== 1023) {
+ $ERROR('#110: 8191 >> 3 === 1023. Actual: ' + (8191 >> 3));
+}
+
+
+if (16383 >> 3 !== 2047) {
+ $ERROR('#111: 16383 >> 3 === 2047. Actual: ' + (16383 >> 3));
+}
+
+
+if (32767 >> 3 !== 4095) {
+ $ERROR('#112: 32767 >> 3 === 4095. Actual: ' + (32767 >> 3));
+}
+
+
+if (65535 >> 3 !== 8191) {
+ $ERROR('#113: 65535 >> 3 === 8191. Actual: ' + (65535 >> 3));
+}
+
+
+if (131071 >> 3 !== 16383) {
+ $ERROR('#114: 131071 >> 3 === 16383. Actual: ' + (131071 >> 3));
+}
+
+
+if (262143 >> 3 !== 32767) {
+ $ERROR('#115: 262143 >> 3 === 32767. Actual: ' + (262143 >> 3));
+}
+
+
+if (524287 >> 3 !== 65535) {
+ $ERROR('#116: 524287 >> 3 === 65535. Actual: ' + (524287 >> 3));
+}
+
+
+if (1048575 >> 3 !== 131071) {
+ $ERROR('#117: 1048575 >> 3 === 131071. Actual: ' + (1048575 >> 3));
+}
+
+
+if (2097151 >> 3 !== 262143) {
+ $ERROR('#118: 2097151 >> 3 === 262143. Actual: ' + (2097151 >> 3));
+}
+
+
+if (4194303 >> 3 !== 524287) {
+ $ERROR('#119: 4194303 >> 3 === 524287. Actual: ' + (4194303 >> 3));
+}
+
+
+if (8388607 >> 3 !== 1048575) {
+ $ERROR('#120: 8388607 >> 3 === 1048575. Actual: ' + (8388607 >> 3));
+}
+
+
+if (16777215 >> 3 !== 2097151) {
+ $ERROR('#121: 16777215 >> 3 === 2097151. Actual: ' + (16777215 >> 3));
+}
+
+
+if (33554431 >> 3 !== 4194303) {
+ $ERROR('#122: 33554431 >> 3 === 4194303. Actual: ' + (33554431 >> 3));
+}
+
+
+if (67108863 >> 3 !== 8388607) {
+ $ERROR('#123: 67108863 >> 3 === 8388607. Actual: ' + (67108863 >> 3));
+}
+
+
+if (134217727 >> 3 !== 16777215) {
+ $ERROR('#124: 134217727 >> 3 === 16777215. Actual: ' + (134217727 >> 3));
+}
+
+
+if (268435455 >> 3 !== 33554431) {
+ $ERROR('#125: 268435455 >> 3 === 33554431. Actual: ' + (268435455 >> 3));
+}
+
+
+if (536870911 >> 3 !== 67108863) {
+ $ERROR('#126: 536870911 >> 3 === 67108863. Actual: ' + (536870911 >> 3));
+}
+
+
+if (1073741823 >> 3 !== 134217727) {
+ $ERROR('#127: 1073741823 >> 3 === 134217727. Actual: ' + (1073741823 >> 3));
+}
+
+
+if (2147483647 >> 3 !== 268435455) {
+ $ERROR('#128: 2147483647 >> 3 === 268435455. Actual: ' + (2147483647 >> 3));
+}
+
+
+if (0 >> 4 !== 0) {
+ $ERROR('#129: 0 >> 4 === 0. Actual: ' + (0 >> 4));
+}
+
+
+if (1 >> 4 !== 0) {
+ $ERROR('#130: 1 >> 4 === 0. Actual: ' + (1 >> 4));
+}
+
+
+if (3 >> 4 !== 0) {
+ $ERROR('#131: 3 >> 4 === 0. Actual: ' + (3 >> 4));
+}
+
+
+if (7 >> 4 !== 0) {
+ $ERROR('#132: 7 >> 4 === 0. Actual: ' + (7 >> 4));
+}
+
+
+if (15 >> 4 !== 0) {
+ $ERROR('#133: 15 >> 4 === 0. Actual: ' + (15 >> 4));
+}
+
+
+if (31 >> 4 !== 1) {
+ $ERROR('#134: 31 >> 4 === 1. Actual: ' + (31 >> 4));
+}
+
+
+if (63 >> 4 !== 3) {
+ $ERROR('#135: 63 >> 4 === 3. Actual: ' + (63 >> 4));
+}
+
+
+if (127 >> 4 !== 7) {
+ $ERROR('#136: 127 >> 4 === 7. Actual: ' + (127 >> 4));
+}
+
+
+if (255 >> 4 !== 15) {
+ $ERROR('#137: 255 >> 4 === 15. Actual: ' + (255 >> 4));
+}
+
+
+if (511 >> 4 !== 31) {
+ $ERROR('#138: 511 >> 4 === 31. Actual: ' + (511 >> 4));
+}
+
+
+if (1023 >> 4 !== 63) {
+ $ERROR('#139: 1023 >> 4 === 63. Actual: ' + (1023 >> 4));
+}
+
+
+if (2047 >> 4 !== 127) {
+ $ERROR('#140: 2047 >> 4 === 127. Actual: ' + (2047 >> 4));
+}
+
+
+if (4095 >> 4 !== 255) {
+ $ERROR('#141: 4095 >> 4 === 255. Actual: ' + (4095 >> 4));
+}
+
+
+if (8191 >> 4 !== 511) {
+ $ERROR('#142: 8191 >> 4 === 511. Actual: ' + (8191 >> 4));
+}
+
+
+if (16383 >> 4 !== 1023) {
+ $ERROR('#143: 16383 >> 4 === 1023. Actual: ' + (16383 >> 4));
+}
+
+
+if (32767 >> 4 !== 2047) {
+ $ERROR('#144: 32767 >> 4 === 2047. Actual: ' + (32767 >> 4));
+}
+
+
+if (65535 >> 4 !== 4095) {
+ $ERROR('#145: 65535 >> 4 === 4095. Actual: ' + (65535 >> 4));
+}
+
+
+if (131071 >> 4 !== 8191) {
+ $ERROR('#146: 131071 >> 4 === 8191. Actual: ' + (131071 >> 4));
+}
+
+
+if (262143 >> 4 !== 16383) {
+ $ERROR('#147: 262143 >> 4 === 16383. Actual: ' + (262143 >> 4));
+}
+
+
+if (524287 >> 4 !== 32767) {
+ $ERROR('#148: 524287 >> 4 === 32767. Actual: ' + (524287 >> 4));
+}
+
+
+if (1048575 >> 4 !== 65535) {
+ $ERROR('#149: 1048575 >> 4 === 65535. Actual: ' + (1048575 >> 4));
+}
+
+
+if (2097151 >> 4 !== 131071) {
+ $ERROR('#150: 2097151 >> 4 === 131071. Actual: ' + (2097151 >> 4));
+}
+
+
+if (4194303 >> 4 !== 262143) {
+ $ERROR('#151: 4194303 >> 4 === 262143. Actual: ' + (4194303 >> 4));
+}
+
+
+if (8388607 >> 4 !== 524287) {
+ $ERROR('#152: 8388607 >> 4 === 524287. Actual: ' + (8388607 >> 4));
+}
+
+
+if (16777215 >> 4 !== 1048575) {
+ $ERROR('#153: 16777215 >> 4 === 1048575. Actual: ' + (16777215 >> 4));
+}
+
+
+if (33554431 >> 4 !== 2097151) {
+ $ERROR('#154: 33554431 >> 4 === 2097151. Actual: ' + (33554431 >> 4));
+}
+
+
+if (67108863 >> 4 !== 4194303) {
+ $ERROR('#155: 67108863 >> 4 === 4194303. Actual: ' + (67108863 >> 4));
+}
+
+
+if (134217727 >> 4 !== 8388607) {
+ $ERROR('#156: 134217727 >> 4 === 8388607. Actual: ' + (134217727 >> 4));
+}
+
+
+if (268435455 >> 4 !== 16777215) {
+ $ERROR('#157: 268435455 >> 4 === 16777215. Actual: ' + (268435455 >> 4));
+}
+
+
+if (536870911 >> 4 !== 33554431) {
+ $ERROR('#158: 536870911 >> 4 === 33554431. Actual: ' + (536870911 >> 4));
+}
+
+
+if (1073741823 >> 4 !== 67108863) {
+ $ERROR('#159: 1073741823 >> 4 === 67108863. Actual: ' + (1073741823 >> 4));
+}
+
+
+if (2147483647 >> 4 !== 134217727) {
+ $ERROR('#160: 2147483647 >> 4 === 134217727. Actual: ' + (2147483647 >> 4));
+}
+
+
+if (0 >> 5 !== 0) {
+ $ERROR('#161: 0 >> 5 === 0. Actual: ' + (0 >> 5));
+}
+
+
+if (1 >> 5 !== 0) {
+ $ERROR('#162: 1 >> 5 === 0. Actual: ' + (1 >> 5));
+}
+
+
+if (3 >> 5 !== 0) {
+ $ERROR('#163: 3 >> 5 === 0. Actual: ' + (3 >> 5));
+}
+
+
+if (7 >> 5 !== 0) {
+ $ERROR('#164: 7 >> 5 === 0. Actual: ' + (7 >> 5));
+}
+
+
+if (15 >> 5 !== 0) {
+ $ERROR('#165: 15 >> 5 === 0. Actual: ' + (15 >> 5));
+}
+
+
+if (31 >> 5 !== 0) {
+ $ERROR('#166: 31 >> 5 === 0. Actual: ' + (31 >> 5));
+}
+
+
+if (63 >> 5 !== 1) {
+ $ERROR('#167: 63 >> 5 === 1. Actual: ' + (63 >> 5));
+}
+
+
+if (127 >> 5 !== 3) {
+ $ERROR('#168: 127 >> 5 === 3. Actual: ' + (127 >> 5));
+}
+
+
+if (255 >> 5 !== 7) {
+ $ERROR('#169: 255 >> 5 === 7. Actual: ' + (255 >> 5));
+}
+
+
+if (511 >> 5 !== 15) {
+ $ERROR('#170: 511 >> 5 === 15. Actual: ' + (511 >> 5));
+}
+
+
+if (1023 >> 5 !== 31) {
+ $ERROR('#171: 1023 >> 5 === 31. Actual: ' + (1023 >> 5));
+}
+
+
+if (2047 >> 5 !== 63) {
+ $ERROR('#172: 2047 >> 5 === 63. Actual: ' + (2047 >> 5));
+}
+
+
+if (4095 >> 5 !== 127) {
+ $ERROR('#173: 4095 >> 5 === 127. Actual: ' + (4095 >> 5));
+}
+
+
+if (8191 >> 5 !== 255) {
+ $ERROR('#174: 8191 >> 5 === 255. Actual: ' + (8191 >> 5));
+}
+
+
+if (16383 >> 5 !== 511) {
+ $ERROR('#175: 16383 >> 5 === 511. Actual: ' + (16383 >> 5));
+}
+
+
+if (32767 >> 5 !== 1023) {
+ $ERROR('#176: 32767 >> 5 === 1023. Actual: ' + (32767 >> 5));
+}
+
+
+if (65535 >> 5 !== 2047) {
+ $ERROR('#177: 65535 >> 5 === 2047. Actual: ' + (65535 >> 5));
+}
+
+
+if (131071 >> 5 !== 4095) {
+ $ERROR('#178: 131071 >> 5 === 4095. Actual: ' + (131071 >> 5));
+}
+
+
+if (262143 >> 5 !== 8191) {
+ $ERROR('#179: 262143 >> 5 === 8191. Actual: ' + (262143 >> 5));
+}
+
+
+if (524287 >> 5 !== 16383) {
+ $ERROR('#180: 524287 >> 5 === 16383. Actual: ' + (524287 >> 5));
+}
+
+
+if (1048575 >> 5 !== 32767) {
+ $ERROR('#181: 1048575 >> 5 === 32767. Actual: ' + (1048575 >> 5));
+}
+
+
+if (2097151 >> 5 !== 65535) {
+ $ERROR('#182: 2097151 >> 5 === 65535. Actual: ' + (2097151 >> 5));
+}
+
+
+if (4194303 >> 5 !== 131071) {
+ $ERROR('#183: 4194303 >> 5 === 131071. Actual: ' + (4194303 >> 5));
+}
+
+
+if (8388607 >> 5 !== 262143) {
+ $ERROR('#184: 8388607 >> 5 === 262143. Actual: ' + (8388607 >> 5));
+}
+
+
+if (16777215 >> 5 !== 524287) {
+ $ERROR('#185: 16777215 >> 5 === 524287. Actual: ' + (16777215 >> 5));
+}
+
+
+if (33554431 >> 5 !== 1048575) {
+ $ERROR('#186: 33554431 >> 5 === 1048575. Actual: ' + (33554431 >> 5));
+}
+
+
+if (67108863 >> 5 !== 2097151) {
+ $ERROR('#187: 67108863 >> 5 === 2097151. Actual: ' + (67108863 >> 5));
+}
+
+
+if (134217727 >> 5 !== 4194303) {
+ $ERROR('#188: 134217727 >> 5 === 4194303. Actual: ' + (134217727 >> 5));
+}
+
+
+if (268435455 >> 5 !== 8388607) {
+ $ERROR('#189: 268435455 >> 5 === 8388607. Actual: ' + (268435455 >> 5));
+}
+
+
+if (536870911 >> 5 !== 16777215) {
+ $ERROR('#190: 536870911 >> 5 === 16777215. Actual: ' + (536870911 >> 5));
+}
+
+
+if (1073741823 >> 5 !== 33554431) {
+ $ERROR('#191: 1073741823 >> 5 === 33554431. Actual: ' + (1073741823 >> 5));
+}
+
+
+if (2147483647 >> 5 !== 67108863) {
+ $ERROR('#192: 2147483647 >> 5 === 67108863. Actual: ' + (2147483647 >> 5));
+}
+
+
+if (0 >> 6 !== 0) {
+ $ERROR('#193: 0 >> 6 === 0. Actual: ' + (0 >> 6));
+}
+
+
+if (1 >> 6 !== 0) {
+ $ERROR('#194: 1 >> 6 === 0. Actual: ' + (1 >> 6));
+}
+
+
+if (3 >> 6 !== 0) {
+ $ERROR('#195: 3 >> 6 === 0. Actual: ' + (3 >> 6));
+}
+
+
+if (7 >> 6 !== 0) {
+ $ERROR('#196: 7 >> 6 === 0. Actual: ' + (7 >> 6));
+}
+
+
+if (15 >> 6 !== 0) {
+ $ERROR('#197: 15 >> 6 === 0. Actual: ' + (15 >> 6));
+}
+
+
+if (31 >> 6 !== 0) {
+ $ERROR('#198: 31 >> 6 === 0. Actual: ' + (31 >> 6));
+}
+
+
+if (63 >> 6 !== 0) {
+ $ERROR('#199: 63 >> 6 === 0. Actual: ' + (63 >> 6));
+}
+
+
+if (127 >> 6 !== 1) {
+ $ERROR('#200: 127 >> 6 === 1. Actual: ' + (127 >> 6));
+}
+
+
+if (255 >> 6 !== 3) {
+ $ERROR('#201: 255 >> 6 === 3. Actual: ' + (255 >> 6));
+}
+
+
+if (511 >> 6 !== 7) {
+ $ERROR('#202: 511 >> 6 === 7. Actual: ' + (511 >> 6));
+}
+
+
+if (1023 >> 6 !== 15) {
+ $ERROR('#203: 1023 >> 6 === 15. Actual: ' + (1023 >> 6));
+}
+
+
+if (2047 >> 6 !== 31) {
+ $ERROR('#204: 2047 >> 6 === 31. Actual: ' + (2047 >> 6));
+}
+
+
+if (4095 >> 6 !== 63) {
+ $ERROR('#205: 4095 >> 6 === 63. Actual: ' + (4095 >> 6));
+}
+
+
+if (8191 >> 6 !== 127) {
+ $ERROR('#206: 8191 >> 6 === 127. Actual: ' + (8191 >> 6));
+}
+
+
+if (16383 >> 6 !== 255) {
+ $ERROR('#207: 16383 >> 6 === 255. Actual: ' + (16383 >> 6));
+}
+
+
+if (32767 >> 6 !== 511) {
+ $ERROR('#208: 32767 >> 6 === 511. Actual: ' + (32767 >> 6));
+}
+
+
+if (65535 >> 6 !== 1023) {
+ $ERROR('#209: 65535 >> 6 === 1023. Actual: ' + (65535 >> 6));
+}
+
+
+if (131071 >> 6 !== 2047) {
+ $ERROR('#210: 131071 >> 6 === 2047. Actual: ' + (131071 >> 6));
+}
+
+
+if (262143 >> 6 !== 4095) {
+ $ERROR('#211: 262143 >> 6 === 4095. Actual: ' + (262143 >> 6));
+}
+
+
+if (524287 >> 6 !== 8191) {
+ $ERROR('#212: 524287 >> 6 === 8191. Actual: ' + (524287 >> 6));
+}
+
+
+if (1048575 >> 6 !== 16383) {
+ $ERROR('#213: 1048575 >> 6 === 16383. Actual: ' + (1048575 >> 6));
+}
+
+
+if (2097151 >> 6 !== 32767) {
+ $ERROR('#214: 2097151 >> 6 === 32767. Actual: ' + (2097151 >> 6));
+}
+
+
+if (4194303 >> 6 !== 65535) {
+ $ERROR('#215: 4194303 >> 6 === 65535. Actual: ' + (4194303 >> 6));
+}
+
+
+if (8388607 >> 6 !== 131071) {
+ $ERROR('#216: 8388607 >> 6 === 131071. Actual: ' + (8388607 >> 6));
+}
+
+
+if (16777215 >> 6 !== 262143) {
+ $ERROR('#217: 16777215 >> 6 === 262143. Actual: ' + (16777215 >> 6));
+}
+
+
+if (33554431 >> 6 !== 524287) {
+ $ERROR('#218: 33554431 >> 6 === 524287. Actual: ' + (33554431 >> 6));
+}
+
+
+if (67108863 >> 6 !== 1048575) {
+ $ERROR('#219: 67108863 >> 6 === 1048575. Actual: ' + (67108863 >> 6));
+}
+
+
+if (134217727 >> 6 !== 2097151) {
+ $ERROR('#220: 134217727 >> 6 === 2097151. Actual: ' + (134217727 >> 6));
+}
+
+
+if (268435455 >> 6 !== 4194303) {
+ $ERROR('#221: 268435455 >> 6 === 4194303. Actual: ' + (268435455 >> 6));
+}
+
+
+if (536870911 >> 6 !== 8388607) {
+ $ERROR('#222: 536870911 >> 6 === 8388607. Actual: ' + (536870911 >> 6));
+}
+
+
+if (1073741823 >> 6 !== 16777215) {
+ $ERROR('#223: 1073741823 >> 6 === 16777215. Actual: ' + (1073741823 >> 6));
+}
+
+
+if (2147483647 >> 6 !== 33554431) {
+ $ERROR('#224: 2147483647 >> 6 === 33554431. Actual: ' + (2147483647 >> 6));
+}
+
+
+if (0 >> 7 !== 0) {
+ $ERROR('#225: 0 >> 7 === 0. Actual: ' + (0 >> 7));
+}
+
+
+if (1 >> 7 !== 0) {
+ $ERROR('#226: 1 >> 7 === 0. Actual: ' + (1 >> 7));
+}
+
+
+if (3 >> 7 !== 0) {
+ $ERROR('#227: 3 >> 7 === 0. Actual: ' + (3 >> 7));
+}
+
+
+if (7 >> 7 !== 0) {
+ $ERROR('#228: 7 >> 7 === 0. Actual: ' + (7 >> 7));
+}
+
+
+if (15 >> 7 !== 0) {
+ $ERROR('#229: 15 >> 7 === 0. Actual: ' + (15 >> 7));
+}
+
+
+if (31 >> 7 !== 0) {
+ $ERROR('#230: 31 >> 7 === 0. Actual: ' + (31 >> 7));
+}
+
+
+if (63 >> 7 !== 0) {
+ $ERROR('#231: 63 >> 7 === 0. Actual: ' + (63 >> 7));
+}
+
+
+if (127 >> 7 !== 0) {
+ $ERROR('#232: 127 >> 7 === 0. Actual: ' + (127 >> 7));
+}
+
+
+if (255 >> 7 !== 1) {
+ $ERROR('#233: 255 >> 7 === 1. Actual: ' + (255 >> 7));
+}
+
+
+if (511 >> 7 !== 3) {
+ $ERROR('#234: 511 >> 7 === 3. Actual: ' + (511 >> 7));
+}
+
+
+if (1023 >> 7 !== 7) {
+ $ERROR('#235: 1023 >> 7 === 7. Actual: ' + (1023 >> 7));
+}
+
+
+if (2047 >> 7 !== 15) {
+ $ERROR('#236: 2047 >> 7 === 15. Actual: ' + (2047 >> 7));
+}
+
+
+if (4095 >> 7 !== 31) {
+ $ERROR('#237: 4095 >> 7 === 31. Actual: ' + (4095 >> 7));
+}
+
+
+if (8191 >> 7 !== 63) {
+ $ERROR('#238: 8191 >> 7 === 63. Actual: ' + (8191 >> 7));
+}
+
+
+if (16383 >> 7 !== 127) {
+ $ERROR('#239: 16383 >> 7 === 127. Actual: ' + (16383 >> 7));
+}
+
+
+if (32767 >> 7 !== 255) {
+ $ERROR('#240: 32767 >> 7 === 255. Actual: ' + (32767 >> 7));
+}
+
+
+if (65535 >> 7 !== 511) {
+ $ERROR('#241: 65535 >> 7 === 511. Actual: ' + (65535 >> 7));
+}
+
+
+if (131071 >> 7 !== 1023) {
+ $ERROR('#242: 131071 >> 7 === 1023. Actual: ' + (131071 >> 7));
+}
+
+
+if (262143 >> 7 !== 2047) {
+ $ERROR('#243: 262143 >> 7 === 2047. Actual: ' + (262143 >> 7));
+}
+
+
+if (524287 >> 7 !== 4095) {
+ $ERROR('#244: 524287 >> 7 === 4095. Actual: ' + (524287 >> 7));
+}
+
+
+if (1048575 >> 7 !== 8191) {
+ $ERROR('#245: 1048575 >> 7 === 8191. Actual: ' + (1048575 >> 7));
+}
+
+
+if (2097151 >> 7 !== 16383) {
+ $ERROR('#246: 2097151 >> 7 === 16383. Actual: ' + (2097151 >> 7));
+}
+
+
+if (4194303 >> 7 !== 32767) {
+ $ERROR('#247: 4194303 >> 7 === 32767. Actual: ' + (4194303 >> 7));
+}
+
+
+if (8388607 >> 7 !== 65535) {
+ $ERROR('#248: 8388607 >> 7 === 65535. Actual: ' + (8388607 >> 7));
+}
+
+
+if (16777215 >> 7 !== 131071) {
+ $ERROR('#249: 16777215 >> 7 === 131071. Actual: ' + (16777215 >> 7));
+}
+
+
+if (33554431 >> 7 !== 262143) {
+ $ERROR('#250: 33554431 >> 7 === 262143. Actual: ' + (33554431 >> 7));
+}
+
+
+if (67108863 >> 7 !== 524287) {
+ $ERROR('#251: 67108863 >> 7 === 524287. Actual: ' + (67108863 >> 7));
+}
+
+
+if (134217727 >> 7 !== 1048575) {
+ $ERROR('#252: 134217727 >> 7 === 1048575. Actual: ' + (134217727 >> 7));
+}
+
+
+if (268435455 >> 7 !== 2097151) {
+ $ERROR('#253: 268435455 >> 7 === 2097151. Actual: ' + (268435455 >> 7));
+}
+
+
+if (536870911 >> 7 !== 4194303) {
+ $ERROR('#254: 536870911 >> 7 === 4194303. Actual: ' + (536870911 >> 7));
+}
+
+
+if (1073741823 >> 7 !== 8388607) {
+ $ERROR('#255: 1073741823 >> 7 === 8388607. Actual: ' + (1073741823 >> 7));
+}
+
+
+if (2147483647 >> 7 !== 16777215) {
+ $ERROR('#256: 2147483647 >> 7 === 16777215. Actual: ' + (2147483647 >> 7));
+}
+
+
+if (0 >> 8 !== 0) {
+ $ERROR('#257: 0 >> 8 === 0. Actual: ' + (0 >> 8));
+}
+
+
+if (1 >> 8 !== 0) {
+ $ERROR('#258: 1 >> 8 === 0. Actual: ' + (1 >> 8));
+}
+
+
+if (3 >> 8 !== 0) {
+ $ERROR('#259: 3 >> 8 === 0. Actual: ' + (3 >> 8));
+}
+
+
+if (7 >> 8 !== 0) {
+ $ERROR('#260: 7 >> 8 === 0. Actual: ' + (7 >> 8));
+}
+
+
+if (15 >> 8 !== 0) {
+ $ERROR('#261: 15 >> 8 === 0. Actual: ' + (15 >> 8));
+}
+
+
+if (31 >> 8 !== 0) {
+ $ERROR('#262: 31 >> 8 === 0. Actual: ' + (31 >> 8));
+}
+
+
+if (63 >> 8 !== 0) {
+ $ERROR('#263: 63 >> 8 === 0. Actual: ' + (63 >> 8));
+}
+
+
+if (127 >> 8 !== 0) {
+ $ERROR('#264: 127 >> 8 === 0. Actual: ' + (127 >> 8));
+}
+
+
+if (255 >> 8 !== 0) {
+ $ERROR('#265: 255 >> 8 === 0. Actual: ' + (255 >> 8));
+}
+
+
+if (511 >> 8 !== 1) {
+ $ERROR('#266: 511 >> 8 === 1. Actual: ' + (511 >> 8));
+}
+
+
+if (1023 >> 8 !== 3) {
+ $ERROR('#267: 1023 >> 8 === 3. Actual: ' + (1023 >> 8));
+}
+
+
+if (2047 >> 8 !== 7) {
+ $ERROR('#268: 2047 >> 8 === 7. Actual: ' + (2047 >> 8));
+}
+
+
+if (4095 >> 8 !== 15) {
+ $ERROR('#269: 4095 >> 8 === 15. Actual: ' + (4095 >> 8));
+}
+
+
+if (8191 >> 8 !== 31) {
+ $ERROR('#270: 8191 >> 8 === 31. Actual: ' + (8191 >> 8));
+}
+
+
+if (16383 >> 8 !== 63) {
+ $ERROR('#271: 16383 >> 8 === 63. Actual: ' + (16383 >> 8));
+}
+
+
+if (32767 >> 8 !== 127) {
+ $ERROR('#272: 32767 >> 8 === 127. Actual: ' + (32767 >> 8));
+}
+
+
+if (65535 >> 8 !== 255) {
+ $ERROR('#273: 65535 >> 8 === 255. Actual: ' + (65535 >> 8));
+}
+
+
+if (131071 >> 8 !== 511) {
+ $ERROR('#274: 131071 >> 8 === 511. Actual: ' + (131071 >> 8));
+}
+
+
+if (262143 >> 8 !== 1023) {
+ $ERROR('#275: 262143 >> 8 === 1023. Actual: ' + (262143 >> 8));
+}
+
+
+if (524287 >> 8 !== 2047) {
+ $ERROR('#276: 524287 >> 8 === 2047. Actual: ' + (524287 >> 8));
+}
+
+
+if (1048575 >> 8 !== 4095) {
+ $ERROR('#277: 1048575 >> 8 === 4095. Actual: ' + (1048575 >> 8));
+}
+
+
+if (2097151 >> 8 !== 8191) {
+ $ERROR('#278: 2097151 >> 8 === 8191. Actual: ' + (2097151 >> 8));
+}
+
+
+if (4194303 >> 8 !== 16383) {
+ $ERROR('#279: 4194303 >> 8 === 16383. Actual: ' + (4194303 >> 8));
+}
+
+
+if (8388607 >> 8 !== 32767) {
+ $ERROR('#280: 8388607 >> 8 === 32767. Actual: ' + (8388607 >> 8));
+}
+
+
+if (16777215 >> 8 !== 65535) {
+ $ERROR('#281: 16777215 >> 8 === 65535. Actual: ' + (16777215 >> 8));
+}
+
+
+if (33554431 >> 8 !== 131071) {
+ $ERROR('#282: 33554431 >> 8 === 131071. Actual: ' + (33554431 >> 8));
+}
+
+
+if (67108863 >> 8 !== 262143) {
+ $ERROR('#283: 67108863 >> 8 === 262143. Actual: ' + (67108863 >> 8));
+}
+
+
+if (134217727 >> 8 !== 524287) {
+ $ERROR('#284: 134217727 >> 8 === 524287. Actual: ' + (134217727 >> 8));
+}
+
+
+if (268435455 >> 8 !== 1048575) {
+ $ERROR('#285: 268435455 >> 8 === 1048575. Actual: ' + (268435455 >> 8));
+}
+
+
+if (536870911 >> 8 !== 2097151) {
+ $ERROR('#286: 536870911 >> 8 === 2097151. Actual: ' + (536870911 >> 8));
+}
+
+
+if (1073741823 >> 8 !== 4194303) {
+ $ERROR('#287: 1073741823 >> 8 === 4194303. Actual: ' + (1073741823 >> 8));
+}
+
+
+if (2147483647 >> 8 !== 8388607) {
+ $ERROR('#288: 2147483647 >> 8 === 8388607. Actual: ' + (2147483647 >> 8));
+}
+
+
+if (0 >> 9 !== 0) {
+ $ERROR('#289: 0 >> 9 === 0. Actual: ' + (0 >> 9));
+}
+
+
+if (1 >> 9 !== 0) {
+ $ERROR('#290: 1 >> 9 === 0. Actual: ' + (1 >> 9));
+}
+
+
+if (3 >> 9 !== 0) {
+ $ERROR('#291: 3 >> 9 === 0. Actual: ' + (3 >> 9));
+}
+
+
+if (7 >> 9 !== 0) {
+ $ERROR('#292: 7 >> 9 === 0. Actual: ' + (7 >> 9));
+}
+
+
+if (15 >> 9 !== 0) {
+ $ERROR('#293: 15 >> 9 === 0. Actual: ' + (15 >> 9));
+}
+
+
+if (31 >> 9 !== 0) {
+ $ERROR('#294: 31 >> 9 === 0. Actual: ' + (31 >> 9));
+}
+
+
+if (63 >> 9 !== 0) {
+ $ERROR('#295: 63 >> 9 === 0. Actual: ' + (63 >> 9));
+}
+
+
+if (127 >> 9 !== 0) {
+ $ERROR('#296: 127 >> 9 === 0. Actual: ' + (127 >> 9));
+}
+
+
+if (255 >> 9 !== 0) {
+ $ERROR('#297: 255 >> 9 === 0. Actual: ' + (255 >> 9));
+}
+
+
+if (511 >> 9 !== 0) {
+ $ERROR('#298: 511 >> 9 === 0. Actual: ' + (511 >> 9));
+}
+
+
+if (1023 >> 9 !== 1) {
+ $ERROR('#299: 1023 >> 9 === 1. Actual: ' + (1023 >> 9));
+}
+
+
+if (2047 >> 9 !== 3) {
+ $ERROR('#300: 2047 >> 9 === 3. Actual: ' + (2047 >> 9));
+}
+
+
+if (4095 >> 9 !== 7) {
+ $ERROR('#301: 4095 >> 9 === 7. Actual: ' + (4095 >> 9));
+}
+
+
+if (8191 >> 9 !== 15) {
+ $ERROR('#302: 8191 >> 9 === 15. Actual: ' + (8191 >> 9));
+}
+
+
+if (16383 >> 9 !== 31) {
+ $ERROR('#303: 16383 >> 9 === 31. Actual: ' + (16383 >> 9));
+}
+
+
+if (32767 >> 9 !== 63) {
+ $ERROR('#304: 32767 >> 9 === 63. Actual: ' + (32767 >> 9));
+}
+
+
+if (65535 >> 9 !== 127) {
+ $ERROR('#305: 65535 >> 9 === 127. Actual: ' + (65535 >> 9));
+}
+
+
+if (131071 >> 9 !== 255) {
+ $ERROR('#306: 131071 >> 9 === 255. Actual: ' + (131071 >> 9));
+}
+
+
+if (262143 >> 9 !== 511) {
+ $ERROR('#307: 262143 >> 9 === 511. Actual: ' + (262143 >> 9));
+}
+
+
+if (524287 >> 9 !== 1023) {
+ $ERROR('#308: 524287 >> 9 === 1023. Actual: ' + (524287 >> 9));
+}
+
+
+if (1048575 >> 9 !== 2047) {
+ $ERROR('#309: 1048575 >> 9 === 2047. Actual: ' + (1048575 >> 9));
+}
+
+
+if (2097151 >> 9 !== 4095) {
+ $ERROR('#310: 2097151 >> 9 === 4095. Actual: ' + (2097151 >> 9));
+}
+
+
+if (4194303 >> 9 !== 8191) {
+ $ERROR('#311: 4194303 >> 9 === 8191. Actual: ' + (4194303 >> 9));
+}
+
+
+if (8388607 >> 9 !== 16383) {
+ $ERROR('#312: 8388607 >> 9 === 16383. Actual: ' + (8388607 >> 9));
+}
+
+
+if (16777215 >> 9 !== 32767) {
+ $ERROR('#313: 16777215 >> 9 === 32767. Actual: ' + (16777215 >> 9));
+}
+
+
+if (33554431 >> 9 !== 65535) {
+ $ERROR('#314: 33554431 >> 9 === 65535. Actual: ' + (33554431 >> 9));
+}
+
+
+if (67108863 >> 9 !== 131071) {
+ $ERROR('#315: 67108863 >> 9 === 131071. Actual: ' + (67108863 >> 9));
+}
+
+
+if (134217727 >> 9 !== 262143) {
+ $ERROR('#316: 134217727 >> 9 === 262143. Actual: ' + (134217727 >> 9));
+}
+
+
+if (268435455 >> 9 !== 524287) {
+ $ERROR('#317: 268435455 >> 9 === 524287. Actual: ' + (268435455 >> 9));
+}
+
+
+if (536870911 >> 9 !== 1048575) {
+ $ERROR('#318: 536870911 >> 9 === 1048575. Actual: ' + (536870911 >> 9));
+}
+
+
+if (1073741823 >> 9 !== 2097151) {
+ $ERROR('#319: 1073741823 >> 9 === 2097151. Actual: ' + (1073741823 >> 9));
+}
+
+
+if (2147483647 >> 9 !== 4194303) {
+ $ERROR('#320: 2147483647 >> 9 === 4194303. Actual: ' + (2147483647 >> 9));
+}
+
+
+if (0 >> 10 !== 0) {
+ $ERROR('#321: 0 >> 10 === 0. Actual: ' + (0 >> 10));
+}
+
+
+if (1 >> 10 !== 0) {
+ $ERROR('#322: 1 >> 10 === 0. Actual: ' + (1 >> 10));
+}
+
+
+if (3 >> 10 !== 0) {
+ $ERROR('#323: 3 >> 10 === 0. Actual: ' + (3 >> 10));
+}
+
+
+if (7 >> 10 !== 0) {
+ $ERROR('#324: 7 >> 10 === 0. Actual: ' + (7 >> 10));
+}
+
+
+if (15 >> 10 !== 0) {
+ $ERROR('#325: 15 >> 10 === 0. Actual: ' + (15 >> 10));
+}
+
+
+if (31 >> 10 !== 0) {
+ $ERROR('#326: 31 >> 10 === 0. Actual: ' + (31 >> 10));
+}
+
+
+if (63 >> 10 !== 0) {
+ $ERROR('#327: 63 >> 10 === 0. Actual: ' + (63 >> 10));
+}
+
+
+if (127 >> 10 !== 0) {
+ $ERROR('#328: 127 >> 10 === 0. Actual: ' + (127 >> 10));
+}
+
+
+if (255 >> 10 !== 0) {
+ $ERROR('#329: 255 >> 10 === 0. Actual: ' + (255 >> 10));
+}
+
+
+if (511 >> 10 !== 0) {
+ $ERROR('#330: 511 >> 10 === 0. Actual: ' + (511 >> 10));
+}
+
+
+if (1023 >> 10 !== 0) {
+ $ERROR('#331: 1023 >> 10 === 0. Actual: ' + (1023 >> 10));
+}
+
+
+if (2047 >> 10 !== 1) {
+ $ERROR('#332: 2047 >> 10 === 1. Actual: ' + (2047 >> 10));
+}
+
+
+if (4095 >> 10 !== 3) {
+ $ERROR('#333: 4095 >> 10 === 3. Actual: ' + (4095 >> 10));
+}
+
+
+if (8191 >> 10 !== 7) {
+ $ERROR('#334: 8191 >> 10 === 7. Actual: ' + (8191 >> 10));
+}
+
+
+if (16383 >> 10 !== 15) {
+ $ERROR('#335: 16383 >> 10 === 15. Actual: ' + (16383 >> 10));
+}
+
+
+if (32767 >> 10 !== 31) {
+ $ERROR('#336: 32767 >> 10 === 31. Actual: ' + (32767 >> 10));
+}
+
+
+if (65535 >> 10 !== 63) {
+ $ERROR('#337: 65535 >> 10 === 63. Actual: ' + (65535 >> 10));
+}
+
+
+if (131071 >> 10 !== 127) {
+ $ERROR('#338: 131071 >> 10 === 127. Actual: ' + (131071 >> 10));
+}
+
+
+if (262143 >> 10 !== 255) {
+ $ERROR('#339: 262143 >> 10 === 255. Actual: ' + (262143 >> 10));
+}
+
+
+if (524287 >> 10 !== 511) {
+ $ERROR('#340: 524287 >> 10 === 511. Actual: ' + (524287 >> 10));
+}
+
+
+if (1048575 >> 10 !== 1023) {
+ $ERROR('#341: 1048575 >> 10 === 1023. Actual: ' + (1048575 >> 10));
+}
+
+
+if (2097151 >> 10 !== 2047) {
+ $ERROR('#342: 2097151 >> 10 === 2047. Actual: ' + (2097151 >> 10));
+}
+
+
+if (4194303 >> 10 !== 4095) {
+ $ERROR('#343: 4194303 >> 10 === 4095. Actual: ' + (4194303 >> 10));
+}
+
+
+if (8388607 >> 10 !== 8191) {
+ $ERROR('#344: 8388607 >> 10 === 8191. Actual: ' + (8388607 >> 10));
+}
+
+
+if (16777215 >> 10 !== 16383) {
+ $ERROR('#345: 16777215 >> 10 === 16383. Actual: ' + (16777215 >> 10));
+}
+
+
+if (33554431 >> 10 !== 32767) {
+ $ERROR('#346: 33554431 >> 10 === 32767. Actual: ' + (33554431 >> 10));
+}
+
+
+if (67108863 >> 10 !== 65535) {
+ $ERROR('#347: 67108863 >> 10 === 65535. Actual: ' + (67108863 >> 10));
+}
+
+
+if (134217727 >> 10 !== 131071) {
+ $ERROR('#348: 134217727 >> 10 === 131071. Actual: ' + (134217727 >> 10));
+}
+
+
+if (268435455 >> 10 !== 262143) {
+ $ERROR('#349: 268435455 >> 10 === 262143. Actual: ' + (268435455 >> 10));
+}
+
+
+if (536870911 >> 10 !== 524287) {
+ $ERROR('#350: 536870911 >> 10 === 524287. Actual: ' + (536870911 >> 10));
+}
+
+
+if (1073741823 >> 10 !== 1048575) {
+ $ERROR('#351: 1073741823 >> 10 === 1048575. Actual: ' + (1073741823 >> 10));
+}
+
+
+if (2147483647 >> 10 !== 2097151) {
+ $ERROR('#352: 2147483647 >> 10 === 2097151. Actual: ' + (2147483647 >> 10));
+}
+
+
+if (0 >> 11 !== 0) {
+ $ERROR('#353: 0 >> 11 === 0. Actual: ' + (0 >> 11));
+}
+
+
+if (1 >> 11 !== 0) {
+ $ERROR('#354: 1 >> 11 === 0. Actual: ' + (1 >> 11));
+}
+
+
+if (3 >> 11 !== 0) {
+ $ERROR('#355: 3 >> 11 === 0. Actual: ' + (3 >> 11));
+}
+
+
+if (7 >> 11 !== 0) {
+ $ERROR('#356: 7 >> 11 === 0. Actual: ' + (7 >> 11));
+}
+
+
+if (15 >> 11 !== 0) {
+ $ERROR('#357: 15 >> 11 === 0. Actual: ' + (15 >> 11));
+}
+
+
+if (31 >> 11 !== 0) {
+ $ERROR('#358: 31 >> 11 === 0. Actual: ' + (31 >> 11));
+}
+
+
+if (63 >> 11 !== 0) {
+ $ERROR('#359: 63 >> 11 === 0. Actual: ' + (63 >> 11));
+}
+
+
+if (127 >> 11 !== 0) {
+ $ERROR('#360: 127 >> 11 === 0. Actual: ' + (127 >> 11));
+}
+
+
+if (255 >> 11 !== 0) {
+ $ERROR('#361: 255 >> 11 === 0. Actual: ' + (255 >> 11));
+}
+
+
+if (511 >> 11 !== 0) {
+ $ERROR('#362: 511 >> 11 === 0. Actual: ' + (511 >> 11));
+}
+
+
+if (1023 >> 11 !== 0) {
+ $ERROR('#363: 1023 >> 11 === 0. Actual: ' + (1023 >> 11));
+}
+
+
+if (2047 >> 11 !== 0) {
+ $ERROR('#364: 2047 >> 11 === 0. Actual: ' + (2047 >> 11));
+}
+
+
+if (4095 >> 11 !== 1) {
+ $ERROR('#365: 4095 >> 11 === 1. Actual: ' + (4095 >> 11));
+}
+
+
+if (8191 >> 11 !== 3) {
+ $ERROR('#366: 8191 >> 11 === 3. Actual: ' + (8191 >> 11));
+}
+
+
+if (16383 >> 11 !== 7) {
+ $ERROR('#367: 16383 >> 11 === 7. Actual: ' + (16383 >> 11));
+}
+
+
+if (32767 >> 11 !== 15) {
+ $ERROR('#368: 32767 >> 11 === 15. Actual: ' + (32767 >> 11));
+}
+
+
+if (65535 >> 11 !== 31) {
+ $ERROR('#369: 65535 >> 11 === 31. Actual: ' + (65535 >> 11));
+}
+
+
+if (131071 >> 11 !== 63) {
+ $ERROR('#370: 131071 >> 11 === 63. Actual: ' + (131071 >> 11));
+}
+
+
+if (262143 >> 11 !== 127) {
+ $ERROR('#371: 262143 >> 11 === 127. Actual: ' + (262143 >> 11));
+}
+
+
+if (524287 >> 11 !== 255) {
+ $ERROR('#372: 524287 >> 11 === 255. Actual: ' + (524287 >> 11));
+}
+
+
+if (1048575 >> 11 !== 511) {
+ $ERROR('#373: 1048575 >> 11 === 511. Actual: ' + (1048575 >> 11));
+}
+
+
+if (2097151 >> 11 !== 1023) {
+ $ERROR('#374: 2097151 >> 11 === 1023. Actual: ' + (2097151 >> 11));
+}
+
+
+if (4194303 >> 11 !== 2047) {
+ $ERROR('#375: 4194303 >> 11 === 2047. Actual: ' + (4194303 >> 11));
+}
+
+
+if (8388607 >> 11 !== 4095) {
+ $ERROR('#376: 8388607 >> 11 === 4095. Actual: ' + (8388607 >> 11));
+}
+
+
+if (16777215 >> 11 !== 8191) {
+ $ERROR('#377: 16777215 >> 11 === 8191. Actual: ' + (16777215 >> 11));
+}
+
+
+if (33554431 >> 11 !== 16383) {
+ $ERROR('#378: 33554431 >> 11 === 16383. Actual: ' + (33554431 >> 11));
+}
+
+
+if (67108863 >> 11 !== 32767) {
+ $ERROR('#379: 67108863 >> 11 === 32767. Actual: ' + (67108863 >> 11));
+}
+
+
+if (134217727 >> 11 !== 65535) {
+ $ERROR('#380: 134217727 >> 11 === 65535. Actual: ' + (134217727 >> 11));
+}
+
+
+if (268435455 >> 11 !== 131071) {
+ $ERROR('#381: 268435455 >> 11 === 131071. Actual: ' + (268435455 >> 11));
+}
+
+
+if (536870911 >> 11 !== 262143) {
+ $ERROR('#382: 536870911 >> 11 === 262143. Actual: ' + (536870911 >> 11));
+}
+
+
+if (1073741823 >> 11 !== 524287) {
+ $ERROR('#383: 1073741823 >> 11 === 524287. Actual: ' + (1073741823 >> 11));
+}
+
+
+if (2147483647 >> 11 !== 1048575) {
+ $ERROR('#384: 2147483647 >> 11 === 1048575. Actual: ' + (2147483647 >> 11));
+}
+
+
+if (0 >> 12 !== 0) {
+ $ERROR('#385: 0 >> 12 === 0. Actual: ' + (0 >> 12));
+}
+
+
+if (1 >> 12 !== 0) {
+ $ERROR('#386: 1 >> 12 === 0. Actual: ' + (1 >> 12));
+}
+
+
+if (3 >> 12 !== 0) {
+ $ERROR('#387: 3 >> 12 === 0. Actual: ' + (3 >> 12));
+}
+
+
+if (7 >> 12 !== 0) {
+ $ERROR('#388: 7 >> 12 === 0. Actual: ' + (7 >> 12));
+}
+
+
+if (15 >> 12 !== 0) {
+ $ERROR('#389: 15 >> 12 === 0. Actual: ' + (15 >> 12));
+}
+
+
+if (31 >> 12 !== 0) {
+ $ERROR('#390: 31 >> 12 === 0. Actual: ' + (31 >> 12));
+}
+
+
+if (63 >> 12 !== 0) {
+ $ERROR('#391: 63 >> 12 === 0. Actual: ' + (63 >> 12));
+}
+
+
+if (127 >> 12 !== 0) {
+ $ERROR('#392: 127 >> 12 === 0. Actual: ' + (127 >> 12));
+}
+
+
+if (255 >> 12 !== 0) {
+ $ERROR('#393: 255 >> 12 === 0. Actual: ' + (255 >> 12));
+}
+
+
+if (511 >> 12 !== 0) {
+ $ERROR('#394: 511 >> 12 === 0. Actual: ' + (511 >> 12));
+}
+
+
+if (1023 >> 12 !== 0) {
+ $ERROR('#395: 1023 >> 12 === 0. Actual: ' + (1023 >> 12));
+}
+
+
+if (2047 >> 12 !== 0) {
+ $ERROR('#396: 2047 >> 12 === 0. Actual: ' + (2047 >> 12));
+}
+
+
+if (4095 >> 12 !== 0) {
+ $ERROR('#397: 4095 >> 12 === 0. Actual: ' + (4095 >> 12));
+}
+
+
+if (8191 >> 12 !== 1) {
+ $ERROR('#398: 8191 >> 12 === 1. Actual: ' + (8191 >> 12));
+}
+
+
+if (16383 >> 12 !== 3) {
+ $ERROR('#399: 16383 >> 12 === 3. Actual: ' + (16383 >> 12));
+}
+
+
+if (32767 >> 12 !== 7) {
+ $ERROR('#400: 32767 >> 12 === 7. Actual: ' + (32767 >> 12));
+}
+
+
+if (65535 >> 12 !== 15) {
+ $ERROR('#401: 65535 >> 12 === 15. Actual: ' + (65535 >> 12));
+}
+
+
+if (131071 >> 12 !== 31) {
+ $ERROR('#402: 131071 >> 12 === 31. Actual: ' + (131071 >> 12));
+}
+
+
+if (262143 >> 12 !== 63) {
+ $ERROR('#403: 262143 >> 12 === 63. Actual: ' + (262143 >> 12));
+}
+
+
+if (524287 >> 12 !== 127) {
+ $ERROR('#404: 524287 >> 12 === 127. Actual: ' + (524287 >> 12));
+}
+
+
+if (1048575 >> 12 !== 255) {
+ $ERROR('#405: 1048575 >> 12 === 255. Actual: ' + (1048575 >> 12));
+}
+
+
+if (2097151 >> 12 !== 511) {
+ $ERROR('#406: 2097151 >> 12 === 511. Actual: ' + (2097151 >> 12));
+}
+
+
+if (4194303 >> 12 !== 1023) {
+ $ERROR('#407: 4194303 >> 12 === 1023. Actual: ' + (4194303 >> 12));
+}
+
+
+if (8388607 >> 12 !== 2047) {
+ $ERROR('#408: 8388607 >> 12 === 2047. Actual: ' + (8388607 >> 12));
+}
+
+
+if (16777215 >> 12 !== 4095) {
+ $ERROR('#409: 16777215 >> 12 === 4095. Actual: ' + (16777215 >> 12));
+}
+
+
+if (33554431 >> 12 !== 8191) {
+ $ERROR('#410: 33554431 >> 12 === 8191. Actual: ' + (33554431 >> 12));
+}
+
+
+if (67108863 >> 12 !== 16383) {
+ $ERROR('#411: 67108863 >> 12 === 16383. Actual: ' + (67108863 >> 12));
+}
+
+
+if (134217727 >> 12 !== 32767) {
+ $ERROR('#412: 134217727 >> 12 === 32767. Actual: ' + (134217727 >> 12));
+}
+
+
+if (268435455 >> 12 !== 65535) {
+ $ERROR('#413: 268435455 >> 12 === 65535. Actual: ' + (268435455 >> 12));
+}
+
+
+if (536870911 >> 12 !== 131071) {
+ $ERROR('#414: 536870911 >> 12 === 131071. Actual: ' + (536870911 >> 12));
+}
+
+
+if (1073741823 >> 12 !== 262143) {
+ $ERROR('#415: 1073741823 >> 12 === 262143. Actual: ' + (1073741823 >> 12));
+}
+
+
+if (2147483647 >> 12 !== 524287) {
+ $ERROR('#416: 2147483647 >> 12 === 524287. Actual: ' + (2147483647 >> 12));
+}
+
+
+if (0 >> 13 !== 0) {
+ $ERROR('#417: 0 >> 13 === 0. Actual: ' + (0 >> 13));
+}
+
+
+if (1 >> 13 !== 0) {
+ $ERROR('#418: 1 >> 13 === 0. Actual: ' + (1 >> 13));
+}
+
+
+if (3 >> 13 !== 0) {
+ $ERROR('#419: 3 >> 13 === 0. Actual: ' + (3 >> 13));
+}
+
+
+if (7 >> 13 !== 0) {
+ $ERROR('#420: 7 >> 13 === 0. Actual: ' + (7 >> 13));
+}
+
+
+if (15 >> 13 !== 0) {
+ $ERROR('#421: 15 >> 13 === 0. Actual: ' + (15 >> 13));
+}
+
+
+if (31 >> 13 !== 0) {
+ $ERROR('#422: 31 >> 13 === 0. Actual: ' + (31 >> 13));
+}
+
+
+if (63 >> 13 !== 0) {
+ $ERROR('#423: 63 >> 13 === 0. Actual: ' + (63 >> 13));
+}
+
+
+if (127 >> 13 !== 0) {
+ $ERROR('#424: 127 >> 13 === 0. Actual: ' + (127 >> 13));
+}
+
+
+if (255 >> 13 !== 0) {
+ $ERROR('#425: 255 >> 13 === 0. Actual: ' + (255 >> 13));
+}
+
+
+if (511 >> 13 !== 0) {
+ $ERROR('#426: 511 >> 13 === 0. Actual: ' + (511 >> 13));
+}
+
+
+if (1023 >> 13 !== 0) {
+ $ERROR('#427: 1023 >> 13 === 0. Actual: ' + (1023 >> 13));
+}
+
+
+if (2047 >> 13 !== 0) {
+ $ERROR('#428: 2047 >> 13 === 0. Actual: ' + (2047 >> 13));
+}
+
+
+if (4095 >> 13 !== 0) {
+ $ERROR('#429: 4095 >> 13 === 0. Actual: ' + (4095 >> 13));
+}
+
+
+if (8191 >> 13 !== 0) {
+ $ERROR('#430: 8191 >> 13 === 0. Actual: ' + (8191 >> 13));
+}
+
+
+if (16383 >> 13 !== 1) {
+ $ERROR('#431: 16383 >> 13 === 1. Actual: ' + (16383 >> 13));
+}
+
+
+if (32767 >> 13 !== 3) {
+ $ERROR('#432: 32767 >> 13 === 3. Actual: ' + (32767 >> 13));
+}
+
+
+if (65535 >> 13 !== 7) {
+ $ERROR('#433: 65535 >> 13 === 7. Actual: ' + (65535 >> 13));
+}
+
+
+if (131071 >> 13 !== 15) {
+ $ERROR('#434: 131071 >> 13 === 15. Actual: ' + (131071 >> 13));
+}
+
+
+if (262143 >> 13 !== 31) {
+ $ERROR('#435: 262143 >> 13 === 31. Actual: ' + (262143 >> 13));
+}
+
+
+if (524287 >> 13 !== 63) {
+ $ERROR('#436: 524287 >> 13 === 63. Actual: ' + (524287 >> 13));
+}
+
+
+if (1048575 >> 13 !== 127) {
+ $ERROR('#437: 1048575 >> 13 === 127. Actual: ' + (1048575 >> 13));
+}
+
+
+if (2097151 >> 13 !== 255) {
+ $ERROR('#438: 2097151 >> 13 === 255. Actual: ' + (2097151 >> 13));
+}
+
+
+if (4194303 >> 13 !== 511) {
+ $ERROR('#439: 4194303 >> 13 === 511. Actual: ' + (4194303 >> 13));
+}
+
+
+if (8388607 >> 13 !== 1023) {
+ $ERROR('#440: 8388607 >> 13 === 1023. Actual: ' + (8388607 >> 13));
+}
+
+
+if (16777215 >> 13 !== 2047) {
+ $ERROR('#441: 16777215 >> 13 === 2047. Actual: ' + (16777215 >> 13));
+}
+
+
+if (33554431 >> 13 !== 4095) {
+ $ERROR('#442: 33554431 >> 13 === 4095. Actual: ' + (33554431 >> 13));
+}
+
+
+if (67108863 >> 13 !== 8191) {
+ $ERROR('#443: 67108863 >> 13 === 8191. Actual: ' + (67108863 >> 13));
+}
+
+
+if (134217727 >> 13 !== 16383) {
+ $ERROR('#444: 134217727 >> 13 === 16383. Actual: ' + (134217727 >> 13));
+}
+
+
+if (268435455 >> 13 !== 32767) {
+ $ERROR('#445: 268435455 >> 13 === 32767. Actual: ' + (268435455 >> 13));
+}
+
+
+if (536870911 >> 13 !== 65535) {
+ $ERROR('#446: 536870911 >> 13 === 65535. Actual: ' + (536870911 >> 13));
+}
+
+
+if (1073741823 >> 13 !== 131071) {
+ $ERROR('#447: 1073741823 >> 13 === 131071. Actual: ' + (1073741823 >> 13));
+}
+
+
+if (2147483647 >> 13 !== 262143) {
+ $ERROR('#448: 2147483647 >> 13 === 262143. Actual: ' + (2147483647 >> 13));
+}
+
+
+if (0 >> 14 !== 0) {
+ $ERROR('#449: 0 >> 14 === 0. Actual: ' + (0 >> 14));
+}
+
+
+if (1 >> 14 !== 0) {
+ $ERROR('#450: 1 >> 14 === 0. Actual: ' + (1 >> 14));
+}
+
+
+if (3 >> 14 !== 0) {
+ $ERROR('#451: 3 >> 14 === 0. Actual: ' + (3 >> 14));
+}
+
+
+if (7 >> 14 !== 0) {
+ $ERROR('#452: 7 >> 14 === 0. Actual: ' + (7 >> 14));
+}
+
+
+if (15 >> 14 !== 0) {
+ $ERROR('#453: 15 >> 14 === 0. Actual: ' + (15 >> 14));
+}
+
+
+if (31 >> 14 !== 0) {
+ $ERROR('#454: 31 >> 14 === 0. Actual: ' + (31 >> 14));
+}
+
+
+if (63 >> 14 !== 0) {
+ $ERROR('#455: 63 >> 14 === 0. Actual: ' + (63 >> 14));
+}
+
+
+if (127 >> 14 !== 0) {
+ $ERROR('#456: 127 >> 14 === 0. Actual: ' + (127 >> 14));
+}
+
+
+if (255 >> 14 !== 0) {
+ $ERROR('#457: 255 >> 14 === 0. Actual: ' + (255 >> 14));
+}
+
+
+if (511 >> 14 !== 0) {
+ $ERROR('#458: 511 >> 14 === 0. Actual: ' + (511 >> 14));
+}
+
+
+if (1023 >> 14 !== 0) {
+ $ERROR('#459: 1023 >> 14 === 0. Actual: ' + (1023 >> 14));
+}
+
+
+if (2047 >> 14 !== 0) {
+ $ERROR('#460: 2047 >> 14 === 0. Actual: ' + (2047 >> 14));
+}
+
+
+if (4095 >> 14 !== 0) {
+ $ERROR('#461: 4095 >> 14 === 0. Actual: ' + (4095 >> 14));
+}
+
+
+if (8191 >> 14 !== 0) {
+ $ERROR('#462: 8191 >> 14 === 0. Actual: ' + (8191 >> 14));
+}
+
+
+if (16383 >> 14 !== 0) {
+ $ERROR('#463: 16383 >> 14 === 0. Actual: ' + (16383 >> 14));
+}
+
+
+if (32767 >> 14 !== 1) {
+ $ERROR('#464: 32767 >> 14 === 1. Actual: ' + (32767 >> 14));
+}
+
+
+if (65535 >> 14 !== 3) {
+ $ERROR('#465: 65535 >> 14 === 3. Actual: ' + (65535 >> 14));
+}
+
+
+if (131071 >> 14 !== 7) {
+ $ERROR('#466: 131071 >> 14 === 7. Actual: ' + (131071 >> 14));
+}
+
+
+if (262143 >> 14 !== 15) {
+ $ERROR('#467: 262143 >> 14 === 15. Actual: ' + (262143 >> 14));
+}
+
+
+if (524287 >> 14 !== 31) {
+ $ERROR('#468: 524287 >> 14 === 31. Actual: ' + (524287 >> 14));
+}
+
+
+if (1048575 >> 14 !== 63) {
+ $ERROR('#469: 1048575 >> 14 === 63. Actual: ' + (1048575 >> 14));
+}
+
+
+if (2097151 >> 14 !== 127) {
+ $ERROR('#470: 2097151 >> 14 === 127. Actual: ' + (2097151 >> 14));
+}
+
+
+if (4194303 >> 14 !== 255) {
+ $ERROR('#471: 4194303 >> 14 === 255. Actual: ' + (4194303 >> 14));
+}
+
+
+if (8388607 >> 14 !== 511) {
+ $ERROR('#472: 8388607 >> 14 === 511. Actual: ' + (8388607 >> 14));
+}
+
+
+if (16777215 >> 14 !== 1023) {
+ $ERROR('#473: 16777215 >> 14 === 1023. Actual: ' + (16777215 >> 14));
+}
+
+
+if (33554431 >> 14 !== 2047) {
+ $ERROR('#474: 33554431 >> 14 === 2047. Actual: ' + (33554431 >> 14));
+}
+
+
+if (67108863 >> 14 !== 4095) {
+ $ERROR('#475: 67108863 >> 14 === 4095. Actual: ' + (67108863 >> 14));
+}
+
+
+if (134217727 >> 14 !== 8191) {
+ $ERROR('#476: 134217727 >> 14 === 8191. Actual: ' + (134217727 >> 14));
+}
+
+
+if (268435455 >> 14 !== 16383) {
+ $ERROR('#477: 268435455 >> 14 === 16383. Actual: ' + (268435455 >> 14));
+}
+
+
+if (536870911 >> 14 !== 32767) {
+ $ERROR('#478: 536870911 >> 14 === 32767. Actual: ' + (536870911 >> 14));
+}
+
+
+if (1073741823 >> 14 !== 65535) {
+ $ERROR('#479: 1073741823 >> 14 === 65535. Actual: ' + (1073741823 >> 14));
+}
+
+
+if (2147483647 >> 14 !== 131071) {
+ $ERROR('#480: 2147483647 >> 14 === 131071. Actual: ' + (2147483647 >> 14));
+}
+
+
+if (0 >> 15 !== 0) {
+ $ERROR('#481: 0 >> 15 === 0. Actual: ' + (0 >> 15));
+}
+
+
+if (1 >> 15 !== 0) {
+ $ERROR('#482: 1 >> 15 === 0. Actual: ' + (1 >> 15));
+}
+
+
+if (3 >> 15 !== 0) {
+ $ERROR('#483: 3 >> 15 === 0. Actual: ' + (3 >> 15));
+}
+
+
+if (7 >> 15 !== 0) {
+ $ERROR('#484: 7 >> 15 === 0. Actual: ' + (7 >> 15));
+}
+
+
+if (15 >> 15 !== 0) {
+ $ERROR('#485: 15 >> 15 === 0. Actual: ' + (15 >> 15));
+}
+
+
+if (31 >> 15 !== 0) {
+ $ERROR('#486: 31 >> 15 === 0. Actual: ' + (31 >> 15));
+}
+
+
+if (63 >> 15 !== 0) {
+ $ERROR('#487: 63 >> 15 === 0. Actual: ' + (63 >> 15));
+}
+
+
+if (127 >> 15 !== 0) {
+ $ERROR('#488: 127 >> 15 === 0. Actual: ' + (127 >> 15));
+}
+
+
+if (255 >> 15 !== 0) {
+ $ERROR('#489: 255 >> 15 === 0. Actual: ' + (255 >> 15));
+}
+
+
+if (511 >> 15 !== 0) {
+ $ERROR('#490: 511 >> 15 === 0. Actual: ' + (511 >> 15));
+}
+
+
+if (1023 >> 15 !== 0) {
+ $ERROR('#491: 1023 >> 15 === 0. Actual: ' + (1023 >> 15));
+}
+
+
+if (2047 >> 15 !== 0) {
+ $ERROR('#492: 2047 >> 15 === 0. Actual: ' + (2047 >> 15));
+}
+
+
+if (4095 >> 15 !== 0) {
+ $ERROR('#493: 4095 >> 15 === 0. Actual: ' + (4095 >> 15));
+}
+
+
+if (8191 >> 15 !== 0) {
+ $ERROR('#494: 8191 >> 15 === 0. Actual: ' + (8191 >> 15));
+}
+
+
+if (16383 >> 15 !== 0) {
+ $ERROR('#495: 16383 >> 15 === 0. Actual: ' + (16383 >> 15));
+}
+
+
+if (32767 >> 15 !== 0) {
+ $ERROR('#496: 32767 >> 15 === 0. Actual: ' + (32767 >> 15));
+}
+
+
+if (65535 >> 15 !== 1) {
+ $ERROR('#497: 65535 >> 15 === 1. Actual: ' + (65535 >> 15));
+}
+
+
+if (131071 >> 15 !== 3) {
+ $ERROR('#498: 131071 >> 15 === 3. Actual: ' + (131071 >> 15));
+}
+
+
+if (262143 >> 15 !== 7) {
+ $ERROR('#499: 262143 >> 15 === 7. Actual: ' + (262143 >> 15));
+}
+
+
+if (524287 >> 15 !== 15) {
+ $ERROR('#500: 524287 >> 15 === 15. Actual: ' + (524287 >> 15));
+}
+
+
+if (1048575 >> 15 !== 31) {
+ $ERROR('#501: 1048575 >> 15 === 31. Actual: ' + (1048575 >> 15));
+}
+
+
+if (2097151 >> 15 !== 63) {
+ $ERROR('#502: 2097151 >> 15 === 63. Actual: ' + (2097151 >> 15));
+}
+
+
+if (4194303 >> 15 !== 127) {
+ $ERROR('#503: 4194303 >> 15 === 127. Actual: ' + (4194303 >> 15));
+}
+
+
+if (8388607 >> 15 !== 255) {
+ $ERROR('#504: 8388607 >> 15 === 255. Actual: ' + (8388607 >> 15));
+}
+
+
+if (16777215 >> 15 !== 511) {
+ $ERROR('#505: 16777215 >> 15 === 511. Actual: ' + (16777215 >> 15));
+}
+
+
+if (33554431 >> 15 !== 1023) {
+ $ERROR('#506: 33554431 >> 15 === 1023. Actual: ' + (33554431 >> 15));
+}
+
+
+if (67108863 >> 15 !== 2047) {
+ $ERROR('#507: 67108863 >> 15 === 2047. Actual: ' + (67108863 >> 15));
+}
+
+
+if (134217727 >> 15 !== 4095) {
+ $ERROR('#508: 134217727 >> 15 === 4095. Actual: ' + (134217727 >> 15));
+}
+
+
+if (268435455 >> 15 !== 8191) {
+ $ERROR('#509: 268435455 >> 15 === 8191. Actual: ' + (268435455 >> 15));
+}
+
+
+if (536870911 >> 15 !== 16383) {
+ $ERROR('#510: 536870911 >> 15 === 16383. Actual: ' + (536870911 >> 15));
+}
+
+
+if (1073741823 >> 15 !== 32767) {
+ $ERROR('#511: 1073741823 >> 15 === 32767. Actual: ' + (1073741823 >> 15));
+}
+
+
+if (2147483647 >> 15 !== 65535) {
+ $ERROR('#512: 2147483647 >> 15 === 65535. Actual: ' + (2147483647 >> 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T4.js
new file mode 100644
index 000000000..04c473a1f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T4.js
@@ -0,0 +1,2565 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A4_T4;
+ * @section: 11.7.2;
+ * @assertion: Check x >> y operator in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (0 >> 16 !== 0) {
+ $ERROR('#513: 0 >> 16 === 0. Actual: ' + (0 >> 16));
+}
+
+
+if (1 >> 16 !== 0) {
+ $ERROR('#514: 1 >> 16 === 0. Actual: ' + (1 >> 16));
+}
+
+
+if (3 >> 16 !== 0) {
+ $ERROR('#515: 3 >> 16 === 0. Actual: ' + (3 >> 16));
+}
+
+
+if (7 >> 16 !== 0) {
+ $ERROR('#516: 7 >> 16 === 0. Actual: ' + (7 >> 16));
+}
+
+
+if (15 >> 16 !== 0) {
+ $ERROR('#517: 15 >> 16 === 0. Actual: ' + (15 >> 16));
+}
+
+
+if (31 >> 16 !== 0) {
+ $ERROR('#518: 31 >> 16 === 0. Actual: ' + (31 >> 16));
+}
+
+
+if (63 >> 16 !== 0) {
+ $ERROR('#519: 63 >> 16 === 0. Actual: ' + (63 >> 16));
+}
+
+
+if (127 >> 16 !== 0) {
+ $ERROR('#520: 127 >> 16 === 0. Actual: ' + (127 >> 16));
+}
+
+
+if (255 >> 16 !== 0) {
+ $ERROR('#521: 255 >> 16 === 0. Actual: ' + (255 >> 16));
+}
+
+
+if (511 >> 16 !== 0) {
+ $ERROR('#522: 511 >> 16 === 0. Actual: ' + (511 >> 16));
+}
+
+
+if (1023 >> 16 !== 0) {
+ $ERROR('#523: 1023 >> 16 === 0. Actual: ' + (1023 >> 16));
+}
+
+
+if (2047 >> 16 !== 0) {
+ $ERROR('#524: 2047 >> 16 === 0. Actual: ' + (2047 >> 16));
+}
+
+
+if (4095 >> 16 !== 0) {
+ $ERROR('#525: 4095 >> 16 === 0. Actual: ' + (4095 >> 16));
+}
+
+
+if (8191 >> 16 !== 0) {
+ $ERROR('#526: 8191 >> 16 === 0. Actual: ' + (8191 >> 16));
+}
+
+
+if (16383 >> 16 !== 0) {
+ $ERROR('#527: 16383 >> 16 === 0. Actual: ' + (16383 >> 16));
+}
+
+
+if (32767 >> 16 !== 0) {
+ $ERROR('#528: 32767 >> 16 === 0. Actual: ' + (32767 >> 16));
+}
+
+
+if (65535 >> 16 !== 0) {
+ $ERROR('#529: 65535 >> 16 === 0. Actual: ' + (65535 >> 16));
+}
+
+
+if (131071 >> 16 !== 1) {
+ $ERROR('#530: 131071 >> 16 === 1. Actual: ' + (131071 >> 16));
+}
+
+
+if (262143 >> 16 !== 3) {
+ $ERROR('#531: 262143 >> 16 === 3. Actual: ' + (262143 >> 16));
+}
+
+
+if (524287 >> 16 !== 7) {
+ $ERROR('#532: 524287 >> 16 === 7. Actual: ' + (524287 >> 16));
+}
+
+
+if (1048575 >> 16 !== 15) {
+ $ERROR('#533: 1048575 >> 16 === 15. Actual: ' + (1048575 >> 16));
+}
+
+
+if (2097151 >> 16 !== 31) {
+ $ERROR('#534: 2097151 >> 16 === 31. Actual: ' + (2097151 >> 16));
+}
+
+
+if (4194303 >> 16 !== 63) {
+ $ERROR('#535: 4194303 >> 16 === 63. Actual: ' + (4194303 >> 16));
+}
+
+
+if (8388607 >> 16 !== 127) {
+ $ERROR('#536: 8388607 >> 16 === 127. Actual: ' + (8388607 >> 16));
+}
+
+
+if (16777215 >> 16 !== 255) {
+ $ERROR('#537: 16777215 >> 16 === 255. Actual: ' + (16777215 >> 16));
+}
+
+
+if (33554431 >> 16 !== 511) {
+ $ERROR('#538: 33554431 >> 16 === 511. Actual: ' + (33554431 >> 16));
+}
+
+
+if (67108863 >> 16 !== 1023) {
+ $ERROR('#539: 67108863 >> 16 === 1023. Actual: ' + (67108863 >> 16));
+}
+
+
+if (134217727 >> 16 !== 2047) {
+ $ERROR('#540: 134217727 >> 16 === 2047. Actual: ' + (134217727 >> 16));
+}
+
+
+if (268435455 >> 16 !== 4095) {
+ $ERROR('#541: 268435455 >> 16 === 4095. Actual: ' + (268435455 >> 16));
+}
+
+
+if (536870911 >> 16 !== 8191) {
+ $ERROR('#542: 536870911 >> 16 === 8191. Actual: ' + (536870911 >> 16));
+}
+
+
+if (1073741823 >> 16 !== 16383) {
+ $ERROR('#543: 1073741823 >> 16 === 16383. Actual: ' + (1073741823 >> 16));
+}
+
+
+if (2147483647 >> 16 !== 32767) {
+ $ERROR('#544: 2147483647 >> 16 === 32767. Actual: ' + (2147483647 >> 16));
+}
+
+
+if (0 >> 17 !== 0) {
+ $ERROR('#545: 0 >> 17 === 0. Actual: ' + (0 >> 17));
+}
+
+
+if (1 >> 17 !== 0) {
+ $ERROR('#546: 1 >> 17 === 0. Actual: ' + (1 >> 17));
+}
+
+
+if (3 >> 17 !== 0) {
+ $ERROR('#547: 3 >> 17 === 0. Actual: ' + (3 >> 17));
+}
+
+
+if (7 >> 17 !== 0) {
+ $ERROR('#548: 7 >> 17 === 0. Actual: ' + (7 >> 17));
+}
+
+
+if (15 >> 17 !== 0) {
+ $ERROR('#549: 15 >> 17 === 0. Actual: ' + (15 >> 17));
+}
+
+
+if (31 >> 17 !== 0) {
+ $ERROR('#550: 31 >> 17 === 0. Actual: ' + (31 >> 17));
+}
+
+
+if (63 >> 17 !== 0) {
+ $ERROR('#551: 63 >> 17 === 0. Actual: ' + (63 >> 17));
+}
+
+
+if (127 >> 17 !== 0) {
+ $ERROR('#552: 127 >> 17 === 0. Actual: ' + (127 >> 17));
+}
+
+
+if (255 >> 17 !== 0) {
+ $ERROR('#553: 255 >> 17 === 0. Actual: ' + (255 >> 17));
+}
+
+
+if (511 >> 17 !== 0) {
+ $ERROR('#554: 511 >> 17 === 0. Actual: ' + (511 >> 17));
+}
+
+
+if (1023 >> 17 !== 0) {
+ $ERROR('#555: 1023 >> 17 === 0. Actual: ' + (1023 >> 17));
+}
+
+
+if (2047 >> 17 !== 0) {
+ $ERROR('#556: 2047 >> 17 === 0. Actual: ' + (2047 >> 17));
+}
+
+
+if (4095 >> 17 !== 0) {
+ $ERROR('#557: 4095 >> 17 === 0. Actual: ' + (4095 >> 17));
+}
+
+
+if (8191 >> 17 !== 0) {
+ $ERROR('#558: 8191 >> 17 === 0. Actual: ' + (8191 >> 17));
+}
+
+
+if (16383 >> 17 !== 0) {
+ $ERROR('#559: 16383 >> 17 === 0. Actual: ' + (16383 >> 17));
+}
+
+
+if (32767 >> 17 !== 0) {
+ $ERROR('#560: 32767 >> 17 === 0. Actual: ' + (32767 >> 17));
+}
+
+
+if (65535 >> 17 !== 0) {
+ $ERROR('#561: 65535 >> 17 === 0. Actual: ' + (65535 >> 17));
+}
+
+
+if (131071 >> 17 !== 0) {
+ $ERROR('#562: 131071 >> 17 === 0. Actual: ' + (131071 >> 17));
+}
+
+
+if (262143 >> 17 !== 1) {
+ $ERROR('#563: 262143 >> 17 === 1. Actual: ' + (262143 >> 17));
+}
+
+
+if (524287 >> 17 !== 3) {
+ $ERROR('#564: 524287 >> 17 === 3. Actual: ' + (524287 >> 17));
+}
+
+
+if (1048575 >> 17 !== 7) {
+ $ERROR('#565: 1048575 >> 17 === 7. Actual: ' + (1048575 >> 17));
+}
+
+
+if (2097151 >> 17 !== 15) {
+ $ERROR('#566: 2097151 >> 17 === 15. Actual: ' + (2097151 >> 17));
+}
+
+
+if (4194303 >> 17 !== 31) {
+ $ERROR('#567: 4194303 >> 17 === 31. Actual: ' + (4194303 >> 17));
+}
+
+
+if (8388607 >> 17 !== 63) {
+ $ERROR('#568: 8388607 >> 17 === 63. Actual: ' + (8388607 >> 17));
+}
+
+
+if (16777215 >> 17 !== 127) {
+ $ERROR('#569: 16777215 >> 17 === 127. Actual: ' + (16777215 >> 17));
+}
+
+
+if (33554431 >> 17 !== 255) {
+ $ERROR('#570: 33554431 >> 17 === 255. Actual: ' + (33554431 >> 17));
+}
+
+
+if (67108863 >> 17 !== 511) {
+ $ERROR('#571: 67108863 >> 17 === 511. Actual: ' + (67108863 >> 17));
+}
+
+
+if (134217727 >> 17 !== 1023) {
+ $ERROR('#572: 134217727 >> 17 === 1023. Actual: ' + (134217727 >> 17));
+}
+
+
+if (268435455 >> 17 !== 2047) {
+ $ERROR('#573: 268435455 >> 17 === 2047. Actual: ' + (268435455 >> 17));
+}
+
+
+if (536870911 >> 17 !== 4095) {
+ $ERROR('#574: 536870911 >> 17 === 4095. Actual: ' + (536870911 >> 17));
+}
+
+
+if (1073741823 >> 17 !== 8191) {
+ $ERROR('#575: 1073741823 >> 17 === 8191. Actual: ' + (1073741823 >> 17));
+}
+
+
+if (2147483647 >> 17 !== 16383) {
+ $ERROR('#576: 2147483647 >> 17 === 16383. Actual: ' + (2147483647 >> 17));
+}
+
+
+if (0 >> 18 !== 0) {
+ $ERROR('#577: 0 >> 18 === 0. Actual: ' + (0 >> 18));
+}
+
+
+if (1 >> 18 !== 0) {
+ $ERROR('#578: 1 >> 18 === 0. Actual: ' + (1 >> 18));
+}
+
+
+if (3 >> 18 !== 0) {
+ $ERROR('#579: 3 >> 18 === 0. Actual: ' + (3 >> 18));
+}
+
+
+if (7 >> 18 !== 0) {
+ $ERROR('#580: 7 >> 18 === 0. Actual: ' + (7 >> 18));
+}
+
+
+if (15 >> 18 !== 0) {
+ $ERROR('#581: 15 >> 18 === 0. Actual: ' + (15 >> 18));
+}
+
+
+if (31 >> 18 !== 0) {
+ $ERROR('#582: 31 >> 18 === 0. Actual: ' + (31 >> 18));
+}
+
+
+if (63 >> 18 !== 0) {
+ $ERROR('#583: 63 >> 18 === 0. Actual: ' + (63 >> 18));
+}
+
+
+if (127 >> 18 !== 0) {
+ $ERROR('#584: 127 >> 18 === 0. Actual: ' + (127 >> 18));
+}
+
+
+if (255 >> 18 !== 0) {
+ $ERROR('#585: 255 >> 18 === 0. Actual: ' + (255 >> 18));
+}
+
+
+if (511 >> 18 !== 0) {
+ $ERROR('#586: 511 >> 18 === 0. Actual: ' + (511 >> 18));
+}
+
+
+if (1023 >> 18 !== 0) {
+ $ERROR('#587: 1023 >> 18 === 0. Actual: ' + (1023 >> 18));
+}
+
+
+if (2047 >> 18 !== 0) {
+ $ERROR('#588: 2047 >> 18 === 0. Actual: ' + (2047 >> 18));
+}
+
+
+if (4095 >> 18 !== 0) {
+ $ERROR('#589: 4095 >> 18 === 0. Actual: ' + (4095 >> 18));
+}
+
+
+if (8191 >> 18 !== 0) {
+ $ERROR('#590: 8191 >> 18 === 0. Actual: ' + (8191 >> 18));
+}
+
+
+if (16383 >> 18 !== 0) {
+ $ERROR('#591: 16383 >> 18 === 0. Actual: ' + (16383 >> 18));
+}
+
+
+if (32767 >> 18 !== 0) {
+ $ERROR('#592: 32767 >> 18 === 0. Actual: ' + (32767 >> 18));
+}
+
+
+if (65535 >> 18 !== 0) {
+ $ERROR('#593: 65535 >> 18 === 0. Actual: ' + (65535 >> 18));
+}
+
+
+if (131071 >> 18 !== 0) {
+ $ERROR('#594: 131071 >> 18 === 0. Actual: ' + (131071 >> 18));
+}
+
+
+if (262143 >> 18 !== 0) {
+ $ERROR('#595: 262143 >> 18 === 0. Actual: ' + (262143 >> 18));
+}
+
+
+if (524287 >> 18 !== 1) {
+ $ERROR('#596: 524287 >> 18 === 1. Actual: ' + (524287 >> 18));
+}
+
+
+if (1048575 >> 18 !== 3) {
+ $ERROR('#597: 1048575 >> 18 === 3. Actual: ' + (1048575 >> 18));
+}
+
+
+if (2097151 >> 18 !== 7) {
+ $ERROR('#598: 2097151 >> 18 === 7. Actual: ' + (2097151 >> 18));
+}
+
+
+if (4194303 >> 18 !== 15) {
+ $ERROR('#599: 4194303 >> 18 === 15. Actual: ' + (4194303 >> 18));
+}
+
+
+if (8388607 >> 18 !== 31) {
+ $ERROR('#600: 8388607 >> 18 === 31. Actual: ' + (8388607 >> 18));
+}
+
+
+if (16777215 >> 18 !== 63) {
+ $ERROR('#601: 16777215 >> 18 === 63. Actual: ' + (16777215 >> 18));
+}
+
+
+if (33554431 >> 18 !== 127) {
+ $ERROR('#602: 33554431 >> 18 === 127. Actual: ' + (33554431 >> 18));
+}
+
+
+if (67108863 >> 18 !== 255) {
+ $ERROR('#603: 67108863 >> 18 === 255. Actual: ' + (67108863 >> 18));
+}
+
+
+if (134217727 >> 18 !== 511) {
+ $ERROR('#604: 134217727 >> 18 === 511. Actual: ' + (134217727 >> 18));
+}
+
+
+if (268435455 >> 18 !== 1023) {
+ $ERROR('#605: 268435455 >> 18 === 1023. Actual: ' + (268435455 >> 18));
+}
+
+
+if (536870911 >> 18 !== 2047) {
+ $ERROR('#606: 536870911 >> 18 === 2047. Actual: ' + (536870911 >> 18));
+}
+
+
+if (1073741823 >> 18 !== 4095) {
+ $ERROR('#607: 1073741823 >> 18 === 4095. Actual: ' + (1073741823 >> 18));
+}
+
+
+if (2147483647 >> 18 !== 8191) {
+ $ERROR('#608: 2147483647 >> 18 === 8191. Actual: ' + (2147483647 >> 18));
+}
+
+
+if (0 >> 19 !== 0) {
+ $ERROR('#609: 0 >> 19 === 0. Actual: ' + (0 >> 19));
+}
+
+
+if (1 >> 19 !== 0) {
+ $ERROR('#610: 1 >> 19 === 0. Actual: ' + (1 >> 19));
+}
+
+
+if (3 >> 19 !== 0) {
+ $ERROR('#611: 3 >> 19 === 0. Actual: ' + (3 >> 19));
+}
+
+
+if (7 >> 19 !== 0) {
+ $ERROR('#612: 7 >> 19 === 0. Actual: ' + (7 >> 19));
+}
+
+
+if (15 >> 19 !== 0) {
+ $ERROR('#613: 15 >> 19 === 0. Actual: ' + (15 >> 19));
+}
+
+
+if (31 >> 19 !== 0) {
+ $ERROR('#614: 31 >> 19 === 0. Actual: ' + (31 >> 19));
+}
+
+
+if (63 >> 19 !== 0) {
+ $ERROR('#615: 63 >> 19 === 0. Actual: ' + (63 >> 19));
+}
+
+
+if (127 >> 19 !== 0) {
+ $ERROR('#616: 127 >> 19 === 0. Actual: ' + (127 >> 19));
+}
+
+
+if (255 >> 19 !== 0) {
+ $ERROR('#617: 255 >> 19 === 0. Actual: ' + (255 >> 19));
+}
+
+
+if (511 >> 19 !== 0) {
+ $ERROR('#618: 511 >> 19 === 0. Actual: ' + (511 >> 19));
+}
+
+
+if (1023 >> 19 !== 0) {
+ $ERROR('#619: 1023 >> 19 === 0. Actual: ' + (1023 >> 19));
+}
+
+
+if (2047 >> 19 !== 0) {
+ $ERROR('#620: 2047 >> 19 === 0. Actual: ' + (2047 >> 19));
+}
+
+
+if (4095 >> 19 !== 0) {
+ $ERROR('#621: 4095 >> 19 === 0. Actual: ' + (4095 >> 19));
+}
+
+
+if (8191 >> 19 !== 0) {
+ $ERROR('#622: 8191 >> 19 === 0. Actual: ' + (8191 >> 19));
+}
+
+
+if (16383 >> 19 !== 0) {
+ $ERROR('#623: 16383 >> 19 === 0. Actual: ' + (16383 >> 19));
+}
+
+
+if (32767 >> 19 !== 0) {
+ $ERROR('#624: 32767 >> 19 === 0. Actual: ' + (32767 >> 19));
+}
+
+
+if (65535 >> 19 !== 0) {
+ $ERROR('#625: 65535 >> 19 === 0. Actual: ' + (65535 >> 19));
+}
+
+
+if (131071 >> 19 !== 0) {
+ $ERROR('#626: 131071 >> 19 === 0. Actual: ' + (131071 >> 19));
+}
+
+
+if (262143 >> 19 !== 0) {
+ $ERROR('#627: 262143 >> 19 === 0. Actual: ' + (262143 >> 19));
+}
+
+
+if (524287 >> 19 !== 0) {
+ $ERROR('#628: 524287 >> 19 === 0. Actual: ' + (524287 >> 19));
+}
+
+
+if (1048575 >> 19 !== 1) {
+ $ERROR('#629: 1048575 >> 19 === 1. Actual: ' + (1048575 >> 19));
+}
+
+
+if (2097151 >> 19 !== 3) {
+ $ERROR('#630: 2097151 >> 19 === 3. Actual: ' + (2097151 >> 19));
+}
+
+
+if (4194303 >> 19 !== 7) {
+ $ERROR('#631: 4194303 >> 19 === 7. Actual: ' + (4194303 >> 19));
+}
+
+
+if (8388607 >> 19 !== 15) {
+ $ERROR('#632: 8388607 >> 19 === 15. Actual: ' + (8388607 >> 19));
+}
+
+
+if (16777215 >> 19 !== 31) {
+ $ERROR('#633: 16777215 >> 19 === 31. Actual: ' + (16777215 >> 19));
+}
+
+
+if (33554431 >> 19 !== 63) {
+ $ERROR('#634: 33554431 >> 19 === 63. Actual: ' + (33554431 >> 19));
+}
+
+
+if (67108863 >> 19 !== 127) {
+ $ERROR('#635: 67108863 >> 19 === 127. Actual: ' + (67108863 >> 19));
+}
+
+
+if (134217727 >> 19 !== 255) {
+ $ERROR('#636: 134217727 >> 19 === 255. Actual: ' + (134217727 >> 19));
+}
+
+
+if (268435455 >> 19 !== 511) {
+ $ERROR('#637: 268435455 >> 19 === 511. Actual: ' + (268435455 >> 19));
+}
+
+
+if (536870911 >> 19 !== 1023) {
+ $ERROR('#638: 536870911 >> 19 === 1023. Actual: ' + (536870911 >> 19));
+}
+
+
+if (1073741823 >> 19 !== 2047) {
+ $ERROR('#639: 1073741823 >> 19 === 2047. Actual: ' + (1073741823 >> 19));
+}
+
+
+if (2147483647 >> 19 !== 4095) {
+ $ERROR('#640: 2147483647 >> 19 === 4095. Actual: ' + (2147483647 >> 19));
+}
+
+
+if (0 >> 20 !== 0) {
+ $ERROR('#641: 0 >> 20 === 0. Actual: ' + (0 >> 20));
+}
+
+
+if (1 >> 20 !== 0) {
+ $ERROR('#642: 1 >> 20 === 0. Actual: ' + (1 >> 20));
+}
+
+
+if (3 >> 20 !== 0) {
+ $ERROR('#643: 3 >> 20 === 0. Actual: ' + (3 >> 20));
+}
+
+
+if (7 >> 20 !== 0) {
+ $ERROR('#644: 7 >> 20 === 0. Actual: ' + (7 >> 20));
+}
+
+
+if (15 >> 20 !== 0) {
+ $ERROR('#645: 15 >> 20 === 0. Actual: ' + (15 >> 20));
+}
+
+
+if (31 >> 20 !== 0) {
+ $ERROR('#646: 31 >> 20 === 0. Actual: ' + (31 >> 20));
+}
+
+
+if (63 >> 20 !== 0) {
+ $ERROR('#647: 63 >> 20 === 0. Actual: ' + (63 >> 20));
+}
+
+
+if (127 >> 20 !== 0) {
+ $ERROR('#648: 127 >> 20 === 0. Actual: ' + (127 >> 20));
+}
+
+
+if (255 >> 20 !== 0) {
+ $ERROR('#649: 255 >> 20 === 0. Actual: ' + (255 >> 20));
+}
+
+
+if (511 >> 20 !== 0) {
+ $ERROR('#650: 511 >> 20 === 0. Actual: ' + (511 >> 20));
+}
+
+
+if (1023 >> 20 !== 0) {
+ $ERROR('#651: 1023 >> 20 === 0. Actual: ' + (1023 >> 20));
+}
+
+
+if (2047 >> 20 !== 0) {
+ $ERROR('#652: 2047 >> 20 === 0. Actual: ' + (2047 >> 20));
+}
+
+
+if (4095 >> 20 !== 0) {
+ $ERROR('#653: 4095 >> 20 === 0. Actual: ' + (4095 >> 20));
+}
+
+
+if (8191 >> 20 !== 0) {
+ $ERROR('#654: 8191 >> 20 === 0. Actual: ' + (8191 >> 20));
+}
+
+
+if (16383 >> 20 !== 0) {
+ $ERROR('#655: 16383 >> 20 === 0. Actual: ' + (16383 >> 20));
+}
+
+
+if (32767 >> 20 !== 0) {
+ $ERROR('#656: 32767 >> 20 === 0. Actual: ' + (32767 >> 20));
+}
+
+
+if (65535 >> 20 !== 0) {
+ $ERROR('#657: 65535 >> 20 === 0. Actual: ' + (65535 >> 20));
+}
+
+
+if (131071 >> 20 !== 0) {
+ $ERROR('#658: 131071 >> 20 === 0. Actual: ' + (131071 >> 20));
+}
+
+
+if (262143 >> 20 !== 0) {
+ $ERROR('#659: 262143 >> 20 === 0. Actual: ' + (262143 >> 20));
+}
+
+
+if (524287 >> 20 !== 0) {
+ $ERROR('#660: 524287 >> 20 === 0. Actual: ' + (524287 >> 20));
+}
+
+
+if (1048575 >> 20 !== 0) {
+ $ERROR('#661: 1048575 >> 20 === 0. Actual: ' + (1048575 >> 20));
+}
+
+
+if (2097151 >> 20 !== 1) {
+ $ERROR('#662: 2097151 >> 20 === 1. Actual: ' + (2097151 >> 20));
+}
+
+
+if (4194303 >> 20 !== 3) {
+ $ERROR('#663: 4194303 >> 20 === 3. Actual: ' + (4194303 >> 20));
+}
+
+
+if (8388607 >> 20 !== 7) {
+ $ERROR('#664: 8388607 >> 20 === 7. Actual: ' + (8388607 >> 20));
+}
+
+
+if (16777215 >> 20 !== 15) {
+ $ERROR('#665: 16777215 >> 20 === 15. Actual: ' + (16777215 >> 20));
+}
+
+
+if (33554431 >> 20 !== 31) {
+ $ERROR('#666: 33554431 >> 20 === 31. Actual: ' + (33554431 >> 20));
+}
+
+
+if (67108863 >> 20 !== 63) {
+ $ERROR('#667: 67108863 >> 20 === 63. Actual: ' + (67108863 >> 20));
+}
+
+
+if (134217727 >> 20 !== 127) {
+ $ERROR('#668: 134217727 >> 20 === 127. Actual: ' + (134217727 >> 20));
+}
+
+
+if (268435455 >> 20 !== 255) {
+ $ERROR('#669: 268435455 >> 20 === 255. Actual: ' + (268435455 >> 20));
+}
+
+
+if (536870911 >> 20 !== 511) {
+ $ERROR('#670: 536870911 >> 20 === 511. Actual: ' + (536870911 >> 20));
+}
+
+
+if (1073741823 >> 20 !== 1023) {
+ $ERROR('#671: 1073741823 >> 20 === 1023. Actual: ' + (1073741823 >> 20));
+}
+
+
+if (2147483647 >> 20 !== 2047) {
+ $ERROR('#672: 2147483647 >> 20 === 2047. Actual: ' + (2147483647 >> 20));
+}
+
+
+if (0 >> 21 !== 0) {
+ $ERROR('#673: 0 >> 21 === 0. Actual: ' + (0 >> 21));
+}
+
+
+if (1 >> 21 !== 0) {
+ $ERROR('#674: 1 >> 21 === 0. Actual: ' + (1 >> 21));
+}
+
+
+if (3 >> 21 !== 0) {
+ $ERROR('#675: 3 >> 21 === 0. Actual: ' + (3 >> 21));
+}
+
+
+if (7 >> 21 !== 0) {
+ $ERROR('#676: 7 >> 21 === 0. Actual: ' + (7 >> 21));
+}
+
+
+if (15 >> 21 !== 0) {
+ $ERROR('#677: 15 >> 21 === 0. Actual: ' + (15 >> 21));
+}
+
+
+if (31 >> 21 !== 0) {
+ $ERROR('#678: 31 >> 21 === 0. Actual: ' + (31 >> 21));
+}
+
+
+if (63 >> 21 !== 0) {
+ $ERROR('#679: 63 >> 21 === 0. Actual: ' + (63 >> 21));
+}
+
+
+if (127 >> 21 !== 0) {
+ $ERROR('#680: 127 >> 21 === 0. Actual: ' + (127 >> 21));
+}
+
+
+if (255 >> 21 !== 0) {
+ $ERROR('#681: 255 >> 21 === 0. Actual: ' + (255 >> 21));
+}
+
+
+if (511 >> 21 !== 0) {
+ $ERROR('#682: 511 >> 21 === 0. Actual: ' + (511 >> 21));
+}
+
+
+if (1023 >> 21 !== 0) {
+ $ERROR('#683: 1023 >> 21 === 0. Actual: ' + (1023 >> 21));
+}
+
+
+if (2047 >> 21 !== 0) {
+ $ERROR('#684: 2047 >> 21 === 0. Actual: ' + (2047 >> 21));
+}
+
+
+if (4095 >> 21 !== 0) {
+ $ERROR('#685: 4095 >> 21 === 0. Actual: ' + (4095 >> 21));
+}
+
+
+if (8191 >> 21 !== 0) {
+ $ERROR('#686: 8191 >> 21 === 0. Actual: ' + (8191 >> 21));
+}
+
+
+if (16383 >> 21 !== 0) {
+ $ERROR('#687: 16383 >> 21 === 0. Actual: ' + (16383 >> 21));
+}
+
+
+if (32767 >> 21 !== 0) {
+ $ERROR('#688: 32767 >> 21 === 0. Actual: ' + (32767 >> 21));
+}
+
+
+if (65535 >> 21 !== 0) {
+ $ERROR('#689: 65535 >> 21 === 0. Actual: ' + (65535 >> 21));
+}
+
+
+if (131071 >> 21 !== 0) {
+ $ERROR('#690: 131071 >> 21 === 0. Actual: ' + (131071 >> 21));
+}
+
+
+if (262143 >> 21 !== 0) {
+ $ERROR('#691: 262143 >> 21 === 0. Actual: ' + (262143 >> 21));
+}
+
+
+if (524287 >> 21 !== 0) {
+ $ERROR('#692: 524287 >> 21 === 0. Actual: ' + (524287 >> 21));
+}
+
+
+if (1048575 >> 21 !== 0) {
+ $ERROR('#693: 1048575 >> 21 === 0. Actual: ' + (1048575 >> 21));
+}
+
+
+if (2097151 >> 21 !== 0) {
+ $ERROR('#694: 2097151 >> 21 === 0. Actual: ' + (2097151 >> 21));
+}
+
+
+if (4194303 >> 21 !== 1) {
+ $ERROR('#695: 4194303 >> 21 === 1. Actual: ' + (4194303 >> 21));
+}
+
+
+if (8388607 >> 21 !== 3) {
+ $ERROR('#696: 8388607 >> 21 === 3. Actual: ' + (8388607 >> 21));
+}
+
+
+if (16777215 >> 21 !== 7) {
+ $ERROR('#697: 16777215 >> 21 === 7. Actual: ' + (16777215 >> 21));
+}
+
+
+if (33554431 >> 21 !== 15) {
+ $ERROR('#698: 33554431 >> 21 === 15. Actual: ' + (33554431 >> 21));
+}
+
+
+if (67108863 >> 21 !== 31) {
+ $ERROR('#699: 67108863 >> 21 === 31. Actual: ' + (67108863 >> 21));
+}
+
+
+if (134217727 >> 21 !== 63) {
+ $ERROR('#700: 134217727 >> 21 === 63. Actual: ' + (134217727 >> 21));
+}
+
+
+if (268435455 >> 21 !== 127) {
+ $ERROR('#701: 268435455 >> 21 === 127. Actual: ' + (268435455 >> 21));
+}
+
+
+if (536870911 >> 21 !== 255) {
+ $ERROR('#702: 536870911 >> 21 === 255. Actual: ' + (536870911 >> 21));
+}
+
+
+if (1073741823 >> 21 !== 511) {
+ $ERROR('#703: 1073741823 >> 21 === 511. Actual: ' + (1073741823 >> 21));
+}
+
+
+if (2147483647 >> 21 !== 1023) {
+ $ERROR('#704: 2147483647 >> 21 === 1023. Actual: ' + (2147483647 >> 21));
+}
+
+
+if (0 >> 22 !== 0) {
+ $ERROR('#705: 0 >> 22 === 0. Actual: ' + (0 >> 22));
+}
+
+
+if (1 >> 22 !== 0) {
+ $ERROR('#706: 1 >> 22 === 0. Actual: ' + (1 >> 22));
+}
+
+
+if (3 >> 22 !== 0) {
+ $ERROR('#707: 3 >> 22 === 0. Actual: ' + (3 >> 22));
+}
+
+
+if (7 >> 22 !== 0) {
+ $ERROR('#708: 7 >> 22 === 0. Actual: ' + (7 >> 22));
+}
+
+
+if (15 >> 22 !== 0) {
+ $ERROR('#709: 15 >> 22 === 0. Actual: ' + (15 >> 22));
+}
+
+
+if (31 >> 22 !== 0) {
+ $ERROR('#710: 31 >> 22 === 0. Actual: ' + (31 >> 22));
+}
+
+
+if (63 >> 22 !== 0) {
+ $ERROR('#711: 63 >> 22 === 0. Actual: ' + (63 >> 22));
+}
+
+
+if (127 >> 22 !== 0) {
+ $ERROR('#712: 127 >> 22 === 0. Actual: ' + (127 >> 22));
+}
+
+
+if (255 >> 22 !== 0) {
+ $ERROR('#713: 255 >> 22 === 0. Actual: ' + (255 >> 22));
+}
+
+
+if (511 >> 22 !== 0) {
+ $ERROR('#714: 511 >> 22 === 0. Actual: ' + (511 >> 22));
+}
+
+
+if (1023 >> 22 !== 0) {
+ $ERROR('#715: 1023 >> 22 === 0. Actual: ' + (1023 >> 22));
+}
+
+
+if (2047 >> 22 !== 0) {
+ $ERROR('#716: 2047 >> 22 === 0. Actual: ' + (2047 >> 22));
+}
+
+
+if (4095 >> 22 !== 0) {
+ $ERROR('#717: 4095 >> 22 === 0. Actual: ' + (4095 >> 22));
+}
+
+
+if (8191 >> 22 !== 0) {
+ $ERROR('#718: 8191 >> 22 === 0. Actual: ' + (8191 >> 22));
+}
+
+
+if (16383 >> 22 !== 0) {
+ $ERROR('#719: 16383 >> 22 === 0. Actual: ' + (16383 >> 22));
+}
+
+
+if (32767 >> 22 !== 0) {
+ $ERROR('#720: 32767 >> 22 === 0. Actual: ' + (32767 >> 22));
+}
+
+
+if (65535 >> 22 !== 0) {
+ $ERROR('#721: 65535 >> 22 === 0. Actual: ' + (65535 >> 22));
+}
+
+
+if (131071 >> 22 !== 0) {
+ $ERROR('#722: 131071 >> 22 === 0. Actual: ' + (131071 >> 22));
+}
+
+
+if (262143 >> 22 !== 0) {
+ $ERROR('#723: 262143 >> 22 === 0. Actual: ' + (262143 >> 22));
+}
+
+
+if (524287 >> 22 !== 0) {
+ $ERROR('#724: 524287 >> 22 === 0. Actual: ' + (524287 >> 22));
+}
+
+
+if (1048575 >> 22 !== 0) {
+ $ERROR('#725: 1048575 >> 22 === 0. Actual: ' + (1048575 >> 22));
+}
+
+
+if (2097151 >> 22 !== 0) {
+ $ERROR('#726: 2097151 >> 22 === 0. Actual: ' + (2097151 >> 22));
+}
+
+
+if (4194303 >> 22 !== 0) {
+ $ERROR('#727: 4194303 >> 22 === 0. Actual: ' + (4194303 >> 22));
+}
+
+
+if (8388607 >> 22 !== 1) {
+ $ERROR('#728: 8388607 >> 22 === 1. Actual: ' + (8388607 >> 22));
+}
+
+
+if (16777215 >> 22 !== 3) {
+ $ERROR('#729: 16777215 >> 22 === 3. Actual: ' + (16777215 >> 22));
+}
+
+
+if (33554431 >> 22 !== 7) {
+ $ERROR('#730: 33554431 >> 22 === 7. Actual: ' + (33554431 >> 22));
+}
+
+
+if (67108863 >> 22 !== 15) {
+ $ERROR('#731: 67108863 >> 22 === 15. Actual: ' + (67108863 >> 22));
+}
+
+
+if (134217727 >> 22 !== 31) {
+ $ERROR('#732: 134217727 >> 22 === 31. Actual: ' + (134217727 >> 22));
+}
+
+
+if (268435455 >> 22 !== 63) {
+ $ERROR('#733: 268435455 >> 22 === 63. Actual: ' + (268435455 >> 22));
+}
+
+
+if (536870911 >> 22 !== 127) {
+ $ERROR('#734: 536870911 >> 22 === 127. Actual: ' + (536870911 >> 22));
+}
+
+
+if (1073741823 >> 22 !== 255) {
+ $ERROR('#735: 1073741823 >> 22 === 255. Actual: ' + (1073741823 >> 22));
+}
+
+
+if (2147483647 >> 22 !== 511) {
+ $ERROR('#736: 2147483647 >> 22 === 511. Actual: ' + (2147483647 >> 22));
+}
+
+
+if (0 >> 23 !== 0) {
+ $ERROR('#737: 0 >> 23 === 0. Actual: ' + (0 >> 23));
+}
+
+
+if (1 >> 23 !== 0) {
+ $ERROR('#738: 1 >> 23 === 0. Actual: ' + (1 >> 23));
+}
+
+
+if (3 >> 23 !== 0) {
+ $ERROR('#739: 3 >> 23 === 0. Actual: ' + (3 >> 23));
+}
+
+
+if (7 >> 23 !== 0) {
+ $ERROR('#740: 7 >> 23 === 0. Actual: ' + (7 >> 23));
+}
+
+
+if (15 >> 23 !== 0) {
+ $ERROR('#741: 15 >> 23 === 0. Actual: ' + (15 >> 23));
+}
+
+
+if (31 >> 23 !== 0) {
+ $ERROR('#742: 31 >> 23 === 0. Actual: ' + (31 >> 23));
+}
+
+
+if (63 >> 23 !== 0) {
+ $ERROR('#743: 63 >> 23 === 0. Actual: ' + (63 >> 23));
+}
+
+
+if (127 >> 23 !== 0) {
+ $ERROR('#744: 127 >> 23 === 0. Actual: ' + (127 >> 23));
+}
+
+
+if (255 >> 23 !== 0) {
+ $ERROR('#745: 255 >> 23 === 0. Actual: ' + (255 >> 23));
+}
+
+
+if (511 >> 23 !== 0) {
+ $ERROR('#746: 511 >> 23 === 0. Actual: ' + (511 >> 23));
+}
+
+
+if (1023 >> 23 !== 0) {
+ $ERROR('#747: 1023 >> 23 === 0. Actual: ' + (1023 >> 23));
+}
+
+
+if (2047 >> 23 !== 0) {
+ $ERROR('#748: 2047 >> 23 === 0. Actual: ' + (2047 >> 23));
+}
+
+
+if (4095 >> 23 !== 0) {
+ $ERROR('#749: 4095 >> 23 === 0. Actual: ' + (4095 >> 23));
+}
+
+
+if (8191 >> 23 !== 0) {
+ $ERROR('#750: 8191 >> 23 === 0. Actual: ' + (8191 >> 23));
+}
+
+
+if (16383 >> 23 !== 0) {
+ $ERROR('#751: 16383 >> 23 === 0. Actual: ' + (16383 >> 23));
+}
+
+
+if (32767 >> 23 !== 0) {
+ $ERROR('#752: 32767 >> 23 === 0. Actual: ' + (32767 >> 23));
+}
+
+
+if (65535 >> 23 !== 0) {
+ $ERROR('#753: 65535 >> 23 === 0. Actual: ' + (65535 >> 23));
+}
+
+
+if (131071 >> 23 !== 0) {
+ $ERROR('#754: 131071 >> 23 === 0. Actual: ' + (131071 >> 23));
+}
+
+
+if (262143 >> 23 !== 0) {
+ $ERROR('#755: 262143 >> 23 === 0. Actual: ' + (262143 >> 23));
+}
+
+
+if (524287 >> 23 !== 0) {
+ $ERROR('#756: 524287 >> 23 === 0. Actual: ' + (524287 >> 23));
+}
+
+
+if (1048575 >> 23 !== 0) {
+ $ERROR('#757: 1048575 >> 23 === 0. Actual: ' + (1048575 >> 23));
+}
+
+
+if (2097151 >> 23 !== 0) {
+ $ERROR('#758: 2097151 >> 23 === 0. Actual: ' + (2097151 >> 23));
+}
+
+
+if (4194303 >> 23 !== 0) {
+ $ERROR('#759: 4194303 >> 23 === 0. Actual: ' + (4194303 >> 23));
+}
+
+
+if (8388607 >> 23 !== 0) {
+ $ERROR('#760: 8388607 >> 23 === 0. Actual: ' + (8388607 >> 23));
+}
+
+
+if (16777215 >> 23 !== 1) {
+ $ERROR('#761: 16777215 >> 23 === 1. Actual: ' + (16777215 >> 23));
+}
+
+
+if (33554431 >> 23 !== 3) {
+ $ERROR('#762: 33554431 >> 23 === 3. Actual: ' + (33554431 >> 23));
+}
+
+
+if (67108863 >> 23 !== 7) {
+ $ERROR('#763: 67108863 >> 23 === 7. Actual: ' + (67108863 >> 23));
+}
+
+
+if (134217727 >> 23 !== 15) {
+ $ERROR('#764: 134217727 >> 23 === 15. Actual: ' + (134217727 >> 23));
+}
+
+
+if (268435455 >> 23 !== 31) {
+ $ERROR('#765: 268435455 >> 23 === 31. Actual: ' + (268435455 >> 23));
+}
+
+
+if (536870911 >> 23 !== 63) {
+ $ERROR('#766: 536870911 >> 23 === 63. Actual: ' + (536870911 >> 23));
+}
+
+
+if (1073741823 >> 23 !== 127) {
+ $ERROR('#767: 1073741823 >> 23 === 127. Actual: ' + (1073741823 >> 23));
+}
+
+
+if (2147483647 >> 23 !== 255) {
+ $ERROR('#768: 2147483647 >> 23 === 255. Actual: ' + (2147483647 >> 23));
+}
+
+
+if (0 >> 24 !== 0) {
+ $ERROR('#769: 0 >> 24 === 0. Actual: ' + (0 >> 24));
+}
+
+
+if (1 >> 24 !== 0) {
+ $ERROR('#770: 1 >> 24 === 0. Actual: ' + (1 >> 24));
+}
+
+
+if (3 >> 24 !== 0) {
+ $ERROR('#771: 3 >> 24 === 0. Actual: ' + (3 >> 24));
+}
+
+
+if (7 >> 24 !== 0) {
+ $ERROR('#772: 7 >> 24 === 0. Actual: ' + (7 >> 24));
+}
+
+
+if (15 >> 24 !== 0) {
+ $ERROR('#773: 15 >> 24 === 0. Actual: ' + (15 >> 24));
+}
+
+
+if (31 >> 24 !== 0) {
+ $ERROR('#774: 31 >> 24 === 0. Actual: ' + (31 >> 24));
+}
+
+
+if (63 >> 24 !== 0) {
+ $ERROR('#775: 63 >> 24 === 0. Actual: ' + (63 >> 24));
+}
+
+
+if (127 >> 24 !== 0) {
+ $ERROR('#776: 127 >> 24 === 0. Actual: ' + (127 >> 24));
+}
+
+
+if (255 >> 24 !== 0) {
+ $ERROR('#777: 255 >> 24 === 0. Actual: ' + (255 >> 24));
+}
+
+
+if (511 >> 24 !== 0) {
+ $ERROR('#778: 511 >> 24 === 0. Actual: ' + (511 >> 24));
+}
+
+
+if (1023 >> 24 !== 0) {
+ $ERROR('#779: 1023 >> 24 === 0. Actual: ' + (1023 >> 24));
+}
+
+
+if (2047 >> 24 !== 0) {
+ $ERROR('#780: 2047 >> 24 === 0. Actual: ' + (2047 >> 24));
+}
+
+
+if (4095 >> 24 !== 0) {
+ $ERROR('#781: 4095 >> 24 === 0. Actual: ' + (4095 >> 24));
+}
+
+
+if (8191 >> 24 !== 0) {
+ $ERROR('#782: 8191 >> 24 === 0. Actual: ' + (8191 >> 24));
+}
+
+
+if (16383 >> 24 !== 0) {
+ $ERROR('#783: 16383 >> 24 === 0. Actual: ' + (16383 >> 24));
+}
+
+
+if (32767 >> 24 !== 0) {
+ $ERROR('#784: 32767 >> 24 === 0. Actual: ' + (32767 >> 24));
+}
+
+
+if (65535 >> 24 !== 0) {
+ $ERROR('#785: 65535 >> 24 === 0. Actual: ' + (65535 >> 24));
+}
+
+
+if (131071 >> 24 !== 0) {
+ $ERROR('#786: 131071 >> 24 === 0. Actual: ' + (131071 >> 24));
+}
+
+
+if (262143 >> 24 !== 0) {
+ $ERROR('#787: 262143 >> 24 === 0. Actual: ' + (262143 >> 24));
+}
+
+
+if (524287 >> 24 !== 0) {
+ $ERROR('#788: 524287 >> 24 === 0. Actual: ' + (524287 >> 24));
+}
+
+
+if (1048575 >> 24 !== 0) {
+ $ERROR('#789: 1048575 >> 24 === 0. Actual: ' + (1048575 >> 24));
+}
+
+
+if (2097151 >> 24 !== 0) {
+ $ERROR('#790: 2097151 >> 24 === 0. Actual: ' + (2097151 >> 24));
+}
+
+
+if (4194303 >> 24 !== 0) {
+ $ERROR('#791: 4194303 >> 24 === 0. Actual: ' + (4194303 >> 24));
+}
+
+
+if (8388607 >> 24 !== 0) {
+ $ERROR('#792: 8388607 >> 24 === 0. Actual: ' + (8388607 >> 24));
+}
+
+
+if (16777215 >> 24 !== 0) {
+ $ERROR('#793: 16777215 >> 24 === 0. Actual: ' + (16777215 >> 24));
+}
+
+
+if (33554431 >> 24 !== 1) {
+ $ERROR('#794: 33554431 >> 24 === 1. Actual: ' + (33554431 >> 24));
+}
+
+
+if (67108863 >> 24 !== 3) {
+ $ERROR('#795: 67108863 >> 24 === 3. Actual: ' + (67108863 >> 24));
+}
+
+
+if (134217727 >> 24 !== 7) {
+ $ERROR('#796: 134217727 >> 24 === 7. Actual: ' + (134217727 >> 24));
+}
+
+
+if (268435455 >> 24 !== 15) {
+ $ERROR('#797: 268435455 >> 24 === 15. Actual: ' + (268435455 >> 24));
+}
+
+
+if (536870911 >> 24 !== 31) {
+ $ERROR('#798: 536870911 >> 24 === 31. Actual: ' + (536870911 >> 24));
+}
+
+
+if (1073741823 >> 24 !== 63) {
+ $ERROR('#799: 1073741823 >> 24 === 63. Actual: ' + (1073741823 >> 24));
+}
+
+
+if (2147483647 >> 24 !== 127) {
+ $ERROR('#800: 2147483647 >> 24 === 127. Actual: ' + (2147483647 >> 24));
+}
+
+
+if (0 >> 25 !== 0) {
+ $ERROR('#801: 0 >> 25 === 0. Actual: ' + (0 >> 25));
+}
+
+
+if (1 >> 25 !== 0) {
+ $ERROR('#802: 1 >> 25 === 0. Actual: ' + (1 >> 25));
+}
+
+
+if (3 >> 25 !== 0) {
+ $ERROR('#803: 3 >> 25 === 0. Actual: ' + (3 >> 25));
+}
+
+
+if (7 >> 25 !== 0) {
+ $ERROR('#804: 7 >> 25 === 0. Actual: ' + (7 >> 25));
+}
+
+
+if (15 >> 25 !== 0) {
+ $ERROR('#805: 15 >> 25 === 0. Actual: ' + (15 >> 25));
+}
+
+
+if (31 >> 25 !== 0) {
+ $ERROR('#806: 31 >> 25 === 0. Actual: ' + (31 >> 25));
+}
+
+
+if (63 >> 25 !== 0) {
+ $ERROR('#807: 63 >> 25 === 0. Actual: ' + (63 >> 25));
+}
+
+
+if (127 >> 25 !== 0) {
+ $ERROR('#808: 127 >> 25 === 0. Actual: ' + (127 >> 25));
+}
+
+
+if (255 >> 25 !== 0) {
+ $ERROR('#809: 255 >> 25 === 0. Actual: ' + (255 >> 25));
+}
+
+
+if (511 >> 25 !== 0) {
+ $ERROR('#810: 511 >> 25 === 0. Actual: ' + (511 >> 25));
+}
+
+
+if (1023 >> 25 !== 0) {
+ $ERROR('#811: 1023 >> 25 === 0. Actual: ' + (1023 >> 25));
+}
+
+
+if (2047 >> 25 !== 0) {
+ $ERROR('#812: 2047 >> 25 === 0. Actual: ' + (2047 >> 25));
+}
+
+
+if (4095 >> 25 !== 0) {
+ $ERROR('#813: 4095 >> 25 === 0. Actual: ' + (4095 >> 25));
+}
+
+
+if (8191 >> 25 !== 0) {
+ $ERROR('#814: 8191 >> 25 === 0. Actual: ' + (8191 >> 25));
+}
+
+
+if (16383 >> 25 !== 0) {
+ $ERROR('#815: 16383 >> 25 === 0. Actual: ' + (16383 >> 25));
+}
+
+
+if (32767 >> 25 !== 0) {
+ $ERROR('#816: 32767 >> 25 === 0. Actual: ' + (32767 >> 25));
+}
+
+
+if (65535 >> 25 !== 0) {
+ $ERROR('#817: 65535 >> 25 === 0. Actual: ' + (65535 >> 25));
+}
+
+
+if (131071 >> 25 !== 0) {
+ $ERROR('#818: 131071 >> 25 === 0. Actual: ' + (131071 >> 25));
+}
+
+
+if (262143 >> 25 !== 0) {
+ $ERROR('#819: 262143 >> 25 === 0. Actual: ' + (262143 >> 25));
+}
+
+
+if (524287 >> 25 !== 0) {
+ $ERROR('#820: 524287 >> 25 === 0. Actual: ' + (524287 >> 25));
+}
+
+
+if (1048575 >> 25 !== 0) {
+ $ERROR('#821: 1048575 >> 25 === 0. Actual: ' + (1048575 >> 25));
+}
+
+
+if (2097151 >> 25 !== 0) {
+ $ERROR('#822: 2097151 >> 25 === 0. Actual: ' + (2097151 >> 25));
+}
+
+
+if (4194303 >> 25 !== 0) {
+ $ERROR('#823: 4194303 >> 25 === 0. Actual: ' + (4194303 >> 25));
+}
+
+
+if (8388607 >> 25 !== 0) {
+ $ERROR('#824: 8388607 >> 25 === 0. Actual: ' + (8388607 >> 25));
+}
+
+
+if (16777215 >> 25 !== 0) {
+ $ERROR('#825: 16777215 >> 25 === 0. Actual: ' + (16777215 >> 25));
+}
+
+
+if (33554431 >> 25 !== 0) {
+ $ERROR('#826: 33554431 >> 25 === 0. Actual: ' + (33554431 >> 25));
+}
+
+
+if (67108863 >> 25 !== 1) {
+ $ERROR('#827: 67108863 >> 25 === 1. Actual: ' + (67108863 >> 25));
+}
+
+
+if (134217727 >> 25 !== 3) {
+ $ERROR('#828: 134217727 >> 25 === 3. Actual: ' + (134217727 >> 25));
+}
+
+
+if (268435455 >> 25 !== 7) {
+ $ERROR('#829: 268435455 >> 25 === 7. Actual: ' + (268435455 >> 25));
+}
+
+
+if (536870911 >> 25 !== 15) {
+ $ERROR('#830: 536870911 >> 25 === 15. Actual: ' + (536870911 >> 25));
+}
+
+
+if (1073741823 >> 25 !== 31) {
+ $ERROR('#831: 1073741823 >> 25 === 31. Actual: ' + (1073741823 >> 25));
+}
+
+
+if (2147483647 >> 25 !== 63) {
+ $ERROR('#832: 2147483647 >> 25 === 63. Actual: ' + (2147483647 >> 25));
+}
+
+
+if (0 >> 26 !== 0) {
+ $ERROR('#833: 0 >> 26 === 0. Actual: ' + (0 >> 26));
+}
+
+
+if (1 >> 26 !== 0) {
+ $ERROR('#834: 1 >> 26 === 0. Actual: ' + (1 >> 26));
+}
+
+
+if (3 >> 26 !== 0) {
+ $ERROR('#835: 3 >> 26 === 0. Actual: ' + (3 >> 26));
+}
+
+
+if (7 >> 26 !== 0) {
+ $ERROR('#836: 7 >> 26 === 0. Actual: ' + (7 >> 26));
+}
+
+
+if (15 >> 26 !== 0) {
+ $ERROR('#837: 15 >> 26 === 0. Actual: ' + (15 >> 26));
+}
+
+
+if (31 >> 26 !== 0) {
+ $ERROR('#838: 31 >> 26 === 0. Actual: ' + (31 >> 26));
+}
+
+
+if (63 >> 26 !== 0) {
+ $ERROR('#839: 63 >> 26 === 0. Actual: ' + (63 >> 26));
+}
+
+
+if (127 >> 26 !== 0) {
+ $ERROR('#840: 127 >> 26 === 0. Actual: ' + (127 >> 26));
+}
+
+
+if (255 >> 26 !== 0) {
+ $ERROR('#841: 255 >> 26 === 0. Actual: ' + (255 >> 26));
+}
+
+
+if (511 >> 26 !== 0) {
+ $ERROR('#842: 511 >> 26 === 0. Actual: ' + (511 >> 26));
+}
+
+
+if (1023 >> 26 !== 0) {
+ $ERROR('#843: 1023 >> 26 === 0. Actual: ' + (1023 >> 26));
+}
+
+
+if (2047 >> 26 !== 0) {
+ $ERROR('#844: 2047 >> 26 === 0. Actual: ' + (2047 >> 26));
+}
+
+
+if (4095 >> 26 !== 0) {
+ $ERROR('#845: 4095 >> 26 === 0. Actual: ' + (4095 >> 26));
+}
+
+
+if (8191 >> 26 !== 0) {
+ $ERROR('#846: 8191 >> 26 === 0. Actual: ' + (8191 >> 26));
+}
+
+
+if (16383 >> 26 !== 0) {
+ $ERROR('#847: 16383 >> 26 === 0. Actual: ' + (16383 >> 26));
+}
+
+
+if (32767 >> 26 !== 0) {
+ $ERROR('#848: 32767 >> 26 === 0. Actual: ' + (32767 >> 26));
+}
+
+
+if (65535 >> 26 !== 0) {
+ $ERROR('#849: 65535 >> 26 === 0. Actual: ' + (65535 >> 26));
+}
+
+
+if (131071 >> 26 !== 0) {
+ $ERROR('#850: 131071 >> 26 === 0. Actual: ' + (131071 >> 26));
+}
+
+
+if (262143 >> 26 !== 0) {
+ $ERROR('#851: 262143 >> 26 === 0. Actual: ' + (262143 >> 26));
+}
+
+
+if (524287 >> 26 !== 0) {
+ $ERROR('#852: 524287 >> 26 === 0. Actual: ' + (524287 >> 26));
+}
+
+
+if (1048575 >> 26 !== 0) {
+ $ERROR('#853: 1048575 >> 26 === 0. Actual: ' + (1048575 >> 26));
+}
+
+
+if (2097151 >> 26 !== 0) {
+ $ERROR('#854: 2097151 >> 26 === 0. Actual: ' + (2097151 >> 26));
+}
+
+
+if (4194303 >> 26 !== 0) {
+ $ERROR('#855: 4194303 >> 26 === 0. Actual: ' + (4194303 >> 26));
+}
+
+
+if (8388607 >> 26 !== 0) {
+ $ERROR('#856: 8388607 >> 26 === 0. Actual: ' + (8388607 >> 26));
+}
+
+
+if (16777215 >> 26 !== 0) {
+ $ERROR('#857: 16777215 >> 26 === 0. Actual: ' + (16777215 >> 26));
+}
+
+
+if (33554431 >> 26 !== 0) {
+ $ERROR('#858: 33554431 >> 26 === 0. Actual: ' + (33554431 >> 26));
+}
+
+
+if (67108863 >> 26 !== 0) {
+ $ERROR('#859: 67108863 >> 26 === 0. Actual: ' + (67108863 >> 26));
+}
+
+
+if (134217727 >> 26 !== 1) {
+ $ERROR('#860: 134217727 >> 26 === 1. Actual: ' + (134217727 >> 26));
+}
+
+
+if (268435455 >> 26 !== 3) {
+ $ERROR('#861: 268435455 >> 26 === 3. Actual: ' + (268435455 >> 26));
+}
+
+
+if (536870911 >> 26 !== 7) {
+ $ERROR('#862: 536870911 >> 26 === 7. Actual: ' + (536870911 >> 26));
+}
+
+
+if (1073741823 >> 26 !== 15) {
+ $ERROR('#863: 1073741823 >> 26 === 15. Actual: ' + (1073741823 >> 26));
+}
+
+
+if (2147483647 >> 26 !== 31) {
+ $ERROR('#864: 2147483647 >> 26 === 31. Actual: ' + (2147483647 >> 26));
+}
+
+
+if (0 >> 27 !== 0) {
+ $ERROR('#865: 0 >> 27 === 0. Actual: ' + (0 >> 27));
+}
+
+
+if (1 >> 27 !== 0) {
+ $ERROR('#866: 1 >> 27 === 0. Actual: ' + (1 >> 27));
+}
+
+
+if (3 >> 27 !== 0) {
+ $ERROR('#867: 3 >> 27 === 0. Actual: ' + (3 >> 27));
+}
+
+
+if (7 >> 27 !== 0) {
+ $ERROR('#868: 7 >> 27 === 0. Actual: ' + (7 >> 27));
+}
+
+
+if (15 >> 27 !== 0) {
+ $ERROR('#869: 15 >> 27 === 0. Actual: ' + (15 >> 27));
+}
+
+
+if (31 >> 27 !== 0) {
+ $ERROR('#870: 31 >> 27 === 0. Actual: ' + (31 >> 27));
+}
+
+
+if (63 >> 27 !== 0) {
+ $ERROR('#871: 63 >> 27 === 0. Actual: ' + (63 >> 27));
+}
+
+
+if (127 >> 27 !== 0) {
+ $ERROR('#872: 127 >> 27 === 0. Actual: ' + (127 >> 27));
+}
+
+
+if (255 >> 27 !== 0) {
+ $ERROR('#873: 255 >> 27 === 0. Actual: ' + (255 >> 27));
+}
+
+
+if (511 >> 27 !== 0) {
+ $ERROR('#874: 511 >> 27 === 0. Actual: ' + (511 >> 27));
+}
+
+
+if (1023 >> 27 !== 0) {
+ $ERROR('#875: 1023 >> 27 === 0. Actual: ' + (1023 >> 27));
+}
+
+
+if (2047 >> 27 !== 0) {
+ $ERROR('#876: 2047 >> 27 === 0. Actual: ' + (2047 >> 27));
+}
+
+
+if (4095 >> 27 !== 0) {
+ $ERROR('#877: 4095 >> 27 === 0. Actual: ' + (4095 >> 27));
+}
+
+
+if (8191 >> 27 !== 0) {
+ $ERROR('#878: 8191 >> 27 === 0. Actual: ' + (8191 >> 27));
+}
+
+
+if (16383 >> 27 !== 0) {
+ $ERROR('#879: 16383 >> 27 === 0. Actual: ' + (16383 >> 27));
+}
+
+
+if (32767 >> 27 !== 0) {
+ $ERROR('#880: 32767 >> 27 === 0. Actual: ' + (32767 >> 27));
+}
+
+
+if (65535 >> 27 !== 0) {
+ $ERROR('#881: 65535 >> 27 === 0. Actual: ' + (65535 >> 27));
+}
+
+
+if (131071 >> 27 !== 0) {
+ $ERROR('#882: 131071 >> 27 === 0. Actual: ' + (131071 >> 27));
+}
+
+
+if (262143 >> 27 !== 0) {
+ $ERROR('#883: 262143 >> 27 === 0. Actual: ' + (262143 >> 27));
+}
+
+
+if (524287 >> 27 !== 0) {
+ $ERROR('#884: 524287 >> 27 === 0. Actual: ' + (524287 >> 27));
+}
+
+
+if (1048575 >> 27 !== 0) {
+ $ERROR('#885: 1048575 >> 27 === 0. Actual: ' + (1048575 >> 27));
+}
+
+
+if (2097151 >> 27 !== 0) {
+ $ERROR('#886: 2097151 >> 27 === 0. Actual: ' + (2097151 >> 27));
+}
+
+
+if (4194303 >> 27 !== 0) {
+ $ERROR('#887: 4194303 >> 27 === 0. Actual: ' + (4194303 >> 27));
+}
+
+
+if (8388607 >> 27 !== 0) {
+ $ERROR('#888: 8388607 >> 27 === 0. Actual: ' + (8388607 >> 27));
+}
+
+
+if (16777215 >> 27 !== 0) {
+ $ERROR('#889: 16777215 >> 27 === 0. Actual: ' + (16777215 >> 27));
+}
+
+
+if (33554431 >> 27 !== 0) {
+ $ERROR('#890: 33554431 >> 27 === 0. Actual: ' + (33554431 >> 27));
+}
+
+
+if (67108863 >> 27 !== 0) {
+ $ERROR('#891: 67108863 >> 27 === 0. Actual: ' + (67108863 >> 27));
+}
+
+
+if (134217727 >> 27 !== 0) {
+ $ERROR('#892: 134217727 >> 27 === 0. Actual: ' + (134217727 >> 27));
+}
+
+
+if (268435455 >> 27 !== 1) {
+ $ERROR('#893: 268435455 >> 27 === 1. Actual: ' + (268435455 >> 27));
+}
+
+
+if (536870911 >> 27 !== 3) {
+ $ERROR('#894: 536870911 >> 27 === 3. Actual: ' + (536870911 >> 27));
+}
+
+
+if (1073741823 >> 27 !== 7) {
+ $ERROR('#895: 1073741823 >> 27 === 7. Actual: ' + (1073741823 >> 27));
+}
+
+
+if (2147483647 >> 27 !== 15) {
+ $ERROR('#896: 2147483647 >> 27 === 15. Actual: ' + (2147483647 >> 27));
+}
+
+
+if (0 >> 28 !== 0) {
+ $ERROR('#897: 0 >> 28 === 0. Actual: ' + (0 >> 28));
+}
+
+
+if (1 >> 28 !== 0) {
+ $ERROR('#898: 1 >> 28 === 0. Actual: ' + (1 >> 28));
+}
+
+
+if (3 >> 28 !== 0) {
+ $ERROR('#899: 3 >> 28 === 0. Actual: ' + (3 >> 28));
+}
+
+
+if (7 >> 28 !== 0) {
+ $ERROR('#900: 7 >> 28 === 0. Actual: ' + (7 >> 28));
+}
+
+
+if (15 >> 28 !== 0) {
+ $ERROR('#901: 15 >> 28 === 0. Actual: ' + (15 >> 28));
+}
+
+
+if (31 >> 28 !== 0) {
+ $ERROR('#902: 31 >> 28 === 0. Actual: ' + (31 >> 28));
+}
+
+
+if (63 >> 28 !== 0) {
+ $ERROR('#903: 63 >> 28 === 0. Actual: ' + (63 >> 28));
+}
+
+
+if (127 >> 28 !== 0) {
+ $ERROR('#904: 127 >> 28 === 0. Actual: ' + (127 >> 28));
+}
+
+
+if (255 >> 28 !== 0) {
+ $ERROR('#905: 255 >> 28 === 0. Actual: ' + (255 >> 28));
+}
+
+
+if (511 >> 28 !== 0) {
+ $ERROR('#906: 511 >> 28 === 0. Actual: ' + (511 >> 28));
+}
+
+
+if (1023 >> 28 !== 0) {
+ $ERROR('#907: 1023 >> 28 === 0. Actual: ' + (1023 >> 28));
+}
+
+
+if (2047 >> 28 !== 0) {
+ $ERROR('#908: 2047 >> 28 === 0. Actual: ' + (2047 >> 28));
+}
+
+
+if (4095 >> 28 !== 0) {
+ $ERROR('#909: 4095 >> 28 === 0. Actual: ' + (4095 >> 28));
+}
+
+
+if (8191 >> 28 !== 0) {
+ $ERROR('#910: 8191 >> 28 === 0. Actual: ' + (8191 >> 28));
+}
+
+
+if (16383 >> 28 !== 0) {
+ $ERROR('#911: 16383 >> 28 === 0. Actual: ' + (16383 >> 28));
+}
+
+
+if (32767 >> 28 !== 0) {
+ $ERROR('#912: 32767 >> 28 === 0. Actual: ' + (32767 >> 28));
+}
+
+
+if (65535 >> 28 !== 0) {
+ $ERROR('#913: 65535 >> 28 === 0. Actual: ' + (65535 >> 28));
+}
+
+
+if (131071 >> 28 !== 0) {
+ $ERROR('#914: 131071 >> 28 === 0. Actual: ' + (131071 >> 28));
+}
+
+
+if (262143 >> 28 !== 0) {
+ $ERROR('#915: 262143 >> 28 === 0. Actual: ' + (262143 >> 28));
+}
+
+
+if (524287 >> 28 !== 0) {
+ $ERROR('#916: 524287 >> 28 === 0. Actual: ' + (524287 >> 28));
+}
+
+
+if (1048575 >> 28 !== 0) {
+ $ERROR('#917: 1048575 >> 28 === 0. Actual: ' + (1048575 >> 28));
+}
+
+
+if (2097151 >> 28 !== 0) {
+ $ERROR('#918: 2097151 >> 28 === 0. Actual: ' + (2097151 >> 28));
+}
+
+
+if (4194303 >> 28 !== 0) {
+ $ERROR('#919: 4194303 >> 28 === 0. Actual: ' + (4194303 >> 28));
+}
+
+
+if (8388607 >> 28 !== 0) {
+ $ERROR('#920: 8388607 >> 28 === 0. Actual: ' + (8388607 >> 28));
+}
+
+
+if (16777215 >> 28 !== 0) {
+ $ERROR('#921: 16777215 >> 28 === 0. Actual: ' + (16777215 >> 28));
+}
+
+
+if (33554431 >> 28 !== 0) {
+ $ERROR('#922: 33554431 >> 28 === 0. Actual: ' + (33554431 >> 28));
+}
+
+
+if (67108863 >> 28 !== 0) {
+ $ERROR('#923: 67108863 >> 28 === 0. Actual: ' + (67108863 >> 28));
+}
+
+
+if (134217727 >> 28 !== 0) {
+ $ERROR('#924: 134217727 >> 28 === 0. Actual: ' + (134217727 >> 28));
+}
+
+
+if (268435455 >> 28 !== 0) {
+ $ERROR('#925: 268435455 >> 28 === 0. Actual: ' + (268435455 >> 28));
+}
+
+
+if (536870911 >> 28 !== 1) {
+ $ERROR('#926: 536870911 >> 28 === 1. Actual: ' + (536870911 >> 28));
+}
+
+
+if (1073741823 >> 28 !== 3) {
+ $ERROR('#927: 1073741823 >> 28 === 3. Actual: ' + (1073741823 >> 28));
+}
+
+
+if (2147483647 >> 28 !== 7) {
+ $ERROR('#928: 2147483647 >> 28 === 7. Actual: ' + (2147483647 >> 28));
+}
+
+
+if (0 >> 29 !== 0) {
+ $ERROR('#929: 0 >> 29 === 0. Actual: ' + (0 >> 29));
+}
+
+
+if (1 >> 29 !== 0) {
+ $ERROR('#930: 1 >> 29 === 0. Actual: ' + (1 >> 29));
+}
+
+
+if (3 >> 29 !== 0) {
+ $ERROR('#931: 3 >> 29 === 0. Actual: ' + (3 >> 29));
+}
+
+
+if (7 >> 29 !== 0) {
+ $ERROR('#932: 7 >> 29 === 0. Actual: ' + (7 >> 29));
+}
+
+
+if (15 >> 29 !== 0) {
+ $ERROR('#933: 15 >> 29 === 0. Actual: ' + (15 >> 29));
+}
+
+
+if (31 >> 29 !== 0) {
+ $ERROR('#934: 31 >> 29 === 0. Actual: ' + (31 >> 29));
+}
+
+
+if (63 >> 29 !== 0) {
+ $ERROR('#935: 63 >> 29 === 0. Actual: ' + (63 >> 29));
+}
+
+
+if (127 >> 29 !== 0) {
+ $ERROR('#936: 127 >> 29 === 0. Actual: ' + (127 >> 29));
+}
+
+
+if (255 >> 29 !== 0) {
+ $ERROR('#937: 255 >> 29 === 0. Actual: ' + (255 >> 29));
+}
+
+
+if (511 >> 29 !== 0) {
+ $ERROR('#938: 511 >> 29 === 0. Actual: ' + (511 >> 29));
+}
+
+
+if (1023 >> 29 !== 0) {
+ $ERROR('#939: 1023 >> 29 === 0. Actual: ' + (1023 >> 29));
+}
+
+
+if (2047 >> 29 !== 0) {
+ $ERROR('#940: 2047 >> 29 === 0. Actual: ' + (2047 >> 29));
+}
+
+
+if (4095 >> 29 !== 0) {
+ $ERROR('#941: 4095 >> 29 === 0. Actual: ' + (4095 >> 29));
+}
+
+
+if (8191 >> 29 !== 0) {
+ $ERROR('#942: 8191 >> 29 === 0. Actual: ' + (8191 >> 29));
+}
+
+
+if (16383 >> 29 !== 0) {
+ $ERROR('#943: 16383 >> 29 === 0. Actual: ' + (16383 >> 29));
+}
+
+
+if (32767 >> 29 !== 0) {
+ $ERROR('#944: 32767 >> 29 === 0. Actual: ' + (32767 >> 29));
+}
+
+
+if (65535 >> 29 !== 0) {
+ $ERROR('#945: 65535 >> 29 === 0. Actual: ' + (65535 >> 29));
+}
+
+
+if (131071 >> 29 !== 0) {
+ $ERROR('#946: 131071 >> 29 === 0. Actual: ' + (131071 >> 29));
+}
+
+
+if (262143 >> 29 !== 0) {
+ $ERROR('#947: 262143 >> 29 === 0. Actual: ' + (262143 >> 29));
+}
+
+
+if (524287 >> 29 !== 0) {
+ $ERROR('#948: 524287 >> 29 === 0. Actual: ' + (524287 >> 29));
+}
+
+
+if (1048575 >> 29 !== 0) {
+ $ERROR('#949: 1048575 >> 29 === 0. Actual: ' + (1048575 >> 29));
+}
+
+
+if (2097151 >> 29 !== 0) {
+ $ERROR('#950: 2097151 >> 29 === 0. Actual: ' + (2097151 >> 29));
+}
+
+
+if (4194303 >> 29 !== 0) {
+ $ERROR('#951: 4194303 >> 29 === 0. Actual: ' + (4194303 >> 29));
+}
+
+
+if (8388607 >> 29 !== 0) {
+ $ERROR('#952: 8388607 >> 29 === 0. Actual: ' + (8388607 >> 29));
+}
+
+
+if (16777215 >> 29 !== 0) {
+ $ERROR('#953: 16777215 >> 29 === 0. Actual: ' + (16777215 >> 29));
+}
+
+
+if (33554431 >> 29 !== 0) {
+ $ERROR('#954: 33554431 >> 29 === 0. Actual: ' + (33554431 >> 29));
+}
+
+
+if (67108863 >> 29 !== 0) {
+ $ERROR('#955: 67108863 >> 29 === 0. Actual: ' + (67108863 >> 29));
+}
+
+
+if (134217727 >> 29 !== 0) {
+ $ERROR('#956: 134217727 >> 29 === 0. Actual: ' + (134217727 >> 29));
+}
+
+
+if (268435455 >> 29 !== 0) {
+ $ERROR('#957: 268435455 >> 29 === 0. Actual: ' + (268435455 >> 29));
+}
+
+
+if (536870911 >> 29 !== 0) {
+ $ERROR('#958: 536870911 >> 29 === 0. Actual: ' + (536870911 >> 29));
+}
+
+
+if (1073741823 >> 29 !== 1) {
+ $ERROR('#959: 1073741823 >> 29 === 1. Actual: ' + (1073741823 >> 29));
+}
+
+
+if (2147483647 >> 29 !== 3) {
+ $ERROR('#960: 2147483647 >> 29 === 3. Actual: ' + (2147483647 >> 29));
+}
+
+
+if (0 >> 30 !== 0) {
+ $ERROR('#961: 0 >> 30 === 0. Actual: ' + (0 >> 30));
+}
+
+
+if (1 >> 30 !== 0) {
+ $ERROR('#962: 1 >> 30 === 0. Actual: ' + (1 >> 30));
+}
+
+
+if (3 >> 30 !== 0) {
+ $ERROR('#963: 3 >> 30 === 0. Actual: ' + (3 >> 30));
+}
+
+
+if (7 >> 30 !== 0) {
+ $ERROR('#964: 7 >> 30 === 0. Actual: ' + (7 >> 30));
+}
+
+
+if (15 >> 30 !== 0) {
+ $ERROR('#965: 15 >> 30 === 0. Actual: ' + (15 >> 30));
+}
+
+
+if (31 >> 30 !== 0) {
+ $ERROR('#966: 31 >> 30 === 0. Actual: ' + (31 >> 30));
+}
+
+
+if (63 >> 30 !== 0) {
+ $ERROR('#967: 63 >> 30 === 0. Actual: ' + (63 >> 30));
+}
+
+
+if (127 >> 30 !== 0) {
+ $ERROR('#968: 127 >> 30 === 0. Actual: ' + (127 >> 30));
+}
+
+
+if (255 >> 30 !== 0) {
+ $ERROR('#969: 255 >> 30 === 0. Actual: ' + (255 >> 30));
+}
+
+
+if (511 >> 30 !== 0) {
+ $ERROR('#970: 511 >> 30 === 0. Actual: ' + (511 >> 30));
+}
+
+
+if (1023 >> 30 !== 0) {
+ $ERROR('#971: 1023 >> 30 === 0. Actual: ' + (1023 >> 30));
+}
+
+
+if (2047 >> 30 !== 0) {
+ $ERROR('#972: 2047 >> 30 === 0. Actual: ' + (2047 >> 30));
+}
+
+
+if (4095 >> 30 !== 0) {
+ $ERROR('#973: 4095 >> 30 === 0. Actual: ' + (4095 >> 30));
+}
+
+
+if (8191 >> 30 !== 0) {
+ $ERROR('#974: 8191 >> 30 === 0. Actual: ' + (8191 >> 30));
+}
+
+
+if (16383 >> 30 !== 0) {
+ $ERROR('#975: 16383 >> 30 === 0. Actual: ' + (16383 >> 30));
+}
+
+
+if (32767 >> 30 !== 0) {
+ $ERROR('#976: 32767 >> 30 === 0. Actual: ' + (32767 >> 30));
+}
+
+
+if (65535 >> 30 !== 0) {
+ $ERROR('#977: 65535 >> 30 === 0. Actual: ' + (65535 >> 30));
+}
+
+
+if (131071 >> 30 !== 0) {
+ $ERROR('#978: 131071 >> 30 === 0. Actual: ' + (131071 >> 30));
+}
+
+
+if (262143 >> 30 !== 0) {
+ $ERROR('#979: 262143 >> 30 === 0. Actual: ' + (262143 >> 30));
+}
+
+
+if (524287 >> 30 !== 0) {
+ $ERROR('#980: 524287 >> 30 === 0. Actual: ' + (524287 >> 30));
+}
+
+
+if (1048575 >> 30 !== 0) {
+ $ERROR('#981: 1048575 >> 30 === 0. Actual: ' + (1048575 >> 30));
+}
+
+
+if (2097151 >> 30 !== 0) {
+ $ERROR('#982: 2097151 >> 30 === 0. Actual: ' + (2097151 >> 30));
+}
+
+
+if (4194303 >> 30 !== 0) {
+ $ERROR('#983: 4194303 >> 30 === 0. Actual: ' + (4194303 >> 30));
+}
+
+
+if (8388607 >> 30 !== 0) {
+ $ERROR('#984: 8388607 >> 30 === 0. Actual: ' + (8388607 >> 30));
+}
+
+
+if (16777215 >> 30 !== 0) {
+ $ERROR('#985: 16777215 >> 30 === 0. Actual: ' + (16777215 >> 30));
+}
+
+
+if (33554431 >> 30 !== 0) {
+ $ERROR('#986: 33554431 >> 30 === 0. Actual: ' + (33554431 >> 30));
+}
+
+
+if (67108863 >> 30 !== 0) {
+ $ERROR('#987: 67108863 >> 30 === 0. Actual: ' + (67108863 >> 30));
+}
+
+
+if (134217727 >> 30 !== 0) {
+ $ERROR('#988: 134217727 >> 30 === 0. Actual: ' + (134217727 >> 30));
+}
+
+
+if (268435455 >> 30 !== 0) {
+ $ERROR('#989: 268435455 >> 30 === 0. Actual: ' + (268435455 >> 30));
+}
+
+
+if (536870911 >> 30 !== 0) {
+ $ERROR('#990: 536870911 >> 30 === 0. Actual: ' + (536870911 >> 30));
+}
+
+
+if (1073741823 >> 30 !== 0) {
+ $ERROR('#991: 1073741823 >> 30 === 0. Actual: ' + (1073741823 >> 30));
+}
+
+
+if (2147483647 >> 30 !== 1) {
+ $ERROR('#992: 2147483647 >> 30 === 1. Actual: ' + (2147483647 >> 30));
+}
+
+
+if (0 >> 31 !== 0) {
+ $ERROR('#993: 0 >> 31 === 0. Actual: ' + (0 >> 31));
+}
+
+
+if (1 >> 31 !== 0) {
+ $ERROR('#994: 1 >> 31 === 0. Actual: ' + (1 >> 31));
+}
+
+
+if (3 >> 31 !== 0) {
+ $ERROR('#995: 3 >> 31 === 0. Actual: ' + (3 >> 31));
+}
+
+
+if (7 >> 31 !== 0) {
+ $ERROR('#996: 7 >> 31 === 0. Actual: ' + (7 >> 31));
+}
+
+
+if (15 >> 31 !== 0) {
+ $ERROR('#997: 15 >> 31 === 0. Actual: ' + (15 >> 31));
+}
+
+
+if (31 >> 31 !== 0) {
+ $ERROR('#998: 31 >> 31 === 0. Actual: ' + (31 >> 31));
+}
+
+
+if (63 >> 31 !== 0) {
+ $ERROR('#999: 63 >> 31 === 0. Actual: ' + (63 >> 31));
+}
+
+
+if (127 >> 31 !== 0) {
+ $ERROR('#1000: 127 >> 31 === 0. Actual: ' + (127 >> 31));
+}
+
+
+if (255 >> 31 !== 0) {
+ $ERROR('#1001: 255 >> 31 === 0. Actual: ' + (255 >> 31));
+}
+
+
+if (511 >> 31 !== 0) {
+ $ERROR('#1002: 511 >> 31 === 0. Actual: ' + (511 >> 31));
+}
+
+
+if (1023 >> 31 !== 0) {
+ $ERROR('#1003: 1023 >> 31 === 0. Actual: ' + (1023 >> 31));
+}
+
+
+if (2047 >> 31 !== 0) {
+ $ERROR('#1004: 2047 >> 31 === 0. Actual: ' + (2047 >> 31));
+}
+
+
+if (4095 >> 31 !== 0) {
+ $ERROR('#1005: 4095 >> 31 === 0. Actual: ' + (4095 >> 31));
+}
+
+
+if (8191 >> 31 !== 0) {
+ $ERROR('#1006: 8191 >> 31 === 0. Actual: ' + (8191 >> 31));
+}
+
+
+if (16383 >> 31 !== 0) {
+ $ERROR('#1007: 16383 >> 31 === 0. Actual: ' + (16383 >> 31));
+}
+
+
+if (32767 >> 31 !== 0) {
+ $ERROR('#1008: 32767 >> 31 === 0. Actual: ' + (32767 >> 31));
+}
+
+
+if (65535 >> 31 !== 0) {
+ $ERROR('#1009: 65535 >> 31 === 0. Actual: ' + (65535 >> 31));
+}
+
+
+if (131071 >> 31 !== 0) {
+ $ERROR('#1010: 131071 >> 31 === 0. Actual: ' + (131071 >> 31));
+}
+
+
+if (262143 >> 31 !== 0) {
+ $ERROR('#1011: 262143 >> 31 === 0. Actual: ' + (262143 >> 31));
+}
+
+
+if (524287 >> 31 !== 0) {
+ $ERROR('#1012: 524287 >> 31 === 0. Actual: ' + (524287 >> 31));
+}
+
+
+if (1048575 >> 31 !== 0) {
+ $ERROR('#1013: 1048575 >> 31 === 0. Actual: ' + (1048575 >> 31));
+}
+
+
+if (2097151 >> 31 !== 0) {
+ $ERROR('#1014: 2097151 >> 31 === 0. Actual: ' + (2097151 >> 31));
+}
+
+
+if (4194303 >> 31 !== 0) {
+ $ERROR('#1015: 4194303 >> 31 === 0. Actual: ' + (4194303 >> 31));
+}
+
+
+if (8388607 >> 31 !== 0) {
+ $ERROR('#1016: 8388607 >> 31 === 0. Actual: ' + (8388607 >> 31));
+}
+
+
+if (16777215 >> 31 !== 0) {
+ $ERROR('#1017: 16777215 >> 31 === 0. Actual: ' + (16777215 >> 31));
+}
+
+
+if (33554431 >> 31 !== 0) {
+ $ERROR('#1018: 33554431 >> 31 === 0. Actual: ' + (33554431 >> 31));
+}
+
+
+if (67108863 >> 31 !== 0) {
+ $ERROR('#1019: 67108863 >> 31 === 0. Actual: ' + (67108863 >> 31));
+}
+
+
+if (134217727 >> 31 !== 0) {
+ $ERROR('#1020: 134217727 >> 31 === 0. Actual: ' + (134217727 >> 31));
+}
+
+
+if (268435455 >> 31 !== 0) {
+ $ERROR('#1021: 268435455 >> 31 === 0. Actual: ' + (268435455 >> 31));
+}
+
+
+if (536870911 >> 31 !== 0) {
+ $ERROR('#1022: 536870911 >> 31 === 0. Actual: ' + (536870911 >> 31));
+}
+
+
+if (1073741823 >> 31 !== 0) {
+ $ERROR('#1023: 1073741823 >> 31 === 0. Actual: ' + (1073741823 >> 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.1_T1.js
new file mode 100644
index 000000000..f3e7ce045
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.1_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A5.1_T1;
+ * @section: 11.7.2, 9.5;
+ * @assertion: Operator x >> y uses ToInt32(ShiftExpression);
+ * @description: Checking boundary points;
+ */
+
+//CHECK#1
+if (2147483648.1 >> 0 !== -2147483648) {
+ $ERROR('#1: 2147483648.1 >> 0 === -2147483648. Actual: ' + (2147483648.1 >> 0));
+}
+
+//CHECK#2
+if (4294967296.1 >> 0 !== 0) {
+ $ERROR('#2: 4294967296.1 >> 0 === 0. Actual: ' + (4294967296.1 >> 0));
+}
+
+//CHECK#3
+if (6442450944.1 >> 0 !== -2147483648) {
+ $ERROR('#3: 6442450944.1 >> 0 === -2147483648. Actual: ' + (6442450944.1 >> 0));
+}
+
+//CHECK#4
+if (4294967295.1 >> 0 !== -1) {
+ $ERROR('#4: 4294967295.1 >> 0 === -1. Actual: ' + (4294967295.1 >> 0));
+}
+
+//CHECK#5
+if (6442450943.1 >> 0 !== 2147483647) {
+ $ERROR('#5: 6442450943.1 >> 0 === 2147483647. Actual: ' + (6442450943.1 >> 0));
+}
+
+//CHECK#6
+if (-2147483649.1 >> 0 !== 2147483647) {
+ $ERROR('#6: -2147483649.1 >> 0 === 2147483647. Actual: ' + (-2147483649.1 >> 0));
+}
+
+//CHECK#7
+if (-4294967297.1 >> 0 !== -1) {
+ $ERROR('#7: -4294967297.1 >> 0 === -1. Actual: ' + (-4294967297.1 >> 0));
+}
+
+//CHECK#8
+if (-6442450945.1 >> 0 !== 2147483647) {
+ $ERROR('#8: -6442450945.1 >> 0 === 2147483647. Actual: ' + (-6442450945.1 >> 0));
+}
+
+//CHECK#9
+if (-4294967296.1 >> 0 !== 0) {
+ $ERROR('#9: -4294967296.1 >> 0 === 0 . Actual: ' + (-4294967296.1 >> 0));
+}
+
+//CHECK#10
+if (-6442450944.1 >> 0 !== -2147483648) {
+ $ERROR('#10: -6442450944.1 >> 0 === -2147483648. Actual: ' + (-6442450944.1 >> 0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.2_T1.js
new file mode 100644
index 000000000..3c0d7f991
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.2_T1.js
@@ -0,0 +1,329 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A5.2_T1;
+ * @section: 11.7.2, 9.5;
+ * @assertion: Operator x >> y uses ToUint32(AdditiveExpression) & 31;
+ * @description: Checking distinct points;
+ */
+
+//CHECK#1
+if (2147483647 >> -32.1 !== 2147483647) {
+ $ERROR('#1: 2147483647 >> -32.1 === 2147483647. Actual: ' + (2147483647 >> -32.1));
+}
+
+//CHECK#2
+if (2147483647 >> -31.1 !== 1073741823) {
+ $ERROR('#2: 2147483647 >> -31.1 === 1073741823. Actual: ' + (2147483647 >> -31.1));
+}
+
+//CHECK#3
+if (2147483647 >> -30.1 !== 536870911) {
+ $ERROR('#3: 2147483647 >> -30.1 === 536870911. Actual: ' + (2147483647 >> -30.1));
+}
+
+//CHECK#4
+if (2147483647 >> -29.1 !== 268435455) {
+ $ERROR('#4: 2147483647 >> -29.1 === 268435455. Actual: ' + (2147483647 >> -29.1));
+}
+
+//CHECK#5
+if (2147483647 >> -28.1 !== 134217727) {
+ $ERROR('#5: 2147483647 >> -28.1 === 134217727. Actual: ' + (2147483647 >> -28.1));
+}
+
+//CHECK#6
+if (2147483647 >> -27.1 !== 67108863) {
+ $ERROR('#6: 2147483647 >> -27.1 === 67108863. Actual: ' + (2147483647 >> -27.1));
+}
+
+//CHECK#7
+if (2147483647 >> -26.1 !== 33554431) {
+ $ERROR('#7: 2147483647 >> -26.1 === 33554431. Actual: ' + (2147483647 >> -26.1));
+}
+
+//CHECK#8
+if (2147483647 >> -25.1 !== 16777215) {
+ $ERROR('#8: 2147483647 >> -25.1 === 16777215. Actual: ' + (2147483647 >> -25.1));
+}
+
+//CHECK#9
+if (2147483647 >> -24.1 !== 8388607) {
+ $ERROR('#9: 2147483647 >> -24.1 === 8388607. Actual: ' + (2147483647 >> -24.1));
+}
+
+//CHECK#10
+if (2147483647 >> -23.1 !== 4194303) {
+ $ERROR('#10: 2147483647 >> -23.1 === 4194303. Actual: ' + (2147483647 >> -23.1));
+}
+
+//CHECK#11
+if (2147483647 >> -22.1 !== 2097151) {
+ $ERROR('#11: 2147483647 >> -22.1 === 2097151. Actual: ' + (2147483647 >> -22.1));
+}
+
+//CHECK#12
+if (2147483647 >> -21.1 !== 1048575) {
+ $ERROR('#12: 2147483647 >> -21.1 === 1048575. Actual: ' + (2147483647 >> -21.1));
+}
+
+//CHECK#13
+if (2147483647 >> -20.1 !== 524287) {
+ $ERROR('#13: 2147483647 >> -20.1 === 524287. Actual: ' + (2147483647 >> -20.1));
+}
+
+//CHECK#14
+if (2147483647 >> -19.1 !== 262143) {
+ $ERROR('#14: 2147483647 >> -19.1 === 262143. Actual: ' + (2147483647 >> -19.1));
+}
+
+//CHECK#15
+if (2147483647 >> -18.1 !== 131071) {
+ $ERROR('#15: 2147483647 >> -18.1 === 131071. Actual: ' + (2147483647 >> -18.1));
+}
+
+//CHECK#16
+if (2147483647 >> -17.1 !== 65535) {
+ $ERROR('#16: 2147483647 >> -17.1 === 65535. Actual: ' + (2147483647 >> -17.1));
+}
+
+//CHECK#17
+if (2147483647 >> -16.1 !== 32767) {
+ $ERROR('#17: 2147483647 >> -16.1 === 32767. Actual: ' + (2147483647 >> -16.1));
+}
+
+//CHECK#18
+if (2147483647 >> -15.1 !== 16383) {
+ $ERROR('#18: 2147483647 >> -15.1 === 16383. Actual: ' + (2147483647 >> -15.1));
+}
+
+//CHECK#19
+if (2147483647 >> -14.1 !== 8191) {
+ $ERROR('#19: 2147483647 >> -14.1 === 8191. Actual: ' + (2147483647 >> -14.1));
+}
+
+//CHECK#20
+if (2147483647 >> -13.1 !== 4095) {
+ $ERROR('#20: 2147483647 >> -13.1 === 4095. Actual: ' + (2147483647 >> -13.1));
+}
+
+//CHECK#21
+if (2147483647 >> -12.1 !== 2047) {
+ $ERROR('#21: 2147483647 >> -12.1 === 2047. Actual: ' + (2147483647 >> -12.1));
+}
+
+//CHECK#22
+if (2147483647 >> -11.1 !== 1023) {
+ $ERROR('#22: 2147483647 >> -11.1 === 1023. Actual: ' + (2147483647 >> -11.1));
+}
+
+//CHECK#23
+if (2147483647 >> -10.1 !== 511) {
+ $ERROR('#23: 2147483647 >> -10.1 === 511. Actual: ' + (2147483647 >> -10.1));
+}
+
+//CHECK#24
+if (2147483647 >> -9.1 !== 255) {
+ $ERROR('#24: 2147483647 >> -9.1 === 255. Actual: ' + (2147483647 >> -9.1));
+}
+
+//CHECK#25
+if (2147483647 >> -8.1 !== 127) {
+ $ERROR('#25: 2147483647 >> -8.1 === 127. Actual: ' + (2147483647 >> -8.1));
+}
+
+//CHECK#26
+if (2147483647 >> -7.1 !== 63) {
+ $ERROR('#26: 2147483647 >> -7.1 === 63. Actual: ' + (2147483647 >> -7.1));
+}
+
+//CHECK#27
+if (2147483647 >> -6.1 !== 31) {
+ $ERROR('#27: 2147483647 >> -6.1 === 31. Actual: ' + (2147483647 >> -6.1));
+}
+
+//CHECK#28
+if (2147483647 >> -5.1 !== 15) {
+ $ERROR('#28: 2147483647 >> -5.1 === 15. Actual: ' + (2147483647 >> -5.1));
+}
+
+//CHECK#29
+if (2147483647 >> -4.1 !== 7) {
+ $ERROR('#29: 2147483647 >> -4.1 === 7. Actual: ' + (2147483647 >> -4.1));
+}
+
+//CHECK#30
+if (2147483647 >> -3.1 !== 3) {
+ $ERROR('#30: 2147483647 >> -3.1 === 3. Actual: ' + (2147483647 >> -3.1));
+}
+
+//CHECK#31
+if (2147483647 >> -2.1 !== 1) {
+ $ERROR('#31: 2147483647 >> -2.1 === 1. Actual: ' + (2147483647 >> -2.1));
+}
+
+//CHECK#32
+if (2147483647 >> -1.1 !== 0) {
+ $ERROR('#32: 2147483647 >> -1.1 === 0. Actual: ' + (2147483647 >> -1.1));
+}
+
+//CHECK#33
+if (2147483647 >> 32.1 !== 2147483647) {
+ $ERROR('#33: 2147483647 >> 32.1 === 2147483647. Actual: ' + (2147483647 >> 32.1));
+}
+
+//CHECK#34
+if (2147483647 >> 33.1 !== 1073741823) {
+ $ERROR('#34: 2147483647 >> 33.1 === 1073741823. Actual: ' + (2147483647 >> 33.1));
+}
+
+//CHECK#35
+if (2147483647 >> 34.1 !== 536870911) {
+ $ERROR('#35: 2147483647 >> 34.1 === 536870911. Actual: ' + (2147483647 >> 34.1));
+}
+
+//CHECK#36
+if (2147483647 >> 35.1 !== 268435455) {
+ $ERROR('#36: 2147483647 >> 35.1 === 268435455. Actual: ' + (2147483647 >> 35.1));
+}
+
+//CHECK#37
+if (2147483647 >> 36.1 !== 134217727) {
+ $ERROR('#37: 2147483647 >> 36.1 === 134217727. Actual: ' + (2147483647 >> 36.1));
+}
+
+//CHECK#38
+if (2147483647 >> 37.1 !== 67108863) {
+ $ERROR('#38: 2147483647 >> 37.1 === 67108863. Actual: ' + (2147483647 >> 37.1));
+}
+
+//CHECK#39
+if (2147483647 >> 38.1 !== 33554431) {
+ $ERROR('#39: 2147483647 >> 38.1 === 33554431. Actual: ' + (2147483647 >> 38.1));
+}
+
+//CHECK#40
+if (2147483647 >> 39.1 !== 16777215) {
+ $ERROR('#40: 2147483647 >> 39.1 === 16777215. Actual: ' + (2147483647 >> 39.1));
+}
+
+//CHECK#41
+if (2147483647 >> 40.1 !== 8388607) {
+ $ERROR('#41: 2147483647 >> 40.1 === 8388607. Actual: ' + (2147483647 >> 40.1));
+}
+
+//CHECK#42
+if (2147483647 >> 41.1 !== 4194303) {
+ $ERROR('#42: 2147483647 >> 41.1 === 4194303. Actual: ' + (2147483647 >> 41.1));
+}
+
+//CHECK#43
+if (2147483647 >> 42.1 !== 2097151) {
+ $ERROR('#43: 2147483647 >> 42.1 === 2097151. Actual: ' + (2147483647 >> 42.1));
+}
+
+//CHECK#44
+if (2147483647 >> 43.1 !== 1048575) {
+ $ERROR('#44: 2147483647 >> 43.1 === 1048575. Actual: ' + (2147483647 >> 43.1));
+}
+
+//CHECK#45
+if (2147483647 >> 44.1 !== 524287) {
+ $ERROR('#45: 2147483647 >> 44.1 === 524287. Actual: ' + (2147483647 >> 44.1));
+}
+
+//CHECK#46
+if (2147483647 >> 45.1 !== 262143) {
+ $ERROR('#46: 2147483647 >> 45.1 === 262143. Actual: ' + (2147483647 >> 45.1));
+}
+
+//CHECK#47
+if (2147483647 >> 46.1 !== 131071) {
+ $ERROR('#47: 2147483647 >> 46.1 === 131071. Actual: ' + (2147483647 >> 46.1));
+}
+
+//CHECK#48
+if (2147483647 >> 47.1 !== 65535) {
+ $ERROR('#48: 2147483647 >> 47.1 === 65535. Actual: ' + (2147483647 >> 47.1));
+}
+
+//CHECK#49
+if (2147483647 >> 48.1 !== 32767) {
+ $ERROR('#49: 2147483647 >> 48.1 === 32767. Actual: ' + (2147483647 >> 48.1));
+}
+
+//CHECK#50
+if (2147483647 >> 49.1 !== 16383) {
+ $ERROR('#50: 2147483647 >> 49.1 === 16383. Actual: ' + (2147483647 >> 49.1));
+}
+
+//CHECK#51
+if (2147483647 >> 50.1 !== 8191) {
+ $ERROR('#51: 2147483647 >> 50.1 === 8191. Actual: ' + (2147483647 >> 50.1));
+}
+
+//CHECK#52
+if (2147483647 >> 51.1 !== 4095) {
+ $ERROR('#52: 2147483647 >> 51.1 === 4095. Actual: ' + (2147483647 >> 51.1));
+}
+
+//CHECK#53
+if (2147483647 >> 52.1 !== 2047) {
+ $ERROR('#53: 2147483647 >> 52.1 === 2047. Actual: ' + (2147483647 >> 52.1));
+}
+
+//CHECK#54
+if (2147483647 >> 53.1 !== 1023) {
+ $ERROR('#54: 2147483647 >> 53.1 === 1023. Actual: ' + (2147483647 >> 53.1));
+}
+
+//CHECK#55
+if (2147483647 >> 54.1 !== 511) {
+ $ERROR('#55: 2147483647 >> 54.1 === 511. Actual: ' + (2147483647 >> 54.1));
+}
+
+//CHECK#56
+if (2147483647 >> 55.1 !== 255) {
+ $ERROR('#56: 2147483647 >> 55.1 === 255. Actual: ' + (2147483647 >> 55.1));
+}
+
+//CHECK#57
+if (2147483647 >> 56.1 !== 127) {
+ $ERROR('#57: 2147483647 >> 56.1 === 127. Actual: ' + (2147483647 >> 56.1));
+}
+
+//CHECK#58
+if (2147483647 >> 57.1 !== 63) {
+ $ERROR('#58: 2147483647 >> 57.1 === 63. Actual: ' + (2147483647 >> 57.1));
+}
+
+//CHECK#59
+if (2147483647 >> 58.1 !== 31) {
+ $ERROR('#59: 2147483647 >> 58.1 === 31. Actual: ' + (2147483647 >> 58.1));
+}
+
+//CHECK#60
+if (2147483647 >> 59.1 !== 15) {
+ $ERROR('#60: 2147483647 >> 59.1 === 15. Actual: ' + (2147483647 >> 59.1));
+}
+
+//CHECK#61
+if (2147483647 >> 60.1 !== 7) {
+ $ERROR('#61: 2147483647 >> 60.1 === 7. Actual: ' + (2147483647 >> 60.1));
+}
+
+//CHECK#62
+if (2147483647 >> 61.1 !== 3) {
+ $ERROR('#62: 2147483647 >> 61.1 === 3. Actual: ' + (2147483647 >> 61.1));
+}
+
+//CHECK#63
+if (2147483647 >> 62.1 !== 1) {
+ $ERROR('#63: 2147483647 >> 62.1 === 1. Actual: ' + (2147483647 >> 62.1));
+}
+
+//CHECK#64
+if (2147483647 >> 63.1 !== 0) {
+ $ERROR('#64: 2147483647 >> 63.1 === 0. Actual: ' + (2147483647 >> 63.1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A1.js
new file mode 100644
index 000000000..f59aa722f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.3_A1;
+* @section: 11.7.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between ShiftExpression and ">>>" or between ">>>" and AdditiveExpression are allowed;
+* @description: Checking by using eval
+*/
+
+//CHECK#1
+if (eval("-4\u0009>>>\u00091") !== 2147483646) {
+ $ERROR('#1: -4\\u0009>>>\\u00091 === 2147483646');
+}
+
+//CHECK#2
+if (eval("-4\u000B>>>\u000B1") !== 2147483646) {
+ $ERROR('#2: -4\\u000B>>>\\u000B1 === 2147483646');
+}
+
+//CHECK#3
+if (eval("-4\u000C>>>\u000C1") !== 2147483646) {
+ $ERROR('#3: -4\\u000C>>>\\u000C1 === 2147483646');
+}
+
+//CHECK#4
+if (eval("-4\u0020>>>\u00201") !== 2147483646) {
+ $ERROR('#4: -4\\u0020>>>\\u00201 === 2147483646');
+}
+
+//CHECK#5
+if (eval("-4\u00A0>>>\u00A01") !== 2147483646) {
+ $ERROR('#5: -4\\u00A0>>>\\u00A01 === 2147483646');
+}
+
+//CHECK#6
+if (eval("-4\u000A>>>\u000A1") !== 2147483646) {
+ $ERROR('#6: -4\\u000A>>>\\u000A1 === 2147483646');
+}
+
+//CHECK#7
+if (eval("-4\u000D>>>\u000D1") !== 2147483646) {
+ $ERROR('#7: -4\\u000D>>>\\u000D1 === 2147483646');
+}
+
+//CHECK#8
+if (eval("-4\u2028>>>\u20281") !== 2147483646) {
+ $ERROR('#8: -4\\u2028>>>\\u20281 === 2147483646');
+}
+
+//CHECK#9
+if (eval("-4\u2029>>>\u20291") !== 2147483646) {
+ $ERROR('#9: -4\\u2029>>>\\u20291 === 2147483646');
+}
+
+//CHECK#10
+if (eval("-4\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>>\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 2147483646) {
+ $ERROR('#10: -4\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>>>\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 2147483646');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T1.js
new file mode 100644
index 000000000..075e1a282
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.3_A2.1_T1;
+* @section: 11.7.3;
+* @assertion: Operator x >>> y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (-4 >>> 1 !== 2147483646) {
+ $ERROR('#1: -4 >>> 1 === 2147483646. Actual: ' + (-4 >>> 1));
+}
+
+//CHECK#2
+var x = -4;
+if (x >>> 1 !== 2147483646) {
+ $ERROR('#2: var x = -4; x >>> 1 === 2147483646. Actual: ' + (x >>> 1));
+}
+
+//CHECK#3
+var y = 1;
+if (-4 >>> y !== 2147483646) {
+ $ERROR('#3: var y = 1; -4 >>> y === 2147483646. Actual: ' + (-4 >>> y));
+}
+
+//CHECK#4
+var x = -4;
+var y = 1;
+if (x >>> y !== 2147483646) {
+ $ERROR('#4: var x = -4; var y = 1; x >>> y === 2147483646. Actual: ' + (x >>> y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = -4;
+objecty.prop = 1;
+if (objectx.prop >>> objecty.prop !== 2147483646) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = -4; objecty.prop = 1; objectx.prop >>> objecty.prop === 2147483646. Actual: ' + (objectx.prop >>> objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T2.js
new file mode 100644
index 000000000..b1354c32d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.1_T2;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x >>> 1;
+ $ERROR('#1.1: x >>> 1 throw ReferenceError. Actual: ' + (x >>> 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >>> 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T3.js
new file mode 100644
index 000000000..09f29ba3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.1_T3;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 >>> y;
+ $ERROR('#1.1: 1 >>> y throw ReferenceError. Actual: ' + (1 >>> y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >>> y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.2_T1.js
new file mode 100644
index 000000000..c88f41662
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.2_T1;
+ * @section: 11.7.3, 8.6.2.6;
+ * @assertion: Operator x >>> y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return -4}} >>> 1 !== 2147483646) {
+ $ERROR('#1: {valueOf: function() {return -4}} >>> 1 === 2147483646. Actual: ' + ({valueOf: function() {return -4}} >>> 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return -4}, toString: function() {return 0}} >>> 1 !== 2147483646) {
+ $ERROR('#2: {valueOf: function() {return -4}, toString: function() {return 0}} >>> 1 === 2147483646. Actual: ' + ({valueOf: function() {return -4}, toString: function() {return 0}} >>> 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return -4}, toString: function() {return {}}} >>> 1 !== 2147483646) {
+ $ERROR('#3: {valueOf: function() {return -4}, toString: function() {return {}}} >>> 1 === 2147483646. Actual: ' + ({valueOf: function() {return -4}, toString: function() {return {}}} >>> 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1 !== 2147483646) {
+ $ERROR('#4.1: {valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1 === 2147483646. Actual: ' + ({valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (-4 >>> {toString: function() {return 1}} !== 2147483646) {
+ $ERROR('#5: -4 >>> {toString: function() {return 1}} === 2147483646. Actual: ' + (-4 >>> {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (-4 >>> {valueOf: function() {return {}}, toString: function() {return 1}} !== 2147483646) {
+ $ERROR('#6: -4 >>> {valueOf: function() {return {}}, toString: function() {return 1}} === 2147483646. Actual: ' + (-4 >>> {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ -4 >>> {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: -4 >>> {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (-4 >>> {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: -4 >>> {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ -4 >>> {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: -4 >>> {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: -4 >>> {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.3_T1.js
new file mode 100644
index 000000000..b60590eac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.3_T1;
+ * @section: 11.7.3;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x >>> y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >>> y throw "x". Actual: ' + (x >>> y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >>> y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T1.js
new file mode 100644
index 000000000..4014efe38
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.4_T1;
+ * @section: 11.7.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) >>> x !== 0) {
+ $ERROR('#1: var x = 0; (x = 1) >>> x === 0. Actual: ' + ((x = 1) >>> x));
+}
+
+//CHECK#2
+var x = -4;
+if (x >>> (x = 1) !== 2147483646) {
+ $ERROR('#2: var x = -4; x >>> (x = 1) === 2147483646. Actual: ' + (x >>> (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T2.js
new file mode 100644
index 000000000..bd3f75524
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.4_T2;
+ * @section: 11.7.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() >>> y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >>> y() throw "x". Actual: ' + (x() >>> y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >>> y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T3.js
new file mode 100644
index 000000000..400103ea7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.4_T3;
+ * @section: 11.7.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x >>> (x = 1);
+ $ERROR('#1.1: x >>> (x = 1) throw ReferenceError. Actual: ' + (x >>> (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >>> (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) >>> y !== 0) {
+ $ERROR('#2: (y = 1) >>> y === 0. Actual: ' + ((y = 1) >>> y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.1.js
new file mode 100644
index 000000000..a785bf055
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.1;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true >>> true !== 0) {
+ $ERROR('#1: true >>> true === 0. Actual: ' + (true >>> true));
+}
+
+//CHECK#2
+if (new Boolean(true) >>> true !== 0) {
+ $ERROR('#2: new Boolean(true) >>> true === 0. Actual: ' + (new Boolean(true) >>> true));
+}
+
+//CHECK#3
+if (true >>> new Boolean(true) !== 0) {
+ $ERROR('#3: true >>> new Boolean(true) === 0. Actual: ' + (true >>> new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) >>> new Boolean(true) !== 0) {
+ $ERROR('#4: new Boolean(true) >>> new Boolean(true) === 0. Actual: ' + (new Boolean(true) >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.2.js
new file mode 100644
index 000000000..77022415a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.2;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 >>> 1 !== 0) {
+ $ERROR('#1: 1 >>> 1 === 0. Actual: ' + (1 >>> 1));
+}
+
+//CHECK#2
+if (new Number(1) >>> 1 !== 0) {
+ $ERROR('#2: new Number(1) >>> 1 === 0. Actual: ' + (new Number(1) >>> 1));
+}
+
+//CHECK#3
+if (1 >>> new Number(1) !== 0) {
+ $ERROR('#3: 1 >>> new Number(1) === 0. Actual: ' + (1 >>> new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) >>> new Number(1) !== 0) {
+ $ERROR('#4: new Number(1) >>> new Number(1) === 0. Actual: ' + (new Number(1) >>> new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.3.js
new file mode 100644
index 000000000..feba982d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.3;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" >>> "1" !== 0) {
+ $ERROR('#1: "1" >>> "1" === 0. Actual: ' + ("1" >>> "1"));
+}
+
+//CHECK#2
+if (new String("1") >>> "1" !== 0) {
+ $ERROR('#2: new String("1") >>> "1" === 0. Actual: ' + (new String("1") >>> "1"));
+}
+
+//CHECK#3
+if ("1" >>> new String("1") !== 0) {
+ $ERROR('#3: "1" >>> new String("1") === 0. Actual: ' + ("1" >>> new String("1")));
+}
+
+//CHECK#4
+if (new String("1") >>> new String("1") !== 0) {
+ $ERROR('#4: new String("1") >>> new String("1") === 0. Actual: ' + (new String("1") >>> new String("1")));
+}
+
+//CHECK#5
+if ("x" >>> "1" !== 0) {
+ $ERROR('#5: "x" >>> "1" === 0. Actual: ' + ("x" >>> "1"));
+}
+
+//CHECK#6
+if ("1" >>> "x" !== 1) {
+ $ERROR('#6: "1" >>> "x" === 1. Actual: ' + ("1" >>> "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.4.js
new file mode 100644
index 000000000..8e3ceacfb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.4;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null >>> undefined !== 0) {
+ $ERROR('#1: null >>> undefined === 0. Actual: ' + (null >>> undefined));
+}
+
+//CHECK#2
+if (undefined >>> null !== 0) {
+ $ERROR('#2: undefined >>> null === 0. Actual: ' + (undefined >>> null));
+}
+
+//CHECK#3
+if (undefined >>> undefined !== 0) {
+ $ERROR('#3: undefined >>> undefined === 0. Actual: ' + (undefined >>> undefined));
+}
+
+//CHECK#4
+if (null >>> null !== 0) {
+ $ERROR('#4: null >>> null === 0. Actual: ' + (null >>> null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.5.js
new file mode 100644
index 000000000..8780eab28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.5;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} >>> function(){return 1}) !== 0) {
+ $ERROR('#1: ({} >>> function(){return 1}) === 0. Actual: ' + (({} >>> function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} >>> {}) !== 0) {
+ $ERROR('#2: (function(){return 1} >>> {}) === 0. Actual: ' + ((function(){return 1} >>> {})));
+}
+
+//CHECK#3
+if ((function(){return 1} >>> function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} >>> function(){return 1}) === 0. Actual: ' + ((function(){return 1} >>> function(){return 1})));
+}
+
+//CHECK#4
+if (({} >>> {}) !== 0) {
+ $ERROR('#4: ({} >>> {}) === 0. Actual: ' + (({} >>> {})));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.1.js
new file mode 100644
index 000000000..5666891af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.1;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true >>> 1 !== 0) {
+ $ERROR('#1: true >>> 1 === 0. Actual: ' + (true >>> 1));
+}
+
+//CHECK#2
+if (1 >>> true !== 0) {
+ $ERROR('#2: 1 >>> true === 0. Actual: ' + (1 >>> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >>> 1 !== 0) {
+ $ERROR('#3: new Boolean(true) >>> 1 === 0. Actual: ' + (new Boolean(true) >>> 1));
+}
+
+//CHECK#4
+if (1 >>> new Boolean(true) !== 0) {
+ $ERROR('#4: 1 >>> new Boolean(true) === 0. Actual: ' + (1 >>> new Boolean(true)));
+}
+
+//CHECK#5
+if (true >>> new Number(1) !== 0) {
+ $ERROR('#5: true >>> new Number(1) === 0. Actual: ' + (true >>> new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) >>> true !== 0) {
+ $ERROR('#6: new Number(1) >>> true === 0. Actual: ' + (new Number(1) >>> true));
+}
+
+//CHECK#7
+if (new Boolean(true) >>> new Number(1) !== 0) {
+ $ERROR('#7: new Boolean(true) >>> new Number(1) === 0. Actual: ' + (new Boolean(true) >>> new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) >>> new Boolean(true) !== 0) {
+ $ERROR('#8: new Number(1) >>> new Boolean(true) === 0. Actual: ' + (new Number(1) >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.2.js
new file mode 100644
index 000000000..f678ae1c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.2;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" >>> 1 !== 0) {
+ $ERROR('#1: "1" >>> 1 === 0. Actual: ' + ("1" >>> 1));
+}
+
+//CHECK#2
+if (1 >>> "1" !== 0) {
+ $ERROR('#2: 1 >>> "1" === 0. Actual: ' + (1 >>> "1"));
+}
+
+//CHECK#3
+if (new String("1") >>> 1 !== 0) {
+ $ERROR('#3: new String("1") >>> 1 === 0. Actual: ' + (new String("1") >>> 1));
+}
+
+//CHECK#4
+if (1 >>> new String("1") !== 0) {
+ $ERROR('#4: 1 >>> new String("1") === 0. Actual: ' + (1 >>> new String("1")));
+}
+
+//CHECK#5
+if ("1" >>> new Number(1) !== 0) {
+ $ERROR('#5: "1" >>> new Number(1) === 0. Actual: ' + ("1" >>> new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) >>> "1" !== 0) {
+ $ERROR('#6: new Number(1) >>> "1" === 0. Actual: ' + (new Number(1) >>> "1"));
+}
+
+//CHECK#7
+if (new String("1") >>> new Number(1) !== 0) {
+ $ERROR('#7: new String("1") >>> new Number(1) === 0. Actual: ' + (new String("1") >>> new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) >>> new String("1") !== 0) {
+ $ERROR('#8: new Number(1) >>> new String("1") === 0. Actual: ' + (new Number(1) >>> new String("1")));
+}
+
+//CHECK#9
+if ("x" >>> 1 !== 0) {
+ $ERROR('#9: "x" >>> 1 === 0. Actual: ' + ("x" >>> 1));
+}
+
+//CHECK#10
+if (1 >>> "x" !== 1) {
+ $ERROR('#10: 1 >>> "x" === 1. Actual: ' + (1 >>> "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.3.js
new file mode 100644
index 000000000..3feb75745
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.3;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 >>> null !== 1) {
+ $ERROR('#1: 1 >>> null === 1. Actual: ' + (1 >>> null));
+}
+
+//CHECK#2
+if (null >>> 1 !== 0) {
+ $ERROR('#2: null >>> 1 === 0. Actual: ' + (null >>> 1));
+}
+
+//CHECK#3
+if (new Number(1) >>> null !== 1) {
+ $ERROR('#3: new Number(1) >>> null === 1. Actual: ' + (new Number(1) >>> null));
+}
+
+//CHECK#4
+if (null >>> new Number(1) !== 0) {
+ $ERROR('#4: null >>> new Number(1) === 0. Actual: ' + (null >>> new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.4.js
new file mode 100644
index 000000000..3dfb4d20e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.4;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 >>> undefined !== 1) {
+ $ERROR('#1: 1 >>> undefined === 1. Actual: ' + (1 >>> undefined));
+}
+
+//CHECK#2
+if (undefined >>> 1 !== 0) {
+ $ERROR('#2: undefined >>> 1 === 0. Actual: ' + (undefined >>> 1));
+}
+
+//CHECK#3
+if (new Number(1) >>> undefined !== 1) {
+ $ERROR('#3: new Number(1) >>> undefined === 1. Actual: ' + (new Number(1) >>> undefined));
+}
+
+//CHECK#4
+if (undefined >>> new Number(1) !== 0) {
+ $ERROR('#4: undefined >>> new Number(1) === 0. Actual: ' + (undefined >>> new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.5.js
new file mode 100644
index 000000000..662d7711d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.5;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true >>> "1" !== 0) {
+ $ERROR('#1: true >>> "1" === 0. Actual: ' + (true >>> "1"));
+}
+
+//CHECK#2
+if ("1" >>> true !== 0) {
+ $ERROR('#2: "1" >>> true === 0. Actual: ' + ("1" >>> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >>> "1" !== 0) {
+ $ERROR('#3: new Boolean(true) >>> "1" === 0. Actual: ' + (new Boolean(true) >>> "1"));
+}
+
+//CHECK#4
+if ("1" >>> new Boolean(true) !== 0) {
+ $ERROR('#4: "1" >>> new Boolean(true) === 0. Actual: ' + ("1" >>> new Boolean(true)));
+}
+
+//CHECK#5
+if (true >>> new String("1") !== 0) {
+ $ERROR('#5: true >>> new String("1") === 0. Actual: ' + (true >>> new String("1")));
+}
+
+//CHECK#6
+if (new String("1") >>> true !== 0) {
+ $ERROR('#6: new String("1") >>> true === 0. Actual: ' + (new String("1") >>> true));
+}
+
+//CHECK#7
+if (new Boolean(true) >>> new String("1") !== 0) {
+ $ERROR('#7: new Boolean(true) >>> new String("1") === 0. Actual: ' + (new Boolean(true) >>> new String("1")));
+}
+
+//CHECK#8
+if (new String("1") >>> new Boolean(true) !== 0) {
+ $ERROR('#8: new String("1") >>> new Boolean(true) === 0. Actual: ' + (new String("1") >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.6.js
new file mode 100644
index 000000000..8b57bb11a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.6;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" >>> undefined !== 1) {
+ $ERROR('#1: "1" >>> undefined === 1. Actual: ' + ("1" >>> undefined));
+}
+
+//CHECK#2
+if (undefined >>> "1" !== 0) {
+ $ERROR('#2: undefined >>> "1" === 0. Actual: ' + (undefined >>> "1"));
+}
+
+//CHECK#3
+if (new String("1") >>> undefined !== 1) {
+ $ERROR('#3: new String("1") >>> undefined === 1. Actual: ' + (new String("1") >>> undefined));
+}
+
+//CHECK#4
+if (undefined >>> new String("1") !== 0) {
+ $ERROR('#4: undefined >>> new String("1") === 0. Actual: ' + (undefined >>> new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.7.js
new file mode 100644
index 000000000..e63910e1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.7;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" >>> null !== 1) {
+ $ERROR('#1: "1" >>> null === 1. Actual: ' + ("1" >>> null));
+}
+
+//CHECK#2
+if (null >>> "1" !== 0) {
+ $ERROR('#2: null >>> "1" === 0. Actual: ' + (null >>> "1"));
+}
+
+//CHECK#3
+if (new String("1") >>> null !== 1) {
+ $ERROR('#3: new String("1") >>> null === 1. Actual: ' + (new String("1") >>> null));
+}
+
+//CHECK#4
+if (null >>> new String("1") !== 0) {
+ $ERROR('#4: null >>> new String("1") === 0. Actual: ' + (null >>> new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.8.js
new file mode 100644
index 000000000..8671cc64c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.8;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true >>> undefined !== 1) {
+ $ERROR('#1: true >>> undefined === 1. Actual: ' + (true >>> undefined));
+}
+
+//CHECK#2
+if (undefined >>> true !== 0) {
+ $ERROR('#2: undefined >>> true === 0. Actual: ' + (undefined >>> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >>> undefined !== 1) {
+ $ERROR('#3: new Boolean(true) >>> undefined === 1. Actual: ' + (new Boolean(true) >>> undefined));
+}
+
+//CHECK#4
+if (undefined >>> new Boolean(true) !== 0) {
+ $ERROR('#4: undefined >>> new Boolean(true) === 0. Actual: ' + (undefined >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.9.js
new file mode 100644
index 000000000..c1e7d433d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.9;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true >>> null !== 1) {
+ $ERROR('#1: true >>> null === 1. Actual: ' + (true >>> null));
+}
+
+//CHECK#2
+if (null >>> true !== 0) {
+ $ERROR('#2: null >>> true === 0. Actual: ' + (null >>> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >>> null !== 1) {
+ $ERROR('#3: new Boolean(true) >>> null === 1. Actual: ' + (new Boolean(true) >>> null));
+}
+
+//CHECK#4
+if (null >>> new Boolean(true) !== 0) {
+ $ERROR('#4: null >>> new Boolean(true) === 0. Actual: ' + (null >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T1.js
new file mode 100644
index 000000000..3cfadb9a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T1.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A4_T1;
+ * @section: 11.7.3;
+ * @assertion: Check operator x >>> y in distinct points;
+ * @description: ShiftExpression = 2^n, n = 0...15;
+ */
+
+//CHECK
+
+if (1 >>> 0 !== 1) {
+ $ERROR('#1: 1 >>> 0 === 1. Actual: ' + (1 >>> 0));
+}
+
+
+if (2 >>> 0 !== 2) {
+ $ERROR('#2: 2 >>> 0 === 2. Actual: ' + (2 >>> 0));
+}
+
+
+if (4 >>> 0 !== 4) {
+ $ERROR('#3: 4 >>> 0 === 4. Actual: ' + (4 >>> 0));
+}
+
+
+if (8 >>> 0 !== 8) {
+ $ERROR('#4: 8 >>> 0 === 8. Actual: ' + (8 >>> 0));
+}
+
+
+if (16 >>> 0 !== 16) {
+ $ERROR('#5: 16 >>> 0 === 16. Actual: ' + (16 >>> 0));
+}
+
+
+if (32 >>> 0 !== 32) {
+ $ERROR('#6: 32 >>> 0 === 32. Actual: ' + (32 >>> 0));
+}
+
+
+if (64 >>> 0 !== 64) {
+ $ERROR('#7: 64 >>> 0 === 64. Actual: ' + (64 >>> 0));
+}
+
+
+if (128 >>> 0 !== 128) {
+ $ERROR('#8: 128 >>> 0 === 128. Actual: ' + (128 >>> 0));
+}
+
+
+if (256 >>> 0 !== 256) {
+ $ERROR('#9: 256 >>> 0 === 256. Actual: ' + (256 >>> 0));
+}
+
+
+if (512 >>> 0 !== 512) {
+ $ERROR('#10: 512 >>> 0 === 512. Actual: ' + (512 >>> 0));
+}
+
+
+if (1024 >>> 0 !== 1024) {
+ $ERROR('#11: 1024 >>> 0 === 1024. Actual: ' + (1024 >>> 0));
+}
+
+
+if (2048 >>> 0 !== 2048) {
+ $ERROR('#12: 2048 >>> 0 === 2048. Actual: ' + (2048 >>> 0));
+}
+
+
+if (4096 >>> 0 !== 4096) {
+ $ERROR('#13: 4096 >>> 0 === 4096. Actual: ' + (4096 >>> 0));
+}
+
+
+if (8192 >>> 0 !== 8192) {
+ $ERROR('#14: 8192 >>> 0 === 8192. Actual: ' + (8192 >>> 0));
+}
+
+
+if (16384 >>> 0 !== 16384) {
+ $ERROR('#15: 16384 >>> 0 === 16384. Actual: ' + (16384 >>> 0));
+}
+
+
+if (32768 >>> 0 !== 32768) {
+ $ERROR('#16: 32768 >>> 0 === 32768. Actual: ' + (32768 >>> 0));
+}
+
+
+if (65536 >>> 0 !== 65536) {
+ $ERROR('#17: 65536 >>> 0 === 65536. Actual: ' + (65536 >>> 0));
+}
+
+
+if (131072 >>> 0 !== 131072) {
+ $ERROR('#18: 131072 >>> 0 === 131072. Actual: ' + (131072 >>> 0));
+}
+
+
+if (262144 >>> 0 !== 262144) {
+ $ERROR('#19: 262144 >>> 0 === 262144. Actual: ' + (262144 >>> 0));
+}
+
+
+if (524288 >>> 0 !== 524288) {
+ $ERROR('#20: 524288 >>> 0 === 524288. Actual: ' + (524288 >>> 0));
+}
+
+
+if (1048576 >>> 0 !== 1048576) {
+ $ERROR('#21: 1048576 >>> 0 === 1048576. Actual: ' + (1048576 >>> 0));
+}
+
+
+if (2097152 >>> 0 !== 2097152) {
+ $ERROR('#22: 2097152 >>> 0 === 2097152. Actual: ' + (2097152 >>> 0));
+}
+
+
+if (4194304 >>> 0 !== 4194304) {
+ $ERROR('#23: 4194304 >>> 0 === 4194304. Actual: ' + (4194304 >>> 0));
+}
+
+
+if (8388608 >>> 0 !== 8388608) {
+ $ERROR('#24: 8388608 >>> 0 === 8388608. Actual: ' + (8388608 >>> 0));
+}
+
+
+if (16777216 >>> 0 !== 16777216) {
+ $ERROR('#25: 16777216 >>> 0 === 16777216. Actual: ' + (16777216 >>> 0));
+}
+
+
+if (33554432 >>> 0 !== 33554432) {
+ $ERROR('#26: 33554432 >>> 0 === 33554432. Actual: ' + (33554432 >>> 0));
+}
+
+
+if (67108864 >>> 0 !== 67108864) {
+ $ERROR('#27: 67108864 >>> 0 === 67108864. Actual: ' + (67108864 >>> 0));
+}
+
+
+if (134217728 >>> 0 !== 134217728) {
+ $ERROR('#28: 134217728 >>> 0 === 134217728. Actual: ' + (134217728 >>> 0));
+}
+
+
+if (268435456 >>> 0 !== 268435456) {
+ $ERROR('#29: 268435456 >>> 0 === 268435456. Actual: ' + (268435456 >>> 0));
+}
+
+
+if (536870912 >>> 0 !== 536870912) {
+ $ERROR('#30: 536870912 >>> 0 === 536870912. Actual: ' + (536870912 >>> 0));
+}
+
+
+if (1073741824 >>> 0 !== 1073741824) {
+ $ERROR('#31: 1073741824 >>> 0 === 1073741824. Actual: ' + (1073741824 >>> 0));
+}
+
+
+if (2147483648 >>> 0 !== 2147483648) {
+ $ERROR('#32: 2147483648 >>> 0 === 2147483648. Actual: ' + (2147483648 >>> 0));
+}
+
+
+if (1 >>> 1 !== 0) {
+ $ERROR('#33: 1 >>> 1 === 0. Actual: ' + (1 >>> 1));
+}
+
+
+if (2 >>> 1 !== 1) {
+ $ERROR('#34: 2 >>> 1 === 1. Actual: ' + (2 >>> 1));
+}
+
+
+if (4 >>> 1 !== 2) {
+ $ERROR('#35: 4 >>> 1 === 2. Actual: ' + (4 >>> 1));
+}
+
+
+if (8 >>> 1 !== 4) {
+ $ERROR('#36: 8 >>> 1 === 4. Actual: ' + (8 >>> 1));
+}
+
+
+if (16 >>> 1 !== 8) {
+ $ERROR('#37: 16 >>> 1 === 8. Actual: ' + (16 >>> 1));
+}
+
+
+if (32 >>> 1 !== 16) {
+ $ERROR('#38: 32 >>> 1 === 16. Actual: ' + (32 >>> 1));
+}
+
+
+if (64 >>> 1 !== 32) {
+ $ERROR('#39: 64 >>> 1 === 32. Actual: ' + (64 >>> 1));
+}
+
+
+if (128 >>> 1 !== 64) {
+ $ERROR('#40: 128 >>> 1 === 64. Actual: ' + (128 >>> 1));
+}
+
+
+if (256 >>> 1 !== 128) {
+ $ERROR('#41: 256 >>> 1 === 128. Actual: ' + (256 >>> 1));
+}
+
+
+if (512 >>> 1 !== 256) {
+ $ERROR('#42: 512 >>> 1 === 256. Actual: ' + (512 >>> 1));
+}
+
+
+if (1024 >>> 1 !== 512) {
+ $ERROR('#43: 1024 >>> 1 === 512. Actual: ' + (1024 >>> 1));
+}
+
+
+if (2048 >>> 1 !== 1024) {
+ $ERROR('#44: 2048 >>> 1 === 1024. Actual: ' + (2048 >>> 1));
+}
+
+
+if (4096 >>> 1 !== 2048) {
+ $ERROR('#45: 4096 >>> 1 === 2048. Actual: ' + (4096 >>> 1));
+}
+
+
+if (8192 >>> 1 !== 4096) {
+ $ERROR('#46: 8192 >>> 1 === 4096. Actual: ' + (8192 >>> 1));
+}
+
+
+if (16384 >>> 1 !== 8192) {
+ $ERROR('#47: 16384 >>> 1 === 8192. Actual: ' + (16384 >>> 1));
+}
+
+
+if (32768 >>> 1 !== 16384) {
+ $ERROR('#48: 32768 >>> 1 === 16384. Actual: ' + (32768 >>> 1));
+}
+
+
+if (65536 >>> 1 !== 32768) {
+ $ERROR('#49: 65536 >>> 1 === 32768. Actual: ' + (65536 >>> 1));
+}
+
+
+if (131072 >>> 1 !== 65536) {
+ $ERROR('#50: 131072 >>> 1 === 65536. Actual: ' + (131072 >>> 1));
+}
+
+
+if (262144 >>> 1 !== 131072) {
+ $ERROR('#51: 262144 >>> 1 === 131072. Actual: ' + (262144 >>> 1));
+}
+
+
+if (524288 >>> 1 !== 262144) {
+ $ERROR('#52: 524288 >>> 1 === 262144. Actual: ' + (524288 >>> 1));
+}
+
+
+if (1048576 >>> 1 !== 524288) {
+ $ERROR('#53: 1048576 >>> 1 === 524288. Actual: ' + (1048576 >>> 1));
+}
+
+
+if (2097152 >>> 1 !== 1048576) {
+ $ERROR('#54: 2097152 >>> 1 === 1048576. Actual: ' + (2097152 >>> 1));
+}
+
+
+if (4194304 >>> 1 !== 2097152) {
+ $ERROR('#55: 4194304 >>> 1 === 2097152. Actual: ' + (4194304 >>> 1));
+}
+
+
+if (8388608 >>> 1 !== 4194304) {
+ $ERROR('#56: 8388608 >>> 1 === 4194304. Actual: ' + (8388608 >>> 1));
+}
+
+
+if (16777216 >>> 1 !== 8388608) {
+ $ERROR('#57: 16777216 >>> 1 === 8388608. Actual: ' + (16777216 >>> 1));
+}
+
+
+if (33554432 >>> 1 !== 16777216) {
+ $ERROR('#58: 33554432 >>> 1 === 16777216. Actual: ' + (33554432 >>> 1));
+}
+
+
+if (67108864 >>> 1 !== 33554432) {
+ $ERROR('#59: 67108864 >>> 1 === 33554432. Actual: ' + (67108864 >>> 1));
+}
+
+
+if (134217728 >>> 1 !== 67108864) {
+ $ERROR('#60: 134217728 >>> 1 === 67108864. Actual: ' + (134217728 >>> 1));
+}
+
+
+if (268435456 >>> 1 !== 134217728) {
+ $ERROR('#61: 268435456 >>> 1 === 134217728. Actual: ' + (268435456 >>> 1));
+}
+
+
+if (536870912 >>> 1 !== 268435456) {
+ $ERROR('#62: 536870912 >>> 1 === 268435456. Actual: ' + (536870912 >>> 1));
+}
+
+
+if (1073741824 >>> 1 !== 536870912) {
+ $ERROR('#63: 1073741824 >>> 1 === 536870912. Actual: ' + (1073741824 >>> 1));
+}
+
+
+if (2147483648 >>> 1 !== 1073741824) {
+ $ERROR('#64: 2147483648 >>> 1 === 1073741824. Actual: ' + (2147483648 >>> 1));
+}
+
+
+if (1 >>> 2 !== 0) {
+ $ERROR('#65: 1 >>> 2 === 0. Actual: ' + (1 >>> 2));
+}
+
+
+if (2 >>> 2 !== 0) {
+ $ERROR('#66: 2 >>> 2 === 0. Actual: ' + (2 >>> 2));
+}
+
+
+if (4 >>> 2 !== 1) {
+ $ERROR('#67: 4 >>> 2 === 1. Actual: ' + (4 >>> 2));
+}
+
+
+if (8 >>> 2 !== 2) {
+ $ERROR('#68: 8 >>> 2 === 2. Actual: ' + (8 >>> 2));
+}
+
+
+if (16 >>> 2 !== 4) {
+ $ERROR('#69: 16 >>> 2 === 4. Actual: ' + (16 >>> 2));
+}
+
+
+if (32 >>> 2 !== 8) {
+ $ERROR('#70: 32 >>> 2 === 8. Actual: ' + (32 >>> 2));
+}
+
+
+if (64 >>> 2 !== 16) {
+ $ERROR('#71: 64 >>> 2 === 16. Actual: ' + (64 >>> 2));
+}
+
+
+if (128 >>> 2 !== 32) {
+ $ERROR('#72: 128 >>> 2 === 32. Actual: ' + (128 >>> 2));
+}
+
+
+if (256 >>> 2 !== 64) {
+ $ERROR('#73: 256 >>> 2 === 64. Actual: ' + (256 >>> 2));
+}
+
+
+if (512 >>> 2 !== 128) {
+ $ERROR('#74: 512 >>> 2 === 128. Actual: ' + (512 >>> 2));
+}
+
+
+if (1024 >>> 2 !== 256) {
+ $ERROR('#75: 1024 >>> 2 === 256. Actual: ' + (1024 >>> 2));
+}
+
+
+if (2048 >>> 2 !== 512) {
+ $ERROR('#76: 2048 >>> 2 === 512. Actual: ' + (2048 >>> 2));
+}
+
+
+if (4096 >>> 2 !== 1024) {
+ $ERROR('#77: 4096 >>> 2 === 1024. Actual: ' + (4096 >>> 2));
+}
+
+
+if (8192 >>> 2 !== 2048) {
+ $ERROR('#78: 8192 >>> 2 === 2048. Actual: ' + (8192 >>> 2));
+}
+
+
+if (16384 >>> 2 !== 4096) {
+ $ERROR('#79: 16384 >>> 2 === 4096. Actual: ' + (16384 >>> 2));
+}
+
+
+if (32768 >>> 2 !== 8192) {
+ $ERROR('#80: 32768 >>> 2 === 8192. Actual: ' + (32768 >>> 2));
+}
+
+
+if (65536 >>> 2 !== 16384) {
+ $ERROR('#81: 65536 >>> 2 === 16384. Actual: ' + (65536 >>> 2));
+}
+
+
+if (131072 >>> 2 !== 32768) {
+ $ERROR('#82: 131072 >>> 2 === 32768. Actual: ' + (131072 >>> 2));
+}
+
+
+if (262144 >>> 2 !== 65536) {
+ $ERROR('#83: 262144 >>> 2 === 65536. Actual: ' + (262144 >>> 2));
+}
+
+
+if (524288 >>> 2 !== 131072) {
+ $ERROR('#84: 524288 >>> 2 === 131072. Actual: ' + (524288 >>> 2));
+}
+
+
+if (1048576 >>> 2 !== 262144) {
+ $ERROR('#85: 1048576 >>> 2 === 262144. Actual: ' + (1048576 >>> 2));
+}
+
+
+if (2097152 >>> 2 !== 524288) {
+ $ERROR('#86: 2097152 >>> 2 === 524288. Actual: ' + (2097152 >>> 2));
+}
+
+
+if (4194304 >>> 2 !== 1048576) {
+ $ERROR('#87: 4194304 >>> 2 === 1048576. Actual: ' + (4194304 >>> 2));
+}
+
+
+if (8388608 >>> 2 !== 2097152) {
+ $ERROR('#88: 8388608 >>> 2 === 2097152. Actual: ' + (8388608 >>> 2));
+}
+
+
+if (16777216 >>> 2 !== 4194304) {
+ $ERROR('#89: 16777216 >>> 2 === 4194304. Actual: ' + (16777216 >>> 2));
+}
+
+
+if (33554432 >>> 2 !== 8388608) {
+ $ERROR('#90: 33554432 >>> 2 === 8388608. Actual: ' + (33554432 >>> 2));
+}
+
+
+if (67108864 >>> 2 !== 16777216) {
+ $ERROR('#91: 67108864 >>> 2 === 16777216. Actual: ' + (67108864 >>> 2));
+}
+
+
+if (134217728 >>> 2 !== 33554432) {
+ $ERROR('#92: 134217728 >>> 2 === 33554432. Actual: ' + (134217728 >>> 2));
+}
+
+
+if (268435456 >>> 2 !== 67108864) {
+ $ERROR('#93: 268435456 >>> 2 === 67108864. Actual: ' + (268435456 >>> 2));
+}
+
+
+if (536870912 >>> 2 !== 134217728) {
+ $ERROR('#94: 536870912 >>> 2 === 134217728. Actual: ' + (536870912 >>> 2));
+}
+
+
+if (1073741824 >>> 2 !== 268435456) {
+ $ERROR('#95: 1073741824 >>> 2 === 268435456. Actual: ' + (1073741824 >>> 2));
+}
+
+
+if (2147483648 >>> 2 !== 536870912) {
+ $ERROR('#96: 2147483648 >>> 2 === 536870912. Actual: ' + (2147483648 >>> 2));
+}
+
+
+if (1 >>> 3 !== 0) {
+ $ERROR('#97: 1 >>> 3 === 0. Actual: ' + (1 >>> 3));
+}
+
+
+if (2 >>> 3 !== 0) {
+ $ERROR('#98: 2 >>> 3 === 0. Actual: ' + (2 >>> 3));
+}
+
+
+if (4 >>> 3 !== 0) {
+ $ERROR('#99: 4 >>> 3 === 0. Actual: ' + (4 >>> 3));
+}
+
+
+if (8 >>> 3 !== 1) {
+ $ERROR('#100: 8 >>> 3 === 1. Actual: ' + (8 >>> 3));
+}
+
+
+if (16 >>> 3 !== 2) {
+ $ERROR('#101: 16 >>> 3 === 2. Actual: ' + (16 >>> 3));
+}
+
+
+if (32 >>> 3 !== 4) {
+ $ERROR('#102: 32 >>> 3 === 4. Actual: ' + (32 >>> 3));
+}
+
+
+if (64 >>> 3 !== 8) {
+ $ERROR('#103: 64 >>> 3 === 8. Actual: ' + (64 >>> 3));
+}
+
+
+if (128 >>> 3 !== 16) {
+ $ERROR('#104: 128 >>> 3 === 16. Actual: ' + (128 >>> 3));
+}
+
+
+if (256 >>> 3 !== 32) {
+ $ERROR('#105: 256 >>> 3 === 32. Actual: ' + (256 >>> 3));
+}
+
+
+if (512 >>> 3 !== 64) {
+ $ERROR('#106: 512 >>> 3 === 64. Actual: ' + (512 >>> 3));
+}
+
+
+if (1024 >>> 3 !== 128) {
+ $ERROR('#107: 1024 >>> 3 === 128. Actual: ' + (1024 >>> 3));
+}
+
+
+if (2048 >>> 3 !== 256) {
+ $ERROR('#108: 2048 >>> 3 === 256. Actual: ' + (2048 >>> 3));
+}
+
+
+if (4096 >>> 3 !== 512) {
+ $ERROR('#109: 4096 >>> 3 === 512. Actual: ' + (4096 >>> 3));
+}
+
+
+if (8192 >>> 3 !== 1024) {
+ $ERROR('#110: 8192 >>> 3 === 1024. Actual: ' + (8192 >>> 3));
+}
+
+
+if (16384 >>> 3 !== 2048) {
+ $ERROR('#111: 16384 >>> 3 === 2048. Actual: ' + (16384 >>> 3));
+}
+
+
+if (32768 >>> 3 !== 4096) {
+ $ERROR('#112: 32768 >>> 3 === 4096. Actual: ' + (32768 >>> 3));
+}
+
+
+if (65536 >>> 3 !== 8192) {
+ $ERROR('#113: 65536 >>> 3 === 8192. Actual: ' + (65536 >>> 3));
+}
+
+
+if (131072 >>> 3 !== 16384) {
+ $ERROR('#114: 131072 >>> 3 === 16384. Actual: ' + (131072 >>> 3));
+}
+
+
+if (262144 >>> 3 !== 32768) {
+ $ERROR('#115: 262144 >>> 3 === 32768. Actual: ' + (262144 >>> 3));
+}
+
+
+if (524288 >>> 3 !== 65536) {
+ $ERROR('#116: 524288 >>> 3 === 65536. Actual: ' + (524288 >>> 3));
+}
+
+
+if (1048576 >>> 3 !== 131072) {
+ $ERROR('#117: 1048576 >>> 3 === 131072. Actual: ' + (1048576 >>> 3));
+}
+
+
+if (2097152 >>> 3 !== 262144) {
+ $ERROR('#118: 2097152 >>> 3 === 262144. Actual: ' + (2097152 >>> 3));
+}
+
+
+if (4194304 >>> 3 !== 524288) {
+ $ERROR('#119: 4194304 >>> 3 === 524288. Actual: ' + (4194304 >>> 3));
+}
+
+
+if (8388608 >>> 3 !== 1048576) {
+ $ERROR('#120: 8388608 >>> 3 === 1048576. Actual: ' + (8388608 >>> 3));
+}
+
+
+if (16777216 >>> 3 !== 2097152) {
+ $ERROR('#121: 16777216 >>> 3 === 2097152. Actual: ' + (16777216 >>> 3));
+}
+
+
+if (33554432 >>> 3 !== 4194304) {
+ $ERROR('#122: 33554432 >>> 3 === 4194304. Actual: ' + (33554432 >>> 3));
+}
+
+
+if (67108864 >>> 3 !== 8388608) {
+ $ERROR('#123: 67108864 >>> 3 === 8388608. Actual: ' + (67108864 >>> 3));
+}
+
+
+if (134217728 >>> 3 !== 16777216) {
+ $ERROR('#124: 134217728 >>> 3 === 16777216. Actual: ' + (134217728 >>> 3));
+}
+
+
+if (268435456 >>> 3 !== 33554432) {
+ $ERROR('#125: 268435456 >>> 3 === 33554432. Actual: ' + (268435456 >>> 3));
+}
+
+
+if (536870912 >>> 3 !== 67108864) {
+ $ERROR('#126: 536870912 >>> 3 === 67108864. Actual: ' + (536870912 >>> 3));
+}
+
+
+if (1073741824 >>> 3 !== 134217728) {
+ $ERROR('#127: 1073741824 >>> 3 === 134217728. Actual: ' + (1073741824 >>> 3));
+}
+
+
+if (2147483648 >>> 3 !== 268435456) {
+ $ERROR('#128: 2147483648 >>> 3 === 268435456. Actual: ' + (2147483648 >>> 3));
+}
+
+
+if (1 >>> 4 !== 0) {
+ $ERROR('#129: 1 >>> 4 === 0. Actual: ' + (1 >>> 4));
+}
+
+
+if (2 >>> 4 !== 0) {
+ $ERROR('#130: 2 >>> 4 === 0. Actual: ' + (2 >>> 4));
+}
+
+
+if (4 >>> 4 !== 0) {
+ $ERROR('#131: 4 >>> 4 === 0. Actual: ' + (4 >>> 4));
+}
+
+
+if (8 >>> 4 !== 0) {
+ $ERROR('#132: 8 >>> 4 === 0. Actual: ' + (8 >>> 4));
+}
+
+
+if (16 >>> 4 !== 1) {
+ $ERROR('#133: 16 >>> 4 === 1. Actual: ' + (16 >>> 4));
+}
+
+
+if (32 >>> 4 !== 2) {
+ $ERROR('#134: 32 >>> 4 === 2. Actual: ' + (32 >>> 4));
+}
+
+
+if (64 >>> 4 !== 4) {
+ $ERROR('#135: 64 >>> 4 === 4. Actual: ' + (64 >>> 4));
+}
+
+
+if (128 >>> 4 !== 8) {
+ $ERROR('#136: 128 >>> 4 === 8. Actual: ' + (128 >>> 4));
+}
+
+
+if (256 >>> 4 !== 16) {
+ $ERROR('#137: 256 >>> 4 === 16. Actual: ' + (256 >>> 4));
+}
+
+
+if (512 >>> 4 !== 32) {
+ $ERROR('#138: 512 >>> 4 === 32. Actual: ' + (512 >>> 4));
+}
+
+
+if (1024 >>> 4 !== 64) {
+ $ERROR('#139: 1024 >>> 4 === 64. Actual: ' + (1024 >>> 4));
+}
+
+
+if (2048 >>> 4 !== 128) {
+ $ERROR('#140: 2048 >>> 4 === 128. Actual: ' + (2048 >>> 4));
+}
+
+
+if (4096 >>> 4 !== 256) {
+ $ERROR('#141: 4096 >>> 4 === 256. Actual: ' + (4096 >>> 4));
+}
+
+
+if (8192 >>> 4 !== 512) {
+ $ERROR('#142: 8192 >>> 4 === 512. Actual: ' + (8192 >>> 4));
+}
+
+
+if (16384 >>> 4 !== 1024) {
+ $ERROR('#143: 16384 >>> 4 === 1024. Actual: ' + (16384 >>> 4));
+}
+
+
+if (32768 >>> 4 !== 2048) {
+ $ERROR('#144: 32768 >>> 4 === 2048. Actual: ' + (32768 >>> 4));
+}
+
+
+if (65536 >>> 4 !== 4096) {
+ $ERROR('#145: 65536 >>> 4 === 4096. Actual: ' + (65536 >>> 4));
+}
+
+
+if (131072 >>> 4 !== 8192) {
+ $ERROR('#146: 131072 >>> 4 === 8192. Actual: ' + (131072 >>> 4));
+}
+
+
+if (262144 >>> 4 !== 16384) {
+ $ERROR('#147: 262144 >>> 4 === 16384. Actual: ' + (262144 >>> 4));
+}
+
+
+if (524288 >>> 4 !== 32768) {
+ $ERROR('#148: 524288 >>> 4 === 32768. Actual: ' + (524288 >>> 4));
+}
+
+
+if (1048576 >>> 4 !== 65536) {
+ $ERROR('#149: 1048576 >>> 4 === 65536. Actual: ' + (1048576 >>> 4));
+}
+
+
+if (2097152 >>> 4 !== 131072) {
+ $ERROR('#150: 2097152 >>> 4 === 131072. Actual: ' + (2097152 >>> 4));
+}
+
+
+if (4194304 >>> 4 !== 262144) {
+ $ERROR('#151: 4194304 >>> 4 === 262144. Actual: ' + (4194304 >>> 4));
+}
+
+
+if (8388608 >>> 4 !== 524288) {
+ $ERROR('#152: 8388608 >>> 4 === 524288. Actual: ' + (8388608 >>> 4));
+}
+
+
+if (16777216 >>> 4 !== 1048576) {
+ $ERROR('#153: 16777216 >>> 4 === 1048576. Actual: ' + (16777216 >>> 4));
+}
+
+
+if (33554432 >>> 4 !== 2097152) {
+ $ERROR('#154: 33554432 >>> 4 === 2097152. Actual: ' + (33554432 >>> 4));
+}
+
+
+if (67108864 >>> 4 !== 4194304) {
+ $ERROR('#155: 67108864 >>> 4 === 4194304. Actual: ' + (67108864 >>> 4));
+}
+
+
+if (134217728 >>> 4 !== 8388608) {
+ $ERROR('#156: 134217728 >>> 4 === 8388608. Actual: ' + (134217728 >>> 4));
+}
+
+
+if (268435456 >>> 4 !== 16777216) {
+ $ERROR('#157: 268435456 >>> 4 === 16777216. Actual: ' + (268435456 >>> 4));
+}
+
+
+if (536870912 >>> 4 !== 33554432) {
+ $ERROR('#158: 536870912 >>> 4 === 33554432. Actual: ' + (536870912 >>> 4));
+}
+
+
+if (1073741824 >>> 4 !== 67108864) {
+ $ERROR('#159: 1073741824 >>> 4 === 67108864. Actual: ' + (1073741824 >>> 4));
+}
+
+
+if (2147483648 >>> 4 !== 134217728) {
+ $ERROR('#160: 2147483648 >>> 4 === 134217728. Actual: ' + (2147483648 >>> 4));
+}
+
+
+if (1 >>> 5 !== 0) {
+ $ERROR('#161: 1 >>> 5 === 0. Actual: ' + (1 >>> 5));
+}
+
+
+if (2 >>> 5 !== 0) {
+ $ERROR('#162: 2 >>> 5 === 0. Actual: ' + (2 >>> 5));
+}
+
+
+if (4 >>> 5 !== 0) {
+ $ERROR('#163: 4 >>> 5 === 0. Actual: ' + (4 >>> 5));
+}
+
+
+if (8 >>> 5 !== 0) {
+ $ERROR('#164: 8 >>> 5 === 0. Actual: ' + (8 >>> 5));
+}
+
+
+if (16 >>> 5 !== 0) {
+ $ERROR('#165: 16 >>> 5 === 0. Actual: ' + (16 >>> 5));
+}
+
+
+if (32 >>> 5 !== 1) {
+ $ERROR('#166: 32 >>> 5 === 1. Actual: ' + (32 >>> 5));
+}
+
+
+if (64 >>> 5 !== 2) {
+ $ERROR('#167: 64 >>> 5 === 2. Actual: ' + (64 >>> 5));
+}
+
+
+if (128 >>> 5 !== 4) {
+ $ERROR('#168: 128 >>> 5 === 4. Actual: ' + (128 >>> 5));
+}
+
+
+if (256 >>> 5 !== 8) {
+ $ERROR('#169: 256 >>> 5 === 8. Actual: ' + (256 >>> 5));
+}
+
+
+if (512 >>> 5 !== 16) {
+ $ERROR('#170: 512 >>> 5 === 16. Actual: ' + (512 >>> 5));
+}
+
+
+if (1024 >>> 5 !== 32) {
+ $ERROR('#171: 1024 >>> 5 === 32. Actual: ' + (1024 >>> 5));
+}
+
+
+if (2048 >>> 5 !== 64) {
+ $ERROR('#172: 2048 >>> 5 === 64. Actual: ' + (2048 >>> 5));
+}
+
+
+if (4096 >>> 5 !== 128) {
+ $ERROR('#173: 4096 >>> 5 === 128. Actual: ' + (4096 >>> 5));
+}
+
+
+if (8192 >>> 5 !== 256) {
+ $ERROR('#174: 8192 >>> 5 === 256. Actual: ' + (8192 >>> 5));
+}
+
+
+if (16384 >>> 5 !== 512) {
+ $ERROR('#175: 16384 >>> 5 === 512. Actual: ' + (16384 >>> 5));
+}
+
+
+if (32768 >>> 5 !== 1024) {
+ $ERROR('#176: 32768 >>> 5 === 1024. Actual: ' + (32768 >>> 5));
+}
+
+
+if (65536 >>> 5 !== 2048) {
+ $ERROR('#177: 65536 >>> 5 === 2048. Actual: ' + (65536 >>> 5));
+}
+
+
+if (131072 >>> 5 !== 4096) {
+ $ERROR('#178: 131072 >>> 5 === 4096. Actual: ' + (131072 >>> 5));
+}
+
+
+if (262144 >>> 5 !== 8192) {
+ $ERROR('#179: 262144 >>> 5 === 8192. Actual: ' + (262144 >>> 5));
+}
+
+
+if (524288 >>> 5 !== 16384) {
+ $ERROR('#180: 524288 >>> 5 === 16384. Actual: ' + (524288 >>> 5));
+}
+
+
+if (1048576 >>> 5 !== 32768) {
+ $ERROR('#181: 1048576 >>> 5 === 32768. Actual: ' + (1048576 >>> 5));
+}
+
+
+if (2097152 >>> 5 !== 65536) {
+ $ERROR('#182: 2097152 >>> 5 === 65536. Actual: ' + (2097152 >>> 5));
+}
+
+
+if (4194304 >>> 5 !== 131072) {
+ $ERROR('#183: 4194304 >>> 5 === 131072. Actual: ' + (4194304 >>> 5));
+}
+
+
+if (8388608 >>> 5 !== 262144) {
+ $ERROR('#184: 8388608 >>> 5 === 262144. Actual: ' + (8388608 >>> 5));
+}
+
+
+if (16777216 >>> 5 !== 524288) {
+ $ERROR('#185: 16777216 >>> 5 === 524288. Actual: ' + (16777216 >>> 5));
+}
+
+
+if (33554432 >>> 5 !== 1048576) {
+ $ERROR('#186: 33554432 >>> 5 === 1048576. Actual: ' + (33554432 >>> 5));
+}
+
+
+if (67108864 >>> 5 !== 2097152) {
+ $ERROR('#187: 67108864 >>> 5 === 2097152. Actual: ' + (67108864 >>> 5));
+}
+
+
+if (134217728 >>> 5 !== 4194304) {
+ $ERROR('#188: 134217728 >>> 5 === 4194304. Actual: ' + (134217728 >>> 5));
+}
+
+
+if (268435456 >>> 5 !== 8388608) {
+ $ERROR('#189: 268435456 >>> 5 === 8388608. Actual: ' + (268435456 >>> 5));
+}
+
+
+if (536870912 >>> 5 !== 16777216) {
+ $ERROR('#190: 536870912 >>> 5 === 16777216. Actual: ' + (536870912 >>> 5));
+}
+
+
+if (1073741824 >>> 5 !== 33554432) {
+ $ERROR('#191: 1073741824 >>> 5 === 33554432. Actual: ' + (1073741824 >>> 5));
+}
+
+
+if (2147483648 >>> 5 !== 67108864) {
+ $ERROR('#192: 2147483648 >>> 5 === 67108864. Actual: ' + (2147483648 >>> 5));
+}
+
+
+if (1 >>> 6 !== 0) {
+ $ERROR('#193: 1 >>> 6 === 0. Actual: ' + (1 >>> 6));
+}
+
+
+if (2 >>> 6 !== 0) {
+ $ERROR('#194: 2 >>> 6 === 0. Actual: ' + (2 >>> 6));
+}
+
+
+if (4 >>> 6 !== 0) {
+ $ERROR('#195: 4 >>> 6 === 0. Actual: ' + (4 >>> 6));
+}
+
+
+if (8 >>> 6 !== 0) {
+ $ERROR('#196: 8 >>> 6 === 0. Actual: ' + (8 >>> 6));
+}
+
+
+if (16 >>> 6 !== 0) {
+ $ERROR('#197: 16 >>> 6 === 0. Actual: ' + (16 >>> 6));
+}
+
+
+if (32 >>> 6 !== 0) {
+ $ERROR('#198: 32 >>> 6 === 0. Actual: ' + (32 >>> 6));
+}
+
+
+if (64 >>> 6 !== 1) {
+ $ERROR('#199: 64 >>> 6 === 1. Actual: ' + (64 >>> 6));
+}
+
+
+if (128 >>> 6 !== 2) {
+ $ERROR('#200: 128 >>> 6 === 2. Actual: ' + (128 >>> 6));
+}
+
+
+if (256 >>> 6 !== 4) {
+ $ERROR('#201: 256 >>> 6 === 4. Actual: ' + (256 >>> 6));
+}
+
+
+if (512 >>> 6 !== 8) {
+ $ERROR('#202: 512 >>> 6 === 8. Actual: ' + (512 >>> 6));
+}
+
+
+if (1024 >>> 6 !== 16) {
+ $ERROR('#203: 1024 >>> 6 === 16. Actual: ' + (1024 >>> 6));
+}
+
+
+if (2048 >>> 6 !== 32) {
+ $ERROR('#204: 2048 >>> 6 === 32. Actual: ' + (2048 >>> 6));
+}
+
+
+if (4096 >>> 6 !== 64) {
+ $ERROR('#205: 4096 >>> 6 === 64. Actual: ' + (4096 >>> 6));
+}
+
+
+if (8192 >>> 6 !== 128) {
+ $ERROR('#206: 8192 >>> 6 === 128. Actual: ' + (8192 >>> 6));
+}
+
+
+if (16384 >>> 6 !== 256) {
+ $ERROR('#207: 16384 >>> 6 === 256. Actual: ' + (16384 >>> 6));
+}
+
+
+if (32768 >>> 6 !== 512) {
+ $ERROR('#208: 32768 >>> 6 === 512. Actual: ' + (32768 >>> 6));
+}
+
+
+if (65536 >>> 6 !== 1024) {
+ $ERROR('#209: 65536 >>> 6 === 1024. Actual: ' + (65536 >>> 6));
+}
+
+
+if (131072 >>> 6 !== 2048) {
+ $ERROR('#210: 131072 >>> 6 === 2048. Actual: ' + (131072 >>> 6));
+}
+
+
+if (262144 >>> 6 !== 4096) {
+ $ERROR('#211: 262144 >>> 6 === 4096. Actual: ' + (262144 >>> 6));
+}
+
+
+if (524288 >>> 6 !== 8192) {
+ $ERROR('#212: 524288 >>> 6 === 8192. Actual: ' + (524288 >>> 6));
+}
+
+
+if (1048576 >>> 6 !== 16384) {
+ $ERROR('#213: 1048576 >>> 6 === 16384. Actual: ' + (1048576 >>> 6));
+}
+
+
+if (2097152 >>> 6 !== 32768) {
+ $ERROR('#214: 2097152 >>> 6 === 32768. Actual: ' + (2097152 >>> 6));
+}
+
+
+if (4194304 >>> 6 !== 65536) {
+ $ERROR('#215: 4194304 >>> 6 === 65536. Actual: ' + (4194304 >>> 6));
+}
+
+
+if (8388608 >>> 6 !== 131072) {
+ $ERROR('#216: 8388608 >>> 6 === 131072. Actual: ' + (8388608 >>> 6));
+}
+
+
+if (16777216 >>> 6 !== 262144) {
+ $ERROR('#217: 16777216 >>> 6 === 262144. Actual: ' + (16777216 >>> 6));
+}
+
+
+if (33554432 >>> 6 !== 524288) {
+ $ERROR('#218: 33554432 >>> 6 === 524288. Actual: ' + (33554432 >>> 6));
+}
+
+
+if (67108864 >>> 6 !== 1048576) {
+ $ERROR('#219: 67108864 >>> 6 === 1048576. Actual: ' + (67108864 >>> 6));
+}
+
+
+if (134217728 >>> 6 !== 2097152) {
+ $ERROR('#220: 134217728 >>> 6 === 2097152. Actual: ' + (134217728 >>> 6));
+}
+
+
+if (268435456 >>> 6 !== 4194304) {
+ $ERROR('#221: 268435456 >>> 6 === 4194304. Actual: ' + (268435456 >>> 6));
+}
+
+
+if (536870912 >>> 6 !== 8388608) {
+ $ERROR('#222: 536870912 >>> 6 === 8388608. Actual: ' + (536870912 >>> 6));
+}
+
+
+if (1073741824 >>> 6 !== 16777216) {
+ $ERROR('#223: 1073741824 >>> 6 === 16777216. Actual: ' + (1073741824 >>> 6));
+}
+
+
+if (2147483648 >>> 6 !== 33554432) {
+ $ERROR('#224: 2147483648 >>> 6 === 33554432. Actual: ' + (2147483648 >>> 6));
+}
+
+
+if (1 >>> 7 !== 0) {
+ $ERROR('#225: 1 >>> 7 === 0. Actual: ' + (1 >>> 7));
+}
+
+
+if (2 >>> 7 !== 0) {
+ $ERROR('#226: 2 >>> 7 === 0. Actual: ' + (2 >>> 7));
+}
+
+
+if (4 >>> 7 !== 0) {
+ $ERROR('#227: 4 >>> 7 === 0. Actual: ' + (4 >>> 7));
+}
+
+
+if (8 >>> 7 !== 0) {
+ $ERROR('#228: 8 >>> 7 === 0. Actual: ' + (8 >>> 7));
+}
+
+
+if (16 >>> 7 !== 0) {
+ $ERROR('#229: 16 >>> 7 === 0. Actual: ' + (16 >>> 7));
+}
+
+
+if (32 >>> 7 !== 0) {
+ $ERROR('#230: 32 >>> 7 === 0. Actual: ' + (32 >>> 7));
+}
+
+
+if (64 >>> 7 !== 0) {
+ $ERROR('#231: 64 >>> 7 === 0. Actual: ' + (64 >>> 7));
+}
+
+
+if (128 >>> 7 !== 1) {
+ $ERROR('#232: 128 >>> 7 === 1. Actual: ' + (128 >>> 7));
+}
+
+
+if (256 >>> 7 !== 2) {
+ $ERROR('#233: 256 >>> 7 === 2. Actual: ' + (256 >>> 7));
+}
+
+
+if (512 >>> 7 !== 4) {
+ $ERROR('#234: 512 >>> 7 === 4. Actual: ' + (512 >>> 7));
+}
+
+
+if (1024 >>> 7 !== 8) {
+ $ERROR('#235: 1024 >>> 7 === 8. Actual: ' + (1024 >>> 7));
+}
+
+
+if (2048 >>> 7 !== 16) {
+ $ERROR('#236: 2048 >>> 7 === 16. Actual: ' + (2048 >>> 7));
+}
+
+
+if (4096 >>> 7 !== 32) {
+ $ERROR('#237: 4096 >>> 7 === 32. Actual: ' + (4096 >>> 7));
+}
+
+
+if (8192 >>> 7 !== 64) {
+ $ERROR('#238: 8192 >>> 7 === 64. Actual: ' + (8192 >>> 7));
+}
+
+
+if (16384 >>> 7 !== 128) {
+ $ERROR('#239: 16384 >>> 7 === 128. Actual: ' + (16384 >>> 7));
+}
+
+
+if (32768 >>> 7 !== 256) {
+ $ERROR('#240: 32768 >>> 7 === 256. Actual: ' + (32768 >>> 7));
+}
+
+
+if (65536 >>> 7 !== 512) {
+ $ERROR('#241: 65536 >>> 7 === 512. Actual: ' + (65536 >>> 7));
+}
+
+
+if (131072 >>> 7 !== 1024) {
+ $ERROR('#242: 131072 >>> 7 === 1024. Actual: ' + (131072 >>> 7));
+}
+
+
+if (262144 >>> 7 !== 2048) {
+ $ERROR('#243: 262144 >>> 7 === 2048. Actual: ' + (262144 >>> 7));
+}
+
+
+if (524288 >>> 7 !== 4096) {
+ $ERROR('#244: 524288 >>> 7 === 4096. Actual: ' + (524288 >>> 7));
+}
+
+
+if (1048576 >>> 7 !== 8192) {
+ $ERROR('#245: 1048576 >>> 7 === 8192. Actual: ' + (1048576 >>> 7));
+}
+
+
+if (2097152 >>> 7 !== 16384) {
+ $ERROR('#246: 2097152 >>> 7 === 16384. Actual: ' + (2097152 >>> 7));
+}
+
+
+if (4194304 >>> 7 !== 32768) {
+ $ERROR('#247: 4194304 >>> 7 === 32768. Actual: ' + (4194304 >>> 7));
+}
+
+
+if (8388608 >>> 7 !== 65536) {
+ $ERROR('#248: 8388608 >>> 7 === 65536. Actual: ' + (8388608 >>> 7));
+}
+
+
+if (16777216 >>> 7 !== 131072) {
+ $ERROR('#249: 16777216 >>> 7 === 131072. Actual: ' + (16777216 >>> 7));
+}
+
+
+if (33554432 >>> 7 !== 262144) {
+ $ERROR('#250: 33554432 >>> 7 === 262144. Actual: ' + (33554432 >>> 7));
+}
+
+
+if (67108864 >>> 7 !== 524288) {
+ $ERROR('#251: 67108864 >>> 7 === 524288. Actual: ' + (67108864 >>> 7));
+}
+
+
+if (134217728 >>> 7 !== 1048576) {
+ $ERROR('#252: 134217728 >>> 7 === 1048576. Actual: ' + (134217728 >>> 7));
+}
+
+
+if (268435456 >>> 7 !== 2097152) {
+ $ERROR('#253: 268435456 >>> 7 === 2097152. Actual: ' + (268435456 >>> 7));
+}
+
+
+if (536870912 >>> 7 !== 4194304) {
+ $ERROR('#254: 536870912 >>> 7 === 4194304. Actual: ' + (536870912 >>> 7));
+}
+
+
+if (1073741824 >>> 7 !== 8388608) {
+ $ERROR('#255: 1073741824 >>> 7 === 8388608. Actual: ' + (1073741824 >>> 7));
+}
+
+
+if (2147483648 >>> 7 !== 16777216) {
+ $ERROR('#256: 2147483648 >>> 7 === 16777216. Actual: ' + (2147483648 >>> 7));
+}
+
+
+if (1 >>> 8 !== 0) {
+ $ERROR('#257: 1 >>> 8 === 0. Actual: ' + (1 >>> 8));
+}
+
+
+if (2 >>> 8 !== 0) {
+ $ERROR('#258: 2 >>> 8 === 0. Actual: ' + (2 >>> 8));
+}
+
+
+if (4 >>> 8 !== 0) {
+ $ERROR('#259: 4 >>> 8 === 0. Actual: ' + (4 >>> 8));
+}
+
+
+if (8 >>> 8 !== 0) {
+ $ERROR('#260: 8 >>> 8 === 0. Actual: ' + (8 >>> 8));
+}
+
+
+if (16 >>> 8 !== 0) {
+ $ERROR('#261: 16 >>> 8 === 0. Actual: ' + (16 >>> 8));
+}
+
+
+if (32 >>> 8 !== 0) {
+ $ERROR('#262: 32 >>> 8 === 0. Actual: ' + (32 >>> 8));
+}
+
+
+if (64 >>> 8 !== 0) {
+ $ERROR('#263: 64 >>> 8 === 0. Actual: ' + (64 >>> 8));
+}
+
+
+if (128 >>> 8 !== 0) {
+ $ERROR('#264: 128 >>> 8 === 0. Actual: ' + (128 >>> 8));
+}
+
+
+if (256 >>> 8 !== 1) {
+ $ERROR('#265: 256 >>> 8 === 1. Actual: ' + (256 >>> 8));
+}
+
+
+if (512 >>> 8 !== 2) {
+ $ERROR('#266: 512 >>> 8 === 2. Actual: ' + (512 >>> 8));
+}
+
+
+if (1024 >>> 8 !== 4) {
+ $ERROR('#267: 1024 >>> 8 === 4. Actual: ' + (1024 >>> 8));
+}
+
+
+if (2048 >>> 8 !== 8) {
+ $ERROR('#268: 2048 >>> 8 === 8. Actual: ' + (2048 >>> 8));
+}
+
+
+if (4096 >>> 8 !== 16) {
+ $ERROR('#269: 4096 >>> 8 === 16. Actual: ' + (4096 >>> 8));
+}
+
+
+if (8192 >>> 8 !== 32) {
+ $ERROR('#270: 8192 >>> 8 === 32. Actual: ' + (8192 >>> 8));
+}
+
+
+if (16384 >>> 8 !== 64) {
+ $ERROR('#271: 16384 >>> 8 === 64. Actual: ' + (16384 >>> 8));
+}
+
+
+if (32768 >>> 8 !== 128) {
+ $ERROR('#272: 32768 >>> 8 === 128. Actual: ' + (32768 >>> 8));
+}
+
+
+if (65536 >>> 8 !== 256) {
+ $ERROR('#273: 65536 >>> 8 === 256. Actual: ' + (65536 >>> 8));
+}
+
+
+if (131072 >>> 8 !== 512) {
+ $ERROR('#274: 131072 >>> 8 === 512. Actual: ' + (131072 >>> 8));
+}
+
+
+if (262144 >>> 8 !== 1024) {
+ $ERROR('#275: 262144 >>> 8 === 1024. Actual: ' + (262144 >>> 8));
+}
+
+
+if (524288 >>> 8 !== 2048) {
+ $ERROR('#276: 524288 >>> 8 === 2048. Actual: ' + (524288 >>> 8));
+}
+
+
+if (1048576 >>> 8 !== 4096) {
+ $ERROR('#277: 1048576 >>> 8 === 4096. Actual: ' + (1048576 >>> 8));
+}
+
+
+if (2097152 >>> 8 !== 8192) {
+ $ERROR('#278: 2097152 >>> 8 === 8192. Actual: ' + (2097152 >>> 8));
+}
+
+
+if (4194304 >>> 8 !== 16384) {
+ $ERROR('#279: 4194304 >>> 8 === 16384. Actual: ' + (4194304 >>> 8));
+}
+
+
+if (8388608 >>> 8 !== 32768) {
+ $ERROR('#280: 8388608 >>> 8 === 32768. Actual: ' + (8388608 >>> 8));
+}
+
+
+if (16777216 >>> 8 !== 65536) {
+ $ERROR('#281: 16777216 >>> 8 === 65536. Actual: ' + (16777216 >>> 8));
+}
+
+
+if (33554432 >>> 8 !== 131072) {
+ $ERROR('#282: 33554432 >>> 8 === 131072. Actual: ' + (33554432 >>> 8));
+}
+
+
+if (67108864 >>> 8 !== 262144) {
+ $ERROR('#283: 67108864 >>> 8 === 262144. Actual: ' + (67108864 >>> 8));
+}
+
+
+if (134217728 >>> 8 !== 524288) {
+ $ERROR('#284: 134217728 >>> 8 === 524288. Actual: ' + (134217728 >>> 8));
+}
+
+
+if (268435456 >>> 8 !== 1048576) {
+ $ERROR('#285: 268435456 >>> 8 === 1048576. Actual: ' + (268435456 >>> 8));
+}
+
+
+if (536870912 >>> 8 !== 2097152) {
+ $ERROR('#286: 536870912 >>> 8 === 2097152. Actual: ' + (536870912 >>> 8));
+}
+
+
+if (1073741824 >>> 8 !== 4194304) {
+ $ERROR('#287: 1073741824 >>> 8 === 4194304. Actual: ' + (1073741824 >>> 8));
+}
+
+
+if (2147483648 >>> 8 !== 8388608) {
+ $ERROR('#288: 2147483648 >>> 8 === 8388608. Actual: ' + (2147483648 >>> 8));
+}
+
+
+if (1 >>> 9 !== 0) {
+ $ERROR('#289: 1 >>> 9 === 0. Actual: ' + (1 >>> 9));
+}
+
+
+if (2 >>> 9 !== 0) {
+ $ERROR('#290: 2 >>> 9 === 0. Actual: ' + (2 >>> 9));
+}
+
+
+if (4 >>> 9 !== 0) {
+ $ERROR('#291: 4 >>> 9 === 0. Actual: ' + (4 >>> 9));
+}
+
+
+if (8 >>> 9 !== 0) {
+ $ERROR('#292: 8 >>> 9 === 0. Actual: ' + (8 >>> 9));
+}
+
+
+if (16 >>> 9 !== 0) {
+ $ERROR('#293: 16 >>> 9 === 0. Actual: ' + (16 >>> 9));
+}
+
+
+if (32 >>> 9 !== 0) {
+ $ERROR('#294: 32 >>> 9 === 0. Actual: ' + (32 >>> 9));
+}
+
+
+if (64 >>> 9 !== 0) {
+ $ERROR('#295: 64 >>> 9 === 0. Actual: ' + (64 >>> 9));
+}
+
+
+if (128 >>> 9 !== 0) {
+ $ERROR('#296: 128 >>> 9 === 0. Actual: ' + (128 >>> 9));
+}
+
+
+if (256 >>> 9 !== 0) {
+ $ERROR('#297: 256 >>> 9 === 0. Actual: ' + (256 >>> 9));
+}
+
+
+if (512 >>> 9 !== 1) {
+ $ERROR('#298: 512 >>> 9 === 1. Actual: ' + (512 >>> 9));
+}
+
+
+if (1024 >>> 9 !== 2) {
+ $ERROR('#299: 1024 >>> 9 === 2. Actual: ' + (1024 >>> 9));
+}
+
+
+if (2048 >>> 9 !== 4) {
+ $ERROR('#300: 2048 >>> 9 === 4. Actual: ' + (2048 >>> 9));
+}
+
+
+if (4096 >>> 9 !== 8) {
+ $ERROR('#301: 4096 >>> 9 === 8. Actual: ' + (4096 >>> 9));
+}
+
+
+if (8192 >>> 9 !== 16) {
+ $ERROR('#302: 8192 >>> 9 === 16. Actual: ' + (8192 >>> 9));
+}
+
+
+if (16384 >>> 9 !== 32) {
+ $ERROR('#303: 16384 >>> 9 === 32. Actual: ' + (16384 >>> 9));
+}
+
+
+if (32768 >>> 9 !== 64) {
+ $ERROR('#304: 32768 >>> 9 === 64. Actual: ' + (32768 >>> 9));
+}
+
+
+if (65536 >>> 9 !== 128) {
+ $ERROR('#305: 65536 >>> 9 === 128. Actual: ' + (65536 >>> 9));
+}
+
+
+if (131072 >>> 9 !== 256) {
+ $ERROR('#306: 131072 >>> 9 === 256. Actual: ' + (131072 >>> 9));
+}
+
+
+if (262144 >>> 9 !== 512) {
+ $ERROR('#307: 262144 >>> 9 === 512. Actual: ' + (262144 >>> 9));
+}
+
+
+if (524288 >>> 9 !== 1024) {
+ $ERROR('#308: 524288 >>> 9 === 1024. Actual: ' + (524288 >>> 9));
+}
+
+
+if (1048576 >>> 9 !== 2048) {
+ $ERROR('#309: 1048576 >>> 9 === 2048. Actual: ' + (1048576 >>> 9));
+}
+
+
+if (2097152 >>> 9 !== 4096) {
+ $ERROR('#310: 2097152 >>> 9 === 4096. Actual: ' + (2097152 >>> 9));
+}
+
+
+if (4194304 >>> 9 !== 8192) {
+ $ERROR('#311: 4194304 >>> 9 === 8192. Actual: ' + (4194304 >>> 9));
+}
+
+
+if (8388608 >>> 9 !== 16384) {
+ $ERROR('#312: 8388608 >>> 9 === 16384. Actual: ' + (8388608 >>> 9));
+}
+
+
+if (16777216 >>> 9 !== 32768) {
+ $ERROR('#313: 16777216 >>> 9 === 32768. Actual: ' + (16777216 >>> 9));
+}
+
+
+if (33554432 >>> 9 !== 65536) {
+ $ERROR('#314: 33554432 >>> 9 === 65536. Actual: ' + (33554432 >>> 9));
+}
+
+
+if (67108864 >>> 9 !== 131072) {
+ $ERROR('#315: 67108864 >>> 9 === 131072. Actual: ' + (67108864 >>> 9));
+}
+
+
+if (134217728 >>> 9 !== 262144) {
+ $ERROR('#316: 134217728 >>> 9 === 262144. Actual: ' + (134217728 >>> 9));
+}
+
+
+if (268435456 >>> 9 !== 524288) {
+ $ERROR('#317: 268435456 >>> 9 === 524288. Actual: ' + (268435456 >>> 9));
+}
+
+
+if (536870912 >>> 9 !== 1048576) {
+ $ERROR('#318: 536870912 >>> 9 === 1048576. Actual: ' + (536870912 >>> 9));
+}
+
+
+if (1073741824 >>> 9 !== 2097152) {
+ $ERROR('#319: 1073741824 >>> 9 === 2097152. Actual: ' + (1073741824 >>> 9));
+}
+
+
+if (2147483648 >>> 9 !== 4194304) {
+ $ERROR('#320: 2147483648 >>> 9 === 4194304. Actual: ' + (2147483648 >>> 9));
+}
+
+
+if (1 >>> 10 !== 0) {
+ $ERROR('#321: 1 >>> 10 === 0. Actual: ' + (1 >>> 10));
+}
+
+
+if (2 >>> 10 !== 0) {
+ $ERROR('#322: 2 >>> 10 === 0. Actual: ' + (2 >>> 10));
+}
+
+
+if (4 >>> 10 !== 0) {
+ $ERROR('#323: 4 >>> 10 === 0. Actual: ' + (4 >>> 10));
+}
+
+
+if (8 >>> 10 !== 0) {
+ $ERROR('#324: 8 >>> 10 === 0. Actual: ' + (8 >>> 10));
+}
+
+
+if (16 >>> 10 !== 0) {
+ $ERROR('#325: 16 >>> 10 === 0. Actual: ' + (16 >>> 10));
+}
+
+
+if (32 >>> 10 !== 0) {
+ $ERROR('#326: 32 >>> 10 === 0. Actual: ' + (32 >>> 10));
+}
+
+
+if (64 >>> 10 !== 0) {
+ $ERROR('#327: 64 >>> 10 === 0. Actual: ' + (64 >>> 10));
+}
+
+
+if (128 >>> 10 !== 0) {
+ $ERROR('#328: 128 >>> 10 === 0. Actual: ' + (128 >>> 10));
+}
+
+
+if (256 >>> 10 !== 0) {
+ $ERROR('#329: 256 >>> 10 === 0. Actual: ' + (256 >>> 10));
+}
+
+
+if (512 >>> 10 !== 0) {
+ $ERROR('#330: 512 >>> 10 === 0. Actual: ' + (512 >>> 10));
+}
+
+
+if (1024 >>> 10 !== 1) {
+ $ERROR('#331: 1024 >>> 10 === 1. Actual: ' + (1024 >>> 10));
+}
+
+
+if (2048 >>> 10 !== 2) {
+ $ERROR('#332: 2048 >>> 10 === 2. Actual: ' + (2048 >>> 10));
+}
+
+
+if (4096 >>> 10 !== 4) {
+ $ERROR('#333: 4096 >>> 10 === 4. Actual: ' + (4096 >>> 10));
+}
+
+
+if (8192 >>> 10 !== 8) {
+ $ERROR('#334: 8192 >>> 10 === 8. Actual: ' + (8192 >>> 10));
+}
+
+
+if (16384 >>> 10 !== 16) {
+ $ERROR('#335: 16384 >>> 10 === 16. Actual: ' + (16384 >>> 10));
+}
+
+
+if (32768 >>> 10 !== 32) {
+ $ERROR('#336: 32768 >>> 10 === 32. Actual: ' + (32768 >>> 10));
+}
+
+
+if (65536 >>> 10 !== 64) {
+ $ERROR('#337: 65536 >>> 10 === 64. Actual: ' + (65536 >>> 10));
+}
+
+
+if (131072 >>> 10 !== 128) {
+ $ERROR('#338: 131072 >>> 10 === 128. Actual: ' + (131072 >>> 10));
+}
+
+
+if (262144 >>> 10 !== 256) {
+ $ERROR('#339: 262144 >>> 10 === 256. Actual: ' + (262144 >>> 10));
+}
+
+
+if (524288 >>> 10 !== 512) {
+ $ERROR('#340: 524288 >>> 10 === 512. Actual: ' + (524288 >>> 10));
+}
+
+
+if (1048576 >>> 10 !== 1024) {
+ $ERROR('#341: 1048576 >>> 10 === 1024. Actual: ' + (1048576 >>> 10));
+}
+
+
+if (2097152 >>> 10 !== 2048) {
+ $ERROR('#342: 2097152 >>> 10 === 2048. Actual: ' + (2097152 >>> 10));
+}
+
+
+if (4194304 >>> 10 !== 4096) {
+ $ERROR('#343: 4194304 >>> 10 === 4096. Actual: ' + (4194304 >>> 10));
+}
+
+
+if (8388608 >>> 10 !== 8192) {
+ $ERROR('#344: 8388608 >>> 10 === 8192. Actual: ' + (8388608 >>> 10));
+}
+
+
+if (16777216 >>> 10 !== 16384) {
+ $ERROR('#345: 16777216 >>> 10 === 16384. Actual: ' + (16777216 >>> 10));
+}
+
+
+if (33554432 >>> 10 !== 32768) {
+ $ERROR('#346: 33554432 >>> 10 === 32768. Actual: ' + (33554432 >>> 10));
+}
+
+
+if (67108864 >>> 10 !== 65536) {
+ $ERROR('#347: 67108864 >>> 10 === 65536. Actual: ' + (67108864 >>> 10));
+}
+
+
+if (134217728 >>> 10 !== 131072) {
+ $ERROR('#348: 134217728 >>> 10 === 131072. Actual: ' + (134217728 >>> 10));
+}
+
+
+if (268435456 >>> 10 !== 262144) {
+ $ERROR('#349: 268435456 >>> 10 === 262144. Actual: ' + (268435456 >>> 10));
+}
+
+
+if (536870912 >>> 10 !== 524288) {
+ $ERROR('#350: 536870912 >>> 10 === 524288. Actual: ' + (536870912 >>> 10));
+}
+
+
+if (1073741824 >>> 10 !== 1048576) {
+ $ERROR('#351: 1073741824 >>> 10 === 1048576. Actual: ' + (1073741824 >>> 10));
+}
+
+
+if (2147483648 >>> 10 !== 2097152) {
+ $ERROR('#352: 2147483648 >>> 10 === 2097152. Actual: ' + (2147483648 >>> 10));
+}
+
+
+if (1 >>> 11 !== 0) {
+ $ERROR('#353: 1 >>> 11 === 0. Actual: ' + (1 >>> 11));
+}
+
+
+if (2 >>> 11 !== 0) {
+ $ERROR('#354: 2 >>> 11 === 0. Actual: ' + (2 >>> 11));
+}
+
+
+if (4 >>> 11 !== 0) {
+ $ERROR('#355: 4 >>> 11 === 0. Actual: ' + (4 >>> 11));
+}
+
+
+if (8 >>> 11 !== 0) {
+ $ERROR('#356: 8 >>> 11 === 0. Actual: ' + (8 >>> 11));
+}
+
+
+if (16 >>> 11 !== 0) {
+ $ERROR('#357: 16 >>> 11 === 0. Actual: ' + (16 >>> 11));
+}
+
+
+if (32 >>> 11 !== 0) {
+ $ERROR('#358: 32 >>> 11 === 0. Actual: ' + (32 >>> 11));
+}
+
+
+if (64 >>> 11 !== 0) {
+ $ERROR('#359: 64 >>> 11 === 0. Actual: ' + (64 >>> 11));
+}
+
+
+if (128 >>> 11 !== 0) {
+ $ERROR('#360: 128 >>> 11 === 0. Actual: ' + (128 >>> 11));
+}
+
+
+if (256 >>> 11 !== 0) {
+ $ERROR('#361: 256 >>> 11 === 0. Actual: ' + (256 >>> 11));
+}
+
+
+if (512 >>> 11 !== 0) {
+ $ERROR('#362: 512 >>> 11 === 0. Actual: ' + (512 >>> 11));
+}
+
+
+if (1024 >>> 11 !== 0) {
+ $ERROR('#363: 1024 >>> 11 === 0. Actual: ' + (1024 >>> 11));
+}
+
+
+if (2048 >>> 11 !== 1) {
+ $ERROR('#364: 2048 >>> 11 === 1. Actual: ' + (2048 >>> 11));
+}
+
+
+if (4096 >>> 11 !== 2) {
+ $ERROR('#365: 4096 >>> 11 === 2. Actual: ' + (4096 >>> 11));
+}
+
+
+if (8192 >>> 11 !== 4) {
+ $ERROR('#366: 8192 >>> 11 === 4. Actual: ' + (8192 >>> 11));
+}
+
+
+if (16384 >>> 11 !== 8) {
+ $ERROR('#367: 16384 >>> 11 === 8. Actual: ' + (16384 >>> 11));
+}
+
+
+if (32768 >>> 11 !== 16) {
+ $ERROR('#368: 32768 >>> 11 === 16. Actual: ' + (32768 >>> 11));
+}
+
+
+if (65536 >>> 11 !== 32) {
+ $ERROR('#369: 65536 >>> 11 === 32. Actual: ' + (65536 >>> 11));
+}
+
+
+if (131072 >>> 11 !== 64) {
+ $ERROR('#370: 131072 >>> 11 === 64. Actual: ' + (131072 >>> 11));
+}
+
+
+if (262144 >>> 11 !== 128) {
+ $ERROR('#371: 262144 >>> 11 === 128. Actual: ' + (262144 >>> 11));
+}
+
+
+if (524288 >>> 11 !== 256) {
+ $ERROR('#372: 524288 >>> 11 === 256. Actual: ' + (524288 >>> 11));
+}
+
+
+if (1048576 >>> 11 !== 512) {
+ $ERROR('#373: 1048576 >>> 11 === 512. Actual: ' + (1048576 >>> 11));
+}
+
+
+if (2097152 >>> 11 !== 1024) {
+ $ERROR('#374: 2097152 >>> 11 === 1024. Actual: ' + (2097152 >>> 11));
+}
+
+
+if (4194304 >>> 11 !== 2048) {
+ $ERROR('#375: 4194304 >>> 11 === 2048. Actual: ' + (4194304 >>> 11));
+}
+
+
+if (8388608 >>> 11 !== 4096) {
+ $ERROR('#376: 8388608 >>> 11 === 4096. Actual: ' + (8388608 >>> 11));
+}
+
+
+if (16777216 >>> 11 !== 8192) {
+ $ERROR('#377: 16777216 >>> 11 === 8192. Actual: ' + (16777216 >>> 11));
+}
+
+
+if (33554432 >>> 11 !== 16384) {
+ $ERROR('#378: 33554432 >>> 11 === 16384. Actual: ' + (33554432 >>> 11));
+}
+
+
+if (67108864 >>> 11 !== 32768) {
+ $ERROR('#379: 67108864 >>> 11 === 32768. Actual: ' + (67108864 >>> 11));
+}
+
+
+if (134217728 >>> 11 !== 65536) {
+ $ERROR('#380: 134217728 >>> 11 === 65536. Actual: ' + (134217728 >>> 11));
+}
+
+
+if (268435456 >>> 11 !== 131072) {
+ $ERROR('#381: 268435456 >>> 11 === 131072. Actual: ' + (268435456 >>> 11));
+}
+
+
+if (536870912 >>> 11 !== 262144) {
+ $ERROR('#382: 536870912 >>> 11 === 262144. Actual: ' + (536870912 >>> 11));
+}
+
+
+if (1073741824 >>> 11 !== 524288) {
+ $ERROR('#383: 1073741824 >>> 11 === 524288. Actual: ' + (1073741824 >>> 11));
+}
+
+
+if (2147483648 >>> 11 !== 1048576) {
+ $ERROR('#384: 2147483648 >>> 11 === 1048576. Actual: ' + (2147483648 >>> 11));
+}
+
+
+if (1 >>> 12 !== 0) {
+ $ERROR('#385: 1 >>> 12 === 0. Actual: ' + (1 >>> 12));
+}
+
+
+if (2 >>> 12 !== 0) {
+ $ERROR('#386: 2 >>> 12 === 0. Actual: ' + (2 >>> 12));
+}
+
+
+if (4 >>> 12 !== 0) {
+ $ERROR('#387: 4 >>> 12 === 0. Actual: ' + (4 >>> 12));
+}
+
+
+if (8 >>> 12 !== 0) {
+ $ERROR('#388: 8 >>> 12 === 0. Actual: ' + (8 >>> 12));
+}
+
+
+if (16 >>> 12 !== 0) {
+ $ERROR('#389: 16 >>> 12 === 0. Actual: ' + (16 >>> 12));
+}
+
+
+if (32 >>> 12 !== 0) {
+ $ERROR('#390: 32 >>> 12 === 0. Actual: ' + (32 >>> 12));
+}
+
+
+if (64 >>> 12 !== 0) {
+ $ERROR('#391: 64 >>> 12 === 0. Actual: ' + (64 >>> 12));
+}
+
+
+if (128 >>> 12 !== 0) {
+ $ERROR('#392: 128 >>> 12 === 0. Actual: ' + (128 >>> 12));
+}
+
+
+if (256 >>> 12 !== 0) {
+ $ERROR('#393: 256 >>> 12 === 0. Actual: ' + (256 >>> 12));
+}
+
+
+if (512 >>> 12 !== 0) {
+ $ERROR('#394: 512 >>> 12 === 0. Actual: ' + (512 >>> 12));
+}
+
+
+if (1024 >>> 12 !== 0) {
+ $ERROR('#395: 1024 >>> 12 === 0. Actual: ' + (1024 >>> 12));
+}
+
+
+if (2048 >>> 12 !== 0) {
+ $ERROR('#396: 2048 >>> 12 === 0. Actual: ' + (2048 >>> 12));
+}
+
+
+if (4096 >>> 12 !== 1) {
+ $ERROR('#397: 4096 >>> 12 === 1. Actual: ' + (4096 >>> 12));
+}
+
+
+if (8192 >>> 12 !== 2) {
+ $ERROR('#398: 8192 >>> 12 === 2. Actual: ' + (8192 >>> 12));
+}
+
+
+if (16384 >>> 12 !== 4) {
+ $ERROR('#399: 16384 >>> 12 === 4. Actual: ' + (16384 >>> 12));
+}
+
+
+if (32768 >>> 12 !== 8) {
+ $ERROR('#400: 32768 >>> 12 === 8. Actual: ' + (32768 >>> 12));
+}
+
+
+if (65536 >>> 12 !== 16) {
+ $ERROR('#401: 65536 >>> 12 === 16. Actual: ' + (65536 >>> 12));
+}
+
+
+if (131072 >>> 12 !== 32) {
+ $ERROR('#402: 131072 >>> 12 === 32. Actual: ' + (131072 >>> 12));
+}
+
+
+if (262144 >>> 12 !== 64) {
+ $ERROR('#403: 262144 >>> 12 === 64. Actual: ' + (262144 >>> 12));
+}
+
+
+if (524288 >>> 12 !== 128) {
+ $ERROR('#404: 524288 >>> 12 === 128. Actual: ' + (524288 >>> 12));
+}
+
+
+if (1048576 >>> 12 !== 256) {
+ $ERROR('#405: 1048576 >>> 12 === 256. Actual: ' + (1048576 >>> 12));
+}
+
+
+if (2097152 >>> 12 !== 512) {
+ $ERROR('#406: 2097152 >>> 12 === 512. Actual: ' + (2097152 >>> 12));
+}
+
+
+if (4194304 >>> 12 !== 1024) {
+ $ERROR('#407: 4194304 >>> 12 === 1024. Actual: ' + (4194304 >>> 12));
+}
+
+
+if (8388608 >>> 12 !== 2048) {
+ $ERROR('#408: 8388608 >>> 12 === 2048. Actual: ' + (8388608 >>> 12));
+}
+
+
+if (16777216 >>> 12 !== 4096) {
+ $ERROR('#409: 16777216 >>> 12 === 4096. Actual: ' + (16777216 >>> 12));
+}
+
+
+if (33554432 >>> 12 !== 8192) {
+ $ERROR('#410: 33554432 >>> 12 === 8192. Actual: ' + (33554432 >>> 12));
+}
+
+
+if (67108864 >>> 12 !== 16384) {
+ $ERROR('#411: 67108864 >>> 12 === 16384. Actual: ' + (67108864 >>> 12));
+}
+
+
+if (134217728 >>> 12 !== 32768) {
+ $ERROR('#412: 134217728 >>> 12 === 32768. Actual: ' + (134217728 >>> 12));
+}
+
+
+if (268435456 >>> 12 !== 65536) {
+ $ERROR('#413: 268435456 >>> 12 === 65536. Actual: ' + (268435456 >>> 12));
+}
+
+
+if (536870912 >>> 12 !== 131072) {
+ $ERROR('#414: 536870912 >>> 12 === 131072. Actual: ' + (536870912 >>> 12));
+}
+
+
+if (1073741824 >>> 12 !== 262144) {
+ $ERROR('#415: 1073741824 >>> 12 === 262144. Actual: ' + (1073741824 >>> 12));
+}
+
+
+if (2147483648 >>> 12 !== 524288) {
+ $ERROR('#416: 2147483648 >>> 12 === 524288. Actual: ' + (2147483648 >>> 12));
+}
+
+
+if (1 >>> 13 !== 0) {
+ $ERROR('#417: 1 >>> 13 === 0. Actual: ' + (1 >>> 13));
+}
+
+
+if (2 >>> 13 !== 0) {
+ $ERROR('#418: 2 >>> 13 === 0. Actual: ' + (2 >>> 13));
+}
+
+
+if (4 >>> 13 !== 0) {
+ $ERROR('#419: 4 >>> 13 === 0. Actual: ' + (4 >>> 13));
+}
+
+
+if (8 >>> 13 !== 0) {
+ $ERROR('#420: 8 >>> 13 === 0. Actual: ' + (8 >>> 13));
+}
+
+
+if (16 >>> 13 !== 0) {
+ $ERROR('#421: 16 >>> 13 === 0. Actual: ' + (16 >>> 13));
+}
+
+
+if (32 >>> 13 !== 0) {
+ $ERROR('#422: 32 >>> 13 === 0. Actual: ' + (32 >>> 13));
+}
+
+
+if (64 >>> 13 !== 0) {
+ $ERROR('#423: 64 >>> 13 === 0. Actual: ' + (64 >>> 13));
+}
+
+
+if (128 >>> 13 !== 0) {
+ $ERROR('#424: 128 >>> 13 === 0. Actual: ' + (128 >>> 13));
+}
+
+
+if (256 >>> 13 !== 0) {
+ $ERROR('#425: 256 >>> 13 === 0. Actual: ' + (256 >>> 13));
+}
+
+
+if (512 >>> 13 !== 0) {
+ $ERROR('#426: 512 >>> 13 === 0. Actual: ' + (512 >>> 13));
+}
+
+
+if (1024 >>> 13 !== 0) {
+ $ERROR('#427: 1024 >>> 13 === 0. Actual: ' + (1024 >>> 13));
+}
+
+
+if (2048 >>> 13 !== 0) {
+ $ERROR('#428: 2048 >>> 13 === 0. Actual: ' + (2048 >>> 13));
+}
+
+
+if (4096 >>> 13 !== 0) {
+ $ERROR('#429: 4096 >>> 13 === 0. Actual: ' + (4096 >>> 13));
+}
+
+
+if (8192 >>> 13 !== 1) {
+ $ERROR('#430: 8192 >>> 13 === 1. Actual: ' + (8192 >>> 13));
+}
+
+
+if (16384 >>> 13 !== 2) {
+ $ERROR('#431: 16384 >>> 13 === 2. Actual: ' + (16384 >>> 13));
+}
+
+
+if (32768 >>> 13 !== 4) {
+ $ERROR('#432: 32768 >>> 13 === 4. Actual: ' + (32768 >>> 13));
+}
+
+
+if (65536 >>> 13 !== 8) {
+ $ERROR('#433: 65536 >>> 13 === 8. Actual: ' + (65536 >>> 13));
+}
+
+
+if (131072 >>> 13 !== 16) {
+ $ERROR('#434: 131072 >>> 13 === 16. Actual: ' + (131072 >>> 13));
+}
+
+
+if (262144 >>> 13 !== 32) {
+ $ERROR('#435: 262144 >>> 13 === 32. Actual: ' + (262144 >>> 13));
+}
+
+
+if (524288 >>> 13 !== 64) {
+ $ERROR('#436: 524288 >>> 13 === 64. Actual: ' + (524288 >>> 13));
+}
+
+
+if (1048576 >>> 13 !== 128) {
+ $ERROR('#437: 1048576 >>> 13 === 128. Actual: ' + (1048576 >>> 13));
+}
+
+
+if (2097152 >>> 13 !== 256) {
+ $ERROR('#438: 2097152 >>> 13 === 256. Actual: ' + (2097152 >>> 13));
+}
+
+
+if (4194304 >>> 13 !== 512) {
+ $ERROR('#439: 4194304 >>> 13 === 512. Actual: ' + (4194304 >>> 13));
+}
+
+
+if (8388608 >>> 13 !== 1024) {
+ $ERROR('#440: 8388608 >>> 13 === 1024. Actual: ' + (8388608 >>> 13));
+}
+
+
+if (16777216 >>> 13 !== 2048) {
+ $ERROR('#441: 16777216 >>> 13 === 2048. Actual: ' + (16777216 >>> 13));
+}
+
+
+if (33554432 >>> 13 !== 4096) {
+ $ERROR('#442: 33554432 >>> 13 === 4096. Actual: ' + (33554432 >>> 13));
+}
+
+
+if (67108864 >>> 13 !== 8192) {
+ $ERROR('#443: 67108864 >>> 13 === 8192. Actual: ' + (67108864 >>> 13));
+}
+
+
+if (134217728 >>> 13 !== 16384) {
+ $ERROR('#444: 134217728 >>> 13 === 16384. Actual: ' + (134217728 >>> 13));
+}
+
+
+if (268435456 >>> 13 !== 32768) {
+ $ERROR('#445: 268435456 >>> 13 === 32768. Actual: ' + (268435456 >>> 13));
+}
+
+
+if (536870912 >>> 13 !== 65536) {
+ $ERROR('#446: 536870912 >>> 13 === 65536. Actual: ' + (536870912 >>> 13));
+}
+
+
+if (1073741824 >>> 13 !== 131072) {
+ $ERROR('#447: 1073741824 >>> 13 === 131072. Actual: ' + (1073741824 >>> 13));
+}
+
+
+if (2147483648 >>> 13 !== 262144) {
+ $ERROR('#448: 2147483648 >>> 13 === 262144. Actual: ' + (2147483648 >>> 13));
+}
+
+
+if (1 >>> 14 !== 0) {
+ $ERROR('#449: 1 >>> 14 === 0. Actual: ' + (1 >>> 14));
+}
+
+
+if (2 >>> 14 !== 0) {
+ $ERROR('#450: 2 >>> 14 === 0. Actual: ' + (2 >>> 14));
+}
+
+
+if (4 >>> 14 !== 0) {
+ $ERROR('#451: 4 >>> 14 === 0. Actual: ' + (4 >>> 14));
+}
+
+
+if (8 >>> 14 !== 0) {
+ $ERROR('#452: 8 >>> 14 === 0. Actual: ' + (8 >>> 14));
+}
+
+
+if (16 >>> 14 !== 0) {
+ $ERROR('#453: 16 >>> 14 === 0. Actual: ' + (16 >>> 14));
+}
+
+
+if (32 >>> 14 !== 0) {
+ $ERROR('#454: 32 >>> 14 === 0. Actual: ' + (32 >>> 14));
+}
+
+
+if (64 >>> 14 !== 0) {
+ $ERROR('#455: 64 >>> 14 === 0. Actual: ' + (64 >>> 14));
+}
+
+
+if (128 >>> 14 !== 0) {
+ $ERROR('#456: 128 >>> 14 === 0. Actual: ' + (128 >>> 14));
+}
+
+
+if (256 >>> 14 !== 0) {
+ $ERROR('#457: 256 >>> 14 === 0. Actual: ' + (256 >>> 14));
+}
+
+
+if (512 >>> 14 !== 0) {
+ $ERROR('#458: 512 >>> 14 === 0. Actual: ' + (512 >>> 14));
+}
+
+
+if (1024 >>> 14 !== 0) {
+ $ERROR('#459: 1024 >>> 14 === 0. Actual: ' + (1024 >>> 14));
+}
+
+
+if (2048 >>> 14 !== 0) {
+ $ERROR('#460: 2048 >>> 14 === 0. Actual: ' + (2048 >>> 14));
+}
+
+
+if (4096 >>> 14 !== 0) {
+ $ERROR('#461: 4096 >>> 14 === 0. Actual: ' + (4096 >>> 14));
+}
+
+
+if (8192 >>> 14 !== 0) {
+ $ERROR('#462: 8192 >>> 14 === 0. Actual: ' + (8192 >>> 14));
+}
+
+
+if (16384 >>> 14 !== 1) {
+ $ERROR('#463: 16384 >>> 14 === 1. Actual: ' + (16384 >>> 14));
+}
+
+
+if (32768 >>> 14 !== 2) {
+ $ERROR('#464: 32768 >>> 14 === 2. Actual: ' + (32768 >>> 14));
+}
+
+
+if (65536 >>> 14 !== 4) {
+ $ERROR('#465: 65536 >>> 14 === 4. Actual: ' + (65536 >>> 14));
+}
+
+
+if (131072 >>> 14 !== 8) {
+ $ERROR('#466: 131072 >>> 14 === 8. Actual: ' + (131072 >>> 14));
+}
+
+
+if (262144 >>> 14 !== 16) {
+ $ERROR('#467: 262144 >>> 14 === 16. Actual: ' + (262144 >>> 14));
+}
+
+
+if (524288 >>> 14 !== 32) {
+ $ERROR('#468: 524288 >>> 14 === 32. Actual: ' + (524288 >>> 14));
+}
+
+
+if (1048576 >>> 14 !== 64) {
+ $ERROR('#469: 1048576 >>> 14 === 64. Actual: ' + (1048576 >>> 14));
+}
+
+
+if (2097152 >>> 14 !== 128) {
+ $ERROR('#470: 2097152 >>> 14 === 128. Actual: ' + (2097152 >>> 14));
+}
+
+
+if (4194304 >>> 14 !== 256) {
+ $ERROR('#471: 4194304 >>> 14 === 256. Actual: ' + (4194304 >>> 14));
+}
+
+
+if (8388608 >>> 14 !== 512) {
+ $ERROR('#472: 8388608 >>> 14 === 512. Actual: ' + (8388608 >>> 14));
+}
+
+
+if (16777216 >>> 14 !== 1024) {
+ $ERROR('#473: 16777216 >>> 14 === 1024. Actual: ' + (16777216 >>> 14));
+}
+
+
+if (33554432 >>> 14 !== 2048) {
+ $ERROR('#474: 33554432 >>> 14 === 2048. Actual: ' + (33554432 >>> 14));
+}
+
+
+if (67108864 >>> 14 !== 4096) {
+ $ERROR('#475: 67108864 >>> 14 === 4096. Actual: ' + (67108864 >>> 14));
+}
+
+
+if (134217728 >>> 14 !== 8192) {
+ $ERROR('#476: 134217728 >>> 14 === 8192. Actual: ' + (134217728 >>> 14));
+}
+
+
+if (268435456 >>> 14 !== 16384) {
+ $ERROR('#477: 268435456 >>> 14 === 16384. Actual: ' + (268435456 >>> 14));
+}
+
+
+if (536870912 >>> 14 !== 32768) {
+ $ERROR('#478: 536870912 >>> 14 === 32768. Actual: ' + (536870912 >>> 14));
+}
+
+
+if (1073741824 >>> 14 !== 65536) {
+ $ERROR('#479: 1073741824 >>> 14 === 65536. Actual: ' + (1073741824 >>> 14));
+}
+
+
+if (2147483648 >>> 14 !== 131072) {
+ $ERROR('#480: 2147483648 >>> 14 === 131072. Actual: ' + (2147483648 >>> 14));
+}
+
+
+if (1 >>> 15 !== 0) {
+ $ERROR('#481: 1 >>> 15 === 0. Actual: ' + (1 >>> 15));
+}
+
+
+if (2 >>> 15 !== 0) {
+ $ERROR('#482: 2 >>> 15 === 0. Actual: ' + (2 >>> 15));
+}
+
+
+if (4 >>> 15 !== 0) {
+ $ERROR('#483: 4 >>> 15 === 0. Actual: ' + (4 >>> 15));
+}
+
+
+if (8 >>> 15 !== 0) {
+ $ERROR('#484: 8 >>> 15 === 0. Actual: ' + (8 >>> 15));
+}
+
+
+if (16 >>> 15 !== 0) {
+ $ERROR('#485: 16 >>> 15 === 0. Actual: ' + (16 >>> 15));
+}
+
+
+if (32 >>> 15 !== 0) {
+ $ERROR('#486: 32 >>> 15 === 0. Actual: ' + (32 >>> 15));
+}
+
+
+if (64 >>> 15 !== 0) {
+ $ERROR('#487: 64 >>> 15 === 0. Actual: ' + (64 >>> 15));
+}
+
+
+if (128 >>> 15 !== 0) {
+ $ERROR('#488: 128 >>> 15 === 0. Actual: ' + (128 >>> 15));
+}
+
+
+if (256 >>> 15 !== 0) {
+ $ERROR('#489: 256 >>> 15 === 0. Actual: ' + (256 >>> 15));
+}
+
+
+if (512 >>> 15 !== 0) {
+ $ERROR('#490: 512 >>> 15 === 0. Actual: ' + (512 >>> 15));
+}
+
+
+if (1024 >>> 15 !== 0) {
+ $ERROR('#491: 1024 >>> 15 === 0. Actual: ' + (1024 >>> 15));
+}
+
+
+if (2048 >>> 15 !== 0) {
+ $ERROR('#492: 2048 >>> 15 === 0. Actual: ' + (2048 >>> 15));
+}
+
+
+if (4096 >>> 15 !== 0) {
+ $ERROR('#493: 4096 >>> 15 === 0. Actual: ' + (4096 >>> 15));
+}
+
+
+if (8192 >>> 15 !== 0) {
+ $ERROR('#494: 8192 >>> 15 === 0. Actual: ' + (8192 >>> 15));
+}
+
+
+if (16384 >>> 15 !== 0) {
+ $ERROR('#495: 16384 >>> 15 === 0. Actual: ' + (16384 >>> 15));
+}
+
+
+if (32768 >>> 15 !== 1) {
+ $ERROR('#496: 32768 >>> 15 === 1. Actual: ' + (32768 >>> 15));
+}
+
+
+if (65536 >>> 15 !== 2) {
+ $ERROR('#497: 65536 >>> 15 === 2. Actual: ' + (65536 >>> 15));
+}
+
+
+if (131072 >>> 15 !== 4) {
+ $ERROR('#498: 131072 >>> 15 === 4. Actual: ' + (131072 >>> 15));
+}
+
+
+if (262144 >>> 15 !== 8) {
+ $ERROR('#499: 262144 >>> 15 === 8. Actual: ' + (262144 >>> 15));
+}
+
+
+if (524288 >>> 15 !== 16) {
+ $ERROR('#500: 524288 >>> 15 === 16. Actual: ' + (524288 >>> 15));
+}
+
+
+if (1048576 >>> 15 !== 32) {
+ $ERROR('#501: 1048576 >>> 15 === 32. Actual: ' + (1048576 >>> 15));
+}
+
+
+if (2097152 >>> 15 !== 64) {
+ $ERROR('#502: 2097152 >>> 15 === 64. Actual: ' + (2097152 >>> 15));
+}
+
+
+if (4194304 >>> 15 !== 128) {
+ $ERROR('#503: 4194304 >>> 15 === 128. Actual: ' + (4194304 >>> 15));
+}
+
+
+if (8388608 >>> 15 !== 256) {
+ $ERROR('#504: 8388608 >>> 15 === 256. Actual: ' + (8388608 >>> 15));
+}
+
+
+if (16777216 >>> 15 !== 512) {
+ $ERROR('#505: 16777216 >>> 15 === 512. Actual: ' + (16777216 >>> 15));
+}
+
+
+if (33554432 >>> 15 !== 1024) {
+ $ERROR('#506: 33554432 >>> 15 === 1024. Actual: ' + (33554432 >>> 15));
+}
+
+
+if (67108864 >>> 15 !== 2048) {
+ $ERROR('#507: 67108864 >>> 15 === 2048. Actual: ' + (67108864 >>> 15));
+}
+
+
+if (134217728 >>> 15 !== 4096) {
+ $ERROR('#508: 134217728 >>> 15 === 4096. Actual: ' + (134217728 >>> 15));
+}
+
+
+if (268435456 >>> 15 !== 8192) {
+ $ERROR('#509: 268435456 >>> 15 === 8192. Actual: ' + (268435456 >>> 15));
+}
+
+
+if (536870912 >>> 15 !== 16384) {
+ $ERROR('#510: 536870912 >>> 15 === 16384. Actual: ' + (536870912 >>> 15));
+}
+
+
+if (1073741824 >>> 15 !== 32768) {
+ $ERROR('#511: 1073741824 >>> 15 === 32768. Actual: ' + (1073741824 >>> 15));
+}
+
+
+if (2147483648 >>> 15 !== 65536) {
+ $ERROR('#512: 2147483648 >>> 15 === 65536. Actual: ' + (2147483648 >>> 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T2.js
new file mode 100644
index 000000000..4203c7d92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T2.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A4_T2;
+ * @section: 11.7.3;
+ * @assertion: Check operator x >>> y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (1 >>> 16 !== 0) {
+ $ERROR('#513: 1 >>> 16 === 0. Actual: ' + (1 >>> 16));
+}
+
+
+if (2 >>> 16 !== 0) {
+ $ERROR('#514: 2 >>> 16 === 0. Actual: ' + (2 >>> 16));
+}
+
+
+if (4 >>> 16 !== 0) {
+ $ERROR('#515: 4 >>> 16 === 0. Actual: ' + (4 >>> 16));
+}
+
+
+if (8 >>> 16 !== 0) {
+ $ERROR('#516: 8 >>> 16 === 0. Actual: ' + (8 >>> 16));
+}
+
+
+if (16 >>> 16 !== 0) {
+ $ERROR('#517: 16 >>> 16 === 0. Actual: ' + (16 >>> 16));
+}
+
+
+if (32 >>> 16 !== 0) {
+ $ERROR('#518: 32 >>> 16 === 0. Actual: ' + (32 >>> 16));
+}
+
+
+if (64 >>> 16 !== 0) {
+ $ERROR('#519: 64 >>> 16 === 0. Actual: ' + (64 >>> 16));
+}
+
+
+if (128 >>> 16 !== 0) {
+ $ERROR('#520: 128 >>> 16 === 0. Actual: ' + (128 >>> 16));
+}
+
+
+if (256 >>> 16 !== 0) {
+ $ERROR('#521: 256 >>> 16 === 0. Actual: ' + (256 >>> 16));
+}
+
+
+if (512 >>> 16 !== 0) {
+ $ERROR('#522: 512 >>> 16 === 0. Actual: ' + (512 >>> 16));
+}
+
+
+if (1024 >>> 16 !== 0) {
+ $ERROR('#523: 1024 >>> 16 === 0. Actual: ' + (1024 >>> 16));
+}
+
+
+if (2048 >>> 16 !== 0) {
+ $ERROR('#524: 2048 >>> 16 === 0. Actual: ' + (2048 >>> 16));
+}
+
+
+if (4096 >>> 16 !== 0) {
+ $ERROR('#525: 4096 >>> 16 === 0. Actual: ' + (4096 >>> 16));
+}
+
+
+if (8192 >>> 16 !== 0) {
+ $ERROR('#526: 8192 >>> 16 === 0. Actual: ' + (8192 >>> 16));
+}
+
+
+if (16384 >>> 16 !== 0) {
+ $ERROR('#527: 16384 >>> 16 === 0. Actual: ' + (16384 >>> 16));
+}
+
+
+if (32768 >>> 16 !== 0) {
+ $ERROR('#528: 32768 >>> 16 === 0. Actual: ' + (32768 >>> 16));
+}
+
+
+if (65536 >>> 16 !== 1) {
+ $ERROR('#529: 65536 >>> 16 === 1. Actual: ' + (65536 >>> 16));
+}
+
+
+if (131072 >>> 16 !== 2) {
+ $ERROR('#530: 131072 >>> 16 === 2. Actual: ' + (131072 >>> 16));
+}
+
+
+if (262144 >>> 16 !== 4) {
+ $ERROR('#531: 262144 >>> 16 === 4. Actual: ' + (262144 >>> 16));
+}
+
+
+if (524288 >>> 16 !== 8) {
+ $ERROR('#532: 524288 >>> 16 === 8. Actual: ' + (524288 >>> 16));
+}
+
+
+if (1048576 >>> 16 !== 16) {
+ $ERROR('#533: 1048576 >>> 16 === 16. Actual: ' + (1048576 >>> 16));
+}
+
+
+if (2097152 >>> 16 !== 32) {
+ $ERROR('#534: 2097152 >>> 16 === 32. Actual: ' + (2097152 >>> 16));
+}
+
+
+if (4194304 >>> 16 !== 64) {
+ $ERROR('#535: 4194304 >>> 16 === 64. Actual: ' + (4194304 >>> 16));
+}
+
+
+if (8388608 >>> 16 !== 128) {
+ $ERROR('#536: 8388608 >>> 16 === 128. Actual: ' + (8388608 >>> 16));
+}
+
+
+if (16777216 >>> 16 !== 256) {
+ $ERROR('#537: 16777216 >>> 16 === 256. Actual: ' + (16777216 >>> 16));
+}
+
+
+if (33554432 >>> 16 !== 512) {
+ $ERROR('#538: 33554432 >>> 16 === 512. Actual: ' + (33554432 >>> 16));
+}
+
+
+if (67108864 >>> 16 !== 1024) {
+ $ERROR('#539: 67108864 >>> 16 === 1024. Actual: ' + (67108864 >>> 16));
+}
+
+
+if (134217728 >>> 16 !== 2048) {
+ $ERROR('#540: 134217728 >>> 16 === 2048. Actual: ' + (134217728 >>> 16));
+}
+
+
+if (268435456 >>> 16 !== 4096) {
+ $ERROR('#541: 268435456 >>> 16 === 4096. Actual: ' + (268435456 >>> 16));
+}
+
+
+if (536870912 >>> 16 !== 8192) {
+ $ERROR('#542: 536870912 >>> 16 === 8192. Actual: ' + (536870912 >>> 16));
+}
+
+
+if (1073741824 >>> 16 !== 16384) {
+ $ERROR('#543: 1073741824 >>> 16 === 16384. Actual: ' + (1073741824 >>> 16));
+}
+
+
+if (2147483648 >>> 16 !== 32768) {
+ $ERROR('#544: 2147483648 >>> 16 === 32768. Actual: ' + (2147483648 >>> 16));
+}
+
+
+if (1 >>> 17 !== 0) {
+ $ERROR('#545: 1 >>> 17 === 0. Actual: ' + (1 >>> 17));
+}
+
+
+if (2 >>> 17 !== 0) {
+ $ERROR('#546: 2 >>> 17 === 0. Actual: ' + (2 >>> 17));
+}
+
+
+if (4 >>> 17 !== 0) {
+ $ERROR('#547: 4 >>> 17 === 0. Actual: ' + (4 >>> 17));
+}
+
+
+if (8 >>> 17 !== 0) {
+ $ERROR('#548: 8 >>> 17 === 0. Actual: ' + (8 >>> 17));
+}
+
+
+if (16 >>> 17 !== 0) {
+ $ERROR('#549: 16 >>> 17 === 0. Actual: ' + (16 >>> 17));
+}
+
+
+if (32 >>> 17 !== 0) {
+ $ERROR('#550: 32 >>> 17 === 0. Actual: ' + (32 >>> 17));
+}
+
+
+if (64 >>> 17 !== 0) {
+ $ERROR('#551: 64 >>> 17 === 0. Actual: ' + (64 >>> 17));
+}
+
+
+if (128 >>> 17 !== 0) {
+ $ERROR('#552: 128 >>> 17 === 0. Actual: ' + (128 >>> 17));
+}
+
+
+if (256 >>> 17 !== 0) {
+ $ERROR('#553: 256 >>> 17 === 0. Actual: ' + (256 >>> 17));
+}
+
+
+if (512 >>> 17 !== 0) {
+ $ERROR('#554: 512 >>> 17 === 0. Actual: ' + (512 >>> 17));
+}
+
+
+if (1024 >>> 17 !== 0) {
+ $ERROR('#555: 1024 >>> 17 === 0. Actual: ' + (1024 >>> 17));
+}
+
+
+if (2048 >>> 17 !== 0) {
+ $ERROR('#556: 2048 >>> 17 === 0. Actual: ' + (2048 >>> 17));
+}
+
+
+if (4096 >>> 17 !== 0) {
+ $ERROR('#557: 4096 >>> 17 === 0. Actual: ' + (4096 >>> 17));
+}
+
+
+if (8192 >>> 17 !== 0) {
+ $ERROR('#558: 8192 >>> 17 === 0. Actual: ' + (8192 >>> 17));
+}
+
+
+if (16384 >>> 17 !== 0) {
+ $ERROR('#559: 16384 >>> 17 === 0. Actual: ' + (16384 >>> 17));
+}
+
+
+if (32768 >>> 17 !== 0) {
+ $ERROR('#560: 32768 >>> 17 === 0. Actual: ' + (32768 >>> 17));
+}
+
+
+if (65536 >>> 17 !== 0) {
+ $ERROR('#561: 65536 >>> 17 === 0. Actual: ' + (65536 >>> 17));
+}
+
+
+if (131072 >>> 17 !== 1) {
+ $ERROR('#562: 131072 >>> 17 === 1. Actual: ' + (131072 >>> 17));
+}
+
+
+if (262144 >>> 17 !== 2) {
+ $ERROR('#563: 262144 >>> 17 === 2. Actual: ' + (262144 >>> 17));
+}
+
+
+if (524288 >>> 17 !== 4) {
+ $ERROR('#564: 524288 >>> 17 === 4. Actual: ' + (524288 >>> 17));
+}
+
+
+if (1048576 >>> 17 !== 8) {
+ $ERROR('#565: 1048576 >>> 17 === 8. Actual: ' + (1048576 >>> 17));
+}
+
+
+if (2097152 >>> 17 !== 16) {
+ $ERROR('#566: 2097152 >>> 17 === 16. Actual: ' + (2097152 >>> 17));
+}
+
+
+if (4194304 >>> 17 !== 32) {
+ $ERROR('#567: 4194304 >>> 17 === 32. Actual: ' + (4194304 >>> 17));
+}
+
+
+if (8388608 >>> 17 !== 64) {
+ $ERROR('#568: 8388608 >>> 17 === 64. Actual: ' + (8388608 >>> 17));
+}
+
+
+if (16777216 >>> 17 !== 128) {
+ $ERROR('#569: 16777216 >>> 17 === 128. Actual: ' + (16777216 >>> 17));
+}
+
+
+if (33554432 >>> 17 !== 256) {
+ $ERROR('#570: 33554432 >>> 17 === 256. Actual: ' + (33554432 >>> 17));
+}
+
+
+if (67108864 >>> 17 !== 512) {
+ $ERROR('#571: 67108864 >>> 17 === 512. Actual: ' + (67108864 >>> 17));
+}
+
+
+if (134217728 >>> 17 !== 1024) {
+ $ERROR('#572: 134217728 >>> 17 === 1024. Actual: ' + (134217728 >>> 17));
+}
+
+
+if (268435456 >>> 17 !== 2048) {
+ $ERROR('#573: 268435456 >>> 17 === 2048. Actual: ' + (268435456 >>> 17));
+}
+
+
+if (536870912 >>> 17 !== 4096) {
+ $ERROR('#574: 536870912 >>> 17 === 4096. Actual: ' + (536870912 >>> 17));
+}
+
+
+if (1073741824 >>> 17 !== 8192) {
+ $ERROR('#575: 1073741824 >>> 17 === 8192. Actual: ' + (1073741824 >>> 17));
+}
+
+
+if (2147483648 >>> 17 !== 16384) {
+ $ERROR('#576: 2147483648 >>> 17 === 16384. Actual: ' + (2147483648 >>> 17));
+}
+
+
+if (1 >>> 18 !== 0) {
+ $ERROR('#577: 1 >>> 18 === 0. Actual: ' + (1 >>> 18));
+}
+
+
+if (2 >>> 18 !== 0) {
+ $ERROR('#578: 2 >>> 18 === 0. Actual: ' + (2 >>> 18));
+}
+
+
+if (4 >>> 18 !== 0) {
+ $ERROR('#579: 4 >>> 18 === 0. Actual: ' + (4 >>> 18));
+}
+
+
+if (8 >>> 18 !== 0) {
+ $ERROR('#580: 8 >>> 18 === 0. Actual: ' + (8 >>> 18));
+}
+
+
+if (16 >>> 18 !== 0) {
+ $ERROR('#581: 16 >>> 18 === 0. Actual: ' + (16 >>> 18));
+}
+
+
+if (32 >>> 18 !== 0) {
+ $ERROR('#582: 32 >>> 18 === 0. Actual: ' + (32 >>> 18));
+}
+
+
+if (64 >>> 18 !== 0) {
+ $ERROR('#583: 64 >>> 18 === 0. Actual: ' + (64 >>> 18));
+}
+
+
+if (128 >>> 18 !== 0) {
+ $ERROR('#584: 128 >>> 18 === 0. Actual: ' + (128 >>> 18));
+}
+
+
+if (256 >>> 18 !== 0) {
+ $ERROR('#585: 256 >>> 18 === 0. Actual: ' + (256 >>> 18));
+}
+
+
+if (512 >>> 18 !== 0) {
+ $ERROR('#586: 512 >>> 18 === 0. Actual: ' + (512 >>> 18));
+}
+
+
+if (1024 >>> 18 !== 0) {
+ $ERROR('#587: 1024 >>> 18 === 0. Actual: ' + (1024 >>> 18));
+}
+
+
+if (2048 >>> 18 !== 0) {
+ $ERROR('#588: 2048 >>> 18 === 0. Actual: ' + (2048 >>> 18));
+}
+
+
+if (4096 >>> 18 !== 0) {
+ $ERROR('#589: 4096 >>> 18 === 0. Actual: ' + (4096 >>> 18));
+}
+
+
+if (8192 >>> 18 !== 0) {
+ $ERROR('#590: 8192 >>> 18 === 0. Actual: ' + (8192 >>> 18));
+}
+
+
+if (16384 >>> 18 !== 0) {
+ $ERROR('#591: 16384 >>> 18 === 0. Actual: ' + (16384 >>> 18));
+}
+
+
+if (32768 >>> 18 !== 0) {
+ $ERROR('#592: 32768 >>> 18 === 0. Actual: ' + (32768 >>> 18));
+}
+
+
+if (65536 >>> 18 !== 0) {
+ $ERROR('#593: 65536 >>> 18 === 0. Actual: ' + (65536 >>> 18));
+}
+
+
+if (131072 >>> 18 !== 0) {
+ $ERROR('#594: 131072 >>> 18 === 0. Actual: ' + (131072 >>> 18));
+}
+
+
+if (262144 >>> 18 !== 1) {
+ $ERROR('#595: 262144 >>> 18 === 1. Actual: ' + (262144 >>> 18));
+}
+
+
+if (524288 >>> 18 !== 2) {
+ $ERROR('#596: 524288 >>> 18 === 2. Actual: ' + (524288 >>> 18));
+}
+
+
+if (1048576 >>> 18 !== 4) {
+ $ERROR('#597: 1048576 >>> 18 === 4. Actual: ' + (1048576 >>> 18));
+}
+
+
+if (2097152 >>> 18 !== 8) {
+ $ERROR('#598: 2097152 >>> 18 === 8. Actual: ' + (2097152 >>> 18));
+}
+
+
+if (4194304 >>> 18 !== 16) {
+ $ERROR('#599: 4194304 >>> 18 === 16. Actual: ' + (4194304 >>> 18));
+}
+
+
+if (8388608 >>> 18 !== 32) {
+ $ERROR('#600: 8388608 >>> 18 === 32. Actual: ' + (8388608 >>> 18));
+}
+
+
+if (16777216 >>> 18 !== 64) {
+ $ERROR('#601: 16777216 >>> 18 === 64. Actual: ' + (16777216 >>> 18));
+}
+
+
+if (33554432 >>> 18 !== 128) {
+ $ERROR('#602: 33554432 >>> 18 === 128. Actual: ' + (33554432 >>> 18));
+}
+
+
+if (67108864 >>> 18 !== 256) {
+ $ERROR('#603: 67108864 >>> 18 === 256. Actual: ' + (67108864 >>> 18));
+}
+
+
+if (134217728 >>> 18 !== 512) {
+ $ERROR('#604: 134217728 >>> 18 === 512. Actual: ' + (134217728 >>> 18));
+}
+
+
+if (268435456 >>> 18 !== 1024) {
+ $ERROR('#605: 268435456 >>> 18 === 1024. Actual: ' + (268435456 >>> 18));
+}
+
+
+if (536870912 >>> 18 !== 2048) {
+ $ERROR('#606: 536870912 >>> 18 === 2048. Actual: ' + (536870912 >>> 18));
+}
+
+
+if (1073741824 >>> 18 !== 4096) {
+ $ERROR('#607: 1073741824 >>> 18 === 4096. Actual: ' + (1073741824 >>> 18));
+}
+
+
+if (2147483648 >>> 18 !== 8192) {
+ $ERROR('#608: 2147483648 >>> 18 === 8192. Actual: ' + (2147483648 >>> 18));
+}
+
+
+if (1 >>> 19 !== 0) {
+ $ERROR('#609: 1 >>> 19 === 0. Actual: ' + (1 >>> 19));
+}
+
+
+if (2 >>> 19 !== 0) {
+ $ERROR('#610: 2 >>> 19 === 0. Actual: ' + (2 >>> 19));
+}
+
+
+if (4 >>> 19 !== 0) {
+ $ERROR('#611: 4 >>> 19 === 0. Actual: ' + (4 >>> 19));
+}
+
+
+if (8 >>> 19 !== 0) {
+ $ERROR('#612: 8 >>> 19 === 0. Actual: ' + (8 >>> 19));
+}
+
+
+if (16 >>> 19 !== 0) {
+ $ERROR('#613: 16 >>> 19 === 0. Actual: ' + (16 >>> 19));
+}
+
+
+if (32 >>> 19 !== 0) {
+ $ERROR('#614: 32 >>> 19 === 0. Actual: ' + (32 >>> 19));
+}
+
+
+if (64 >>> 19 !== 0) {
+ $ERROR('#615: 64 >>> 19 === 0. Actual: ' + (64 >>> 19));
+}
+
+
+if (128 >>> 19 !== 0) {
+ $ERROR('#616: 128 >>> 19 === 0. Actual: ' + (128 >>> 19));
+}
+
+
+if (256 >>> 19 !== 0) {
+ $ERROR('#617: 256 >>> 19 === 0. Actual: ' + (256 >>> 19));
+}
+
+
+if (512 >>> 19 !== 0) {
+ $ERROR('#618: 512 >>> 19 === 0. Actual: ' + (512 >>> 19));
+}
+
+
+if (1024 >>> 19 !== 0) {
+ $ERROR('#619: 1024 >>> 19 === 0. Actual: ' + (1024 >>> 19));
+}
+
+
+if (2048 >>> 19 !== 0) {
+ $ERROR('#620: 2048 >>> 19 === 0. Actual: ' + (2048 >>> 19));
+}
+
+
+if (4096 >>> 19 !== 0) {
+ $ERROR('#621: 4096 >>> 19 === 0. Actual: ' + (4096 >>> 19));
+}
+
+
+if (8192 >>> 19 !== 0) {
+ $ERROR('#622: 8192 >>> 19 === 0. Actual: ' + (8192 >>> 19));
+}
+
+
+if (16384 >>> 19 !== 0) {
+ $ERROR('#623: 16384 >>> 19 === 0. Actual: ' + (16384 >>> 19));
+}
+
+
+if (32768 >>> 19 !== 0) {
+ $ERROR('#624: 32768 >>> 19 === 0. Actual: ' + (32768 >>> 19));
+}
+
+
+if (65536 >>> 19 !== 0) {
+ $ERROR('#625: 65536 >>> 19 === 0. Actual: ' + (65536 >>> 19));
+}
+
+
+if (131072 >>> 19 !== 0) {
+ $ERROR('#626: 131072 >>> 19 === 0. Actual: ' + (131072 >>> 19));
+}
+
+
+if (262144 >>> 19 !== 0) {
+ $ERROR('#627: 262144 >>> 19 === 0. Actual: ' + (262144 >>> 19));
+}
+
+
+if (524288 >>> 19 !== 1) {
+ $ERROR('#628: 524288 >>> 19 === 1. Actual: ' + (524288 >>> 19));
+}
+
+
+if (1048576 >>> 19 !== 2) {
+ $ERROR('#629: 1048576 >>> 19 === 2. Actual: ' + (1048576 >>> 19));
+}
+
+
+if (2097152 >>> 19 !== 4) {
+ $ERROR('#630: 2097152 >>> 19 === 4. Actual: ' + (2097152 >>> 19));
+}
+
+
+if (4194304 >>> 19 !== 8) {
+ $ERROR('#631: 4194304 >>> 19 === 8. Actual: ' + (4194304 >>> 19));
+}
+
+
+if (8388608 >>> 19 !== 16) {
+ $ERROR('#632: 8388608 >>> 19 === 16. Actual: ' + (8388608 >>> 19));
+}
+
+
+if (16777216 >>> 19 !== 32) {
+ $ERROR('#633: 16777216 >>> 19 === 32. Actual: ' + (16777216 >>> 19));
+}
+
+
+if (33554432 >>> 19 !== 64) {
+ $ERROR('#634: 33554432 >>> 19 === 64. Actual: ' + (33554432 >>> 19));
+}
+
+
+if (67108864 >>> 19 !== 128) {
+ $ERROR('#635: 67108864 >>> 19 === 128. Actual: ' + (67108864 >>> 19));
+}
+
+
+if (134217728 >>> 19 !== 256) {
+ $ERROR('#636: 134217728 >>> 19 === 256. Actual: ' + (134217728 >>> 19));
+}
+
+
+if (268435456 >>> 19 !== 512) {
+ $ERROR('#637: 268435456 >>> 19 === 512. Actual: ' + (268435456 >>> 19));
+}
+
+
+if (536870912 >>> 19 !== 1024) {
+ $ERROR('#638: 536870912 >>> 19 === 1024. Actual: ' + (536870912 >>> 19));
+}
+
+
+if (1073741824 >>> 19 !== 2048) {
+ $ERROR('#639: 1073741824 >>> 19 === 2048. Actual: ' + (1073741824 >>> 19));
+}
+
+
+if (2147483648 >>> 19 !== 4096) {
+ $ERROR('#640: 2147483648 >>> 19 === 4096. Actual: ' + (2147483648 >>> 19));
+}
+
+
+if (1 >>> 20 !== 0) {
+ $ERROR('#641: 1 >>> 20 === 0. Actual: ' + (1 >>> 20));
+}
+
+
+if (2 >>> 20 !== 0) {
+ $ERROR('#642: 2 >>> 20 === 0. Actual: ' + (2 >>> 20));
+}
+
+
+if (4 >>> 20 !== 0) {
+ $ERROR('#643: 4 >>> 20 === 0. Actual: ' + (4 >>> 20));
+}
+
+
+if (8 >>> 20 !== 0) {
+ $ERROR('#644: 8 >>> 20 === 0. Actual: ' + (8 >>> 20));
+}
+
+
+if (16 >>> 20 !== 0) {
+ $ERROR('#645: 16 >>> 20 === 0. Actual: ' + (16 >>> 20));
+}
+
+
+if (32 >>> 20 !== 0) {
+ $ERROR('#646: 32 >>> 20 === 0. Actual: ' + (32 >>> 20));
+}
+
+
+if (64 >>> 20 !== 0) {
+ $ERROR('#647: 64 >>> 20 === 0. Actual: ' + (64 >>> 20));
+}
+
+
+if (128 >>> 20 !== 0) {
+ $ERROR('#648: 128 >>> 20 === 0. Actual: ' + (128 >>> 20));
+}
+
+
+if (256 >>> 20 !== 0) {
+ $ERROR('#649: 256 >>> 20 === 0. Actual: ' + (256 >>> 20));
+}
+
+
+if (512 >>> 20 !== 0) {
+ $ERROR('#650: 512 >>> 20 === 0. Actual: ' + (512 >>> 20));
+}
+
+
+if (1024 >>> 20 !== 0) {
+ $ERROR('#651: 1024 >>> 20 === 0. Actual: ' + (1024 >>> 20));
+}
+
+
+if (2048 >>> 20 !== 0) {
+ $ERROR('#652: 2048 >>> 20 === 0. Actual: ' + (2048 >>> 20));
+}
+
+
+if (4096 >>> 20 !== 0) {
+ $ERROR('#653: 4096 >>> 20 === 0. Actual: ' + (4096 >>> 20));
+}
+
+
+if (8192 >>> 20 !== 0) {
+ $ERROR('#654: 8192 >>> 20 === 0. Actual: ' + (8192 >>> 20));
+}
+
+
+if (16384 >>> 20 !== 0) {
+ $ERROR('#655: 16384 >>> 20 === 0. Actual: ' + (16384 >>> 20));
+}
+
+
+if (32768 >>> 20 !== 0) {
+ $ERROR('#656: 32768 >>> 20 === 0. Actual: ' + (32768 >>> 20));
+}
+
+
+if (65536 >>> 20 !== 0) {
+ $ERROR('#657: 65536 >>> 20 === 0. Actual: ' + (65536 >>> 20));
+}
+
+
+if (131072 >>> 20 !== 0) {
+ $ERROR('#658: 131072 >>> 20 === 0. Actual: ' + (131072 >>> 20));
+}
+
+
+if (262144 >>> 20 !== 0) {
+ $ERROR('#659: 262144 >>> 20 === 0. Actual: ' + (262144 >>> 20));
+}
+
+
+if (524288 >>> 20 !== 0) {
+ $ERROR('#660: 524288 >>> 20 === 0. Actual: ' + (524288 >>> 20));
+}
+
+
+if (1048576 >>> 20 !== 1) {
+ $ERROR('#661: 1048576 >>> 20 === 1. Actual: ' + (1048576 >>> 20));
+}
+
+
+if (2097152 >>> 20 !== 2) {
+ $ERROR('#662: 2097152 >>> 20 === 2. Actual: ' + (2097152 >>> 20));
+}
+
+
+if (4194304 >>> 20 !== 4) {
+ $ERROR('#663: 4194304 >>> 20 === 4. Actual: ' + (4194304 >>> 20));
+}
+
+
+if (8388608 >>> 20 !== 8) {
+ $ERROR('#664: 8388608 >>> 20 === 8. Actual: ' + (8388608 >>> 20));
+}
+
+
+if (16777216 >>> 20 !== 16) {
+ $ERROR('#665: 16777216 >>> 20 === 16. Actual: ' + (16777216 >>> 20));
+}
+
+
+if (33554432 >>> 20 !== 32) {
+ $ERROR('#666: 33554432 >>> 20 === 32. Actual: ' + (33554432 >>> 20));
+}
+
+
+if (67108864 >>> 20 !== 64) {
+ $ERROR('#667: 67108864 >>> 20 === 64. Actual: ' + (67108864 >>> 20));
+}
+
+
+if (134217728 >>> 20 !== 128) {
+ $ERROR('#668: 134217728 >>> 20 === 128. Actual: ' + (134217728 >>> 20));
+}
+
+
+if (268435456 >>> 20 !== 256) {
+ $ERROR('#669: 268435456 >>> 20 === 256. Actual: ' + (268435456 >>> 20));
+}
+
+
+if (536870912 >>> 20 !== 512) {
+ $ERROR('#670: 536870912 >>> 20 === 512. Actual: ' + (536870912 >>> 20));
+}
+
+
+if (1073741824 >>> 20 !== 1024) {
+ $ERROR('#671: 1073741824 >>> 20 === 1024. Actual: ' + (1073741824 >>> 20));
+}
+
+
+if (2147483648 >>> 20 !== 2048) {
+ $ERROR('#672: 2147483648 >>> 20 === 2048. Actual: ' + (2147483648 >>> 20));
+}
+
+
+if (1 >>> 21 !== 0) {
+ $ERROR('#673: 1 >>> 21 === 0. Actual: ' + (1 >>> 21));
+}
+
+
+if (2 >>> 21 !== 0) {
+ $ERROR('#674: 2 >>> 21 === 0. Actual: ' + (2 >>> 21));
+}
+
+
+if (4 >>> 21 !== 0) {
+ $ERROR('#675: 4 >>> 21 === 0. Actual: ' + (4 >>> 21));
+}
+
+
+if (8 >>> 21 !== 0) {
+ $ERROR('#676: 8 >>> 21 === 0. Actual: ' + (8 >>> 21));
+}
+
+
+if (16 >>> 21 !== 0) {
+ $ERROR('#677: 16 >>> 21 === 0. Actual: ' + (16 >>> 21));
+}
+
+
+if (32 >>> 21 !== 0) {
+ $ERROR('#678: 32 >>> 21 === 0. Actual: ' + (32 >>> 21));
+}
+
+
+if (64 >>> 21 !== 0) {
+ $ERROR('#679: 64 >>> 21 === 0. Actual: ' + (64 >>> 21));
+}
+
+
+if (128 >>> 21 !== 0) {
+ $ERROR('#680: 128 >>> 21 === 0. Actual: ' + (128 >>> 21));
+}
+
+
+if (256 >>> 21 !== 0) {
+ $ERROR('#681: 256 >>> 21 === 0. Actual: ' + (256 >>> 21));
+}
+
+
+if (512 >>> 21 !== 0) {
+ $ERROR('#682: 512 >>> 21 === 0. Actual: ' + (512 >>> 21));
+}
+
+
+if (1024 >>> 21 !== 0) {
+ $ERROR('#683: 1024 >>> 21 === 0. Actual: ' + (1024 >>> 21));
+}
+
+
+if (2048 >>> 21 !== 0) {
+ $ERROR('#684: 2048 >>> 21 === 0. Actual: ' + (2048 >>> 21));
+}
+
+
+if (4096 >>> 21 !== 0) {
+ $ERROR('#685: 4096 >>> 21 === 0. Actual: ' + (4096 >>> 21));
+}
+
+
+if (8192 >>> 21 !== 0) {
+ $ERROR('#686: 8192 >>> 21 === 0. Actual: ' + (8192 >>> 21));
+}
+
+
+if (16384 >>> 21 !== 0) {
+ $ERROR('#687: 16384 >>> 21 === 0. Actual: ' + (16384 >>> 21));
+}
+
+
+if (32768 >>> 21 !== 0) {
+ $ERROR('#688: 32768 >>> 21 === 0. Actual: ' + (32768 >>> 21));
+}
+
+
+if (65536 >>> 21 !== 0) {
+ $ERROR('#689: 65536 >>> 21 === 0. Actual: ' + (65536 >>> 21));
+}
+
+
+if (131072 >>> 21 !== 0) {
+ $ERROR('#690: 131072 >>> 21 === 0. Actual: ' + (131072 >>> 21));
+}
+
+
+if (262144 >>> 21 !== 0) {
+ $ERROR('#691: 262144 >>> 21 === 0. Actual: ' + (262144 >>> 21));
+}
+
+
+if (524288 >>> 21 !== 0) {
+ $ERROR('#692: 524288 >>> 21 === 0. Actual: ' + (524288 >>> 21));
+}
+
+
+if (1048576 >>> 21 !== 0) {
+ $ERROR('#693: 1048576 >>> 21 === 0. Actual: ' + (1048576 >>> 21));
+}
+
+
+if (2097152 >>> 21 !== 1) {
+ $ERROR('#694: 2097152 >>> 21 === 1. Actual: ' + (2097152 >>> 21));
+}
+
+
+if (4194304 >>> 21 !== 2) {
+ $ERROR('#695: 4194304 >>> 21 === 2. Actual: ' + (4194304 >>> 21));
+}
+
+
+if (8388608 >>> 21 !== 4) {
+ $ERROR('#696: 8388608 >>> 21 === 4. Actual: ' + (8388608 >>> 21));
+}
+
+
+if (16777216 >>> 21 !== 8) {
+ $ERROR('#697: 16777216 >>> 21 === 8. Actual: ' + (16777216 >>> 21));
+}
+
+
+if (33554432 >>> 21 !== 16) {
+ $ERROR('#698: 33554432 >>> 21 === 16. Actual: ' + (33554432 >>> 21));
+}
+
+
+if (67108864 >>> 21 !== 32) {
+ $ERROR('#699: 67108864 >>> 21 === 32. Actual: ' + (67108864 >>> 21));
+}
+
+
+if (134217728 >>> 21 !== 64) {
+ $ERROR('#700: 134217728 >>> 21 === 64. Actual: ' + (134217728 >>> 21));
+}
+
+
+if (268435456 >>> 21 !== 128) {
+ $ERROR('#701: 268435456 >>> 21 === 128. Actual: ' + (268435456 >>> 21));
+}
+
+
+if (536870912 >>> 21 !== 256) {
+ $ERROR('#702: 536870912 >>> 21 === 256. Actual: ' + (536870912 >>> 21));
+}
+
+
+if (1073741824 >>> 21 !== 512) {
+ $ERROR('#703: 1073741824 >>> 21 === 512. Actual: ' + (1073741824 >>> 21));
+}
+
+
+if (2147483648 >>> 21 !== 1024) {
+ $ERROR('#704: 2147483648 >>> 21 === 1024. Actual: ' + (2147483648 >>> 21));
+}
+
+
+if (1 >>> 22 !== 0) {
+ $ERROR('#705: 1 >>> 22 === 0. Actual: ' + (1 >>> 22));
+}
+
+
+if (2 >>> 22 !== 0) {
+ $ERROR('#706: 2 >>> 22 === 0. Actual: ' + (2 >>> 22));
+}
+
+
+if (4 >>> 22 !== 0) {
+ $ERROR('#707: 4 >>> 22 === 0. Actual: ' + (4 >>> 22));
+}
+
+
+if (8 >>> 22 !== 0) {
+ $ERROR('#708: 8 >>> 22 === 0. Actual: ' + (8 >>> 22));
+}
+
+
+if (16 >>> 22 !== 0) {
+ $ERROR('#709: 16 >>> 22 === 0. Actual: ' + (16 >>> 22));
+}
+
+
+if (32 >>> 22 !== 0) {
+ $ERROR('#710: 32 >>> 22 === 0. Actual: ' + (32 >>> 22));
+}
+
+
+if (64 >>> 22 !== 0) {
+ $ERROR('#711: 64 >>> 22 === 0. Actual: ' + (64 >>> 22));
+}
+
+
+if (128 >>> 22 !== 0) {
+ $ERROR('#712: 128 >>> 22 === 0. Actual: ' + (128 >>> 22));
+}
+
+
+if (256 >>> 22 !== 0) {
+ $ERROR('#713: 256 >>> 22 === 0. Actual: ' + (256 >>> 22));
+}
+
+
+if (512 >>> 22 !== 0) {
+ $ERROR('#714: 512 >>> 22 === 0. Actual: ' + (512 >>> 22));
+}
+
+
+if (1024 >>> 22 !== 0) {
+ $ERROR('#715: 1024 >>> 22 === 0. Actual: ' + (1024 >>> 22));
+}
+
+
+if (2048 >>> 22 !== 0) {
+ $ERROR('#716: 2048 >>> 22 === 0. Actual: ' + (2048 >>> 22));
+}
+
+
+if (4096 >>> 22 !== 0) {
+ $ERROR('#717: 4096 >>> 22 === 0. Actual: ' + (4096 >>> 22));
+}
+
+
+if (8192 >>> 22 !== 0) {
+ $ERROR('#718: 8192 >>> 22 === 0. Actual: ' + (8192 >>> 22));
+}
+
+
+if (16384 >>> 22 !== 0) {
+ $ERROR('#719: 16384 >>> 22 === 0. Actual: ' + (16384 >>> 22));
+}
+
+
+if (32768 >>> 22 !== 0) {
+ $ERROR('#720: 32768 >>> 22 === 0. Actual: ' + (32768 >>> 22));
+}
+
+
+if (65536 >>> 22 !== 0) {
+ $ERROR('#721: 65536 >>> 22 === 0. Actual: ' + (65536 >>> 22));
+}
+
+
+if (131072 >>> 22 !== 0) {
+ $ERROR('#722: 131072 >>> 22 === 0. Actual: ' + (131072 >>> 22));
+}
+
+
+if (262144 >>> 22 !== 0) {
+ $ERROR('#723: 262144 >>> 22 === 0. Actual: ' + (262144 >>> 22));
+}
+
+
+if (524288 >>> 22 !== 0) {
+ $ERROR('#724: 524288 >>> 22 === 0. Actual: ' + (524288 >>> 22));
+}
+
+
+if (1048576 >>> 22 !== 0) {
+ $ERROR('#725: 1048576 >>> 22 === 0. Actual: ' + (1048576 >>> 22));
+}
+
+
+if (2097152 >>> 22 !== 0) {
+ $ERROR('#726: 2097152 >>> 22 === 0. Actual: ' + (2097152 >>> 22));
+}
+
+
+if (4194304 >>> 22 !== 1) {
+ $ERROR('#727: 4194304 >>> 22 === 1. Actual: ' + (4194304 >>> 22));
+}
+
+
+if (8388608 >>> 22 !== 2) {
+ $ERROR('#728: 8388608 >>> 22 === 2. Actual: ' + (8388608 >>> 22));
+}
+
+
+if (16777216 >>> 22 !== 4) {
+ $ERROR('#729: 16777216 >>> 22 === 4. Actual: ' + (16777216 >>> 22));
+}
+
+
+if (33554432 >>> 22 !== 8) {
+ $ERROR('#730: 33554432 >>> 22 === 8. Actual: ' + (33554432 >>> 22));
+}
+
+
+if (67108864 >>> 22 !== 16) {
+ $ERROR('#731: 67108864 >>> 22 === 16. Actual: ' + (67108864 >>> 22));
+}
+
+
+if (134217728 >>> 22 !== 32) {
+ $ERROR('#732: 134217728 >>> 22 === 32. Actual: ' + (134217728 >>> 22));
+}
+
+
+if (268435456 >>> 22 !== 64) {
+ $ERROR('#733: 268435456 >>> 22 === 64. Actual: ' + (268435456 >>> 22));
+}
+
+
+if (536870912 >>> 22 !== 128) {
+ $ERROR('#734: 536870912 >>> 22 === 128. Actual: ' + (536870912 >>> 22));
+}
+
+
+if (1073741824 >>> 22 !== 256) {
+ $ERROR('#735: 1073741824 >>> 22 === 256. Actual: ' + (1073741824 >>> 22));
+}
+
+
+if (2147483648 >>> 22 !== 512) {
+ $ERROR('#736: 2147483648 >>> 22 === 512. Actual: ' + (2147483648 >>> 22));
+}
+
+
+if (1 >>> 23 !== 0) {
+ $ERROR('#737: 1 >>> 23 === 0. Actual: ' + (1 >>> 23));
+}
+
+
+if (2 >>> 23 !== 0) {
+ $ERROR('#738: 2 >>> 23 === 0. Actual: ' + (2 >>> 23));
+}
+
+
+if (4 >>> 23 !== 0) {
+ $ERROR('#739: 4 >>> 23 === 0. Actual: ' + (4 >>> 23));
+}
+
+
+if (8 >>> 23 !== 0) {
+ $ERROR('#740: 8 >>> 23 === 0. Actual: ' + (8 >>> 23));
+}
+
+
+if (16 >>> 23 !== 0) {
+ $ERROR('#741: 16 >>> 23 === 0. Actual: ' + (16 >>> 23));
+}
+
+
+if (32 >>> 23 !== 0) {
+ $ERROR('#742: 32 >>> 23 === 0. Actual: ' + (32 >>> 23));
+}
+
+
+if (64 >>> 23 !== 0) {
+ $ERROR('#743: 64 >>> 23 === 0. Actual: ' + (64 >>> 23));
+}
+
+
+if (128 >>> 23 !== 0) {
+ $ERROR('#744: 128 >>> 23 === 0. Actual: ' + (128 >>> 23));
+}
+
+
+if (256 >>> 23 !== 0) {
+ $ERROR('#745: 256 >>> 23 === 0. Actual: ' + (256 >>> 23));
+}
+
+
+if (512 >>> 23 !== 0) {
+ $ERROR('#746: 512 >>> 23 === 0. Actual: ' + (512 >>> 23));
+}
+
+
+if (1024 >>> 23 !== 0) {
+ $ERROR('#747: 1024 >>> 23 === 0. Actual: ' + (1024 >>> 23));
+}
+
+
+if (2048 >>> 23 !== 0) {
+ $ERROR('#748: 2048 >>> 23 === 0. Actual: ' + (2048 >>> 23));
+}
+
+
+if (4096 >>> 23 !== 0) {
+ $ERROR('#749: 4096 >>> 23 === 0. Actual: ' + (4096 >>> 23));
+}
+
+
+if (8192 >>> 23 !== 0) {
+ $ERROR('#750: 8192 >>> 23 === 0. Actual: ' + (8192 >>> 23));
+}
+
+
+if (16384 >>> 23 !== 0) {
+ $ERROR('#751: 16384 >>> 23 === 0. Actual: ' + (16384 >>> 23));
+}
+
+
+if (32768 >>> 23 !== 0) {
+ $ERROR('#752: 32768 >>> 23 === 0. Actual: ' + (32768 >>> 23));
+}
+
+
+if (65536 >>> 23 !== 0) {
+ $ERROR('#753: 65536 >>> 23 === 0. Actual: ' + (65536 >>> 23));
+}
+
+
+if (131072 >>> 23 !== 0) {
+ $ERROR('#754: 131072 >>> 23 === 0. Actual: ' + (131072 >>> 23));
+}
+
+
+if (262144 >>> 23 !== 0) {
+ $ERROR('#755: 262144 >>> 23 === 0. Actual: ' + (262144 >>> 23));
+}
+
+
+if (524288 >>> 23 !== 0) {
+ $ERROR('#756: 524288 >>> 23 === 0. Actual: ' + (524288 >>> 23));
+}
+
+
+if (1048576 >>> 23 !== 0) {
+ $ERROR('#757: 1048576 >>> 23 === 0. Actual: ' + (1048576 >>> 23));
+}
+
+
+if (2097152 >>> 23 !== 0) {
+ $ERROR('#758: 2097152 >>> 23 === 0. Actual: ' + (2097152 >>> 23));
+}
+
+
+if (4194304 >>> 23 !== 0) {
+ $ERROR('#759: 4194304 >>> 23 === 0. Actual: ' + (4194304 >>> 23));
+}
+
+
+if (8388608 >>> 23 !== 1) {
+ $ERROR('#760: 8388608 >>> 23 === 1. Actual: ' + (8388608 >>> 23));
+}
+
+
+if (16777216 >>> 23 !== 2) {
+ $ERROR('#761: 16777216 >>> 23 === 2. Actual: ' + (16777216 >>> 23));
+}
+
+
+if (33554432 >>> 23 !== 4) {
+ $ERROR('#762: 33554432 >>> 23 === 4. Actual: ' + (33554432 >>> 23));
+}
+
+
+if (67108864 >>> 23 !== 8) {
+ $ERROR('#763: 67108864 >>> 23 === 8. Actual: ' + (67108864 >>> 23));
+}
+
+
+if (134217728 >>> 23 !== 16) {
+ $ERROR('#764: 134217728 >>> 23 === 16. Actual: ' + (134217728 >>> 23));
+}
+
+
+if (268435456 >>> 23 !== 32) {
+ $ERROR('#765: 268435456 >>> 23 === 32. Actual: ' + (268435456 >>> 23));
+}
+
+
+if (536870912 >>> 23 !== 64) {
+ $ERROR('#766: 536870912 >>> 23 === 64. Actual: ' + (536870912 >>> 23));
+}
+
+
+if (1073741824 >>> 23 !== 128) {
+ $ERROR('#767: 1073741824 >>> 23 === 128. Actual: ' + (1073741824 >>> 23));
+}
+
+
+if (2147483648 >>> 23 !== 256) {
+ $ERROR('#768: 2147483648 >>> 23 === 256. Actual: ' + (2147483648 >>> 23));
+}
+
+
+if (1 >>> 24 !== 0) {
+ $ERROR('#769: 1 >>> 24 === 0. Actual: ' + (1 >>> 24));
+}
+
+
+if (2 >>> 24 !== 0) {
+ $ERROR('#770: 2 >>> 24 === 0. Actual: ' + (2 >>> 24));
+}
+
+
+if (4 >>> 24 !== 0) {
+ $ERROR('#771: 4 >>> 24 === 0. Actual: ' + (4 >>> 24));
+}
+
+
+if (8 >>> 24 !== 0) {
+ $ERROR('#772: 8 >>> 24 === 0. Actual: ' + (8 >>> 24));
+}
+
+
+if (16 >>> 24 !== 0) {
+ $ERROR('#773: 16 >>> 24 === 0. Actual: ' + (16 >>> 24));
+}
+
+
+if (32 >>> 24 !== 0) {
+ $ERROR('#774: 32 >>> 24 === 0. Actual: ' + (32 >>> 24));
+}
+
+
+if (64 >>> 24 !== 0) {
+ $ERROR('#775: 64 >>> 24 === 0. Actual: ' + (64 >>> 24));
+}
+
+
+if (128 >>> 24 !== 0) {
+ $ERROR('#776: 128 >>> 24 === 0. Actual: ' + (128 >>> 24));
+}
+
+
+if (256 >>> 24 !== 0) {
+ $ERROR('#777: 256 >>> 24 === 0. Actual: ' + (256 >>> 24));
+}
+
+
+if (512 >>> 24 !== 0) {
+ $ERROR('#778: 512 >>> 24 === 0. Actual: ' + (512 >>> 24));
+}
+
+
+if (1024 >>> 24 !== 0) {
+ $ERROR('#779: 1024 >>> 24 === 0. Actual: ' + (1024 >>> 24));
+}
+
+
+if (2048 >>> 24 !== 0) {
+ $ERROR('#780: 2048 >>> 24 === 0. Actual: ' + (2048 >>> 24));
+}
+
+
+if (4096 >>> 24 !== 0) {
+ $ERROR('#781: 4096 >>> 24 === 0. Actual: ' + (4096 >>> 24));
+}
+
+
+if (8192 >>> 24 !== 0) {
+ $ERROR('#782: 8192 >>> 24 === 0. Actual: ' + (8192 >>> 24));
+}
+
+
+if (16384 >>> 24 !== 0) {
+ $ERROR('#783: 16384 >>> 24 === 0. Actual: ' + (16384 >>> 24));
+}
+
+
+if (32768 >>> 24 !== 0) {
+ $ERROR('#784: 32768 >>> 24 === 0. Actual: ' + (32768 >>> 24));
+}
+
+
+if (65536 >>> 24 !== 0) {
+ $ERROR('#785: 65536 >>> 24 === 0. Actual: ' + (65536 >>> 24));
+}
+
+
+if (131072 >>> 24 !== 0) {
+ $ERROR('#786: 131072 >>> 24 === 0. Actual: ' + (131072 >>> 24));
+}
+
+
+if (262144 >>> 24 !== 0) {
+ $ERROR('#787: 262144 >>> 24 === 0. Actual: ' + (262144 >>> 24));
+}
+
+
+if (524288 >>> 24 !== 0) {
+ $ERROR('#788: 524288 >>> 24 === 0. Actual: ' + (524288 >>> 24));
+}
+
+
+if (1048576 >>> 24 !== 0) {
+ $ERROR('#789: 1048576 >>> 24 === 0. Actual: ' + (1048576 >>> 24));
+}
+
+
+if (2097152 >>> 24 !== 0) {
+ $ERROR('#790: 2097152 >>> 24 === 0. Actual: ' + (2097152 >>> 24));
+}
+
+
+if (4194304 >>> 24 !== 0) {
+ $ERROR('#791: 4194304 >>> 24 === 0. Actual: ' + (4194304 >>> 24));
+}
+
+
+if (8388608 >>> 24 !== 0) {
+ $ERROR('#792: 8388608 >>> 24 === 0. Actual: ' + (8388608 >>> 24));
+}
+
+
+if (16777216 >>> 24 !== 1) {
+ $ERROR('#793: 16777216 >>> 24 === 1. Actual: ' + (16777216 >>> 24));
+}
+
+
+if (33554432 >>> 24 !== 2) {
+ $ERROR('#794: 33554432 >>> 24 === 2. Actual: ' + (33554432 >>> 24));
+}
+
+
+if (67108864 >>> 24 !== 4) {
+ $ERROR('#795: 67108864 >>> 24 === 4. Actual: ' + (67108864 >>> 24));
+}
+
+
+if (134217728 >>> 24 !== 8) {
+ $ERROR('#796: 134217728 >>> 24 === 8. Actual: ' + (134217728 >>> 24));
+}
+
+
+if (268435456 >>> 24 !== 16) {
+ $ERROR('#797: 268435456 >>> 24 === 16. Actual: ' + (268435456 >>> 24));
+}
+
+
+if (536870912 >>> 24 !== 32) {
+ $ERROR('#798: 536870912 >>> 24 === 32. Actual: ' + (536870912 >>> 24));
+}
+
+
+if (1073741824 >>> 24 !== 64) {
+ $ERROR('#799: 1073741824 >>> 24 === 64. Actual: ' + (1073741824 >>> 24));
+}
+
+
+if (2147483648 >>> 24 !== 128) {
+ $ERROR('#800: 2147483648 >>> 24 === 128. Actual: ' + (2147483648 >>> 24));
+}
+
+
+if (1 >>> 25 !== 0) {
+ $ERROR('#801: 1 >>> 25 === 0. Actual: ' + (1 >>> 25));
+}
+
+
+if (2 >>> 25 !== 0) {
+ $ERROR('#802: 2 >>> 25 === 0. Actual: ' + (2 >>> 25));
+}
+
+
+if (4 >>> 25 !== 0) {
+ $ERROR('#803: 4 >>> 25 === 0. Actual: ' + (4 >>> 25));
+}
+
+
+if (8 >>> 25 !== 0) {
+ $ERROR('#804: 8 >>> 25 === 0. Actual: ' + (8 >>> 25));
+}
+
+
+if (16 >>> 25 !== 0) {
+ $ERROR('#805: 16 >>> 25 === 0. Actual: ' + (16 >>> 25));
+}
+
+
+if (32 >>> 25 !== 0) {
+ $ERROR('#806: 32 >>> 25 === 0. Actual: ' + (32 >>> 25));
+}
+
+
+if (64 >>> 25 !== 0) {
+ $ERROR('#807: 64 >>> 25 === 0. Actual: ' + (64 >>> 25));
+}
+
+
+if (128 >>> 25 !== 0) {
+ $ERROR('#808: 128 >>> 25 === 0. Actual: ' + (128 >>> 25));
+}
+
+
+if (256 >>> 25 !== 0) {
+ $ERROR('#809: 256 >>> 25 === 0. Actual: ' + (256 >>> 25));
+}
+
+
+if (512 >>> 25 !== 0) {
+ $ERROR('#810: 512 >>> 25 === 0. Actual: ' + (512 >>> 25));
+}
+
+
+if (1024 >>> 25 !== 0) {
+ $ERROR('#811: 1024 >>> 25 === 0. Actual: ' + (1024 >>> 25));
+}
+
+
+if (2048 >>> 25 !== 0) {
+ $ERROR('#812: 2048 >>> 25 === 0. Actual: ' + (2048 >>> 25));
+}
+
+
+if (4096 >>> 25 !== 0) {
+ $ERROR('#813: 4096 >>> 25 === 0. Actual: ' + (4096 >>> 25));
+}
+
+
+if (8192 >>> 25 !== 0) {
+ $ERROR('#814: 8192 >>> 25 === 0. Actual: ' + (8192 >>> 25));
+}
+
+
+if (16384 >>> 25 !== 0) {
+ $ERROR('#815: 16384 >>> 25 === 0. Actual: ' + (16384 >>> 25));
+}
+
+
+if (32768 >>> 25 !== 0) {
+ $ERROR('#816: 32768 >>> 25 === 0. Actual: ' + (32768 >>> 25));
+}
+
+
+if (65536 >>> 25 !== 0) {
+ $ERROR('#817: 65536 >>> 25 === 0. Actual: ' + (65536 >>> 25));
+}
+
+
+if (131072 >>> 25 !== 0) {
+ $ERROR('#818: 131072 >>> 25 === 0. Actual: ' + (131072 >>> 25));
+}
+
+
+if (262144 >>> 25 !== 0) {
+ $ERROR('#819: 262144 >>> 25 === 0. Actual: ' + (262144 >>> 25));
+}
+
+
+if (524288 >>> 25 !== 0) {
+ $ERROR('#820: 524288 >>> 25 === 0. Actual: ' + (524288 >>> 25));
+}
+
+
+if (1048576 >>> 25 !== 0) {
+ $ERROR('#821: 1048576 >>> 25 === 0. Actual: ' + (1048576 >>> 25));
+}
+
+
+if (2097152 >>> 25 !== 0) {
+ $ERROR('#822: 2097152 >>> 25 === 0. Actual: ' + (2097152 >>> 25));
+}
+
+
+if (4194304 >>> 25 !== 0) {
+ $ERROR('#823: 4194304 >>> 25 === 0. Actual: ' + (4194304 >>> 25));
+}
+
+
+if (8388608 >>> 25 !== 0) {
+ $ERROR('#824: 8388608 >>> 25 === 0. Actual: ' + (8388608 >>> 25));
+}
+
+
+if (16777216 >>> 25 !== 0) {
+ $ERROR('#825: 16777216 >>> 25 === 0. Actual: ' + (16777216 >>> 25));
+}
+
+
+if (33554432 >>> 25 !== 1) {
+ $ERROR('#826: 33554432 >>> 25 === 1. Actual: ' + (33554432 >>> 25));
+}
+
+
+if (67108864 >>> 25 !== 2) {
+ $ERROR('#827: 67108864 >>> 25 === 2. Actual: ' + (67108864 >>> 25));
+}
+
+
+if (134217728 >>> 25 !== 4) {
+ $ERROR('#828: 134217728 >>> 25 === 4. Actual: ' + (134217728 >>> 25));
+}
+
+
+if (268435456 >>> 25 !== 8) {
+ $ERROR('#829: 268435456 >>> 25 === 8. Actual: ' + (268435456 >>> 25));
+}
+
+
+if (536870912 >>> 25 !== 16) {
+ $ERROR('#830: 536870912 >>> 25 === 16. Actual: ' + (536870912 >>> 25));
+}
+
+
+if (1073741824 >>> 25 !== 32) {
+ $ERROR('#831: 1073741824 >>> 25 === 32. Actual: ' + (1073741824 >>> 25));
+}
+
+
+if (2147483648 >>> 25 !== 64) {
+ $ERROR('#832: 2147483648 >>> 25 === 64. Actual: ' + (2147483648 >>> 25));
+}
+
+
+if (1 >>> 26 !== 0) {
+ $ERROR('#833: 1 >>> 26 === 0. Actual: ' + (1 >>> 26));
+}
+
+
+if (2 >>> 26 !== 0) {
+ $ERROR('#834: 2 >>> 26 === 0. Actual: ' + (2 >>> 26));
+}
+
+
+if (4 >>> 26 !== 0) {
+ $ERROR('#835: 4 >>> 26 === 0. Actual: ' + (4 >>> 26));
+}
+
+
+if (8 >>> 26 !== 0) {
+ $ERROR('#836: 8 >>> 26 === 0. Actual: ' + (8 >>> 26));
+}
+
+
+if (16 >>> 26 !== 0) {
+ $ERROR('#837: 16 >>> 26 === 0. Actual: ' + (16 >>> 26));
+}
+
+
+if (32 >>> 26 !== 0) {
+ $ERROR('#838: 32 >>> 26 === 0. Actual: ' + (32 >>> 26));
+}
+
+
+if (64 >>> 26 !== 0) {
+ $ERROR('#839: 64 >>> 26 === 0. Actual: ' + (64 >>> 26));
+}
+
+
+if (128 >>> 26 !== 0) {
+ $ERROR('#840: 128 >>> 26 === 0. Actual: ' + (128 >>> 26));
+}
+
+
+if (256 >>> 26 !== 0) {
+ $ERROR('#841: 256 >>> 26 === 0. Actual: ' + (256 >>> 26));
+}
+
+
+if (512 >>> 26 !== 0) {
+ $ERROR('#842: 512 >>> 26 === 0. Actual: ' + (512 >>> 26));
+}
+
+
+if (1024 >>> 26 !== 0) {
+ $ERROR('#843: 1024 >>> 26 === 0. Actual: ' + (1024 >>> 26));
+}
+
+
+if (2048 >>> 26 !== 0) {
+ $ERROR('#844: 2048 >>> 26 === 0. Actual: ' + (2048 >>> 26));
+}
+
+
+if (4096 >>> 26 !== 0) {
+ $ERROR('#845: 4096 >>> 26 === 0. Actual: ' + (4096 >>> 26));
+}
+
+
+if (8192 >>> 26 !== 0) {
+ $ERROR('#846: 8192 >>> 26 === 0. Actual: ' + (8192 >>> 26));
+}
+
+
+if (16384 >>> 26 !== 0) {
+ $ERROR('#847: 16384 >>> 26 === 0. Actual: ' + (16384 >>> 26));
+}
+
+
+if (32768 >>> 26 !== 0) {
+ $ERROR('#848: 32768 >>> 26 === 0. Actual: ' + (32768 >>> 26));
+}
+
+
+if (65536 >>> 26 !== 0) {
+ $ERROR('#849: 65536 >>> 26 === 0. Actual: ' + (65536 >>> 26));
+}
+
+
+if (131072 >>> 26 !== 0) {
+ $ERROR('#850: 131072 >>> 26 === 0. Actual: ' + (131072 >>> 26));
+}
+
+
+if (262144 >>> 26 !== 0) {
+ $ERROR('#851: 262144 >>> 26 === 0. Actual: ' + (262144 >>> 26));
+}
+
+
+if (524288 >>> 26 !== 0) {
+ $ERROR('#852: 524288 >>> 26 === 0. Actual: ' + (524288 >>> 26));
+}
+
+
+if (1048576 >>> 26 !== 0) {
+ $ERROR('#853: 1048576 >>> 26 === 0. Actual: ' + (1048576 >>> 26));
+}
+
+
+if (2097152 >>> 26 !== 0) {
+ $ERROR('#854: 2097152 >>> 26 === 0. Actual: ' + (2097152 >>> 26));
+}
+
+
+if (4194304 >>> 26 !== 0) {
+ $ERROR('#855: 4194304 >>> 26 === 0. Actual: ' + (4194304 >>> 26));
+}
+
+
+if (8388608 >>> 26 !== 0) {
+ $ERROR('#856: 8388608 >>> 26 === 0. Actual: ' + (8388608 >>> 26));
+}
+
+
+if (16777216 >>> 26 !== 0) {
+ $ERROR('#857: 16777216 >>> 26 === 0. Actual: ' + (16777216 >>> 26));
+}
+
+
+if (33554432 >>> 26 !== 0) {
+ $ERROR('#858: 33554432 >>> 26 === 0. Actual: ' + (33554432 >>> 26));
+}
+
+
+if (67108864 >>> 26 !== 1) {
+ $ERROR('#859: 67108864 >>> 26 === 1. Actual: ' + (67108864 >>> 26));
+}
+
+
+if (134217728 >>> 26 !== 2) {
+ $ERROR('#860: 134217728 >>> 26 === 2. Actual: ' + (134217728 >>> 26));
+}
+
+
+if (268435456 >>> 26 !== 4) {
+ $ERROR('#861: 268435456 >>> 26 === 4. Actual: ' + (268435456 >>> 26));
+}
+
+
+if (536870912 >>> 26 !== 8) {
+ $ERROR('#862: 536870912 >>> 26 === 8. Actual: ' + (536870912 >>> 26));
+}
+
+
+if (1073741824 >>> 26 !== 16) {
+ $ERROR('#863: 1073741824 >>> 26 === 16. Actual: ' + (1073741824 >>> 26));
+}
+
+
+if (2147483648 >>> 26 !== 32) {
+ $ERROR('#864: 2147483648 >>> 26 === 32. Actual: ' + (2147483648 >>> 26));
+}
+
+
+if (1 >>> 27 !== 0) {
+ $ERROR('#865: 1 >>> 27 === 0. Actual: ' + (1 >>> 27));
+}
+
+
+if (2 >>> 27 !== 0) {
+ $ERROR('#866: 2 >>> 27 === 0. Actual: ' + (2 >>> 27));
+}
+
+
+if (4 >>> 27 !== 0) {
+ $ERROR('#867: 4 >>> 27 === 0. Actual: ' + (4 >>> 27));
+}
+
+
+if (8 >>> 27 !== 0) {
+ $ERROR('#868: 8 >>> 27 === 0. Actual: ' + (8 >>> 27));
+}
+
+
+if (16 >>> 27 !== 0) {
+ $ERROR('#869: 16 >>> 27 === 0. Actual: ' + (16 >>> 27));
+}
+
+
+if (32 >>> 27 !== 0) {
+ $ERROR('#870: 32 >>> 27 === 0. Actual: ' + (32 >>> 27));
+}
+
+
+if (64 >>> 27 !== 0) {
+ $ERROR('#871: 64 >>> 27 === 0. Actual: ' + (64 >>> 27));
+}
+
+
+if (128 >>> 27 !== 0) {
+ $ERROR('#872: 128 >>> 27 === 0. Actual: ' + (128 >>> 27));
+}
+
+
+if (256 >>> 27 !== 0) {
+ $ERROR('#873: 256 >>> 27 === 0. Actual: ' + (256 >>> 27));
+}
+
+
+if (512 >>> 27 !== 0) {
+ $ERROR('#874: 512 >>> 27 === 0. Actual: ' + (512 >>> 27));
+}
+
+
+if (1024 >>> 27 !== 0) {
+ $ERROR('#875: 1024 >>> 27 === 0. Actual: ' + (1024 >>> 27));
+}
+
+
+if (2048 >>> 27 !== 0) {
+ $ERROR('#876: 2048 >>> 27 === 0. Actual: ' + (2048 >>> 27));
+}
+
+
+if (4096 >>> 27 !== 0) {
+ $ERROR('#877: 4096 >>> 27 === 0. Actual: ' + (4096 >>> 27));
+}
+
+
+if (8192 >>> 27 !== 0) {
+ $ERROR('#878: 8192 >>> 27 === 0. Actual: ' + (8192 >>> 27));
+}
+
+
+if (16384 >>> 27 !== 0) {
+ $ERROR('#879: 16384 >>> 27 === 0. Actual: ' + (16384 >>> 27));
+}
+
+
+if (32768 >>> 27 !== 0) {
+ $ERROR('#880: 32768 >>> 27 === 0. Actual: ' + (32768 >>> 27));
+}
+
+
+if (65536 >>> 27 !== 0) {
+ $ERROR('#881: 65536 >>> 27 === 0. Actual: ' + (65536 >>> 27));
+}
+
+
+if (131072 >>> 27 !== 0) {
+ $ERROR('#882: 131072 >>> 27 === 0. Actual: ' + (131072 >>> 27));
+}
+
+
+if (262144 >>> 27 !== 0) {
+ $ERROR('#883: 262144 >>> 27 === 0. Actual: ' + (262144 >>> 27));
+}
+
+
+if (524288 >>> 27 !== 0) {
+ $ERROR('#884: 524288 >>> 27 === 0. Actual: ' + (524288 >>> 27));
+}
+
+
+if (1048576 >>> 27 !== 0) {
+ $ERROR('#885: 1048576 >>> 27 === 0. Actual: ' + (1048576 >>> 27));
+}
+
+
+if (2097152 >>> 27 !== 0) {
+ $ERROR('#886: 2097152 >>> 27 === 0. Actual: ' + (2097152 >>> 27));
+}
+
+
+if (4194304 >>> 27 !== 0) {
+ $ERROR('#887: 4194304 >>> 27 === 0. Actual: ' + (4194304 >>> 27));
+}
+
+
+if (8388608 >>> 27 !== 0) {
+ $ERROR('#888: 8388608 >>> 27 === 0. Actual: ' + (8388608 >>> 27));
+}
+
+
+if (16777216 >>> 27 !== 0) {
+ $ERROR('#889: 16777216 >>> 27 === 0. Actual: ' + (16777216 >>> 27));
+}
+
+
+if (33554432 >>> 27 !== 0) {
+ $ERROR('#890: 33554432 >>> 27 === 0. Actual: ' + (33554432 >>> 27));
+}
+
+
+if (67108864 >>> 27 !== 0) {
+ $ERROR('#891: 67108864 >>> 27 === 0. Actual: ' + (67108864 >>> 27));
+}
+
+
+if (134217728 >>> 27 !== 1) {
+ $ERROR('#892: 134217728 >>> 27 === 1. Actual: ' + (134217728 >>> 27));
+}
+
+
+if (268435456 >>> 27 !== 2) {
+ $ERROR('#893: 268435456 >>> 27 === 2. Actual: ' + (268435456 >>> 27));
+}
+
+
+if (536870912 >>> 27 !== 4) {
+ $ERROR('#894: 536870912 >>> 27 === 4. Actual: ' + (536870912 >>> 27));
+}
+
+
+if (1073741824 >>> 27 !== 8) {
+ $ERROR('#895: 1073741824 >>> 27 === 8. Actual: ' + (1073741824 >>> 27));
+}
+
+
+if (2147483648 >>> 27 !== 16) {
+ $ERROR('#896: 2147483648 >>> 27 === 16. Actual: ' + (2147483648 >>> 27));
+}
+
+
+if (1 >>> 28 !== 0) {
+ $ERROR('#897: 1 >>> 28 === 0. Actual: ' + (1 >>> 28));
+}
+
+
+if (2 >>> 28 !== 0) {
+ $ERROR('#898: 2 >>> 28 === 0. Actual: ' + (2 >>> 28));
+}
+
+
+if (4 >>> 28 !== 0) {
+ $ERROR('#899: 4 >>> 28 === 0. Actual: ' + (4 >>> 28));
+}
+
+
+if (8 >>> 28 !== 0) {
+ $ERROR('#900: 8 >>> 28 === 0. Actual: ' + (8 >>> 28));
+}
+
+
+if (16 >>> 28 !== 0) {
+ $ERROR('#901: 16 >>> 28 === 0. Actual: ' + (16 >>> 28));
+}
+
+
+if (32 >>> 28 !== 0) {
+ $ERROR('#902: 32 >>> 28 === 0. Actual: ' + (32 >>> 28));
+}
+
+
+if (64 >>> 28 !== 0) {
+ $ERROR('#903: 64 >>> 28 === 0. Actual: ' + (64 >>> 28));
+}
+
+
+if (128 >>> 28 !== 0) {
+ $ERROR('#904: 128 >>> 28 === 0. Actual: ' + (128 >>> 28));
+}
+
+
+if (256 >>> 28 !== 0) {
+ $ERROR('#905: 256 >>> 28 === 0. Actual: ' + (256 >>> 28));
+}
+
+
+if (512 >>> 28 !== 0) {
+ $ERROR('#906: 512 >>> 28 === 0. Actual: ' + (512 >>> 28));
+}
+
+
+if (1024 >>> 28 !== 0) {
+ $ERROR('#907: 1024 >>> 28 === 0. Actual: ' + (1024 >>> 28));
+}
+
+
+if (2048 >>> 28 !== 0) {
+ $ERROR('#908: 2048 >>> 28 === 0. Actual: ' + (2048 >>> 28));
+}
+
+
+if (4096 >>> 28 !== 0) {
+ $ERROR('#909: 4096 >>> 28 === 0. Actual: ' + (4096 >>> 28));
+}
+
+
+if (8192 >>> 28 !== 0) {
+ $ERROR('#910: 8192 >>> 28 === 0. Actual: ' + (8192 >>> 28));
+}
+
+
+if (16384 >>> 28 !== 0) {
+ $ERROR('#911: 16384 >>> 28 === 0. Actual: ' + (16384 >>> 28));
+}
+
+
+if (32768 >>> 28 !== 0) {
+ $ERROR('#912: 32768 >>> 28 === 0. Actual: ' + (32768 >>> 28));
+}
+
+
+if (65536 >>> 28 !== 0) {
+ $ERROR('#913: 65536 >>> 28 === 0. Actual: ' + (65536 >>> 28));
+}
+
+
+if (131072 >>> 28 !== 0) {
+ $ERROR('#914: 131072 >>> 28 === 0. Actual: ' + (131072 >>> 28));
+}
+
+
+if (262144 >>> 28 !== 0) {
+ $ERROR('#915: 262144 >>> 28 === 0. Actual: ' + (262144 >>> 28));
+}
+
+
+if (524288 >>> 28 !== 0) {
+ $ERROR('#916: 524288 >>> 28 === 0. Actual: ' + (524288 >>> 28));
+}
+
+
+if (1048576 >>> 28 !== 0) {
+ $ERROR('#917: 1048576 >>> 28 === 0. Actual: ' + (1048576 >>> 28));
+}
+
+
+if (2097152 >>> 28 !== 0) {
+ $ERROR('#918: 2097152 >>> 28 === 0. Actual: ' + (2097152 >>> 28));
+}
+
+
+if (4194304 >>> 28 !== 0) {
+ $ERROR('#919: 4194304 >>> 28 === 0. Actual: ' + (4194304 >>> 28));
+}
+
+
+if (8388608 >>> 28 !== 0) {
+ $ERROR('#920: 8388608 >>> 28 === 0. Actual: ' + (8388608 >>> 28));
+}
+
+
+if (16777216 >>> 28 !== 0) {
+ $ERROR('#921: 16777216 >>> 28 === 0. Actual: ' + (16777216 >>> 28));
+}
+
+
+if (33554432 >>> 28 !== 0) {
+ $ERROR('#922: 33554432 >>> 28 === 0. Actual: ' + (33554432 >>> 28));
+}
+
+
+if (67108864 >>> 28 !== 0) {
+ $ERROR('#923: 67108864 >>> 28 === 0. Actual: ' + (67108864 >>> 28));
+}
+
+
+if (134217728 >>> 28 !== 0) {
+ $ERROR('#924: 134217728 >>> 28 === 0. Actual: ' + (134217728 >>> 28));
+}
+
+
+if (268435456 >>> 28 !== 1) {
+ $ERROR('#925: 268435456 >>> 28 === 1. Actual: ' + (268435456 >>> 28));
+}
+
+
+if (536870912 >>> 28 !== 2) {
+ $ERROR('#926: 536870912 >>> 28 === 2. Actual: ' + (536870912 >>> 28));
+}
+
+
+if (1073741824 >>> 28 !== 4) {
+ $ERROR('#927: 1073741824 >>> 28 === 4. Actual: ' + (1073741824 >>> 28));
+}
+
+
+if (2147483648 >>> 28 !== 8) {
+ $ERROR('#928: 2147483648 >>> 28 === 8. Actual: ' + (2147483648 >>> 28));
+}
+
+
+if (1 >>> 29 !== 0) {
+ $ERROR('#929: 1 >>> 29 === 0. Actual: ' + (1 >>> 29));
+}
+
+
+if (2 >>> 29 !== 0) {
+ $ERROR('#930: 2 >>> 29 === 0. Actual: ' + (2 >>> 29));
+}
+
+
+if (4 >>> 29 !== 0) {
+ $ERROR('#931: 4 >>> 29 === 0. Actual: ' + (4 >>> 29));
+}
+
+
+if (8 >>> 29 !== 0) {
+ $ERROR('#932: 8 >>> 29 === 0. Actual: ' + (8 >>> 29));
+}
+
+
+if (16 >>> 29 !== 0) {
+ $ERROR('#933: 16 >>> 29 === 0. Actual: ' + (16 >>> 29));
+}
+
+
+if (32 >>> 29 !== 0) {
+ $ERROR('#934: 32 >>> 29 === 0. Actual: ' + (32 >>> 29));
+}
+
+
+if (64 >>> 29 !== 0) {
+ $ERROR('#935: 64 >>> 29 === 0. Actual: ' + (64 >>> 29));
+}
+
+
+if (128 >>> 29 !== 0) {
+ $ERROR('#936: 128 >>> 29 === 0. Actual: ' + (128 >>> 29));
+}
+
+
+if (256 >>> 29 !== 0) {
+ $ERROR('#937: 256 >>> 29 === 0. Actual: ' + (256 >>> 29));
+}
+
+
+if (512 >>> 29 !== 0) {
+ $ERROR('#938: 512 >>> 29 === 0. Actual: ' + (512 >>> 29));
+}
+
+
+if (1024 >>> 29 !== 0) {
+ $ERROR('#939: 1024 >>> 29 === 0. Actual: ' + (1024 >>> 29));
+}
+
+
+if (2048 >>> 29 !== 0) {
+ $ERROR('#940: 2048 >>> 29 === 0. Actual: ' + (2048 >>> 29));
+}
+
+
+if (4096 >>> 29 !== 0) {
+ $ERROR('#941: 4096 >>> 29 === 0. Actual: ' + (4096 >>> 29));
+}
+
+
+if (8192 >>> 29 !== 0) {
+ $ERROR('#942: 8192 >>> 29 === 0. Actual: ' + (8192 >>> 29));
+}
+
+
+if (16384 >>> 29 !== 0) {
+ $ERROR('#943: 16384 >>> 29 === 0. Actual: ' + (16384 >>> 29));
+}
+
+
+if (32768 >>> 29 !== 0) {
+ $ERROR('#944: 32768 >>> 29 === 0. Actual: ' + (32768 >>> 29));
+}
+
+
+if (65536 >>> 29 !== 0) {
+ $ERROR('#945: 65536 >>> 29 === 0. Actual: ' + (65536 >>> 29));
+}
+
+
+if (131072 >>> 29 !== 0) {
+ $ERROR('#946: 131072 >>> 29 === 0. Actual: ' + (131072 >>> 29));
+}
+
+
+if (262144 >>> 29 !== 0) {
+ $ERROR('#947: 262144 >>> 29 === 0. Actual: ' + (262144 >>> 29));
+}
+
+
+if (524288 >>> 29 !== 0) {
+ $ERROR('#948: 524288 >>> 29 === 0. Actual: ' + (524288 >>> 29));
+}
+
+
+if (1048576 >>> 29 !== 0) {
+ $ERROR('#949: 1048576 >>> 29 === 0. Actual: ' + (1048576 >>> 29));
+}
+
+
+if (2097152 >>> 29 !== 0) {
+ $ERROR('#950: 2097152 >>> 29 === 0. Actual: ' + (2097152 >>> 29));
+}
+
+
+if (4194304 >>> 29 !== 0) {
+ $ERROR('#951: 4194304 >>> 29 === 0. Actual: ' + (4194304 >>> 29));
+}
+
+
+if (8388608 >>> 29 !== 0) {
+ $ERROR('#952: 8388608 >>> 29 === 0. Actual: ' + (8388608 >>> 29));
+}
+
+
+if (16777216 >>> 29 !== 0) {
+ $ERROR('#953: 16777216 >>> 29 === 0. Actual: ' + (16777216 >>> 29));
+}
+
+
+if (33554432 >>> 29 !== 0) {
+ $ERROR('#954: 33554432 >>> 29 === 0. Actual: ' + (33554432 >>> 29));
+}
+
+
+if (67108864 >>> 29 !== 0) {
+ $ERROR('#955: 67108864 >>> 29 === 0. Actual: ' + (67108864 >>> 29));
+}
+
+
+if (134217728 >>> 29 !== 0) {
+ $ERROR('#956: 134217728 >>> 29 === 0. Actual: ' + (134217728 >>> 29));
+}
+
+
+if (268435456 >>> 29 !== 0) {
+ $ERROR('#957: 268435456 >>> 29 === 0. Actual: ' + (268435456 >>> 29));
+}
+
+
+if (536870912 >>> 29 !== 1) {
+ $ERROR('#958: 536870912 >>> 29 === 1. Actual: ' + (536870912 >>> 29));
+}
+
+
+if (1073741824 >>> 29 !== 2) {
+ $ERROR('#959: 1073741824 >>> 29 === 2. Actual: ' + (1073741824 >>> 29));
+}
+
+
+if (2147483648 >>> 29 !== 4) {
+ $ERROR('#960: 2147483648 >>> 29 === 4. Actual: ' + (2147483648 >>> 29));
+}
+
+
+if (1 >>> 30 !== 0) {
+ $ERROR('#961: 1 >>> 30 === 0. Actual: ' + (1 >>> 30));
+}
+
+
+if (2 >>> 30 !== 0) {
+ $ERROR('#962: 2 >>> 30 === 0. Actual: ' + (2 >>> 30));
+}
+
+
+if (4 >>> 30 !== 0) {
+ $ERROR('#963: 4 >>> 30 === 0. Actual: ' + (4 >>> 30));
+}
+
+
+if (8 >>> 30 !== 0) {
+ $ERROR('#964: 8 >>> 30 === 0. Actual: ' + (8 >>> 30));
+}
+
+
+if (16 >>> 30 !== 0) {
+ $ERROR('#965: 16 >>> 30 === 0. Actual: ' + (16 >>> 30));
+}
+
+
+if (32 >>> 30 !== 0) {
+ $ERROR('#966: 32 >>> 30 === 0. Actual: ' + (32 >>> 30));
+}
+
+
+if (64 >>> 30 !== 0) {
+ $ERROR('#967: 64 >>> 30 === 0. Actual: ' + (64 >>> 30));
+}
+
+
+if (128 >>> 30 !== 0) {
+ $ERROR('#968: 128 >>> 30 === 0. Actual: ' + (128 >>> 30));
+}
+
+
+if (256 >>> 30 !== 0) {
+ $ERROR('#969: 256 >>> 30 === 0. Actual: ' + (256 >>> 30));
+}
+
+
+if (512 >>> 30 !== 0) {
+ $ERROR('#970: 512 >>> 30 === 0. Actual: ' + (512 >>> 30));
+}
+
+
+if (1024 >>> 30 !== 0) {
+ $ERROR('#971: 1024 >>> 30 === 0. Actual: ' + (1024 >>> 30));
+}
+
+
+if (2048 >>> 30 !== 0) {
+ $ERROR('#972: 2048 >>> 30 === 0. Actual: ' + (2048 >>> 30));
+}
+
+
+if (4096 >>> 30 !== 0) {
+ $ERROR('#973: 4096 >>> 30 === 0. Actual: ' + (4096 >>> 30));
+}
+
+
+if (8192 >>> 30 !== 0) {
+ $ERROR('#974: 8192 >>> 30 === 0. Actual: ' + (8192 >>> 30));
+}
+
+
+if (16384 >>> 30 !== 0) {
+ $ERROR('#975: 16384 >>> 30 === 0. Actual: ' + (16384 >>> 30));
+}
+
+
+if (32768 >>> 30 !== 0) {
+ $ERROR('#976: 32768 >>> 30 === 0. Actual: ' + (32768 >>> 30));
+}
+
+
+if (65536 >>> 30 !== 0) {
+ $ERROR('#977: 65536 >>> 30 === 0. Actual: ' + (65536 >>> 30));
+}
+
+
+if (131072 >>> 30 !== 0) {
+ $ERROR('#978: 131072 >>> 30 === 0. Actual: ' + (131072 >>> 30));
+}
+
+
+if (262144 >>> 30 !== 0) {
+ $ERROR('#979: 262144 >>> 30 === 0. Actual: ' + (262144 >>> 30));
+}
+
+
+if (524288 >>> 30 !== 0) {
+ $ERROR('#980: 524288 >>> 30 === 0. Actual: ' + (524288 >>> 30));
+}
+
+
+if (1048576 >>> 30 !== 0) {
+ $ERROR('#981: 1048576 >>> 30 === 0. Actual: ' + (1048576 >>> 30));
+}
+
+
+if (2097152 >>> 30 !== 0) {
+ $ERROR('#982: 2097152 >>> 30 === 0. Actual: ' + (2097152 >>> 30));
+}
+
+
+if (4194304 >>> 30 !== 0) {
+ $ERROR('#983: 4194304 >>> 30 === 0. Actual: ' + (4194304 >>> 30));
+}
+
+
+if (8388608 >>> 30 !== 0) {
+ $ERROR('#984: 8388608 >>> 30 === 0. Actual: ' + (8388608 >>> 30));
+}
+
+
+if (16777216 >>> 30 !== 0) {
+ $ERROR('#985: 16777216 >>> 30 === 0. Actual: ' + (16777216 >>> 30));
+}
+
+
+if (33554432 >>> 30 !== 0) {
+ $ERROR('#986: 33554432 >>> 30 === 0. Actual: ' + (33554432 >>> 30));
+}
+
+
+if (67108864 >>> 30 !== 0) {
+ $ERROR('#987: 67108864 >>> 30 === 0. Actual: ' + (67108864 >>> 30));
+}
+
+
+if (134217728 >>> 30 !== 0) {
+ $ERROR('#988: 134217728 >>> 30 === 0. Actual: ' + (134217728 >>> 30));
+}
+
+
+if (268435456 >>> 30 !== 0) {
+ $ERROR('#989: 268435456 >>> 30 === 0. Actual: ' + (268435456 >>> 30));
+}
+
+
+if (536870912 >>> 30 !== 0) {
+ $ERROR('#990: 536870912 >>> 30 === 0. Actual: ' + (536870912 >>> 30));
+}
+
+
+if (1073741824 >>> 30 !== 1) {
+ $ERROR('#991: 1073741824 >>> 30 === 1. Actual: ' + (1073741824 >>> 30));
+}
+
+
+if (2147483648 >>> 30 !== 2) {
+ $ERROR('#992: 2147483648 >>> 30 === 2. Actual: ' + (2147483648 >>> 30));
+}
+
+
+if (1 >>> 31 !== 0) {
+ $ERROR('#993: 1 >>> 31 === 0. Actual: ' + (1 >>> 31));
+}
+
+
+if (2 >>> 31 !== 0) {
+ $ERROR('#994: 2 >>> 31 === 0. Actual: ' + (2 >>> 31));
+}
+
+
+if (4 >>> 31 !== 0) {
+ $ERROR('#995: 4 >>> 31 === 0. Actual: ' + (4 >>> 31));
+}
+
+
+if (8 >>> 31 !== 0) {
+ $ERROR('#996: 8 >>> 31 === 0. Actual: ' + (8 >>> 31));
+}
+
+
+if (16 >>> 31 !== 0) {
+ $ERROR('#997: 16 >>> 31 === 0. Actual: ' + (16 >>> 31));
+}
+
+
+if (32 >>> 31 !== 0) {
+ $ERROR('#998: 32 >>> 31 === 0. Actual: ' + (32 >>> 31));
+}
+
+
+if (64 >>> 31 !== 0) {
+ $ERROR('#999: 64 >>> 31 === 0. Actual: ' + (64 >>> 31));
+}
+
+
+if (128 >>> 31 !== 0) {
+ $ERROR('#1000: 128 >>> 31 === 0. Actual: ' + (128 >>> 31));
+}
+
+
+if (256 >>> 31 !== 0) {
+ $ERROR('#1001: 256 >>> 31 === 0. Actual: ' + (256 >>> 31));
+}
+
+
+if (512 >>> 31 !== 0) {
+ $ERROR('#1002: 512 >>> 31 === 0. Actual: ' + (512 >>> 31));
+}
+
+
+if (1024 >>> 31 !== 0) {
+ $ERROR('#1003: 1024 >>> 31 === 0. Actual: ' + (1024 >>> 31));
+}
+
+
+if (2048 >>> 31 !== 0) {
+ $ERROR('#1004: 2048 >>> 31 === 0. Actual: ' + (2048 >>> 31));
+}
+
+
+if (4096 >>> 31 !== 0) {
+ $ERROR('#1005: 4096 >>> 31 === 0. Actual: ' + (4096 >>> 31));
+}
+
+
+if (8192 >>> 31 !== 0) {
+ $ERROR('#1006: 8192 >>> 31 === 0. Actual: ' + (8192 >>> 31));
+}
+
+
+if (16384 >>> 31 !== 0) {
+ $ERROR('#1007: 16384 >>> 31 === 0. Actual: ' + (16384 >>> 31));
+}
+
+
+if (32768 >>> 31 !== 0) {
+ $ERROR('#1008: 32768 >>> 31 === 0. Actual: ' + (32768 >>> 31));
+}
+
+
+if (65536 >>> 31 !== 0) {
+ $ERROR('#1009: 65536 >>> 31 === 0. Actual: ' + (65536 >>> 31));
+}
+
+
+if (131072 >>> 31 !== 0) {
+ $ERROR('#1010: 131072 >>> 31 === 0. Actual: ' + (131072 >>> 31));
+}
+
+
+if (262144 >>> 31 !== 0) {
+ $ERROR('#1011: 262144 >>> 31 === 0. Actual: ' + (262144 >>> 31));
+}
+
+
+if (524288 >>> 31 !== 0) {
+ $ERROR('#1012: 524288 >>> 31 === 0. Actual: ' + (524288 >>> 31));
+}
+
+
+if (1048576 >>> 31 !== 0) {
+ $ERROR('#1013: 1048576 >>> 31 === 0. Actual: ' + (1048576 >>> 31));
+}
+
+
+if (2097152 >>> 31 !== 0) {
+ $ERROR('#1014: 2097152 >>> 31 === 0. Actual: ' + (2097152 >>> 31));
+}
+
+
+if (4194304 >>> 31 !== 0) {
+ $ERROR('#1015: 4194304 >>> 31 === 0. Actual: ' + (4194304 >>> 31));
+}
+
+
+if (8388608 >>> 31 !== 0) {
+ $ERROR('#1016: 8388608 >>> 31 === 0. Actual: ' + (8388608 >>> 31));
+}
+
+
+if (16777216 >>> 31 !== 0) {
+ $ERROR('#1017: 16777216 >>> 31 === 0. Actual: ' + (16777216 >>> 31));
+}
+
+
+if (33554432 >>> 31 !== 0) {
+ $ERROR('#1018: 33554432 >>> 31 === 0. Actual: ' + (33554432 >>> 31));
+}
+
+
+if (67108864 >>> 31 !== 0) {
+ $ERROR('#1019: 67108864 >>> 31 === 0. Actual: ' + (67108864 >>> 31));
+}
+
+
+if (134217728 >>> 31 !== 0) {
+ $ERROR('#1020: 134217728 >>> 31 === 0. Actual: ' + (134217728 >>> 31));
+}
+
+
+if (268435456 >>> 31 !== 0) {
+ $ERROR('#1021: 268435456 >>> 31 === 0. Actual: ' + (268435456 >>> 31));
+}
+
+
+if (536870912 >>> 31 !== 0) {
+ $ERROR('#1022: 536870912 >>> 31 === 0. Actual: ' + (536870912 >>> 31));
+}
+
+
+if (1073741824 >>> 31 !== 0) {
+ $ERROR('#1023: 1073741824 >>> 31 === 0. Actual: ' + (1073741824 >>> 31));
+}
+
+
+if (2147483648 >>> 31 !== 1) {
+ $ERROR('#1024: 2147483648 >>> 31 === 1. Actual: ' + (2147483648 >>> 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T3.js
new file mode 100644
index 000000000..93d12d714
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T3.js
@@ -0,0 +1,2650 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A4_T3;
+ * @section: 11.7.3;
+ * @assertion: Check operator x >>> y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 0...15;
+ */
+
+//CHECK
+
+if (0 >>> 0 !== 0) {
+ $ERROR('#1: 0 >>> 0 === 0. Actual: ' + (0 >>> 0));
+}
+
+
+if (1 >>> 0 !== 1) {
+ $ERROR('#2: 1 >>> 0 === 1. Actual: ' + (1 >>> 0));
+}
+
+
+if (3 >>> 0 !== 3) {
+ $ERROR('#3: 3 >>> 0 === 3. Actual: ' + (3 >>> 0));
+}
+
+
+if (7 >>> 0 !== 7) {
+ $ERROR('#4: 7 >>> 0 === 7. Actual: ' + (7 >>> 0));
+}
+
+
+if (15 >>> 0 !== 15) {
+ $ERROR('#5: 15 >>> 0 === 15. Actual: ' + (15 >>> 0));
+}
+
+
+if (31 >>> 0 !== 31) {
+ $ERROR('#6: 31 >>> 0 === 31. Actual: ' + (31 >>> 0));
+}
+
+
+if (63 >>> 0 !== 63) {
+ $ERROR('#7: 63 >>> 0 === 63. Actual: ' + (63 >>> 0));
+}
+
+
+if (127 >>> 0 !== 127) {
+ $ERROR('#8: 127 >>> 0 === 127. Actual: ' + (127 >>> 0));
+}
+
+
+if (255 >>> 0 !== 255) {
+ $ERROR('#9: 255 >>> 0 === 255. Actual: ' + (255 >>> 0));
+}
+
+
+if (511 >>> 0 !== 511) {
+ $ERROR('#10: 511 >>> 0 === 511. Actual: ' + (511 >>> 0));
+}
+
+
+if (1023 >>> 0 !== 1023) {
+ $ERROR('#11: 1023 >>> 0 === 1023. Actual: ' + (1023 >>> 0));
+}
+
+
+if (2047 >>> 0 !== 2047) {
+ $ERROR('#12: 2047 >>> 0 === 2047. Actual: ' + (2047 >>> 0));
+}
+
+
+if (4095 >>> 0 !== 4095) {
+ $ERROR('#13: 4095 >>> 0 === 4095. Actual: ' + (4095 >>> 0));
+}
+
+
+if (8191 >>> 0 !== 8191) {
+ $ERROR('#14: 8191 >>> 0 === 8191. Actual: ' + (8191 >>> 0));
+}
+
+
+if (16383 >>> 0 !== 16383) {
+ $ERROR('#15: 16383 >>> 0 === 16383. Actual: ' + (16383 >>> 0));
+}
+
+
+if (32767 >>> 0 !== 32767) {
+ $ERROR('#16: 32767 >>> 0 === 32767. Actual: ' + (32767 >>> 0));
+}
+
+
+if (65535 >>> 0 !== 65535) {
+ $ERROR('#17: 65535 >>> 0 === 65535. Actual: ' + (65535 >>> 0));
+}
+
+
+if (131071 >>> 0 !== 131071) {
+ $ERROR('#18: 131071 >>> 0 === 131071. Actual: ' + (131071 >>> 0));
+}
+
+
+if (262143 >>> 0 !== 262143) {
+ $ERROR('#19: 262143 >>> 0 === 262143. Actual: ' + (262143 >>> 0));
+}
+
+
+if (524287 >>> 0 !== 524287) {
+ $ERROR('#20: 524287 >>> 0 === 524287. Actual: ' + (524287 >>> 0));
+}
+
+
+if (1048575 >>> 0 !== 1048575) {
+ $ERROR('#21: 1048575 >>> 0 === 1048575. Actual: ' + (1048575 >>> 0));
+}
+
+
+if (2097151 >>> 0 !== 2097151) {
+ $ERROR('#22: 2097151 >>> 0 === 2097151. Actual: ' + (2097151 >>> 0));
+}
+
+
+if (4194303 >>> 0 !== 4194303) {
+ $ERROR('#23: 4194303 >>> 0 === 4194303. Actual: ' + (4194303 >>> 0));
+}
+
+
+if (8388607 >>> 0 !== 8388607) {
+ $ERROR('#24: 8388607 >>> 0 === 8388607. Actual: ' + (8388607 >>> 0));
+}
+
+
+if (16777215 >>> 0 !== 16777215) {
+ $ERROR('#25: 16777215 >>> 0 === 16777215. Actual: ' + (16777215 >>> 0));
+}
+
+
+if (33554431 >>> 0 !== 33554431) {
+ $ERROR('#26: 33554431 >>> 0 === 33554431. Actual: ' + (33554431 >>> 0));
+}
+
+
+if (67108863 >>> 0 !== 67108863) {
+ $ERROR('#27: 67108863 >>> 0 === 67108863. Actual: ' + (67108863 >>> 0));
+}
+
+
+if (134217727 >>> 0 !== 134217727) {
+ $ERROR('#28: 134217727 >>> 0 === 134217727. Actual: ' + (134217727 >>> 0));
+}
+
+
+if (268435455 >>> 0 !== 268435455) {
+ $ERROR('#29: 268435455 >>> 0 === 268435455. Actual: ' + (268435455 >>> 0));
+}
+
+
+if (536870911 >>> 0 !== 536870911) {
+ $ERROR('#30: 536870911 >>> 0 === 536870911. Actual: ' + (536870911 >>> 0));
+}
+
+
+if (1073741823 >>> 0 !== 1073741823) {
+ $ERROR('#31: 1073741823 >>> 0 === 1073741823. Actual: ' + (1073741823 >>> 0));
+}
+
+
+if (2147483647 >>> 0 !== 2147483647) {
+ $ERROR('#32: 2147483647 >>> 0 === 2147483647. Actual: ' + (2147483647 >>> 0));
+}
+
+
+if (4294967295 >>> 0 !== 4294967295) {
+ $ERROR('#33: 4294967295 >>> 0 === 4294967295. Actual: ' + (4294967295 >>> 0));
+}
+
+
+if (0 >>> 1 !== 0) {
+ $ERROR('#34: 0 >>> 1 === 0. Actual: ' + (0 >>> 1));
+}
+
+
+if (1 >>> 1 !== 0) {
+ $ERROR('#35: 1 >>> 1 === 0. Actual: ' + (1 >>> 1));
+}
+
+
+if (3 >>> 1 !== 1) {
+ $ERROR('#36: 3 >>> 1 === 1. Actual: ' + (3 >>> 1));
+}
+
+
+if (7 >>> 1 !== 3) {
+ $ERROR('#37: 7 >>> 1 === 3. Actual: ' + (7 >>> 1));
+}
+
+
+if (15 >>> 1 !== 7) {
+ $ERROR('#38: 15 >>> 1 === 7. Actual: ' + (15 >>> 1));
+}
+
+
+if (31 >>> 1 !== 15) {
+ $ERROR('#39: 31 >>> 1 === 15. Actual: ' + (31 >>> 1));
+}
+
+
+if (63 >>> 1 !== 31) {
+ $ERROR('#40: 63 >>> 1 === 31. Actual: ' + (63 >>> 1));
+}
+
+
+if (127 >>> 1 !== 63) {
+ $ERROR('#41: 127 >>> 1 === 63. Actual: ' + (127 >>> 1));
+}
+
+
+if (255 >>> 1 !== 127) {
+ $ERROR('#42: 255 >>> 1 === 127. Actual: ' + (255 >>> 1));
+}
+
+
+if (511 >>> 1 !== 255) {
+ $ERROR('#43: 511 >>> 1 === 255. Actual: ' + (511 >>> 1));
+}
+
+
+if (1023 >>> 1 !== 511) {
+ $ERROR('#44: 1023 >>> 1 === 511. Actual: ' + (1023 >>> 1));
+}
+
+
+if (2047 >>> 1 !== 1023) {
+ $ERROR('#45: 2047 >>> 1 === 1023. Actual: ' + (2047 >>> 1));
+}
+
+
+if (4095 >>> 1 !== 2047) {
+ $ERROR('#46: 4095 >>> 1 === 2047. Actual: ' + (4095 >>> 1));
+}
+
+
+if (8191 >>> 1 !== 4095) {
+ $ERROR('#47: 8191 >>> 1 === 4095. Actual: ' + (8191 >>> 1));
+}
+
+
+if (16383 >>> 1 !== 8191) {
+ $ERROR('#48: 16383 >>> 1 === 8191. Actual: ' + (16383 >>> 1));
+}
+
+
+if (32767 >>> 1 !== 16383) {
+ $ERROR('#49: 32767 >>> 1 === 16383. Actual: ' + (32767 >>> 1));
+}
+
+
+if (65535 >>> 1 !== 32767) {
+ $ERROR('#50: 65535 >>> 1 === 32767. Actual: ' + (65535 >>> 1));
+}
+
+
+if (131071 >>> 1 !== 65535) {
+ $ERROR('#51: 131071 >>> 1 === 65535. Actual: ' + (131071 >>> 1));
+}
+
+
+if (262143 >>> 1 !== 131071) {
+ $ERROR('#52: 262143 >>> 1 === 131071. Actual: ' + (262143 >>> 1));
+}
+
+
+if (524287 >>> 1 !== 262143) {
+ $ERROR('#53: 524287 >>> 1 === 262143. Actual: ' + (524287 >>> 1));
+}
+
+
+if (1048575 >>> 1 !== 524287) {
+ $ERROR('#54: 1048575 >>> 1 === 524287. Actual: ' + (1048575 >>> 1));
+}
+
+
+if (2097151 >>> 1 !== 1048575) {
+ $ERROR('#55: 2097151 >>> 1 === 1048575. Actual: ' + (2097151 >>> 1));
+}
+
+
+if (4194303 >>> 1 !== 2097151) {
+ $ERROR('#56: 4194303 >>> 1 === 2097151. Actual: ' + (4194303 >>> 1));
+}
+
+
+if (8388607 >>> 1 !== 4194303) {
+ $ERROR('#57: 8388607 >>> 1 === 4194303. Actual: ' + (8388607 >>> 1));
+}
+
+
+if (16777215 >>> 1 !== 8388607) {
+ $ERROR('#58: 16777215 >>> 1 === 8388607. Actual: ' + (16777215 >>> 1));
+}
+
+
+if (33554431 >>> 1 !== 16777215) {
+ $ERROR('#59: 33554431 >>> 1 === 16777215. Actual: ' + (33554431 >>> 1));
+}
+
+
+if (67108863 >>> 1 !== 33554431) {
+ $ERROR('#60: 67108863 >>> 1 === 33554431. Actual: ' + (67108863 >>> 1));
+}
+
+
+if (134217727 >>> 1 !== 67108863) {
+ $ERROR('#61: 134217727 >>> 1 === 67108863. Actual: ' + (134217727 >>> 1));
+}
+
+
+if (268435455 >>> 1 !== 134217727) {
+ $ERROR('#62: 268435455 >>> 1 === 134217727. Actual: ' + (268435455 >>> 1));
+}
+
+
+if (536870911 >>> 1 !== 268435455) {
+ $ERROR('#63: 536870911 >>> 1 === 268435455. Actual: ' + (536870911 >>> 1));
+}
+
+
+if (1073741823 >>> 1 !== 536870911) {
+ $ERROR('#64: 1073741823 >>> 1 === 536870911. Actual: ' + (1073741823 >>> 1));
+}
+
+
+if (2147483647 >>> 1 !== 1073741823) {
+ $ERROR('#65: 2147483647 >>> 1 === 1073741823. Actual: ' + (2147483647 >>> 1));
+}
+
+
+if (4294967295 >>> 1 !== 2147483647) {
+ $ERROR('#66: 4294967295 >>> 1 === 2147483647. Actual: ' + (4294967295 >>> 1));
+}
+
+
+if (0 >>> 2 !== 0) {
+ $ERROR('#67: 0 >>> 2 === 0. Actual: ' + (0 >>> 2));
+}
+
+
+if (1 >>> 2 !== 0) {
+ $ERROR('#68: 1 >>> 2 === 0. Actual: ' + (1 >>> 2));
+}
+
+
+if (3 >>> 2 !== 0) {
+ $ERROR('#69: 3 >>> 2 === 0. Actual: ' + (3 >>> 2));
+}
+
+
+if (7 >>> 2 !== 1) {
+ $ERROR('#70: 7 >>> 2 === 1. Actual: ' + (7 >>> 2));
+}
+
+
+if (15 >>> 2 !== 3) {
+ $ERROR('#71: 15 >>> 2 === 3. Actual: ' + (15 >>> 2));
+}
+
+
+if (31 >>> 2 !== 7) {
+ $ERROR('#72: 31 >>> 2 === 7. Actual: ' + (31 >>> 2));
+}
+
+
+if (63 >>> 2 !== 15) {
+ $ERROR('#73: 63 >>> 2 === 15. Actual: ' + (63 >>> 2));
+}
+
+
+if (127 >>> 2 !== 31) {
+ $ERROR('#74: 127 >>> 2 === 31. Actual: ' + (127 >>> 2));
+}
+
+
+if (255 >>> 2 !== 63) {
+ $ERROR('#75: 255 >>> 2 === 63. Actual: ' + (255 >>> 2));
+}
+
+
+if (511 >>> 2 !== 127) {
+ $ERROR('#76: 511 >>> 2 === 127. Actual: ' + (511 >>> 2));
+}
+
+
+if (1023 >>> 2 !== 255) {
+ $ERROR('#77: 1023 >>> 2 === 255. Actual: ' + (1023 >>> 2));
+}
+
+
+if (2047 >>> 2 !== 511) {
+ $ERROR('#78: 2047 >>> 2 === 511. Actual: ' + (2047 >>> 2));
+}
+
+
+if (4095 >>> 2 !== 1023) {
+ $ERROR('#79: 4095 >>> 2 === 1023. Actual: ' + (4095 >>> 2));
+}
+
+
+if (8191 >>> 2 !== 2047) {
+ $ERROR('#80: 8191 >>> 2 === 2047. Actual: ' + (8191 >>> 2));
+}
+
+
+if (16383 >>> 2 !== 4095) {
+ $ERROR('#81: 16383 >>> 2 === 4095. Actual: ' + (16383 >>> 2));
+}
+
+
+if (32767 >>> 2 !== 8191) {
+ $ERROR('#82: 32767 >>> 2 === 8191. Actual: ' + (32767 >>> 2));
+}
+
+
+if (65535 >>> 2 !== 16383) {
+ $ERROR('#83: 65535 >>> 2 === 16383. Actual: ' + (65535 >>> 2));
+}
+
+
+if (131071 >>> 2 !== 32767) {
+ $ERROR('#84: 131071 >>> 2 === 32767. Actual: ' + (131071 >>> 2));
+}
+
+
+if (262143 >>> 2 !== 65535) {
+ $ERROR('#85: 262143 >>> 2 === 65535. Actual: ' + (262143 >>> 2));
+}
+
+
+if (524287 >>> 2 !== 131071) {
+ $ERROR('#86: 524287 >>> 2 === 131071. Actual: ' + (524287 >>> 2));
+}
+
+
+if (1048575 >>> 2 !== 262143) {
+ $ERROR('#87: 1048575 >>> 2 === 262143. Actual: ' + (1048575 >>> 2));
+}
+
+
+if (2097151 >>> 2 !== 524287) {
+ $ERROR('#88: 2097151 >>> 2 === 524287. Actual: ' + (2097151 >>> 2));
+}
+
+
+if (4194303 >>> 2 !== 1048575) {
+ $ERROR('#89: 4194303 >>> 2 === 1048575. Actual: ' + (4194303 >>> 2));
+}
+
+
+if (8388607 >>> 2 !== 2097151) {
+ $ERROR('#90: 8388607 >>> 2 === 2097151. Actual: ' + (8388607 >>> 2));
+}
+
+
+if (16777215 >>> 2 !== 4194303) {
+ $ERROR('#91: 16777215 >>> 2 === 4194303. Actual: ' + (16777215 >>> 2));
+}
+
+
+if (33554431 >>> 2 !== 8388607) {
+ $ERROR('#92: 33554431 >>> 2 === 8388607. Actual: ' + (33554431 >>> 2));
+}
+
+
+if (67108863 >>> 2 !== 16777215) {
+ $ERROR('#93: 67108863 >>> 2 === 16777215. Actual: ' + (67108863 >>> 2));
+}
+
+
+if (134217727 >>> 2 !== 33554431) {
+ $ERROR('#94: 134217727 >>> 2 === 33554431. Actual: ' + (134217727 >>> 2));
+}
+
+
+if (268435455 >>> 2 !== 67108863) {
+ $ERROR('#95: 268435455 >>> 2 === 67108863. Actual: ' + (268435455 >>> 2));
+}
+
+
+if (536870911 >>> 2 !== 134217727) {
+ $ERROR('#96: 536870911 >>> 2 === 134217727. Actual: ' + (536870911 >>> 2));
+}
+
+
+if (1073741823 >>> 2 !== 268435455) {
+ $ERROR('#97: 1073741823 >>> 2 === 268435455. Actual: ' + (1073741823 >>> 2));
+}
+
+
+if (2147483647 >>> 2 !== 536870911) {
+ $ERROR('#98: 2147483647 >>> 2 === 536870911. Actual: ' + (2147483647 >>> 2));
+}
+
+
+if (4294967295 >>> 2 !== 1073741823) {
+ $ERROR('#99: 4294967295 >>> 2 === 1073741823. Actual: ' + (4294967295 >>> 2));
+}
+
+
+if (0 >>> 3 !== 0) {
+ $ERROR('#100: 0 >>> 3 === 0. Actual: ' + (0 >>> 3));
+}
+
+
+if (1 >>> 3 !== 0) {
+ $ERROR('#101: 1 >>> 3 === 0. Actual: ' + (1 >>> 3));
+}
+
+
+if (3 >>> 3 !== 0) {
+ $ERROR('#102: 3 >>> 3 === 0. Actual: ' + (3 >>> 3));
+}
+
+
+if (7 >>> 3 !== 0) {
+ $ERROR('#103: 7 >>> 3 === 0. Actual: ' + (7 >>> 3));
+}
+
+
+if (15 >>> 3 !== 1) {
+ $ERROR('#104: 15 >>> 3 === 1. Actual: ' + (15 >>> 3));
+}
+
+
+if (31 >>> 3 !== 3) {
+ $ERROR('#105: 31 >>> 3 === 3. Actual: ' + (31 >>> 3));
+}
+
+
+if (63 >>> 3 !== 7) {
+ $ERROR('#106: 63 >>> 3 === 7. Actual: ' + (63 >>> 3));
+}
+
+
+if (127 >>> 3 !== 15) {
+ $ERROR('#107: 127 >>> 3 === 15. Actual: ' + (127 >>> 3));
+}
+
+
+if (255 >>> 3 !== 31) {
+ $ERROR('#108: 255 >>> 3 === 31. Actual: ' + (255 >>> 3));
+}
+
+
+if (511 >>> 3 !== 63) {
+ $ERROR('#109: 511 >>> 3 === 63. Actual: ' + (511 >>> 3));
+}
+
+
+if (1023 >>> 3 !== 127) {
+ $ERROR('#110: 1023 >>> 3 === 127. Actual: ' + (1023 >>> 3));
+}
+
+
+if (2047 >>> 3 !== 255) {
+ $ERROR('#111: 2047 >>> 3 === 255. Actual: ' + (2047 >>> 3));
+}
+
+
+if (4095 >>> 3 !== 511) {
+ $ERROR('#112: 4095 >>> 3 === 511. Actual: ' + (4095 >>> 3));
+}
+
+
+if (8191 >>> 3 !== 1023) {
+ $ERROR('#113: 8191 >>> 3 === 1023. Actual: ' + (8191 >>> 3));
+}
+
+
+if (16383 >>> 3 !== 2047) {
+ $ERROR('#114: 16383 >>> 3 === 2047. Actual: ' + (16383 >>> 3));
+}
+
+
+if (32767 >>> 3 !== 4095) {
+ $ERROR('#115: 32767 >>> 3 === 4095. Actual: ' + (32767 >>> 3));
+}
+
+
+if (65535 >>> 3 !== 8191) {
+ $ERROR('#116: 65535 >>> 3 === 8191. Actual: ' + (65535 >>> 3));
+}
+
+
+if (131071 >>> 3 !== 16383) {
+ $ERROR('#117: 131071 >>> 3 === 16383. Actual: ' + (131071 >>> 3));
+}
+
+
+if (262143 >>> 3 !== 32767) {
+ $ERROR('#118: 262143 >>> 3 === 32767. Actual: ' + (262143 >>> 3));
+}
+
+
+if (524287 >>> 3 !== 65535) {
+ $ERROR('#119: 524287 >>> 3 === 65535. Actual: ' + (524287 >>> 3));
+}
+
+
+if (1048575 >>> 3 !== 131071) {
+ $ERROR('#120: 1048575 >>> 3 === 131071. Actual: ' + (1048575 >>> 3));
+}
+
+
+if (2097151 >>> 3 !== 262143) {
+ $ERROR('#121: 2097151 >>> 3 === 262143. Actual: ' + (2097151 >>> 3));
+}
+
+
+if (4194303 >>> 3 !== 524287) {
+ $ERROR('#122: 4194303 >>> 3 === 524287. Actual: ' + (4194303 >>> 3));
+}
+
+
+if (8388607 >>> 3 !== 1048575) {
+ $ERROR('#123: 8388607 >>> 3 === 1048575. Actual: ' + (8388607 >>> 3));
+}
+
+
+if (16777215 >>> 3 !== 2097151) {
+ $ERROR('#124: 16777215 >>> 3 === 2097151. Actual: ' + (16777215 >>> 3));
+}
+
+
+if (33554431 >>> 3 !== 4194303) {
+ $ERROR('#125: 33554431 >>> 3 === 4194303. Actual: ' + (33554431 >>> 3));
+}
+
+
+if (67108863 >>> 3 !== 8388607) {
+ $ERROR('#126: 67108863 >>> 3 === 8388607. Actual: ' + (67108863 >>> 3));
+}
+
+
+if (134217727 >>> 3 !== 16777215) {
+ $ERROR('#127: 134217727 >>> 3 === 16777215. Actual: ' + (134217727 >>> 3));
+}
+
+
+if (268435455 >>> 3 !== 33554431) {
+ $ERROR('#128: 268435455 >>> 3 === 33554431. Actual: ' + (268435455 >>> 3));
+}
+
+
+if (536870911 >>> 3 !== 67108863) {
+ $ERROR('#129: 536870911 >>> 3 === 67108863. Actual: ' + (536870911 >>> 3));
+}
+
+
+if (1073741823 >>> 3 !== 134217727) {
+ $ERROR('#130: 1073741823 >>> 3 === 134217727. Actual: ' + (1073741823 >>> 3));
+}
+
+
+if (2147483647 >>> 3 !== 268435455) {
+ $ERROR('#131: 2147483647 >>> 3 === 268435455. Actual: ' + (2147483647 >>> 3));
+}
+
+
+if (4294967295 >>> 3 !== 536870911) {
+ $ERROR('#132: 4294967295 >>> 3 === 536870911. Actual: ' + (4294967295 >>> 3));
+}
+
+
+if (0 >>> 4 !== 0) {
+ $ERROR('#133: 0 >>> 4 === 0. Actual: ' + (0 >>> 4));
+}
+
+
+if (1 >>> 4 !== 0) {
+ $ERROR('#134: 1 >>> 4 === 0. Actual: ' + (1 >>> 4));
+}
+
+
+if (3 >>> 4 !== 0) {
+ $ERROR('#135: 3 >>> 4 === 0. Actual: ' + (3 >>> 4));
+}
+
+
+if (7 >>> 4 !== 0) {
+ $ERROR('#136: 7 >>> 4 === 0. Actual: ' + (7 >>> 4));
+}
+
+
+if (15 >>> 4 !== 0) {
+ $ERROR('#137: 15 >>> 4 === 0. Actual: ' + (15 >>> 4));
+}
+
+
+if (31 >>> 4 !== 1) {
+ $ERROR('#138: 31 >>> 4 === 1. Actual: ' + (31 >>> 4));
+}
+
+
+if (63 >>> 4 !== 3) {
+ $ERROR('#139: 63 >>> 4 === 3. Actual: ' + (63 >>> 4));
+}
+
+
+if (127 >>> 4 !== 7) {
+ $ERROR('#140: 127 >>> 4 === 7. Actual: ' + (127 >>> 4));
+}
+
+
+if (255 >>> 4 !== 15) {
+ $ERROR('#141: 255 >>> 4 === 15. Actual: ' + (255 >>> 4));
+}
+
+
+if (511 >>> 4 !== 31) {
+ $ERROR('#142: 511 >>> 4 === 31. Actual: ' + (511 >>> 4));
+}
+
+
+if (1023 >>> 4 !== 63) {
+ $ERROR('#143: 1023 >>> 4 === 63. Actual: ' + (1023 >>> 4));
+}
+
+
+if (2047 >>> 4 !== 127) {
+ $ERROR('#144: 2047 >>> 4 === 127. Actual: ' + (2047 >>> 4));
+}
+
+
+if (4095 >>> 4 !== 255) {
+ $ERROR('#145: 4095 >>> 4 === 255. Actual: ' + (4095 >>> 4));
+}
+
+
+if (8191 >>> 4 !== 511) {
+ $ERROR('#146: 8191 >>> 4 === 511. Actual: ' + (8191 >>> 4));
+}
+
+
+if (16383 >>> 4 !== 1023) {
+ $ERROR('#147: 16383 >>> 4 === 1023. Actual: ' + (16383 >>> 4));
+}
+
+
+if (32767 >>> 4 !== 2047) {
+ $ERROR('#148: 32767 >>> 4 === 2047. Actual: ' + (32767 >>> 4));
+}
+
+
+if (65535 >>> 4 !== 4095) {
+ $ERROR('#149: 65535 >>> 4 === 4095. Actual: ' + (65535 >>> 4));
+}
+
+
+if (131071 >>> 4 !== 8191) {
+ $ERROR('#150: 131071 >>> 4 === 8191. Actual: ' + (131071 >>> 4));
+}
+
+
+if (262143 >>> 4 !== 16383) {
+ $ERROR('#151: 262143 >>> 4 === 16383. Actual: ' + (262143 >>> 4));
+}
+
+
+if (524287 >>> 4 !== 32767) {
+ $ERROR('#152: 524287 >>> 4 === 32767. Actual: ' + (524287 >>> 4));
+}
+
+
+if (1048575 >>> 4 !== 65535) {
+ $ERROR('#153: 1048575 >>> 4 === 65535. Actual: ' + (1048575 >>> 4));
+}
+
+
+if (2097151 >>> 4 !== 131071) {
+ $ERROR('#154: 2097151 >>> 4 === 131071. Actual: ' + (2097151 >>> 4));
+}
+
+
+if (4194303 >>> 4 !== 262143) {
+ $ERROR('#155: 4194303 >>> 4 === 262143. Actual: ' + (4194303 >>> 4));
+}
+
+
+if (8388607 >>> 4 !== 524287) {
+ $ERROR('#156: 8388607 >>> 4 === 524287. Actual: ' + (8388607 >>> 4));
+}
+
+
+if (16777215 >>> 4 !== 1048575) {
+ $ERROR('#157: 16777215 >>> 4 === 1048575. Actual: ' + (16777215 >>> 4));
+}
+
+
+if (33554431 >>> 4 !== 2097151) {
+ $ERROR('#158: 33554431 >>> 4 === 2097151. Actual: ' + (33554431 >>> 4));
+}
+
+
+if (67108863 >>> 4 !== 4194303) {
+ $ERROR('#159: 67108863 >>> 4 === 4194303. Actual: ' + (67108863 >>> 4));
+}
+
+
+if (134217727 >>> 4 !== 8388607) {
+ $ERROR('#160: 134217727 >>> 4 === 8388607. Actual: ' + (134217727 >>> 4));
+}
+
+
+if (268435455 >>> 4 !== 16777215) {
+ $ERROR('#161: 268435455 >>> 4 === 16777215. Actual: ' + (268435455 >>> 4));
+}
+
+
+if (536870911 >>> 4 !== 33554431) {
+ $ERROR('#162: 536870911 >>> 4 === 33554431. Actual: ' + (536870911 >>> 4));
+}
+
+
+if (1073741823 >>> 4 !== 67108863) {
+ $ERROR('#163: 1073741823 >>> 4 === 67108863. Actual: ' + (1073741823 >>> 4));
+}
+
+
+if (2147483647 >>> 4 !== 134217727) {
+ $ERROR('#164: 2147483647 >>> 4 === 134217727. Actual: ' + (2147483647 >>> 4));
+}
+
+
+if (4294967295 >>> 4 !== 268435455) {
+ $ERROR('#165: 4294967295 >>> 4 === 268435455. Actual: ' + (4294967295 >>> 4));
+}
+
+
+if (0 >>> 5 !== 0) {
+ $ERROR('#166: 0 >>> 5 === 0. Actual: ' + (0 >>> 5));
+}
+
+
+if (1 >>> 5 !== 0) {
+ $ERROR('#167: 1 >>> 5 === 0. Actual: ' + (1 >>> 5));
+}
+
+
+if (3 >>> 5 !== 0) {
+ $ERROR('#168: 3 >>> 5 === 0. Actual: ' + (3 >>> 5));
+}
+
+
+if (7 >>> 5 !== 0) {
+ $ERROR('#169: 7 >>> 5 === 0. Actual: ' + (7 >>> 5));
+}
+
+
+if (15 >>> 5 !== 0) {
+ $ERROR('#170: 15 >>> 5 === 0. Actual: ' + (15 >>> 5));
+}
+
+
+if (31 >>> 5 !== 0) {
+ $ERROR('#171: 31 >>> 5 === 0. Actual: ' + (31 >>> 5));
+}
+
+
+if (63 >>> 5 !== 1) {
+ $ERROR('#172: 63 >>> 5 === 1. Actual: ' + (63 >>> 5));
+}
+
+
+if (127 >>> 5 !== 3) {
+ $ERROR('#173: 127 >>> 5 === 3. Actual: ' + (127 >>> 5));
+}
+
+
+if (255 >>> 5 !== 7) {
+ $ERROR('#174: 255 >>> 5 === 7. Actual: ' + (255 >>> 5));
+}
+
+
+if (511 >>> 5 !== 15) {
+ $ERROR('#175: 511 >>> 5 === 15. Actual: ' + (511 >>> 5));
+}
+
+
+if (1023 >>> 5 !== 31) {
+ $ERROR('#176: 1023 >>> 5 === 31. Actual: ' + (1023 >>> 5));
+}
+
+
+if (2047 >>> 5 !== 63) {
+ $ERROR('#177: 2047 >>> 5 === 63. Actual: ' + (2047 >>> 5));
+}
+
+
+if (4095 >>> 5 !== 127) {
+ $ERROR('#178: 4095 >>> 5 === 127. Actual: ' + (4095 >>> 5));
+}
+
+
+if (8191 >>> 5 !== 255) {
+ $ERROR('#179: 8191 >>> 5 === 255. Actual: ' + (8191 >>> 5));
+}
+
+
+if (16383 >>> 5 !== 511) {
+ $ERROR('#180: 16383 >>> 5 === 511. Actual: ' + (16383 >>> 5));
+}
+
+
+if (32767 >>> 5 !== 1023) {
+ $ERROR('#181: 32767 >>> 5 === 1023. Actual: ' + (32767 >>> 5));
+}
+
+
+if (65535 >>> 5 !== 2047) {
+ $ERROR('#182: 65535 >>> 5 === 2047. Actual: ' + (65535 >>> 5));
+}
+
+
+if (131071 >>> 5 !== 4095) {
+ $ERROR('#183: 131071 >>> 5 === 4095. Actual: ' + (131071 >>> 5));
+}
+
+
+if (262143 >>> 5 !== 8191) {
+ $ERROR('#184: 262143 >>> 5 === 8191. Actual: ' + (262143 >>> 5));
+}
+
+
+if (524287 >>> 5 !== 16383) {
+ $ERROR('#185: 524287 >>> 5 === 16383. Actual: ' + (524287 >>> 5));
+}
+
+
+if (1048575 >>> 5 !== 32767) {
+ $ERROR('#186: 1048575 >>> 5 === 32767. Actual: ' + (1048575 >>> 5));
+}
+
+
+if (2097151 >>> 5 !== 65535) {
+ $ERROR('#187: 2097151 >>> 5 === 65535. Actual: ' + (2097151 >>> 5));
+}
+
+
+if (4194303 >>> 5 !== 131071) {
+ $ERROR('#188: 4194303 >>> 5 === 131071. Actual: ' + (4194303 >>> 5));
+}
+
+
+if (8388607 >>> 5 !== 262143) {
+ $ERROR('#189: 8388607 >>> 5 === 262143. Actual: ' + (8388607 >>> 5));
+}
+
+
+if (16777215 >>> 5 !== 524287) {
+ $ERROR('#190: 16777215 >>> 5 === 524287. Actual: ' + (16777215 >>> 5));
+}
+
+
+if (33554431 >>> 5 !== 1048575) {
+ $ERROR('#191: 33554431 >>> 5 === 1048575. Actual: ' + (33554431 >>> 5));
+}
+
+
+if (67108863 >>> 5 !== 2097151) {
+ $ERROR('#192: 67108863 >>> 5 === 2097151. Actual: ' + (67108863 >>> 5));
+}
+
+
+if (134217727 >>> 5 !== 4194303) {
+ $ERROR('#193: 134217727 >>> 5 === 4194303. Actual: ' + (134217727 >>> 5));
+}
+
+
+if (268435455 >>> 5 !== 8388607) {
+ $ERROR('#194: 268435455 >>> 5 === 8388607. Actual: ' + (268435455 >>> 5));
+}
+
+
+if (536870911 >>> 5 !== 16777215) {
+ $ERROR('#195: 536870911 >>> 5 === 16777215. Actual: ' + (536870911 >>> 5));
+}
+
+
+if (1073741823 >>> 5 !== 33554431) {
+ $ERROR('#196: 1073741823 >>> 5 === 33554431. Actual: ' + (1073741823 >>> 5));
+}
+
+
+if (2147483647 >>> 5 !== 67108863) {
+ $ERROR('#197: 2147483647 >>> 5 === 67108863. Actual: ' + (2147483647 >>> 5));
+}
+
+
+if (4294967295 >>> 5 !== 134217727) {
+ $ERROR('#198: 4294967295 >>> 5 === 134217727. Actual: ' + (4294967295 >>> 5));
+}
+
+
+if (0 >>> 6 !== 0) {
+ $ERROR('#199: 0 >>> 6 === 0. Actual: ' + (0 >>> 6));
+}
+
+
+if (1 >>> 6 !== 0) {
+ $ERROR('#200: 1 >>> 6 === 0. Actual: ' + (1 >>> 6));
+}
+
+
+if (3 >>> 6 !== 0) {
+ $ERROR('#201: 3 >>> 6 === 0. Actual: ' + (3 >>> 6));
+}
+
+
+if (7 >>> 6 !== 0) {
+ $ERROR('#202: 7 >>> 6 === 0. Actual: ' + (7 >>> 6));
+}
+
+
+if (15 >>> 6 !== 0) {
+ $ERROR('#203: 15 >>> 6 === 0. Actual: ' + (15 >>> 6));
+}
+
+
+if (31 >>> 6 !== 0) {
+ $ERROR('#204: 31 >>> 6 === 0. Actual: ' + (31 >>> 6));
+}
+
+
+if (63 >>> 6 !== 0) {
+ $ERROR('#205: 63 >>> 6 === 0. Actual: ' + (63 >>> 6));
+}
+
+
+if (127 >>> 6 !== 1) {
+ $ERROR('#206: 127 >>> 6 === 1. Actual: ' + (127 >>> 6));
+}
+
+
+if (255 >>> 6 !== 3) {
+ $ERROR('#207: 255 >>> 6 === 3. Actual: ' + (255 >>> 6));
+}
+
+
+if (511 >>> 6 !== 7) {
+ $ERROR('#208: 511 >>> 6 === 7. Actual: ' + (511 >>> 6));
+}
+
+
+if (1023 >>> 6 !== 15) {
+ $ERROR('#209: 1023 >>> 6 === 15. Actual: ' + (1023 >>> 6));
+}
+
+
+if (2047 >>> 6 !== 31) {
+ $ERROR('#210: 2047 >>> 6 === 31. Actual: ' + (2047 >>> 6));
+}
+
+
+if (4095 >>> 6 !== 63) {
+ $ERROR('#211: 4095 >>> 6 === 63. Actual: ' + (4095 >>> 6));
+}
+
+
+if (8191 >>> 6 !== 127) {
+ $ERROR('#212: 8191 >>> 6 === 127. Actual: ' + (8191 >>> 6));
+}
+
+
+if (16383 >>> 6 !== 255) {
+ $ERROR('#213: 16383 >>> 6 === 255. Actual: ' + (16383 >>> 6));
+}
+
+
+if (32767 >>> 6 !== 511) {
+ $ERROR('#214: 32767 >>> 6 === 511. Actual: ' + (32767 >>> 6));
+}
+
+
+if (65535 >>> 6 !== 1023) {
+ $ERROR('#215: 65535 >>> 6 === 1023. Actual: ' + (65535 >>> 6));
+}
+
+
+if (131071 >>> 6 !== 2047) {
+ $ERROR('#216: 131071 >>> 6 === 2047. Actual: ' + (131071 >>> 6));
+}
+
+
+if (262143 >>> 6 !== 4095) {
+ $ERROR('#217: 262143 >>> 6 === 4095. Actual: ' + (262143 >>> 6));
+}
+
+
+if (524287 >>> 6 !== 8191) {
+ $ERROR('#218: 524287 >>> 6 === 8191. Actual: ' + (524287 >>> 6));
+}
+
+
+if (1048575 >>> 6 !== 16383) {
+ $ERROR('#219: 1048575 >>> 6 === 16383. Actual: ' + (1048575 >>> 6));
+}
+
+
+if (2097151 >>> 6 !== 32767) {
+ $ERROR('#220: 2097151 >>> 6 === 32767. Actual: ' + (2097151 >>> 6));
+}
+
+
+if (4194303 >>> 6 !== 65535) {
+ $ERROR('#221: 4194303 >>> 6 === 65535. Actual: ' + (4194303 >>> 6));
+}
+
+
+if (8388607 >>> 6 !== 131071) {
+ $ERROR('#222: 8388607 >>> 6 === 131071. Actual: ' + (8388607 >>> 6));
+}
+
+
+if (16777215 >>> 6 !== 262143) {
+ $ERROR('#223: 16777215 >>> 6 === 262143. Actual: ' + (16777215 >>> 6));
+}
+
+
+if (33554431 >>> 6 !== 524287) {
+ $ERROR('#224: 33554431 >>> 6 === 524287. Actual: ' + (33554431 >>> 6));
+}
+
+
+if (67108863 >>> 6 !== 1048575) {
+ $ERROR('#225: 67108863 >>> 6 === 1048575. Actual: ' + (67108863 >>> 6));
+}
+
+
+if (134217727 >>> 6 !== 2097151) {
+ $ERROR('#226: 134217727 >>> 6 === 2097151. Actual: ' + (134217727 >>> 6));
+}
+
+
+if (268435455 >>> 6 !== 4194303) {
+ $ERROR('#227: 268435455 >>> 6 === 4194303. Actual: ' + (268435455 >>> 6));
+}
+
+
+if (536870911 >>> 6 !== 8388607) {
+ $ERROR('#228: 536870911 >>> 6 === 8388607. Actual: ' + (536870911 >>> 6));
+}
+
+
+if (1073741823 >>> 6 !== 16777215) {
+ $ERROR('#229: 1073741823 >>> 6 === 16777215. Actual: ' + (1073741823 >>> 6));
+}
+
+
+if (2147483647 >>> 6 !== 33554431) {
+ $ERROR('#230: 2147483647 >>> 6 === 33554431. Actual: ' + (2147483647 >>> 6));
+}
+
+
+if (4294967295 >>> 6 !== 67108863) {
+ $ERROR('#231: 4294967295 >>> 6 === 67108863. Actual: ' + (4294967295 >>> 6));
+}
+
+
+if (0 >>> 7 !== 0) {
+ $ERROR('#232: 0 >>> 7 === 0. Actual: ' + (0 >>> 7));
+}
+
+
+if (1 >>> 7 !== 0) {
+ $ERROR('#233: 1 >>> 7 === 0. Actual: ' + (1 >>> 7));
+}
+
+
+if (3 >>> 7 !== 0) {
+ $ERROR('#234: 3 >>> 7 === 0. Actual: ' + (3 >>> 7));
+}
+
+
+if (7 >>> 7 !== 0) {
+ $ERROR('#235: 7 >>> 7 === 0. Actual: ' + (7 >>> 7));
+}
+
+
+if (15 >>> 7 !== 0) {
+ $ERROR('#236: 15 >>> 7 === 0. Actual: ' + (15 >>> 7));
+}
+
+
+if (31 >>> 7 !== 0) {
+ $ERROR('#237: 31 >>> 7 === 0. Actual: ' + (31 >>> 7));
+}
+
+
+if (63 >>> 7 !== 0) {
+ $ERROR('#238: 63 >>> 7 === 0. Actual: ' + (63 >>> 7));
+}
+
+
+if (127 >>> 7 !== 0) {
+ $ERROR('#239: 127 >>> 7 === 0. Actual: ' + (127 >>> 7));
+}
+
+
+if (255 >>> 7 !== 1) {
+ $ERROR('#240: 255 >>> 7 === 1. Actual: ' + (255 >>> 7));
+}
+
+
+if (511 >>> 7 !== 3) {
+ $ERROR('#241: 511 >>> 7 === 3. Actual: ' + (511 >>> 7));
+}
+
+
+if (1023 >>> 7 !== 7) {
+ $ERROR('#242: 1023 >>> 7 === 7. Actual: ' + (1023 >>> 7));
+}
+
+
+if (2047 >>> 7 !== 15) {
+ $ERROR('#243: 2047 >>> 7 === 15. Actual: ' + (2047 >>> 7));
+}
+
+
+if (4095 >>> 7 !== 31) {
+ $ERROR('#244: 4095 >>> 7 === 31. Actual: ' + (4095 >>> 7));
+}
+
+
+if (8191 >>> 7 !== 63) {
+ $ERROR('#245: 8191 >>> 7 === 63. Actual: ' + (8191 >>> 7));
+}
+
+
+if (16383 >>> 7 !== 127) {
+ $ERROR('#246: 16383 >>> 7 === 127. Actual: ' + (16383 >>> 7));
+}
+
+
+if (32767 >>> 7 !== 255) {
+ $ERROR('#247: 32767 >>> 7 === 255. Actual: ' + (32767 >>> 7));
+}
+
+
+if (65535 >>> 7 !== 511) {
+ $ERROR('#248: 65535 >>> 7 === 511. Actual: ' + (65535 >>> 7));
+}
+
+
+if (131071 >>> 7 !== 1023) {
+ $ERROR('#249: 131071 >>> 7 === 1023. Actual: ' + (131071 >>> 7));
+}
+
+
+if (262143 >>> 7 !== 2047) {
+ $ERROR('#250: 262143 >>> 7 === 2047. Actual: ' + (262143 >>> 7));
+}
+
+
+if (524287 >>> 7 !== 4095) {
+ $ERROR('#251: 524287 >>> 7 === 4095. Actual: ' + (524287 >>> 7));
+}
+
+
+if (1048575 >>> 7 !== 8191) {
+ $ERROR('#252: 1048575 >>> 7 === 8191. Actual: ' + (1048575 >>> 7));
+}
+
+
+if (2097151 >>> 7 !== 16383) {
+ $ERROR('#253: 2097151 >>> 7 === 16383. Actual: ' + (2097151 >>> 7));
+}
+
+
+if (4194303 >>> 7 !== 32767) {
+ $ERROR('#254: 4194303 >>> 7 === 32767. Actual: ' + (4194303 >>> 7));
+}
+
+
+if (8388607 >>> 7 !== 65535) {
+ $ERROR('#255: 8388607 >>> 7 === 65535. Actual: ' + (8388607 >>> 7));
+}
+
+
+if (16777215 >>> 7 !== 131071) {
+ $ERROR('#256: 16777215 >>> 7 === 131071. Actual: ' + (16777215 >>> 7));
+}
+
+
+if (33554431 >>> 7 !== 262143) {
+ $ERROR('#257: 33554431 >>> 7 === 262143. Actual: ' + (33554431 >>> 7));
+}
+
+
+if (67108863 >>> 7 !== 524287) {
+ $ERROR('#258: 67108863 >>> 7 === 524287. Actual: ' + (67108863 >>> 7));
+}
+
+
+if (134217727 >>> 7 !== 1048575) {
+ $ERROR('#259: 134217727 >>> 7 === 1048575. Actual: ' + (134217727 >>> 7));
+}
+
+
+if (268435455 >>> 7 !== 2097151) {
+ $ERROR('#260: 268435455 >>> 7 === 2097151. Actual: ' + (268435455 >>> 7));
+}
+
+
+if (536870911 >>> 7 !== 4194303) {
+ $ERROR('#261: 536870911 >>> 7 === 4194303. Actual: ' + (536870911 >>> 7));
+}
+
+
+if (1073741823 >>> 7 !== 8388607) {
+ $ERROR('#262: 1073741823 >>> 7 === 8388607. Actual: ' + (1073741823 >>> 7));
+}
+
+
+if (2147483647 >>> 7 !== 16777215) {
+ $ERROR('#263: 2147483647 >>> 7 === 16777215. Actual: ' + (2147483647 >>> 7));
+}
+
+
+if (4294967295 >>> 7 !== 33554431) {
+ $ERROR('#264: 4294967295 >>> 7 === 33554431. Actual: ' + (4294967295 >>> 7));
+}
+
+
+if (0 >>> 8 !== 0) {
+ $ERROR('#265: 0 >>> 8 === 0. Actual: ' + (0 >>> 8));
+}
+
+
+if (1 >>> 8 !== 0) {
+ $ERROR('#266: 1 >>> 8 === 0. Actual: ' + (1 >>> 8));
+}
+
+
+if (3 >>> 8 !== 0) {
+ $ERROR('#267: 3 >>> 8 === 0. Actual: ' + (3 >>> 8));
+}
+
+
+if (7 >>> 8 !== 0) {
+ $ERROR('#268: 7 >>> 8 === 0. Actual: ' + (7 >>> 8));
+}
+
+
+if (15 >>> 8 !== 0) {
+ $ERROR('#269: 15 >>> 8 === 0. Actual: ' + (15 >>> 8));
+}
+
+
+if (31 >>> 8 !== 0) {
+ $ERROR('#270: 31 >>> 8 === 0. Actual: ' + (31 >>> 8));
+}
+
+
+if (63 >>> 8 !== 0) {
+ $ERROR('#271: 63 >>> 8 === 0. Actual: ' + (63 >>> 8));
+}
+
+
+if (127 >>> 8 !== 0) {
+ $ERROR('#272: 127 >>> 8 === 0. Actual: ' + (127 >>> 8));
+}
+
+
+if (255 >>> 8 !== 0) {
+ $ERROR('#273: 255 >>> 8 === 0. Actual: ' + (255 >>> 8));
+}
+
+
+if (511 >>> 8 !== 1) {
+ $ERROR('#274: 511 >>> 8 === 1. Actual: ' + (511 >>> 8));
+}
+
+
+if (1023 >>> 8 !== 3) {
+ $ERROR('#275: 1023 >>> 8 === 3. Actual: ' + (1023 >>> 8));
+}
+
+
+if (2047 >>> 8 !== 7) {
+ $ERROR('#276: 2047 >>> 8 === 7. Actual: ' + (2047 >>> 8));
+}
+
+
+if (4095 >>> 8 !== 15) {
+ $ERROR('#277: 4095 >>> 8 === 15. Actual: ' + (4095 >>> 8));
+}
+
+
+if (8191 >>> 8 !== 31) {
+ $ERROR('#278: 8191 >>> 8 === 31. Actual: ' + (8191 >>> 8));
+}
+
+
+if (16383 >>> 8 !== 63) {
+ $ERROR('#279: 16383 >>> 8 === 63. Actual: ' + (16383 >>> 8));
+}
+
+
+if (32767 >>> 8 !== 127) {
+ $ERROR('#280: 32767 >>> 8 === 127. Actual: ' + (32767 >>> 8));
+}
+
+
+if (65535 >>> 8 !== 255) {
+ $ERROR('#281: 65535 >>> 8 === 255. Actual: ' + (65535 >>> 8));
+}
+
+
+if (131071 >>> 8 !== 511) {
+ $ERROR('#282: 131071 >>> 8 === 511. Actual: ' + (131071 >>> 8));
+}
+
+
+if (262143 >>> 8 !== 1023) {
+ $ERROR('#283: 262143 >>> 8 === 1023. Actual: ' + (262143 >>> 8));
+}
+
+
+if (524287 >>> 8 !== 2047) {
+ $ERROR('#284: 524287 >>> 8 === 2047. Actual: ' + (524287 >>> 8));
+}
+
+
+if (1048575 >>> 8 !== 4095) {
+ $ERROR('#285: 1048575 >>> 8 === 4095. Actual: ' + (1048575 >>> 8));
+}
+
+
+if (2097151 >>> 8 !== 8191) {
+ $ERROR('#286: 2097151 >>> 8 === 8191. Actual: ' + (2097151 >>> 8));
+}
+
+
+if (4194303 >>> 8 !== 16383) {
+ $ERROR('#287: 4194303 >>> 8 === 16383. Actual: ' + (4194303 >>> 8));
+}
+
+
+if (8388607 >>> 8 !== 32767) {
+ $ERROR('#288: 8388607 >>> 8 === 32767. Actual: ' + (8388607 >>> 8));
+}
+
+
+if (16777215 >>> 8 !== 65535) {
+ $ERROR('#289: 16777215 >>> 8 === 65535. Actual: ' + (16777215 >>> 8));
+}
+
+
+if (33554431 >>> 8 !== 131071) {
+ $ERROR('#290: 33554431 >>> 8 === 131071. Actual: ' + (33554431 >>> 8));
+}
+
+
+if (67108863 >>> 8 !== 262143) {
+ $ERROR('#291: 67108863 >>> 8 === 262143. Actual: ' + (67108863 >>> 8));
+}
+
+
+if (134217727 >>> 8 !== 524287) {
+ $ERROR('#292: 134217727 >>> 8 === 524287. Actual: ' + (134217727 >>> 8));
+}
+
+
+if (268435455 >>> 8 !== 1048575) {
+ $ERROR('#293: 268435455 >>> 8 === 1048575. Actual: ' + (268435455 >>> 8));
+}
+
+
+if (536870911 >>> 8 !== 2097151) {
+ $ERROR('#294: 536870911 >>> 8 === 2097151. Actual: ' + (536870911 >>> 8));
+}
+
+
+if (1073741823 >>> 8 !== 4194303) {
+ $ERROR('#295: 1073741823 >>> 8 === 4194303. Actual: ' + (1073741823 >>> 8));
+}
+
+
+if (2147483647 >>> 8 !== 8388607) {
+ $ERROR('#296: 2147483647 >>> 8 === 8388607. Actual: ' + (2147483647 >>> 8));
+}
+
+
+if (4294967295 >>> 8 !== 16777215) {
+ $ERROR('#297: 4294967295 >>> 8 === 16777215. Actual: ' + (4294967295 >>> 8));
+}
+
+
+if (0 >>> 9 !== 0) {
+ $ERROR('#298: 0 >>> 9 === 0. Actual: ' + (0 >>> 9));
+}
+
+
+if (1 >>> 9 !== 0) {
+ $ERROR('#299: 1 >>> 9 === 0. Actual: ' + (1 >>> 9));
+}
+
+
+if (3 >>> 9 !== 0) {
+ $ERROR('#300: 3 >>> 9 === 0. Actual: ' + (3 >>> 9));
+}
+
+
+if (7 >>> 9 !== 0) {
+ $ERROR('#301: 7 >>> 9 === 0. Actual: ' + (7 >>> 9));
+}
+
+
+if (15 >>> 9 !== 0) {
+ $ERROR('#302: 15 >>> 9 === 0. Actual: ' + (15 >>> 9));
+}
+
+
+if (31 >>> 9 !== 0) {
+ $ERROR('#303: 31 >>> 9 === 0. Actual: ' + (31 >>> 9));
+}
+
+
+if (63 >>> 9 !== 0) {
+ $ERROR('#304: 63 >>> 9 === 0. Actual: ' + (63 >>> 9));
+}
+
+
+if (127 >>> 9 !== 0) {
+ $ERROR('#305: 127 >>> 9 === 0. Actual: ' + (127 >>> 9));
+}
+
+
+if (255 >>> 9 !== 0) {
+ $ERROR('#306: 255 >>> 9 === 0. Actual: ' + (255 >>> 9));
+}
+
+
+if (511 >>> 9 !== 0) {
+ $ERROR('#307: 511 >>> 9 === 0. Actual: ' + (511 >>> 9));
+}
+
+
+if (1023 >>> 9 !== 1) {
+ $ERROR('#308: 1023 >>> 9 === 1. Actual: ' + (1023 >>> 9));
+}
+
+
+if (2047 >>> 9 !== 3) {
+ $ERROR('#309: 2047 >>> 9 === 3. Actual: ' + (2047 >>> 9));
+}
+
+
+if (4095 >>> 9 !== 7) {
+ $ERROR('#310: 4095 >>> 9 === 7. Actual: ' + (4095 >>> 9));
+}
+
+
+if (8191 >>> 9 !== 15) {
+ $ERROR('#311: 8191 >>> 9 === 15. Actual: ' + (8191 >>> 9));
+}
+
+
+if (16383 >>> 9 !== 31) {
+ $ERROR('#312: 16383 >>> 9 === 31. Actual: ' + (16383 >>> 9));
+}
+
+
+if (32767 >>> 9 !== 63) {
+ $ERROR('#313: 32767 >>> 9 === 63. Actual: ' + (32767 >>> 9));
+}
+
+
+if (65535 >>> 9 !== 127) {
+ $ERROR('#314: 65535 >>> 9 === 127. Actual: ' + (65535 >>> 9));
+}
+
+
+if (131071 >>> 9 !== 255) {
+ $ERROR('#315: 131071 >>> 9 === 255. Actual: ' + (131071 >>> 9));
+}
+
+
+if (262143 >>> 9 !== 511) {
+ $ERROR('#316: 262143 >>> 9 === 511. Actual: ' + (262143 >>> 9));
+}
+
+
+if (524287 >>> 9 !== 1023) {
+ $ERROR('#317: 524287 >>> 9 === 1023. Actual: ' + (524287 >>> 9));
+}
+
+
+if (1048575 >>> 9 !== 2047) {
+ $ERROR('#318: 1048575 >>> 9 === 2047. Actual: ' + (1048575 >>> 9));
+}
+
+
+if (2097151 >>> 9 !== 4095) {
+ $ERROR('#319: 2097151 >>> 9 === 4095. Actual: ' + (2097151 >>> 9));
+}
+
+
+if (4194303 >>> 9 !== 8191) {
+ $ERROR('#320: 4194303 >>> 9 === 8191. Actual: ' + (4194303 >>> 9));
+}
+
+
+if (8388607 >>> 9 !== 16383) {
+ $ERROR('#321: 8388607 >>> 9 === 16383. Actual: ' + (8388607 >>> 9));
+}
+
+
+if (16777215 >>> 9 !== 32767) {
+ $ERROR('#322: 16777215 >>> 9 === 32767. Actual: ' + (16777215 >>> 9));
+}
+
+
+if (33554431 >>> 9 !== 65535) {
+ $ERROR('#323: 33554431 >>> 9 === 65535. Actual: ' + (33554431 >>> 9));
+}
+
+
+if (67108863 >>> 9 !== 131071) {
+ $ERROR('#324: 67108863 >>> 9 === 131071. Actual: ' + (67108863 >>> 9));
+}
+
+
+if (134217727 >>> 9 !== 262143) {
+ $ERROR('#325: 134217727 >>> 9 === 262143. Actual: ' + (134217727 >>> 9));
+}
+
+
+if (268435455 >>> 9 !== 524287) {
+ $ERROR('#326: 268435455 >>> 9 === 524287. Actual: ' + (268435455 >>> 9));
+}
+
+
+if (536870911 >>> 9 !== 1048575) {
+ $ERROR('#327: 536870911 >>> 9 === 1048575. Actual: ' + (536870911 >>> 9));
+}
+
+
+if (1073741823 >>> 9 !== 2097151) {
+ $ERROR('#328: 1073741823 >>> 9 === 2097151. Actual: ' + (1073741823 >>> 9));
+}
+
+
+if (2147483647 >>> 9 !== 4194303) {
+ $ERROR('#329: 2147483647 >>> 9 === 4194303. Actual: ' + (2147483647 >>> 9));
+}
+
+
+if (4294967295 >>> 9 !== 8388607) {
+ $ERROR('#330: 4294967295 >>> 9 === 8388607. Actual: ' + (4294967295 >>> 9));
+}
+
+
+if (0 >>> 10 !== 0) {
+ $ERROR('#331: 0 >>> 10 === 0. Actual: ' + (0 >>> 10));
+}
+
+
+if (1 >>> 10 !== 0) {
+ $ERROR('#332: 1 >>> 10 === 0. Actual: ' + (1 >>> 10));
+}
+
+
+if (3 >>> 10 !== 0) {
+ $ERROR('#333: 3 >>> 10 === 0. Actual: ' + (3 >>> 10));
+}
+
+
+if (7 >>> 10 !== 0) {
+ $ERROR('#334: 7 >>> 10 === 0. Actual: ' + (7 >>> 10));
+}
+
+
+if (15 >>> 10 !== 0) {
+ $ERROR('#335: 15 >>> 10 === 0. Actual: ' + (15 >>> 10));
+}
+
+
+if (31 >>> 10 !== 0) {
+ $ERROR('#336: 31 >>> 10 === 0. Actual: ' + (31 >>> 10));
+}
+
+
+if (63 >>> 10 !== 0) {
+ $ERROR('#337: 63 >>> 10 === 0. Actual: ' + (63 >>> 10));
+}
+
+
+if (127 >>> 10 !== 0) {
+ $ERROR('#338: 127 >>> 10 === 0. Actual: ' + (127 >>> 10));
+}
+
+
+if (255 >>> 10 !== 0) {
+ $ERROR('#339: 255 >>> 10 === 0. Actual: ' + (255 >>> 10));
+}
+
+
+if (511 >>> 10 !== 0) {
+ $ERROR('#340: 511 >>> 10 === 0. Actual: ' + (511 >>> 10));
+}
+
+
+if (1023 >>> 10 !== 0) {
+ $ERROR('#341: 1023 >>> 10 === 0. Actual: ' + (1023 >>> 10));
+}
+
+
+if (2047 >>> 10 !== 1) {
+ $ERROR('#342: 2047 >>> 10 === 1. Actual: ' + (2047 >>> 10));
+}
+
+
+if (4095 >>> 10 !== 3) {
+ $ERROR('#343: 4095 >>> 10 === 3. Actual: ' + (4095 >>> 10));
+}
+
+
+if (8191 >>> 10 !== 7) {
+ $ERROR('#344: 8191 >>> 10 === 7. Actual: ' + (8191 >>> 10));
+}
+
+
+if (16383 >>> 10 !== 15) {
+ $ERROR('#345: 16383 >>> 10 === 15. Actual: ' + (16383 >>> 10));
+}
+
+
+if (32767 >>> 10 !== 31) {
+ $ERROR('#346: 32767 >>> 10 === 31. Actual: ' + (32767 >>> 10));
+}
+
+
+if (65535 >>> 10 !== 63) {
+ $ERROR('#347: 65535 >>> 10 === 63. Actual: ' + (65535 >>> 10));
+}
+
+
+if (131071 >>> 10 !== 127) {
+ $ERROR('#348: 131071 >>> 10 === 127. Actual: ' + (131071 >>> 10));
+}
+
+
+if (262143 >>> 10 !== 255) {
+ $ERROR('#349: 262143 >>> 10 === 255. Actual: ' + (262143 >>> 10));
+}
+
+
+if (524287 >>> 10 !== 511) {
+ $ERROR('#350: 524287 >>> 10 === 511. Actual: ' + (524287 >>> 10));
+}
+
+
+if (1048575 >>> 10 !== 1023) {
+ $ERROR('#351: 1048575 >>> 10 === 1023. Actual: ' + (1048575 >>> 10));
+}
+
+
+if (2097151 >>> 10 !== 2047) {
+ $ERROR('#352: 2097151 >>> 10 === 2047. Actual: ' + (2097151 >>> 10));
+}
+
+
+if (4194303 >>> 10 !== 4095) {
+ $ERROR('#353: 4194303 >>> 10 === 4095. Actual: ' + (4194303 >>> 10));
+}
+
+
+if (8388607 >>> 10 !== 8191) {
+ $ERROR('#354: 8388607 >>> 10 === 8191. Actual: ' + (8388607 >>> 10));
+}
+
+
+if (16777215 >>> 10 !== 16383) {
+ $ERROR('#355: 16777215 >>> 10 === 16383. Actual: ' + (16777215 >>> 10));
+}
+
+
+if (33554431 >>> 10 !== 32767) {
+ $ERROR('#356: 33554431 >>> 10 === 32767. Actual: ' + (33554431 >>> 10));
+}
+
+
+if (67108863 >>> 10 !== 65535) {
+ $ERROR('#357: 67108863 >>> 10 === 65535. Actual: ' + (67108863 >>> 10));
+}
+
+
+if (134217727 >>> 10 !== 131071) {
+ $ERROR('#358: 134217727 >>> 10 === 131071. Actual: ' + (134217727 >>> 10));
+}
+
+
+if (268435455 >>> 10 !== 262143) {
+ $ERROR('#359: 268435455 >>> 10 === 262143. Actual: ' + (268435455 >>> 10));
+}
+
+
+if (536870911 >>> 10 !== 524287) {
+ $ERROR('#360: 536870911 >>> 10 === 524287. Actual: ' + (536870911 >>> 10));
+}
+
+
+if (1073741823 >>> 10 !== 1048575) {
+ $ERROR('#361: 1073741823 >>> 10 === 1048575. Actual: ' + (1073741823 >>> 10));
+}
+
+
+if (2147483647 >>> 10 !== 2097151) {
+ $ERROR('#362: 2147483647 >>> 10 === 2097151. Actual: ' + (2147483647 >>> 10));
+}
+
+
+if (4294967295 >>> 10 !== 4194303) {
+ $ERROR('#363: 4294967295 >>> 10 === 4194303. Actual: ' + (4294967295 >>> 10));
+}
+
+
+if (0 >>> 11 !== 0) {
+ $ERROR('#364: 0 >>> 11 === 0. Actual: ' + (0 >>> 11));
+}
+
+
+if (1 >>> 11 !== 0) {
+ $ERROR('#365: 1 >>> 11 === 0. Actual: ' + (1 >>> 11));
+}
+
+
+if (3 >>> 11 !== 0) {
+ $ERROR('#366: 3 >>> 11 === 0. Actual: ' + (3 >>> 11));
+}
+
+
+if (7 >>> 11 !== 0) {
+ $ERROR('#367: 7 >>> 11 === 0. Actual: ' + (7 >>> 11));
+}
+
+
+if (15 >>> 11 !== 0) {
+ $ERROR('#368: 15 >>> 11 === 0. Actual: ' + (15 >>> 11));
+}
+
+
+if (31 >>> 11 !== 0) {
+ $ERROR('#369: 31 >>> 11 === 0. Actual: ' + (31 >>> 11));
+}
+
+
+if (63 >>> 11 !== 0) {
+ $ERROR('#370: 63 >>> 11 === 0. Actual: ' + (63 >>> 11));
+}
+
+
+if (127 >>> 11 !== 0) {
+ $ERROR('#371: 127 >>> 11 === 0. Actual: ' + (127 >>> 11));
+}
+
+
+if (255 >>> 11 !== 0) {
+ $ERROR('#372: 255 >>> 11 === 0. Actual: ' + (255 >>> 11));
+}
+
+
+if (511 >>> 11 !== 0) {
+ $ERROR('#373: 511 >>> 11 === 0. Actual: ' + (511 >>> 11));
+}
+
+
+if (1023 >>> 11 !== 0) {
+ $ERROR('#374: 1023 >>> 11 === 0. Actual: ' + (1023 >>> 11));
+}
+
+
+if (2047 >>> 11 !== 0) {
+ $ERROR('#375: 2047 >>> 11 === 0. Actual: ' + (2047 >>> 11));
+}
+
+
+if (4095 >>> 11 !== 1) {
+ $ERROR('#376: 4095 >>> 11 === 1. Actual: ' + (4095 >>> 11));
+}
+
+
+if (8191 >>> 11 !== 3) {
+ $ERROR('#377: 8191 >>> 11 === 3. Actual: ' + (8191 >>> 11));
+}
+
+
+if (16383 >>> 11 !== 7) {
+ $ERROR('#378: 16383 >>> 11 === 7. Actual: ' + (16383 >>> 11));
+}
+
+
+if (32767 >>> 11 !== 15) {
+ $ERROR('#379: 32767 >>> 11 === 15. Actual: ' + (32767 >>> 11));
+}
+
+
+if (65535 >>> 11 !== 31) {
+ $ERROR('#380: 65535 >>> 11 === 31. Actual: ' + (65535 >>> 11));
+}
+
+
+if (131071 >>> 11 !== 63) {
+ $ERROR('#381: 131071 >>> 11 === 63. Actual: ' + (131071 >>> 11));
+}
+
+
+if (262143 >>> 11 !== 127) {
+ $ERROR('#382: 262143 >>> 11 === 127. Actual: ' + (262143 >>> 11));
+}
+
+
+if (524287 >>> 11 !== 255) {
+ $ERROR('#383: 524287 >>> 11 === 255. Actual: ' + (524287 >>> 11));
+}
+
+
+if (1048575 >>> 11 !== 511) {
+ $ERROR('#384: 1048575 >>> 11 === 511. Actual: ' + (1048575 >>> 11));
+}
+
+
+if (2097151 >>> 11 !== 1023) {
+ $ERROR('#385: 2097151 >>> 11 === 1023. Actual: ' + (2097151 >>> 11));
+}
+
+
+if (4194303 >>> 11 !== 2047) {
+ $ERROR('#386: 4194303 >>> 11 === 2047. Actual: ' + (4194303 >>> 11));
+}
+
+
+if (8388607 >>> 11 !== 4095) {
+ $ERROR('#387: 8388607 >>> 11 === 4095. Actual: ' + (8388607 >>> 11));
+}
+
+
+if (16777215 >>> 11 !== 8191) {
+ $ERROR('#388: 16777215 >>> 11 === 8191. Actual: ' + (16777215 >>> 11));
+}
+
+
+if (33554431 >>> 11 !== 16383) {
+ $ERROR('#389: 33554431 >>> 11 === 16383. Actual: ' + (33554431 >>> 11));
+}
+
+
+if (67108863 >>> 11 !== 32767) {
+ $ERROR('#390: 67108863 >>> 11 === 32767. Actual: ' + (67108863 >>> 11));
+}
+
+
+if (134217727 >>> 11 !== 65535) {
+ $ERROR('#391: 134217727 >>> 11 === 65535. Actual: ' + (134217727 >>> 11));
+}
+
+
+if (268435455 >>> 11 !== 131071) {
+ $ERROR('#392: 268435455 >>> 11 === 131071. Actual: ' + (268435455 >>> 11));
+}
+
+
+if (536870911 >>> 11 !== 262143) {
+ $ERROR('#393: 536870911 >>> 11 === 262143. Actual: ' + (536870911 >>> 11));
+}
+
+
+if (1073741823 >>> 11 !== 524287) {
+ $ERROR('#394: 1073741823 >>> 11 === 524287. Actual: ' + (1073741823 >>> 11));
+}
+
+
+if (2147483647 >>> 11 !== 1048575) {
+ $ERROR('#395: 2147483647 >>> 11 === 1048575. Actual: ' + (2147483647 >>> 11));
+}
+
+
+if (4294967295 >>> 11 !== 2097151) {
+ $ERROR('#396: 4294967295 >>> 11 === 2097151. Actual: ' + (4294967295 >>> 11));
+}
+
+
+if (0 >>> 12 !== 0) {
+ $ERROR('#397: 0 >>> 12 === 0. Actual: ' + (0 >>> 12));
+}
+
+
+if (1 >>> 12 !== 0) {
+ $ERROR('#398: 1 >>> 12 === 0. Actual: ' + (1 >>> 12));
+}
+
+
+if (3 >>> 12 !== 0) {
+ $ERROR('#399: 3 >>> 12 === 0. Actual: ' + (3 >>> 12));
+}
+
+
+if (7 >>> 12 !== 0) {
+ $ERROR('#400: 7 >>> 12 === 0. Actual: ' + (7 >>> 12));
+}
+
+
+if (15 >>> 12 !== 0) {
+ $ERROR('#401: 15 >>> 12 === 0. Actual: ' + (15 >>> 12));
+}
+
+
+if (31 >>> 12 !== 0) {
+ $ERROR('#402: 31 >>> 12 === 0. Actual: ' + (31 >>> 12));
+}
+
+
+if (63 >>> 12 !== 0) {
+ $ERROR('#403: 63 >>> 12 === 0. Actual: ' + (63 >>> 12));
+}
+
+
+if (127 >>> 12 !== 0) {
+ $ERROR('#404: 127 >>> 12 === 0. Actual: ' + (127 >>> 12));
+}
+
+
+if (255 >>> 12 !== 0) {
+ $ERROR('#405: 255 >>> 12 === 0. Actual: ' + (255 >>> 12));
+}
+
+
+if (511 >>> 12 !== 0) {
+ $ERROR('#406: 511 >>> 12 === 0. Actual: ' + (511 >>> 12));
+}
+
+
+if (1023 >>> 12 !== 0) {
+ $ERROR('#407: 1023 >>> 12 === 0. Actual: ' + (1023 >>> 12));
+}
+
+
+if (2047 >>> 12 !== 0) {
+ $ERROR('#408: 2047 >>> 12 === 0. Actual: ' + (2047 >>> 12));
+}
+
+
+if (4095 >>> 12 !== 0) {
+ $ERROR('#409: 4095 >>> 12 === 0. Actual: ' + (4095 >>> 12));
+}
+
+
+if (8191 >>> 12 !== 1) {
+ $ERROR('#410: 8191 >>> 12 === 1. Actual: ' + (8191 >>> 12));
+}
+
+
+if (16383 >>> 12 !== 3) {
+ $ERROR('#411: 16383 >>> 12 === 3. Actual: ' + (16383 >>> 12));
+}
+
+
+if (32767 >>> 12 !== 7) {
+ $ERROR('#412: 32767 >>> 12 === 7. Actual: ' + (32767 >>> 12));
+}
+
+
+if (65535 >>> 12 !== 15) {
+ $ERROR('#413: 65535 >>> 12 === 15. Actual: ' + (65535 >>> 12));
+}
+
+
+if (131071 >>> 12 !== 31) {
+ $ERROR('#414: 131071 >>> 12 === 31. Actual: ' + (131071 >>> 12));
+}
+
+
+if (262143 >>> 12 !== 63) {
+ $ERROR('#415: 262143 >>> 12 === 63. Actual: ' + (262143 >>> 12));
+}
+
+
+if (524287 >>> 12 !== 127) {
+ $ERROR('#416: 524287 >>> 12 === 127. Actual: ' + (524287 >>> 12));
+}
+
+
+if (1048575 >>> 12 !== 255) {
+ $ERROR('#417: 1048575 >>> 12 === 255. Actual: ' + (1048575 >>> 12));
+}
+
+
+if (2097151 >>> 12 !== 511) {
+ $ERROR('#418: 2097151 >>> 12 === 511. Actual: ' + (2097151 >>> 12));
+}
+
+
+if (4194303 >>> 12 !== 1023) {
+ $ERROR('#419: 4194303 >>> 12 === 1023. Actual: ' + (4194303 >>> 12));
+}
+
+
+if (8388607 >>> 12 !== 2047) {
+ $ERROR('#420: 8388607 >>> 12 === 2047. Actual: ' + (8388607 >>> 12));
+}
+
+
+if (16777215 >>> 12 !== 4095) {
+ $ERROR('#421: 16777215 >>> 12 === 4095. Actual: ' + (16777215 >>> 12));
+}
+
+
+if (33554431 >>> 12 !== 8191) {
+ $ERROR('#422: 33554431 >>> 12 === 8191. Actual: ' + (33554431 >>> 12));
+}
+
+
+if (67108863 >>> 12 !== 16383) {
+ $ERROR('#423: 67108863 >>> 12 === 16383. Actual: ' + (67108863 >>> 12));
+}
+
+
+if (134217727 >>> 12 !== 32767) {
+ $ERROR('#424: 134217727 >>> 12 === 32767. Actual: ' + (134217727 >>> 12));
+}
+
+
+if (268435455 >>> 12 !== 65535) {
+ $ERROR('#425: 268435455 >>> 12 === 65535. Actual: ' + (268435455 >>> 12));
+}
+
+
+if (536870911 >>> 12 !== 131071) {
+ $ERROR('#426: 536870911 >>> 12 === 131071. Actual: ' + (536870911 >>> 12));
+}
+
+
+if (1073741823 >>> 12 !== 262143) {
+ $ERROR('#427: 1073741823 >>> 12 === 262143. Actual: ' + (1073741823 >>> 12));
+}
+
+
+if (2147483647 >>> 12 !== 524287) {
+ $ERROR('#428: 2147483647 >>> 12 === 524287. Actual: ' + (2147483647 >>> 12));
+}
+
+
+if (4294967295 >>> 12 !== 1048575) {
+ $ERROR('#429: 4294967295 >>> 12 === 1048575. Actual: ' + (4294967295 >>> 12));
+}
+
+
+if (0 >>> 13 !== 0) {
+ $ERROR('#430: 0 >>> 13 === 0. Actual: ' + (0 >>> 13));
+}
+
+
+if (1 >>> 13 !== 0) {
+ $ERROR('#431: 1 >>> 13 === 0. Actual: ' + (1 >>> 13));
+}
+
+
+if (3 >>> 13 !== 0) {
+ $ERROR('#432: 3 >>> 13 === 0. Actual: ' + (3 >>> 13));
+}
+
+
+if (7 >>> 13 !== 0) {
+ $ERROR('#433: 7 >>> 13 === 0. Actual: ' + (7 >>> 13));
+}
+
+
+if (15 >>> 13 !== 0) {
+ $ERROR('#434: 15 >>> 13 === 0. Actual: ' + (15 >>> 13));
+}
+
+
+if (31 >>> 13 !== 0) {
+ $ERROR('#435: 31 >>> 13 === 0. Actual: ' + (31 >>> 13));
+}
+
+
+if (63 >>> 13 !== 0) {
+ $ERROR('#436: 63 >>> 13 === 0. Actual: ' + (63 >>> 13));
+}
+
+
+if (127 >>> 13 !== 0) {
+ $ERROR('#437: 127 >>> 13 === 0. Actual: ' + (127 >>> 13));
+}
+
+
+if (255 >>> 13 !== 0) {
+ $ERROR('#438: 255 >>> 13 === 0. Actual: ' + (255 >>> 13));
+}
+
+
+if (511 >>> 13 !== 0) {
+ $ERROR('#439: 511 >>> 13 === 0. Actual: ' + (511 >>> 13));
+}
+
+
+if (1023 >>> 13 !== 0) {
+ $ERROR('#440: 1023 >>> 13 === 0. Actual: ' + (1023 >>> 13));
+}
+
+
+if (2047 >>> 13 !== 0) {
+ $ERROR('#441: 2047 >>> 13 === 0. Actual: ' + (2047 >>> 13));
+}
+
+
+if (4095 >>> 13 !== 0) {
+ $ERROR('#442: 4095 >>> 13 === 0. Actual: ' + (4095 >>> 13));
+}
+
+
+if (8191 >>> 13 !== 0) {
+ $ERROR('#443: 8191 >>> 13 === 0. Actual: ' + (8191 >>> 13));
+}
+
+
+if (16383 >>> 13 !== 1) {
+ $ERROR('#444: 16383 >>> 13 === 1. Actual: ' + (16383 >>> 13));
+}
+
+
+if (32767 >>> 13 !== 3) {
+ $ERROR('#445: 32767 >>> 13 === 3. Actual: ' + (32767 >>> 13));
+}
+
+
+if (65535 >>> 13 !== 7) {
+ $ERROR('#446: 65535 >>> 13 === 7. Actual: ' + (65535 >>> 13));
+}
+
+
+if (131071 >>> 13 !== 15) {
+ $ERROR('#447: 131071 >>> 13 === 15. Actual: ' + (131071 >>> 13));
+}
+
+
+if (262143 >>> 13 !== 31) {
+ $ERROR('#448: 262143 >>> 13 === 31. Actual: ' + (262143 >>> 13));
+}
+
+
+if (524287 >>> 13 !== 63) {
+ $ERROR('#449: 524287 >>> 13 === 63. Actual: ' + (524287 >>> 13));
+}
+
+
+if (1048575 >>> 13 !== 127) {
+ $ERROR('#450: 1048575 >>> 13 === 127. Actual: ' + (1048575 >>> 13));
+}
+
+
+if (2097151 >>> 13 !== 255) {
+ $ERROR('#451: 2097151 >>> 13 === 255. Actual: ' + (2097151 >>> 13));
+}
+
+
+if (4194303 >>> 13 !== 511) {
+ $ERROR('#452: 4194303 >>> 13 === 511. Actual: ' + (4194303 >>> 13));
+}
+
+
+if (8388607 >>> 13 !== 1023) {
+ $ERROR('#453: 8388607 >>> 13 === 1023. Actual: ' + (8388607 >>> 13));
+}
+
+
+if (16777215 >>> 13 !== 2047) {
+ $ERROR('#454: 16777215 >>> 13 === 2047. Actual: ' + (16777215 >>> 13));
+}
+
+
+if (33554431 >>> 13 !== 4095) {
+ $ERROR('#455: 33554431 >>> 13 === 4095. Actual: ' + (33554431 >>> 13));
+}
+
+
+if (67108863 >>> 13 !== 8191) {
+ $ERROR('#456: 67108863 >>> 13 === 8191. Actual: ' + (67108863 >>> 13));
+}
+
+
+if (134217727 >>> 13 !== 16383) {
+ $ERROR('#457: 134217727 >>> 13 === 16383. Actual: ' + (134217727 >>> 13));
+}
+
+
+if (268435455 >>> 13 !== 32767) {
+ $ERROR('#458: 268435455 >>> 13 === 32767. Actual: ' + (268435455 >>> 13));
+}
+
+
+if (536870911 >>> 13 !== 65535) {
+ $ERROR('#459: 536870911 >>> 13 === 65535. Actual: ' + (536870911 >>> 13));
+}
+
+
+if (1073741823 >>> 13 !== 131071) {
+ $ERROR('#460: 1073741823 >>> 13 === 131071. Actual: ' + (1073741823 >>> 13));
+}
+
+
+if (2147483647 >>> 13 !== 262143) {
+ $ERROR('#461: 2147483647 >>> 13 === 262143. Actual: ' + (2147483647 >>> 13));
+}
+
+
+if (4294967295 >>> 13 !== 524287) {
+ $ERROR('#462: 4294967295 >>> 13 === 524287. Actual: ' + (4294967295 >>> 13));
+}
+
+
+if (0 >>> 14 !== 0) {
+ $ERROR('#463: 0 >>> 14 === 0. Actual: ' + (0 >>> 14));
+}
+
+
+if (1 >>> 14 !== 0) {
+ $ERROR('#464: 1 >>> 14 === 0. Actual: ' + (1 >>> 14));
+}
+
+
+if (3 >>> 14 !== 0) {
+ $ERROR('#465: 3 >>> 14 === 0. Actual: ' + (3 >>> 14));
+}
+
+
+if (7 >>> 14 !== 0) {
+ $ERROR('#466: 7 >>> 14 === 0. Actual: ' + (7 >>> 14));
+}
+
+
+if (15 >>> 14 !== 0) {
+ $ERROR('#467: 15 >>> 14 === 0. Actual: ' + (15 >>> 14));
+}
+
+
+if (31 >>> 14 !== 0) {
+ $ERROR('#468: 31 >>> 14 === 0. Actual: ' + (31 >>> 14));
+}
+
+
+if (63 >>> 14 !== 0) {
+ $ERROR('#469: 63 >>> 14 === 0. Actual: ' + (63 >>> 14));
+}
+
+
+if (127 >>> 14 !== 0) {
+ $ERROR('#470: 127 >>> 14 === 0. Actual: ' + (127 >>> 14));
+}
+
+
+if (255 >>> 14 !== 0) {
+ $ERROR('#471: 255 >>> 14 === 0. Actual: ' + (255 >>> 14));
+}
+
+
+if (511 >>> 14 !== 0) {
+ $ERROR('#472: 511 >>> 14 === 0. Actual: ' + (511 >>> 14));
+}
+
+
+if (1023 >>> 14 !== 0) {
+ $ERROR('#473: 1023 >>> 14 === 0. Actual: ' + (1023 >>> 14));
+}
+
+
+if (2047 >>> 14 !== 0) {
+ $ERROR('#474: 2047 >>> 14 === 0. Actual: ' + (2047 >>> 14));
+}
+
+
+if (4095 >>> 14 !== 0) {
+ $ERROR('#475: 4095 >>> 14 === 0. Actual: ' + (4095 >>> 14));
+}
+
+
+if (8191 >>> 14 !== 0) {
+ $ERROR('#476: 8191 >>> 14 === 0. Actual: ' + (8191 >>> 14));
+}
+
+
+if (16383 >>> 14 !== 0) {
+ $ERROR('#477: 16383 >>> 14 === 0. Actual: ' + (16383 >>> 14));
+}
+
+
+if (32767 >>> 14 !== 1) {
+ $ERROR('#478: 32767 >>> 14 === 1. Actual: ' + (32767 >>> 14));
+}
+
+
+if (65535 >>> 14 !== 3) {
+ $ERROR('#479: 65535 >>> 14 === 3. Actual: ' + (65535 >>> 14));
+}
+
+
+if (131071 >>> 14 !== 7) {
+ $ERROR('#480: 131071 >>> 14 === 7. Actual: ' + (131071 >>> 14));
+}
+
+
+if (262143 >>> 14 !== 15) {
+ $ERROR('#481: 262143 >>> 14 === 15. Actual: ' + (262143 >>> 14));
+}
+
+
+if (524287 >>> 14 !== 31) {
+ $ERROR('#482: 524287 >>> 14 === 31. Actual: ' + (524287 >>> 14));
+}
+
+
+if (1048575 >>> 14 !== 63) {
+ $ERROR('#483: 1048575 >>> 14 === 63. Actual: ' + (1048575 >>> 14));
+}
+
+
+if (2097151 >>> 14 !== 127) {
+ $ERROR('#484: 2097151 >>> 14 === 127. Actual: ' + (2097151 >>> 14));
+}
+
+
+if (4194303 >>> 14 !== 255) {
+ $ERROR('#485: 4194303 >>> 14 === 255. Actual: ' + (4194303 >>> 14));
+}
+
+
+if (8388607 >>> 14 !== 511) {
+ $ERROR('#486: 8388607 >>> 14 === 511. Actual: ' + (8388607 >>> 14));
+}
+
+
+if (16777215 >>> 14 !== 1023) {
+ $ERROR('#487: 16777215 >>> 14 === 1023. Actual: ' + (16777215 >>> 14));
+}
+
+
+if (33554431 >>> 14 !== 2047) {
+ $ERROR('#488: 33554431 >>> 14 === 2047. Actual: ' + (33554431 >>> 14));
+}
+
+
+if (67108863 >>> 14 !== 4095) {
+ $ERROR('#489: 67108863 >>> 14 === 4095. Actual: ' + (67108863 >>> 14));
+}
+
+
+if (134217727 >>> 14 !== 8191) {
+ $ERROR('#490: 134217727 >>> 14 === 8191. Actual: ' + (134217727 >>> 14));
+}
+
+
+if (268435455 >>> 14 !== 16383) {
+ $ERROR('#491: 268435455 >>> 14 === 16383. Actual: ' + (268435455 >>> 14));
+}
+
+
+if (536870911 >>> 14 !== 32767) {
+ $ERROR('#492: 536870911 >>> 14 === 32767. Actual: ' + (536870911 >>> 14));
+}
+
+
+if (1073741823 >>> 14 !== 65535) {
+ $ERROR('#493: 1073741823 >>> 14 === 65535. Actual: ' + (1073741823 >>> 14));
+}
+
+
+if (2147483647 >>> 14 !== 131071) {
+ $ERROR('#494: 2147483647 >>> 14 === 131071. Actual: ' + (2147483647 >>> 14));
+}
+
+
+if (4294967295 >>> 14 !== 262143) {
+ $ERROR('#495: 4294967295 >>> 14 === 262143. Actual: ' + (4294967295 >>> 14));
+}
+
+
+if (0 >>> 15 !== 0) {
+ $ERROR('#496: 0 >>> 15 === 0. Actual: ' + (0 >>> 15));
+}
+
+
+if (1 >>> 15 !== 0) {
+ $ERROR('#497: 1 >>> 15 === 0. Actual: ' + (1 >>> 15));
+}
+
+
+if (3 >>> 15 !== 0) {
+ $ERROR('#498: 3 >>> 15 === 0. Actual: ' + (3 >>> 15));
+}
+
+
+if (7 >>> 15 !== 0) {
+ $ERROR('#499: 7 >>> 15 === 0. Actual: ' + (7 >>> 15));
+}
+
+
+if (15 >>> 15 !== 0) {
+ $ERROR('#500: 15 >>> 15 === 0. Actual: ' + (15 >>> 15));
+}
+
+
+if (31 >>> 15 !== 0) {
+ $ERROR('#501: 31 >>> 15 === 0. Actual: ' + (31 >>> 15));
+}
+
+
+if (63 >>> 15 !== 0) {
+ $ERROR('#502: 63 >>> 15 === 0. Actual: ' + (63 >>> 15));
+}
+
+
+if (127 >>> 15 !== 0) {
+ $ERROR('#503: 127 >>> 15 === 0. Actual: ' + (127 >>> 15));
+}
+
+
+if (255 >>> 15 !== 0) {
+ $ERROR('#504: 255 >>> 15 === 0. Actual: ' + (255 >>> 15));
+}
+
+
+if (511 >>> 15 !== 0) {
+ $ERROR('#505: 511 >>> 15 === 0. Actual: ' + (511 >>> 15));
+}
+
+
+if (1023 >>> 15 !== 0) {
+ $ERROR('#506: 1023 >>> 15 === 0. Actual: ' + (1023 >>> 15));
+}
+
+
+if (2047 >>> 15 !== 0) {
+ $ERROR('#507: 2047 >>> 15 === 0. Actual: ' + (2047 >>> 15));
+}
+
+
+if (4095 >>> 15 !== 0) {
+ $ERROR('#508: 4095 >>> 15 === 0. Actual: ' + (4095 >>> 15));
+}
+
+
+if (8191 >>> 15 !== 0) {
+ $ERROR('#509: 8191 >>> 15 === 0. Actual: ' + (8191 >>> 15));
+}
+
+
+if (16383 >>> 15 !== 0) {
+ $ERROR('#510: 16383 >>> 15 === 0. Actual: ' + (16383 >>> 15));
+}
+
+
+if (32767 >>> 15 !== 0) {
+ $ERROR('#511: 32767 >>> 15 === 0. Actual: ' + (32767 >>> 15));
+}
+
+
+if (65535 >>> 15 !== 1) {
+ $ERROR('#512: 65535 >>> 15 === 1. Actual: ' + (65535 >>> 15));
+}
+
+
+if (131071 >>> 15 !== 3) {
+ $ERROR('#513: 131071 >>> 15 === 3. Actual: ' + (131071 >>> 15));
+}
+
+
+if (262143 >>> 15 !== 7) {
+ $ERROR('#514: 262143 >>> 15 === 7. Actual: ' + (262143 >>> 15));
+}
+
+
+if (524287 >>> 15 !== 15) {
+ $ERROR('#515: 524287 >>> 15 === 15. Actual: ' + (524287 >>> 15));
+}
+
+
+if (1048575 >>> 15 !== 31) {
+ $ERROR('#516: 1048575 >>> 15 === 31. Actual: ' + (1048575 >>> 15));
+}
+
+
+if (2097151 >>> 15 !== 63) {
+ $ERROR('#517: 2097151 >>> 15 === 63. Actual: ' + (2097151 >>> 15));
+}
+
+
+if (4194303 >>> 15 !== 127) {
+ $ERROR('#518: 4194303 >>> 15 === 127. Actual: ' + (4194303 >>> 15));
+}
+
+
+if (8388607 >>> 15 !== 255) {
+ $ERROR('#519: 8388607 >>> 15 === 255. Actual: ' + (8388607 >>> 15));
+}
+
+
+if (16777215 >>> 15 !== 511) {
+ $ERROR('#520: 16777215 >>> 15 === 511. Actual: ' + (16777215 >>> 15));
+}
+
+
+if (33554431 >>> 15 !== 1023) {
+ $ERROR('#521: 33554431 >>> 15 === 1023. Actual: ' + (33554431 >>> 15));
+}
+
+
+if (67108863 >>> 15 !== 2047) {
+ $ERROR('#522: 67108863 >>> 15 === 2047. Actual: ' + (67108863 >>> 15));
+}
+
+
+if (134217727 >>> 15 !== 4095) {
+ $ERROR('#523: 134217727 >>> 15 === 4095. Actual: ' + (134217727 >>> 15));
+}
+
+
+if (268435455 >>> 15 !== 8191) {
+ $ERROR('#524: 268435455 >>> 15 === 8191. Actual: ' + (268435455 >>> 15));
+}
+
+
+if (536870911 >>> 15 !== 16383) {
+ $ERROR('#525: 536870911 >>> 15 === 16383. Actual: ' + (536870911 >>> 15));
+}
+
+
+if (1073741823 >>> 15 !== 32767) {
+ $ERROR('#526: 1073741823 >>> 15 === 32767. Actual: ' + (1073741823 >>> 15));
+}
+
+
+if (2147483647 >>> 15 !== 65535) {
+ $ERROR('#527: 2147483647 >>> 15 === 65535. Actual: ' + (2147483647 >>> 15));
+}
+
+
+if (4294967295 >>> 15 !== 131071) {
+ $ERROR('#528: 4294967295 >>> 15 === 131071. Actual: ' + (4294967295 >>> 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T4.js
new file mode 100644
index 000000000..ae9e8f18c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T4.js
@@ -0,0 +1,2650 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A4_T4;
+ * @section: 11.7.3;
+ * @assertion: Check operator x >>> y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (0 >>> 16 !== 0) {
+ $ERROR('#529: 0 >>> 16 === 0. Actual: ' + (0 >>> 16));
+}
+
+
+if (1 >>> 16 !== 0) {
+ $ERROR('#530: 1 >>> 16 === 0. Actual: ' + (1 >>> 16));
+}
+
+
+if (3 >>> 16 !== 0) {
+ $ERROR('#531: 3 >>> 16 === 0. Actual: ' + (3 >>> 16));
+}
+
+
+if (7 >>> 16 !== 0) {
+ $ERROR('#532: 7 >>> 16 === 0. Actual: ' + (7 >>> 16));
+}
+
+
+if (15 >>> 16 !== 0) {
+ $ERROR('#533: 15 >>> 16 === 0. Actual: ' + (15 >>> 16));
+}
+
+
+if (31 >>> 16 !== 0) {
+ $ERROR('#534: 31 >>> 16 === 0. Actual: ' + (31 >>> 16));
+}
+
+
+if (63 >>> 16 !== 0) {
+ $ERROR('#535: 63 >>> 16 === 0. Actual: ' + (63 >>> 16));
+}
+
+
+if (127 >>> 16 !== 0) {
+ $ERROR('#536: 127 >>> 16 === 0. Actual: ' + (127 >>> 16));
+}
+
+
+if (255 >>> 16 !== 0) {
+ $ERROR('#537: 255 >>> 16 === 0. Actual: ' + (255 >>> 16));
+}
+
+
+if (511 >>> 16 !== 0) {
+ $ERROR('#538: 511 >>> 16 === 0. Actual: ' + (511 >>> 16));
+}
+
+
+if (1023 >>> 16 !== 0) {
+ $ERROR('#539: 1023 >>> 16 === 0. Actual: ' + (1023 >>> 16));
+}
+
+
+if (2047 >>> 16 !== 0) {
+ $ERROR('#540: 2047 >>> 16 === 0. Actual: ' + (2047 >>> 16));
+}
+
+
+if (4095 >>> 16 !== 0) {
+ $ERROR('#541: 4095 >>> 16 === 0. Actual: ' + (4095 >>> 16));
+}
+
+
+if (8191 >>> 16 !== 0) {
+ $ERROR('#542: 8191 >>> 16 === 0. Actual: ' + (8191 >>> 16));
+}
+
+
+if (16383 >>> 16 !== 0) {
+ $ERROR('#543: 16383 >>> 16 === 0. Actual: ' + (16383 >>> 16));
+}
+
+
+if (32767 >>> 16 !== 0) {
+ $ERROR('#544: 32767 >>> 16 === 0. Actual: ' + (32767 >>> 16));
+}
+
+
+if (65535 >>> 16 !== 0) {
+ $ERROR('#545: 65535 >>> 16 === 0. Actual: ' + (65535 >>> 16));
+}
+
+
+if (131071 >>> 16 !== 1) {
+ $ERROR('#546: 131071 >>> 16 === 1. Actual: ' + (131071 >>> 16));
+}
+
+
+if (262143 >>> 16 !== 3) {
+ $ERROR('#547: 262143 >>> 16 === 3. Actual: ' + (262143 >>> 16));
+}
+
+
+if (524287 >>> 16 !== 7) {
+ $ERROR('#548: 524287 >>> 16 === 7. Actual: ' + (524287 >>> 16));
+}
+
+
+if (1048575 >>> 16 !== 15) {
+ $ERROR('#549: 1048575 >>> 16 === 15. Actual: ' + (1048575 >>> 16));
+}
+
+
+if (2097151 >>> 16 !== 31) {
+ $ERROR('#550: 2097151 >>> 16 === 31. Actual: ' + (2097151 >>> 16));
+}
+
+
+if (4194303 >>> 16 !== 63) {
+ $ERROR('#551: 4194303 >>> 16 === 63. Actual: ' + (4194303 >>> 16));
+}
+
+
+if (8388607 >>> 16 !== 127) {
+ $ERROR('#552: 8388607 >>> 16 === 127. Actual: ' + (8388607 >>> 16));
+}
+
+
+if (16777215 >>> 16 !== 255) {
+ $ERROR('#553: 16777215 >>> 16 === 255. Actual: ' + (16777215 >>> 16));
+}
+
+
+if (33554431 >>> 16 !== 511) {
+ $ERROR('#554: 33554431 >>> 16 === 511. Actual: ' + (33554431 >>> 16));
+}
+
+
+if (67108863 >>> 16 !== 1023) {
+ $ERROR('#555: 67108863 >>> 16 === 1023. Actual: ' + (67108863 >>> 16));
+}
+
+
+if (134217727 >>> 16 !== 2047) {
+ $ERROR('#556: 134217727 >>> 16 === 2047. Actual: ' + (134217727 >>> 16));
+}
+
+
+if (268435455 >>> 16 !== 4095) {
+ $ERROR('#557: 268435455 >>> 16 === 4095. Actual: ' + (268435455 >>> 16));
+}
+
+
+if (536870911 >>> 16 !== 8191) {
+ $ERROR('#558: 536870911 >>> 16 === 8191. Actual: ' + (536870911 >>> 16));
+}
+
+
+if (1073741823 >>> 16 !== 16383) {
+ $ERROR('#559: 1073741823 >>> 16 === 16383. Actual: ' + (1073741823 >>> 16));
+}
+
+
+if (2147483647 >>> 16 !== 32767) {
+ $ERROR('#560: 2147483647 >>> 16 === 32767. Actual: ' + (2147483647 >>> 16));
+}
+
+
+if (4294967295 >>> 16 !== 65535) {
+ $ERROR('#561: 4294967295 >>> 16 === 65535. Actual: ' + (4294967295 >>> 16));
+}
+
+
+if (0 >>> 17 !== 0) {
+ $ERROR('#562: 0 >>> 17 === 0. Actual: ' + (0 >>> 17));
+}
+
+
+if (1 >>> 17 !== 0) {
+ $ERROR('#563: 1 >>> 17 === 0. Actual: ' + (1 >>> 17));
+}
+
+
+if (3 >>> 17 !== 0) {
+ $ERROR('#564: 3 >>> 17 === 0. Actual: ' + (3 >>> 17));
+}
+
+
+if (7 >>> 17 !== 0) {
+ $ERROR('#565: 7 >>> 17 === 0. Actual: ' + (7 >>> 17));
+}
+
+
+if (15 >>> 17 !== 0) {
+ $ERROR('#566: 15 >>> 17 === 0. Actual: ' + (15 >>> 17));
+}
+
+
+if (31 >>> 17 !== 0) {
+ $ERROR('#567: 31 >>> 17 === 0. Actual: ' + (31 >>> 17));
+}
+
+
+if (63 >>> 17 !== 0) {
+ $ERROR('#568: 63 >>> 17 === 0. Actual: ' + (63 >>> 17));
+}
+
+
+if (127 >>> 17 !== 0) {
+ $ERROR('#569: 127 >>> 17 === 0. Actual: ' + (127 >>> 17));
+}
+
+
+if (255 >>> 17 !== 0) {
+ $ERROR('#570: 255 >>> 17 === 0. Actual: ' + (255 >>> 17));
+}
+
+
+if (511 >>> 17 !== 0) {
+ $ERROR('#571: 511 >>> 17 === 0. Actual: ' + (511 >>> 17));
+}
+
+
+if (1023 >>> 17 !== 0) {
+ $ERROR('#572: 1023 >>> 17 === 0. Actual: ' + (1023 >>> 17));
+}
+
+
+if (2047 >>> 17 !== 0) {
+ $ERROR('#573: 2047 >>> 17 === 0. Actual: ' + (2047 >>> 17));
+}
+
+
+if (4095 >>> 17 !== 0) {
+ $ERROR('#574: 4095 >>> 17 === 0. Actual: ' + (4095 >>> 17));
+}
+
+
+if (8191 >>> 17 !== 0) {
+ $ERROR('#575: 8191 >>> 17 === 0. Actual: ' + (8191 >>> 17));
+}
+
+
+if (16383 >>> 17 !== 0) {
+ $ERROR('#576: 16383 >>> 17 === 0. Actual: ' + (16383 >>> 17));
+}
+
+
+if (32767 >>> 17 !== 0) {
+ $ERROR('#577: 32767 >>> 17 === 0. Actual: ' + (32767 >>> 17));
+}
+
+
+if (65535 >>> 17 !== 0) {
+ $ERROR('#578: 65535 >>> 17 === 0. Actual: ' + (65535 >>> 17));
+}
+
+
+if (131071 >>> 17 !== 0) {
+ $ERROR('#579: 131071 >>> 17 === 0. Actual: ' + (131071 >>> 17));
+}
+
+
+if (262143 >>> 17 !== 1) {
+ $ERROR('#580: 262143 >>> 17 === 1. Actual: ' + (262143 >>> 17));
+}
+
+
+if (524287 >>> 17 !== 3) {
+ $ERROR('#581: 524287 >>> 17 === 3. Actual: ' + (524287 >>> 17));
+}
+
+
+if (1048575 >>> 17 !== 7) {
+ $ERROR('#582: 1048575 >>> 17 === 7. Actual: ' + (1048575 >>> 17));
+}
+
+
+if (2097151 >>> 17 !== 15) {
+ $ERROR('#583: 2097151 >>> 17 === 15. Actual: ' + (2097151 >>> 17));
+}
+
+
+if (4194303 >>> 17 !== 31) {
+ $ERROR('#584: 4194303 >>> 17 === 31. Actual: ' + (4194303 >>> 17));
+}
+
+
+if (8388607 >>> 17 !== 63) {
+ $ERROR('#585: 8388607 >>> 17 === 63. Actual: ' + (8388607 >>> 17));
+}
+
+
+if (16777215 >>> 17 !== 127) {
+ $ERROR('#586: 16777215 >>> 17 === 127. Actual: ' + (16777215 >>> 17));
+}
+
+
+if (33554431 >>> 17 !== 255) {
+ $ERROR('#587: 33554431 >>> 17 === 255. Actual: ' + (33554431 >>> 17));
+}
+
+
+if (67108863 >>> 17 !== 511) {
+ $ERROR('#588: 67108863 >>> 17 === 511. Actual: ' + (67108863 >>> 17));
+}
+
+
+if (134217727 >>> 17 !== 1023) {
+ $ERROR('#589: 134217727 >>> 17 === 1023. Actual: ' + (134217727 >>> 17));
+}
+
+
+if (268435455 >>> 17 !== 2047) {
+ $ERROR('#590: 268435455 >>> 17 === 2047. Actual: ' + (268435455 >>> 17));
+}
+
+
+if (536870911 >>> 17 !== 4095) {
+ $ERROR('#591: 536870911 >>> 17 === 4095. Actual: ' + (536870911 >>> 17));
+}
+
+
+if (1073741823 >>> 17 !== 8191) {
+ $ERROR('#592: 1073741823 >>> 17 === 8191. Actual: ' + (1073741823 >>> 17));
+}
+
+
+if (2147483647 >>> 17 !== 16383) {
+ $ERROR('#593: 2147483647 >>> 17 === 16383. Actual: ' + (2147483647 >>> 17));
+}
+
+
+if (4294967295 >>> 17 !== 32767) {
+ $ERROR('#594: 4294967295 >>> 17 === 32767. Actual: ' + (4294967295 >>> 17));
+}
+
+
+if (0 >>> 18 !== 0) {
+ $ERROR('#595: 0 >>> 18 === 0. Actual: ' + (0 >>> 18));
+}
+
+
+if (1 >>> 18 !== 0) {
+ $ERROR('#596: 1 >>> 18 === 0. Actual: ' + (1 >>> 18));
+}
+
+
+if (3 >>> 18 !== 0) {
+ $ERROR('#597: 3 >>> 18 === 0. Actual: ' + (3 >>> 18));
+}
+
+
+if (7 >>> 18 !== 0) {
+ $ERROR('#598: 7 >>> 18 === 0. Actual: ' + (7 >>> 18));
+}
+
+
+if (15 >>> 18 !== 0) {
+ $ERROR('#599: 15 >>> 18 === 0. Actual: ' + (15 >>> 18));
+}
+
+
+if (31 >>> 18 !== 0) {
+ $ERROR('#600: 31 >>> 18 === 0. Actual: ' + (31 >>> 18));
+}
+
+
+if (63 >>> 18 !== 0) {
+ $ERROR('#601: 63 >>> 18 === 0. Actual: ' + (63 >>> 18));
+}
+
+
+if (127 >>> 18 !== 0) {
+ $ERROR('#602: 127 >>> 18 === 0. Actual: ' + (127 >>> 18));
+}
+
+
+if (255 >>> 18 !== 0) {
+ $ERROR('#603: 255 >>> 18 === 0. Actual: ' + (255 >>> 18));
+}
+
+
+if (511 >>> 18 !== 0) {
+ $ERROR('#604: 511 >>> 18 === 0. Actual: ' + (511 >>> 18));
+}
+
+
+if (1023 >>> 18 !== 0) {
+ $ERROR('#605: 1023 >>> 18 === 0. Actual: ' + (1023 >>> 18));
+}
+
+
+if (2047 >>> 18 !== 0) {
+ $ERROR('#606: 2047 >>> 18 === 0. Actual: ' + (2047 >>> 18));
+}
+
+
+if (4095 >>> 18 !== 0) {
+ $ERROR('#607: 4095 >>> 18 === 0. Actual: ' + (4095 >>> 18));
+}
+
+
+if (8191 >>> 18 !== 0) {
+ $ERROR('#608: 8191 >>> 18 === 0. Actual: ' + (8191 >>> 18));
+}
+
+
+if (16383 >>> 18 !== 0) {
+ $ERROR('#609: 16383 >>> 18 === 0. Actual: ' + (16383 >>> 18));
+}
+
+
+if (32767 >>> 18 !== 0) {
+ $ERROR('#610: 32767 >>> 18 === 0. Actual: ' + (32767 >>> 18));
+}
+
+
+if (65535 >>> 18 !== 0) {
+ $ERROR('#611: 65535 >>> 18 === 0. Actual: ' + (65535 >>> 18));
+}
+
+
+if (131071 >>> 18 !== 0) {
+ $ERROR('#612: 131071 >>> 18 === 0. Actual: ' + (131071 >>> 18));
+}
+
+
+if (262143 >>> 18 !== 0) {
+ $ERROR('#613: 262143 >>> 18 === 0. Actual: ' + (262143 >>> 18));
+}
+
+
+if (524287 >>> 18 !== 1) {
+ $ERROR('#614: 524287 >>> 18 === 1. Actual: ' + (524287 >>> 18));
+}
+
+
+if (1048575 >>> 18 !== 3) {
+ $ERROR('#615: 1048575 >>> 18 === 3. Actual: ' + (1048575 >>> 18));
+}
+
+
+if (2097151 >>> 18 !== 7) {
+ $ERROR('#616: 2097151 >>> 18 === 7. Actual: ' + (2097151 >>> 18));
+}
+
+
+if (4194303 >>> 18 !== 15) {
+ $ERROR('#617: 4194303 >>> 18 === 15. Actual: ' + (4194303 >>> 18));
+}
+
+
+if (8388607 >>> 18 !== 31) {
+ $ERROR('#618: 8388607 >>> 18 === 31. Actual: ' + (8388607 >>> 18));
+}
+
+
+if (16777215 >>> 18 !== 63) {
+ $ERROR('#619: 16777215 >>> 18 === 63. Actual: ' + (16777215 >>> 18));
+}
+
+
+if (33554431 >>> 18 !== 127) {
+ $ERROR('#620: 33554431 >>> 18 === 127. Actual: ' + (33554431 >>> 18));
+}
+
+
+if (67108863 >>> 18 !== 255) {
+ $ERROR('#621: 67108863 >>> 18 === 255. Actual: ' + (67108863 >>> 18));
+}
+
+
+if (134217727 >>> 18 !== 511) {
+ $ERROR('#622: 134217727 >>> 18 === 511. Actual: ' + (134217727 >>> 18));
+}
+
+
+if (268435455 >>> 18 !== 1023) {
+ $ERROR('#623: 268435455 >>> 18 === 1023. Actual: ' + (268435455 >>> 18));
+}
+
+
+if (536870911 >>> 18 !== 2047) {
+ $ERROR('#624: 536870911 >>> 18 === 2047. Actual: ' + (536870911 >>> 18));
+}
+
+
+if (1073741823 >>> 18 !== 4095) {
+ $ERROR('#625: 1073741823 >>> 18 === 4095. Actual: ' + (1073741823 >>> 18));
+}
+
+
+if (2147483647 >>> 18 !== 8191) {
+ $ERROR('#626: 2147483647 >>> 18 === 8191. Actual: ' + (2147483647 >>> 18));
+}
+
+
+if (4294967295 >>> 18 !== 16383) {
+ $ERROR('#627: 4294967295 >>> 18 === 16383. Actual: ' + (4294967295 >>> 18));
+}
+
+
+if (0 >>> 19 !== 0) {
+ $ERROR('#628: 0 >>> 19 === 0. Actual: ' + (0 >>> 19));
+}
+
+
+if (1 >>> 19 !== 0) {
+ $ERROR('#629: 1 >>> 19 === 0. Actual: ' + (1 >>> 19));
+}
+
+
+if (3 >>> 19 !== 0) {
+ $ERROR('#630: 3 >>> 19 === 0. Actual: ' + (3 >>> 19));
+}
+
+
+if (7 >>> 19 !== 0) {
+ $ERROR('#631: 7 >>> 19 === 0. Actual: ' + (7 >>> 19));
+}
+
+
+if (15 >>> 19 !== 0) {
+ $ERROR('#632: 15 >>> 19 === 0. Actual: ' + (15 >>> 19));
+}
+
+
+if (31 >>> 19 !== 0) {
+ $ERROR('#633: 31 >>> 19 === 0. Actual: ' + (31 >>> 19));
+}
+
+
+if (63 >>> 19 !== 0) {
+ $ERROR('#634: 63 >>> 19 === 0. Actual: ' + (63 >>> 19));
+}
+
+
+if (127 >>> 19 !== 0) {
+ $ERROR('#635: 127 >>> 19 === 0. Actual: ' + (127 >>> 19));
+}
+
+
+if (255 >>> 19 !== 0) {
+ $ERROR('#636: 255 >>> 19 === 0. Actual: ' + (255 >>> 19));
+}
+
+
+if (511 >>> 19 !== 0) {
+ $ERROR('#637: 511 >>> 19 === 0. Actual: ' + (511 >>> 19));
+}
+
+
+if (1023 >>> 19 !== 0) {
+ $ERROR('#638: 1023 >>> 19 === 0. Actual: ' + (1023 >>> 19));
+}
+
+
+if (2047 >>> 19 !== 0) {
+ $ERROR('#639: 2047 >>> 19 === 0. Actual: ' + (2047 >>> 19));
+}
+
+
+if (4095 >>> 19 !== 0) {
+ $ERROR('#640: 4095 >>> 19 === 0. Actual: ' + (4095 >>> 19));
+}
+
+
+if (8191 >>> 19 !== 0) {
+ $ERROR('#641: 8191 >>> 19 === 0. Actual: ' + (8191 >>> 19));
+}
+
+
+if (16383 >>> 19 !== 0) {
+ $ERROR('#642: 16383 >>> 19 === 0. Actual: ' + (16383 >>> 19));
+}
+
+
+if (32767 >>> 19 !== 0) {
+ $ERROR('#643: 32767 >>> 19 === 0. Actual: ' + (32767 >>> 19));
+}
+
+
+if (65535 >>> 19 !== 0) {
+ $ERROR('#644: 65535 >>> 19 === 0. Actual: ' + (65535 >>> 19));
+}
+
+
+if (131071 >>> 19 !== 0) {
+ $ERROR('#645: 131071 >>> 19 === 0. Actual: ' + (131071 >>> 19));
+}
+
+
+if (262143 >>> 19 !== 0) {
+ $ERROR('#646: 262143 >>> 19 === 0. Actual: ' + (262143 >>> 19));
+}
+
+
+if (524287 >>> 19 !== 0) {
+ $ERROR('#647: 524287 >>> 19 === 0. Actual: ' + (524287 >>> 19));
+}
+
+
+if (1048575 >>> 19 !== 1) {
+ $ERROR('#648: 1048575 >>> 19 === 1. Actual: ' + (1048575 >>> 19));
+}
+
+
+if (2097151 >>> 19 !== 3) {
+ $ERROR('#649: 2097151 >>> 19 === 3. Actual: ' + (2097151 >>> 19));
+}
+
+
+if (4194303 >>> 19 !== 7) {
+ $ERROR('#650: 4194303 >>> 19 === 7. Actual: ' + (4194303 >>> 19));
+}
+
+
+if (8388607 >>> 19 !== 15) {
+ $ERROR('#651: 8388607 >>> 19 === 15. Actual: ' + (8388607 >>> 19));
+}
+
+
+if (16777215 >>> 19 !== 31) {
+ $ERROR('#652: 16777215 >>> 19 === 31. Actual: ' + (16777215 >>> 19));
+}
+
+
+if (33554431 >>> 19 !== 63) {
+ $ERROR('#653: 33554431 >>> 19 === 63. Actual: ' + (33554431 >>> 19));
+}
+
+
+if (67108863 >>> 19 !== 127) {
+ $ERROR('#654: 67108863 >>> 19 === 127. Actual: ' + (67108863 >>> 19));
+}
+
+
+if (134217727 >>> 19 !== 255) {
+ $ERROR('#655: 134217727 >>> 19 === 255. Actual: ' + (134217727 >>> 19));
+}
+
+
+if (268435455 >>> 19 !== 511) {
+ $ERROR('#656: 268435455 >>> 19 === 511. Actual: ' + (268435455 >>> 19));
+}
+
+
+if (536870911 >>> 19 !== 1023) {
+ $ERROR('#657: 536870911 >>> 19 === 1023. Actual: ' + (536870911 >>> 19));
+}
+
+
+if (1073741823 >>> 19 !== 2047) {
+ $ERROR('#658: 1073741823 >>> 19 === 2047. Actual: ' + (1073741823 >>> 19));
+}
+
+
+if (2147483647 >>> 19 !== 4095) {
+ $ERROR('#659: 2147483647 >>> 19 === 4095. Actual: ' + (2147483647 >>> 19));
+}
+
+
+if (4294967295 >>> 19 !== 8191) {
+ $ERROR('#660: 4294967295 >>> 19 === 8191. Actual: ' + (4294967295 >>> 19));
+}
+
+
+if (0 >>> 20 !== 0) {
+ $ERROR('#661: 0 >>> 20 === 0. Actual: ' + (0 >>> 20));
+}
+
+
+if (1 >>> 20 !== 0) {
+ $ERROR('#662: 1 >>> 20 === 0. Actual: ' + (1 >>> 20));
+}
+
+
+if (3 >>> 20 !== 0) {
+ $ERROR('#663: 3 >>> 20 === 0. Actual: ' + (3 >>> 20));
+}
+
+
+if (7 >>> 20 !== 0) {
+ $ERROR('#664: 7 >>> 20 === 0. Actual: ' + (7 >>> 20));
+}
+
+
+if (15 >>> 20 !== 0) {
+ $ERROR('#665: 15 >>> 20 === 0. Actual: ' + (15 >>> 20));
+}
+
+
+if (31 >>> 20 !== 0) {
+ $ERROR('#666: 31 >>> 20 === 0. Actual: ' + (31 >>> 20));
+}
+
+
+if (63 >>> 20 !== 0) {
+ $ERROR('#667: 63 >>> 20 === 0. Actual: ' + (63 >>> 20));
+}
+
+
+if (127 >>> 20 !== 0) {
+ $ERROR('#668: 127 >>> 20 === 0. Actual: ' + (127 >>> 20));
+}
+
+
+if (255 >>> 20 !== 0) {
+ $ERROR('#669: 255 >>> 20 === 0. Actual: ' + (255 >>> 20));
+}
+
+
+if (511 >>> 20 !== 0) {
+ $ERROR('#670: 511 >>> 20 === 0. Actual: ' + (511 >>> 20));
+}
+
+
+if (1023 >>> 20 !== 0) {
+ $ERROR('#671: 1023 >>> 20 === 0. Actual: ' + (1023 >>> 20));
+}
+
+
+if (2047 >>> 20 !== 0) {
+ $ERROR('#672: 2047 >>> 20 === 0. Actual: ' + (2047 >>> 20));
+}
+
+
+if (4095 >>> 20 !== 0) {
+ $ERROR('#673: 4095 >>> 20 === 0. Actual: ' + (4095 >>> 20));
+}
+
+
+if (8191 >>> 20 !== 0) {
+ $ERROR('#674: 8191 >>> 20 === 0. Actual: ' + (8191 >>> 20));
+}
+
+
+if (16383 >>> 20 !== 0) {
+ $ERROR('#675: 16383 >>> 20 === 0. Actual: ' + (16383 >>> 20));
+}
+
+
+if (32767 >>> 20 !== 0) {
+ $ERROR('#676: 32767 >>> 20 === 0. Actual: ' + (32767 >>> 20));
+}
+
+
+if (65535 >>> 20 !== 0) {
+ $ERROR('#677: 65535 >>> 20 === 0. Actual: ' + (65535 >>> 20));
+}
+
+
+if (131071 >>> 20 !== 0) {
+ $ERROR('#678: 131071 >>> 20 === 0. Actual: ' + (131071 >>> 20));
+}
+
+
+if (262143 >>> 20 !== 0) {
+ $ERROR('#679: 262143 >>> 20 === 0. Actual: ' + (262143 >>> 20));
+}
+
+
+if (524287 >>> 20 !== 0) {
+ $ERROR('#680: 524287 >>> 20 === 0. Actual: ' + (524287 >>> 20));
+}
+
+
+if (1048575 >>> 20 !== 0) {
+ $ERROR('#681: 1048575 >>> 20 === 0. Actual: ' + (1048575 >>> 20));
+}
+
+
+if (2097151 >>> 20 !== 1) {
+ $ERROR('#682: 2097151 >>> 20 === 1. Actual: ' + (2097151 >>> 20));
+}
+
+
+if (4194303 >>> 20 !== 3) {
+ $ERROR('#683: 4194303 >>> 20 === 3. Actual: ' + (4194303 >>> 20));
+}
+
+
+if (8388607 >>> 20 !== 7) {
+ $ERROR('#684: 8388607 >>> 20 === 7. Actual: ' + (8388607 >>> 20));
+}
+
+
+if (16777215 >>> 20 !== 15) {
+ $ERROR('#685: 16777215 >>> 20 === 15. Actual: ' + (16777215 >>> 20));
+}
+
+
+if (33554431 >>> 20 !== 31) {
+ $ERROR('#686: 33554431 >>> 20 === 31. Actual: ' + (33554431 >>> 20));
+}
+
+
+if (67108863 >>> 20 !== 63) {
+ $ERROR('#687: 67108863 >>> 20 === 63. Actual: ' + (67108863 >>> 20));
+}
+
+
+if (134217727 >>> 20 !== 127) {
+ $ERROR('#688: 134217727 >>> 20 === 127. Actual: ' + (134217727 >>> 20));
+}
+
+
+if (268435455 >>> 20 !== 255) {
+ $ERROR('#689: 268435455 >>> 20 === 255. Actual: ' + (268435455 >>> 20));
+}
+
+
+if (536870911 >>> 20 !== 511) {
+ $ERROR('#690: 536870911 >>> 20 === 511. Actual: ' + (536870911 >>> 20));
+}
+
+
+if (1073741823 >>> 20 !== 1023) {
+ $ERROR('#691: 1073741823 >>> 20 === 1023. Actual: ' + (1073741823 >>> 20));
+}
+
+
+if (2147483647 >>> 20 !== 2047) {
+ $ERROR('#692: 2147483647 >>> 20 === 2047. Actual: ' + (2147483647 >>> 20));
+}
+
+
+if (4294967295 >>> 20 !== 4095) {
+ $ERROR('#693: 4294967295 >>> 20 === 4095. Actual: ' + (4294967295 >>> 20));
+}
+
+
+if (0 >>> 21 !== 0) {
+ $ERROR('#694: 0 >>> 21 === 0. Actual: ' + (0 >>> 21));
+}
+
+
+if (1 >>> 21 !== 0) {
+ $ERROR('#695: 1 >>> 21 === 0. Actual: ' + (1 >>> 21));
+}
+
+
+if (3 >>> 21 !== 0) {
+ $ERROR('#696: 3 >>> 21 === 0. Actual: ' + (3 >>> 21));
+}
+
+
+if (7 >>> 21 !== 0) {
+ $ERROR('#697: 7 >>> 21 === 0. Actual: ' + (7 >>> 21));
+}
+
+
+if (15 >>> 21 !== 0) {
+ $ERROR('#698: 15 >>> 21 === 0. Actual: ' + (15 >>> 21));
+}
+
+
+if (31 >>> 21 !== 0) {
+ $ERROR('#699: 31 >>> 21 === 0. Actual: ' + (31 >>> 21));
+}
+
+
+if (63 >>> 21 !== 0) {
+ $ERROR('#700: 63 >>> 21 === 0. Actual: ' + (63 >>> 21));
+}
+
+
+if (127 >>> 21 !== 0) {
+ $ERROR('#701: 127 >>> 21 === 0. Actual: ' + (127 >>> 21));
+}
+
+
+if (255 >>> 21 !== 0) {
+ $ERROR('#702: 255 >>> 21 === 0. Actual: ' + (255 >>> 21));
+}
+
+
+if (511 >>> 21 !== 0) {
+ $ERROR('#703: 511 >>> 21 === 0. Actual: ' + (511 >>> 21));
+}
+
+
+if (1023 >>> 21 !== 0) {
+ $ERROR('#704: 1023 >>> 21 === 0. Actual: ' + (1023 >>> 21));
+}
+
+
+if (2047 >>> 21 !== 0) {
+ $ERROR('#705: 2047 >>> 21 === 0. Actual: ' + (2047 >>> 21));
+}
+
+
+if (4095 >>> 21 !== 0) {
+ $ERROR('#706: 4095 >>> 21 === 0. Actual: ' + (4095 >>> 21));
+}
+
+
+if (8191 >>> 21 !== 0) {
+ $ERROR('#707: 8191 >>> 21 === 0. Actual: ' + (8191 >>> 21));
+}
+
+
+if (16383 >>> 21 !== 0) {
+ $ERROR('#708: 16383 >>> 21 === 0. Actual: ' + (16383 >>> 21));
+}
+
+
+if (32767 >>> 21 !== 0) {
+ $ERROR('#709: 32767 >>> 21 === 0. Actual: ' + (32767 >>> 21));
+}
+
+
+if (65535 >>> 21 !== 0) {
+ $ERROR('#710: 65535 >>> 21 === 0. Actual: ' + (65535 >>> 21));
+}
+
+
+if (131071 >>> 21 !== 0) {
+ $ERROR('#711: 131071 >>> 21 === 0. Actual: ' + (131071 >>> 21));
+}
+
+
+if (262143 >>> 21 !== 0) {
+ $ERROR('#712: 262143 >>> 21 === 0. Actual: ' + (262143 >>> 21));
+}
+
+
+if (524287 >>> 21 !== 0) {
+ $ERROR('#713: 524287 >>> 21 === 0. Actual: ' + (524287 >>> 21));
+}
+
+
+if (1048575 >>> 21 !== 0) {
+ $ERROR('#714: 1048575 >>> 21 === 0. Actual: ' + (1048575 >>> 21));
+}
+
+
+if (2097151 >>> 21 !== 0) {
+ $ERROR('#715: 2097151 >>> 21 === 0. Actual: ' + (2097151 >>> 21));
+}
+
+
+if (4194303 >>> 21 !== 1) {
+ $ERROR('#716: 4194303 >>> 21 === 1. Actual: ' + (4194303 >>> 21));
+}
+
+
+if (8388607 >>> 21 !== 3) {
+ $ERROR('#717: 8388607 >>> 21 === 3. Actual: ' + (8388607 >>> 21));
+}
+
+
+if (16777215 >>> 21 !== 7) {
+ $ERROR('#718: 16777215 >>> 21 === 7. Actual: ' + (16777215 >>> 21));
+}
+
+
+if (33554431 >>> 21 !== 15) {
+ $ERROR('#719: 33554431 >>> 21 === 15. Actual: ' + (33554431 >>> 21));
+}
+
+
+if (67108863 >>> 21 !== 31) {
+ $ERROR('#720: 67108863 >>> 21 === 31. Actual: ' + (67108863 >>> 21));
+}
+
+
+if (134217727 >>> 21 !== 63) {
+ $ERROR('#721: 134217727 >>> 21 === 63. Actual: ' + (134217727 >>> 21));
+}
+
+
+if (268435455 >>> 21 !== 127) {
+ $ERROR('#722: 268435455 >>> 21 === 127. Actual: ' + (268435455 >>> 21));
+}
+
+
+if (536870911 >>> 21 !== 255) {
+ $ERROR('#723: 536870911 >>> 21 === 255. Actual: ' + (536870911 >>> 21));
+}
+
+
+if (1073741823 >>> 21 !== 511) {
+ $ERROR('#724: 1073741823 >>> 21 === 511. Actual: ' + (1073741823 >>> 21));
+}
+
+
+if (2147483647 >>> 21 !== 1023) {
+ $ERROR('#725: 2147483647 >>> 21 === 1023. Actual: ' + (2147483647 >>> 21));
+}
+
+
+if (4294967295 >>> 21 !== 2047) {
+ $ERROR('#726: 4294967295 >>> 21 === 2047. Actual: ' + (4294967295 >>> 21));
+}
+
+
+if (0 >>> 22 !== 0) {
+ $ERROR('#727: 0 >>> 22 === 0. Actual: ' + (0 >>> 22));
+}
+
+
+if (1 >>> 22 !== 0) {
+ $ERROR('#728: 1 >>> 22 === 0. Actual: ' + (1 >>> 22));
+}
+
+
+if (3 >>> 22 !== 0) {
+ $ERROR('#729: 3 >>> 22 === 0. Actual: ' + (3 >>> 22));
+}
+
+
+if (7 >>> 22 !== 0) {
+ $ERROR('#730: 7 >>> 22 === 0. Actual: ' + (7 >>> 22));
+}
+
+
+if (15 >>> 22 !== 0) {
+ $ERROR('#731: 15 >>> 22 === 0. Actual: ' + (15 >>> 22));
+}
+
+
+if (31 >>> 22 !== 0) {
+ $ERROR('#732: 31 >>> 22 === 0. Actual: ' + (31 >>> 22));
+}
+
+
+if (63 >>> 22 !== 0) {
+ $ERROR('#733: 63 >>> 22 === 0. Actual: ' + (63 >>> 22));
+}
+
+
+if (127 >>> 22 !== 0) {
+ $ERROR('#734: 127 >>> 22 === 0. Actual: ' + (127 >>> 22));
+}
+
+
+if (255 >>> 22 !== 0) {
+ $ERROR('#735: 255 >>> 22 === 0. Actual: ' + (255 >>> 22));
+}
+
+
+if (511 >>> 22 !== 0) {
+ $ERROR('#736: 511 >>> 22 === 0. Actual: ' + (511 >>> 22));
+}
+
+
+if (1023 >>> 22 !== 0) {
+ $ERROR('#737: 1023 >>> 22 === 0. Actual: ' + (1023 >>> 22));
+}
+
+
+if (2047 >>> 22 !== 0) {
+ $ERROR('#738: 2047 >>> 22 === 0. Actual: ' + (2047 >>> 22));
+}
+
+
+if (4095 >>> 22 !== 0) {
+ $ERROR('#739: 4095 >>> 22 === 0. Actual: ' + (4095 >>> 22));
+}
+
+
+if (8191 >>> 22 !== 0) {
+ $ERROR('#740: 8191 >>> 22 === 0. Actual: ' + (8191 >>> 22));
+}
+
+
+if (16383 >>> 22 !== 0) {
+ $ERROR('#741: 16383 >>> 22 === 0. Actual: ' + (16383 >>> 22));
+}
+
+
+if (32767 >>> 22 !== 0) {
+ $ERROR('#742: 32767 >>> 22 === 0. Actual: ' + (32767 >>> 22));
+}
+
+
+if (65535 >>> 22 !== 0) {
+ $ERROR('#743: 65535 >>> 22 === 0. Actual: ' + (65535 >>> 22));
+}
+
+
+if (131071 >>> 22 !== 0) {
+ $ERROR('#744: 131071 >>> 22 === 0. Actual: ' + (131071 >>> 22));
+}
+
+
+if (262143 >>> 22 !== 0) {
+ $ERROR('#745: 262143 >>> 22 === 0. Actual: ' + (262143 >>> 22));
+}
+
+
+if (524287 >>> 22 !== 0) {
+ $ERROR('#746: 524287 >>> 22 === 0. Actual: ' + (524287 >>> 22));
+}
+
+
+if (1048575 >>> 22 !== 0) {
+ $ERROR('#747: 1048575 >>> 22 === 0. Actual: ' + (1048575 >>> 22));
+}
+
+
+if (2097151 >>> 22 !== 0) {
+ $ERROR('#748: 2097151 >>> 22 === 0. Actual: ' + (2097151 >>> 22));
+}
+
+
+if (4194303 >>> 22 !== 0) {
+ $ERROR('#749: 4194303 >>> 22 === 0. Actual: ' + (4194303 >>> 22));
+}
+
+
+if (8388607 >>> 22 !== 1) {
+ $ERROR('#750: 8388607 >>> 22 === 1. Actual: ' + (8388607 >>> 22));
+}
+
+
+if (16777215 >>> 22 !== 3) {
+ $ERROR('#751: 16777215 >>> 22 === 3. Actual: ' + (16777215 >>> 22));
+}
+
+
+if (33554431 >>> 22 !== 7) {
+ $ERROR('#752: 33554431 >>> 22 === 7. Actual: ' + (33554431 >>> 22));
+}
+
+
+if (67108863 >>> 22 !== 15) {
+ $ERROR('#753: 67108863 >>> 22 === 15. Actual: ' + (67108863 >>> 22));
+}
+
+
+if (134217727 >>> 22 !== 31) {
+ $ERROR('#754: 134217727 >>> 22 === 31. Actual: ' + (134217727 >>> 22));
+}
+
+
+if (268435455 >>> 22 !== 63) {
+ $ERROR('#755: 268435455 >>> 22 === 63. Actual: ' + (268435455 >>> 22));
+}
+
+
+if (536870911 >>> 22 !== 127) {
+ $ERROR('#756: 536870911 >>> 22 === 127. Actual: ' + (536870911 >>> 22));
+}
+
+
+if (1073741823 >>> 22 !== 255) {
+ $ERROR('#757: 1073741823 >>> 22 === 255. Actual: ' + (1073741823 >>> 22));
+}
+
+
+if (2147483647 >>> 22 !== 511) {
+ $ERROR('#758: 2147483647 >>> 22 === 511. Actual: ' + (2147483647 >>> 22));
+}
+
+
+if (4294967295 >>> 22 !== 1023) {
+ $ERROR('#759: 4294967295 >>> 22 === 1023. Actual: ' + (4294967295 >>> 22));
+}
+
+
+if (0 >>> 23 !== 0) {
+ $ERROR('#760: 0 >>> 23 === 0. Actual: ' + (0 >>> 23));
+}
+
+
+if (1 >>> 23 !== 0) {
+ $ERROR('#761: 1 >>> 23 === 0. Actual: ' + (1 >>> 23));
+}
+
+
+if (3 >>> 23 !== 0) {
+ $ERROR('#762: 3 >>> 23 === 0. Actual: ' + (3 >>> 23));
+}
+
+
+if (7 >>> 23 !== 0) {
+ $ERROR('#763: 7 >>> 23 === 0. Actual: ' + (7 >>> 23));
+}
+
+
+if (15 >>> 23 !== 0) {
+ $ERROR('#764: 15 >>> 23 === 0. Actual: ' + (15 >>> 23));
+}
+
+
+if (31 >>> 23 !== 0) {
+ $ERROR('#765: 31 >>> 23 === 0. Actual: ' + (31 >>> 23));
+}
+
+
+if (63 >>> 23 !== 0) {
+ $ERROR('#766: 63 >>> 23 === 0. Actual: ' + (63 >>> 23));
+}
+
+
+if (127 >>> 23 !== 0) {
+ $ERROR('#767: 127 >>> 23 === 0. Actual: ' + (127 >>> 23));
+}
+
+
+if (255 >>> 23 !== 0) {
+ $ERROR('#768: 255 >>> 23 === 0. Actual: ' + (255 >>> 23));
+}
+
+
+if (511 >>> 23 !== 0) {
+ $ERROR('#769: 511 >>> 23 === 0. Actual: ' + (511 >>> 23));
+}
+
+
+if (1023 >>> 23 !== 0) {
+ $ERROR('#770: 1023 >>> 23 === 0. Actual: ' + (1023 >>> 23));
+}
+
+
+if (2047 >>> 23 !== 0) {
+ $ERROR('#771: 2047 >>> 23 === 0. Actual: ' + (2047 >>> 23));
+}
+
+
+if (4095 >>> 23 !== 0) {
+ $ERROR('#772: 4095 >>> 23 === 0. Actual: ' + (4095 >>> 23));
+}
+
+
+if (8191 >>> 23 !== 0) {
+ $ERROR('#773: 8191 >>> 23 === 0. Actual: ' + (8191 >>> 23));
+}
+
+
+if (16383 >>> 23 !== 0) {
+ $ERROR('#774: 16383 >>> 23 === 0. Actual: ' + (16383 >>> 23));
+}
+
+
+if (32767 >>> 23 !== 0) {
+ $ERROR('#775: 32767 >>> 23 === 0. Actual: ' + (32767 >>> 23));
+}
+
+
+if (65535 >>> 23 !== 0) {
+ $ERROR('#776: 65535 >>> 23 === 0. Actual: ' + (65535 >>> 23));
+}
+
+
+if (131071 >>> 23 !== 0) {
+ $ERROR('#777: 131071 >>> 23 === 0. Actual: ' + (131071 >>> 23));
+}
+
+
+if (262143 >>> 23 !== 0) {
+ $ERROR('#778: 262143 >>> 23 === 0. Actual: ' + (262143 >>> 23));
+}
+
+
+if (524287 >>> 23 !== 0) {
+ $ERROR('#779: 524287 >>> 23 === 0. Actual: ' + (524287 >>> 23));
+}
+
+
+if (1048575 >>> 23 !== 0) {
+ $ERROR('#780: 1048575 >>> 23 === 0. Actual: ' + (1048575 >>> 23));
+}
+
+
+if (2097151 >>> 23 !== 0) {
+ $ERROR('#781: 2097151 >>> 23 === 0. Actual: ' + (2097151 >>> 23));
+}
+
+
+if (4194303 >>> 23 !== 0) {
+ $ERROR('#782: 4194303 >>> 23 === 0. Actual: ' + (4194303 >>> 23));
+}
+
+
+if (8388607 >>> 23 !== 0) {
+ $ERROR('#783: 8388607 >>> 23 === 0. Actual: ' + (8388607 >>> 23));
+}
+
+
+if (16777215 >>> 23 !== 1) {
+ $ERROR('#784: 16777215 >>> 23 === 1. Actual: ' + (16777215 >>> 23));
+}
+
+
+if (33554431 >>> 23 !== 3) {
+ $ERROR('#785: 33554431 >>> 23 === 3. Actual: ' + (33554431 >>> 23));
+}
+
+
+if (67108863 >>> 23 !== 7) {
+ $ERROR('#786: 67108863 >>> 23 === 7. Actual: ' + (67108863 >>> 23));
+}
+
+
+if (134217727 >>> 23 !== 15) {
+ $ERROR('#787: 134217727 >>> 23 === 15. Actual: ' + (134217727 >>> 23));
+}
+
+
+if (268435455 >>> 23 !== 31) {
+ $ERROR('#788: 268435455 >>> 23 === 31. Actual: ' + (268435455 >>> 23));
+}
+
+
+if (536870911 >>> 23 !== 63) {
+ $ERROR('#789: 536870911 >>> 23 === 63. Actual: ' + (536870911 >>> 23));
+}
+
+
+if (1073741823 >>> 23 !== 127) {
+ $ERROR('#790: 1073741823 >>> 23 === 127. Actual: ' + (1073741823 >>> 23));
+}
+
+
+if (2147483647 >>> 23 !== 255) {
+ $ERROR('#791: 2147483647 >>> 23 === 255. Actual: ' + (2147483647 >>> 23));
+}
+
+
+if (4294967295 >>> 23 !== 511) {
+ $ERROR('#792: 4294967295 >>> 23 === 511. Actual: ' + (4294967295 >>> 23));
+}
+
+
+if (0 >>> 24 !== 0) {
+ $ERROR('#793: 0 >>> 24 === 0. Actual: ' + (0 >>> 24));
+}
+
+
+if (1 >>> 24 !== 0) {
+ $ERROR('#794: 1 >>> 24 === 0. Actual: ' + (1 >>> 24));
+}
+
+
+if (3 >>> 24 !== 0) {
+ $ERROR('#795: 3 >>> 24 === 0. Actual: ' + (3 >>> 24));
+}
+
+
+if (7 >>> 24 !== 0) {
+ $ERROR('#796: 7 >>> 24 === 0. Actual: ' + (7 >>> 24));
+}
+
+
+if (15 >>> 24 !== 0) {
+ $ERROR('#797: 15 >>> 24 === 0. Actual: ' + (15 >>> 24));
+}
+
+
+if (31 >>> 24 !== 0) {
+ $ERROR('#798: 31 >>> 24 === 0. Actual: ' + (31 >>> 24));
+}
+
+
+if (63 >>> 24 !== 0) {
+ $ERROR('#799: 63 >>> 24 === 0. Actual: ' + (63 >>> 24));
+}
+
+
+if (127 >>> 24 !== 0) {
+ $ERROR('#800: 127 >>> 24 === 0. Actual: ' + (127 >>> 24));
+}
+
+
+if (255 >>> 24 !== 0) {
+ $ERROR('#801: 255 >>> 24 === 0. Actual: ' + (255 >>> 24));
+}
+
+
+if (511 >>> 24 !== 0) {
+ $ERROR('#802: 511 >>> 24 === 0. Actual: ' + (511 >>> 24));
+}
+
+
+if (1023 >>> 24 !== 0) {
+ $ERROR('#803: 1023 >>> 24 === 0. Actual: ' + (1023 >>> 24));
+}
+
+
+if (2047 >>> 24 !== 0) {
+ $ERROR('#804: 2047 >>> 24 === 0. Actual: ' + (2047 >>> 24));
+}
+
+
+if (4095 >>> 24 !== 0) {
+ $ERROR('#805: 4095 >>> 24 === 0. Actual: ' + (4095 >>> 24));
+}
+
+
+if (8191 >>> 24 !== 0) {
+ $ERROR('#806: 8191 >>> 24 === 0. Actual: ' + (8191 >>> 24));
+}
+
+
+if (16383 >>> 24 !== 0) {
+ $ERROR('#807: 16383 >>> 24 === 0. Actual: ' + (16383 >>> 24));
+}
+
+
+if (32767 >>> 24 !== 0) {
+ $ERROR('#808: 32767 >>> 24 === 0. Actual: ' + (32767 >>> 24));
+}
+
+
+if (65535 >>> 24 !== 0) {
+ $ERROR('#809: 65535 >>> 24 === 0. Actual: ' + (65535 >>> 24));
+}
+
+
+if (131071 >>> 24 !== 0) {
+ $ERROR('#810: 131071 >>> 24 === 0. Actual: ' + (131071 >>> 24));
+}
+
+
+if (262143 >>> 24 !== 0) {
+ $ERROR('#811: 262143 >>> 24 === 0. Actual: ' + (262143 >>> 24));
+}
+
+
+if (524287 >>> 24 !== 0) {
+ $ERROR('#812: 524287 >>> 24 === 0. Actual: ' + (524287 >>> 24));
+}
+
+
+if (1048575 >>> 24 !== 0) {
+ $ERROR('#813: 1048575 >>> 24 === 0. Actual: ' + (1048575 >>> 24));
+}
+
+
+if (2097151 >>> 24 !== 0) {
+ $ERROR('#814: 2097151 >>> 24 === 0. Actual: ' + (2097151 >>> 24));
+}
+
+
+if (4194303 >>> 24 !== 0) {
+ $ERROR('#815: 4194303 >>> 24 === 0. Actual: ' + (4194303 >>> 24));
+}
+
+
+if (8388607 >>> 24 !== 0) {
+ $ERROR('#816: 8388607 >>> 24 === 0. Actual: ' + (8388607 >>> 24));
+}
+
+
+if (16777215 >>> 24 !== 0) {
+ $ERROR('#817: 16777215 >>> 24 === 0. Actual: ' + (16777215 >>> 24));
+}
+
+
+if (33554431 >>> 24 !== 1) {
+ $ERROR('#818: 33554431 >>> 24 === 1. Actual: ' + (33554431 >>> 24));
+}
+
+
+if (67108863 >>> 24 !== 3) {
+ $ERROR('#819: 67108863 >>> 24 === 3. Actual: ' + (67108863 >>> 24));
+}
+
+
+if (134217727 >>> 24 !== 7) {
+ $ERROR('#820: 134217727 >>> 24 === 7. Actual: ' + (134217727 >>> 24));
+}
+
+
+if (268435455 >>> 24 !== 15) {
+ $ERROR('#821: 268435455 >>> 24 === 15. Actual: ' + (268435455 >>> 24));
+}
+
+
+if (536870911 >>> 24 !== 31) {
+ $ERROR('#822: 536870911 >>> 24 === 31. Actual: ' + (536870911 >>> 24));
+}
+
+
+if (1073741823 >>> 24 !== 63) {
+ $ERROR('#823: 1073741823 >>> 24 === 63. Actual: ' + (1073741823 >>> 24));
+}
+
+
+if (2147483647 >>> 24 !== 127) {
+ $ERROR('#824: 2147483647 >>> 24 === 127. Actual: ' + (2147483647 >>> 24));
+}
+
+
+if (4294967295 >>> 24 !== 255) {
+ $ERROR('#825: 4294967295 >>> 24 === 255. Actual: ' + (4294967295 >>> 24));
+}
+
+
+if (0 >>> 25 !== 0) {
+ $ERROR('#826: 0 >>> 25 === 0. Actual: ' + (0 >>> 25));
+}
+
+
+if (1 >>> 25 !== 0) {
+ $ERROR('#827: 1 >>> 25 === 0. Actual: ' + (1 >>> 25));
+}
+
+
+if (3 >>> 25 !== 0) {
+ $ERROR('#828: 3 >>> 25 === 0. Actual: ' + (3 >>> 25));
+}
+
+
+if (7 >>> 25 !== 0) {
+ $ERROR('#829: 7 >>> 25 === 0. Actual: ' + (7 >>> 25));
+}
+
+
+if (15 >>> 25 !== 0) {
+ $ERROR('#830: 15 >>> 25 === 0. Actual: ' + (15 >>> 25));
+}
+
+
+if (31 >>> 25 !== 0) {
+ $ERROR('#831: 31 >>> 25 === 0. Actual: ' + (31 >>> 25));
+}
+
+
+if (63 >>> 25 !== 0) {
+ $ERROR('#832: 63 >>> 25 === 0. Actual: ' + (63 >>> 25));
+}
+
+
+if (127 >>> 25 !== 0) {
+ $ERROR('#833: 127 >>> 25 === 0. Actual: ' + (127 >>> 25));
+}
+
+
+if (255 >>> 25 !== 0) {
+ $ERROR('#834: 255 >>> 25 === 0. Actual: ' + (255 >>> 25));
+}
+
+
+if (511 >>> 25 !== 0) {
+ $ERROR('#835: 511 >>> 25 === 0. Actual: ' + (511 >>> 25));
+}
+
+
+if (1023 >>> 25 !== 0) {
+ $ERROR('#836: 1023 >>> 25 === 0. Actual: ' + (1023 >>> 25));
+}
+
+
+if (2047 >>> 25 !== 0) {
+ $ERROR('#837: 2047 >>> 25 === 0. Actual: ' + (2047 >>> 25));
+}
+
+
+if (4095 >>> 25 !== 0) {
+ $ERROR('#838: 4095 >>> 25 === 0. Actual: ' + (4095 >>> 25));
+}
+
+
+if (8191 >>> 25 !== 0) {
+ $ERROR('#839: 8191 >>> 25 === 0. Actual: ' + (8191 >>> 25));
+}
+
+
+if (16383 >>> 25 !== 0) {
+ $ERROR('#840: 16383 >>> 25 === 0. Actual: ' + (16383 >>> 25));
+}
+
+
+if (32767 >>> 25 !== 0) {
+ $ERROR('#841: 32767 >>> 25 === 0. Actual: ' + (32767 >>> 25));
+}
+
+
+if (65535 >>> 25 !== 0) {
+ $ERROR('#842: 65535 >>> 25 === 0. Actual: ' + (65535 >>> 25));
+}
+
+
+if (131071 >>> 25 !== 0) {
+ $ERROR('#843: 131071 >>> 25 === 0. Actual: ' + (131071 >>> 25));
+}
+
+
+if (262143 >>> 25 !== 0) {
+ $ERROR('#844: 262143 >>> 25 === 0. Actual: ' + (262143 >>> 25));
+}
+
+
+if (524287 >>> 25 !== 0) {
+ $ERROR('#845: 524287 >>> 25 === 0. Actual: ' + (524287 >>> 25));
+}
+
+
+if (1048575 >>> 25 !== 0) {
+ $ERROR('#846: 1048575 >>> 25 === 0. Actual: ' + (1048575 >>> 25));
+}
+
+
+if (2097151 >>> 25 !== 0) {
+ $ERROR('#847: 2097151 >>> 25 === 0. Actual: ' + (2097151 >>> 25));
+}
+
+
+if (4194303 >>> 25 !== 0) {
+ $ERROR('#848: 4194303 >>> 25 === 0. Actual: ' + (4194303 >>> 25));
+}
+
+
+if (8388607 >>> 25 !== 0) {
+ $ERROR('#849: 8388607 >>> 25 === 0. Actual: ' + (8388607 >>> 25));
+}
+
+
+if (16777215 >>> 25 !== 0) {
+ $ERROR('#850: 16777215 >>> 25 === 0. Actual: ' + (16777215 >>> 25));
+}
+
+
+if (33554431 >>> 25 !== 0) {
+ $ERROR('#851: 33554431 >>> 25 === 0. Actual: ' + (33554431 >>> 25));
+}
+
+
+if (67108863 >>> 25 !== 1) {
+ $ERROR('#852: 67108863 >>> 25 === 1. Actual: ' + (67108863 >>> 25));
+}
+
+
+if (134217727 >>> 25 !== 3) {
+ $ERROR('#853: 134217727 >>> 25 === 3. Actual: ' + (134217727 >>> 25));
+}
+
+
+if (268435455 >>> 25 !== 7) {
+ $ERROR('#854: 268435455 >>> 25 === 7. Actual: ' + (268435455 >>> 25));
+}
+
+
+if (536870911 >>> 25 !== 15) {
+ $ERROR('#855: 536870911 >>> 25 === 15. Actual: ' + (536870911 >>> 25));
+}
+
+
+if (1073741823 >>> 25 !== 31) {
+ $ERROR('#856: 1073741823 >>> 25 === 31. Actual: ' + (1073741823 >>> 25));
+}
+
+
+if (2147483647 >>> 25 !== 63) {
+ $ERROR('#857: 2147483647 >>> 25 === 63. Actual: ' + (2147483647 >>> 25));
+}
+
+
+if (4294967295 >>> 25 !== 127) {
+ $ERROR('#858: 4294967295 >>> 25 === 127. Actual: ' + (4294967295 >>> 25));
+}
+
+
+if (0 >>> 26 !== 0) {
+ $ERROR('#859: 0 >>> 26 === 0. Actual: ' + (0 >>> 26));
+}
+
+
+if (1 >>> 26 !== 0) {
+ $ERROR('#860: 1 >>> 26 === 0. Actual: ' + (1 >>> 26));
+}
+
+
+if (3 >>> 26 !== 0) {
+ $ERROR('#861: 3 >>> 26 === 0. Actual: ' + (3 >>> 26));
+}
+
+
+if (7 >>> 26 !== 0) {
+ $ERROR('#862: 7 >>> 26 === 0. Actual: ' + (7 >>> 26));
+}
+
+
+if (15 >>> 26 !== 0) {
+ $ERROR('#863: 15 >>> 26 === 0. Actual: ' + (15 >>> 26));
+}
+
+
+if (31 >>> 26 !== 0) {
+ $ERROR('#864: 31 >>> 26 === 0. Actual: ' + (31 >>> 26));
+}
+
+
+if (63 >>> 26 !== 0) {
+ $ERROR('#865: 63 >>> 26 === 0. Actual: ' + (63 >>> 26));
+}
+
+
+if (127 >>> 26 !== 0) {
+ $ERROR('#866: 127 >>> 26 === 0. Actual: ' + (127 >>> 26));
+}
+
+
+if (255 >>> 26 !== 0) {
+ $ERROR('#867: 255 >>> 26 === 0. Actual: ' + (255 >>> 26));
+}
+
+
+if (511 >>> 26 !== 0) {
+ $ERROR('#868: 511 >>> 26 === 0. Actual: ' + (511 >>> 26));
+}
+
+
+if (1023 >>> 26 !== 0) {
+ $ERROR('#869: 1023 >>> 26 === 0. Actual: ' + (1023 >>> 26));
+}
+
+
+if (2047 >>> 26 !== 0) {
+ $ERROR('#870: 2047 >>> 26 === 0. Actual: ' + (2047 >>> 26));
+}
+
+
+if (4095 >>> 26 !== 0) {
+ $ERROR('#871: 4095 >>> 26 === 0. Actual: ' + (4095 >>> 26));
+}
+
+
+if (8191 >>> 26 !== 0) {
+ $ERROR('#872: 8191 >>> 26 === 0. Actual: ' + (8191 >>> 26));
+}
+
+
+if (16383 >>> 26 !== 0) {
+ $ERROR('#873: 16383 >>> 26 === 0. Actual: ' + (16383 >>> 26));
+}
+
+
+if (32767 >>> 26 !== 0) {
+ $ERROR('#874: 32767 >>> 26 === 0. Actual: ' + (32767 >>> 26));
+}
+
+
+if (65535 >>> 26 !== 0) {
+ $ERROR('#875: 65535 >>> 26 === 0. Actual: ' + (65535 >>> 26));
+}
+
+
+if (131071 >>> 26 !== 0) {
+ $ERROR('#876: 131071 >>> 26 === 0. Actual: ' + (131071 >>> 26));
+}
+
+
+if (262143 >>> 26 !== 0) {
+ $ERROR('#877: 262143 >>> 26 === 0. Actual: ' + (262143 >>> 26));
+}
+
+
+if (524287 >>> 26 !== 0) {
+ $ERROR('#878: 524287 >>> 26 === 0. Actual: ' + (524287 >>> 26));
+}
+
+
+if (1048575 >>> 26 !== 0) {
+ $ERROR('#879: 1048575 >>> 26 === 0. Actual: ' + (1048575 >>> 26));
+}
+
+
+if (2097151 >>> 26 !== 0) {
+ $ERROR('#880: 2097151 >>> 26 === 0. Actual: ' + (2097151 >>> 26));
+}
+
+
+if (4194303 >>> 26 !== 0) {
+ $ERROR('#881: 4194303 >>> 26 === 0. Actual: ' + (4194303 >>> 26));
+}
+
+
+if (8388607 >>> 26 !== 0) {
+ $ERROR('#882: 8388607 >>> 26 === 0. Actual: ' + (8388607 >>> 26));
+}
+
+
+if (16777215 >>> 26 !== 0) {
+ $ERROR('#883: 16777215 >>> 26 === 0. Actual: ' + (16777215 >>> 26));
+}
+
+
+if (33554431 >>> 26 !== 0) {
+ $ERROR('#884: 33554431 >>> 26 === 0. Actual: ' + (33554431 >>> 26));
+}
+
+
+if (67108863 >>> 26 !== 0) {
+ $ERROR('#885: 67108863 >>> 26 === 0. Actual: ' + (67108863 >>> 26));
+}
+
+
+if (134217727 >>> 26 !== 1) {
+ $ERROR('#886: 134217727 >>> 26 === 1. Actual: ' + (134217727 >>> 26));
+}
+
+
+if (268435455 >>> 26 !== 3) {
+ $ERROR('#887: 268435455 >>> 26 === 3. Actual: ' + (268435455 >>> 26));
+}
+
+
+if (536870911 >>> 26 !== 7) {
+ $ERROR('#888: 536870911 >>> 26 === 7. Actual: ' + (536870911 >>> 26));
+}
+
+
+if (1073741823 >>> 26 !== 15) {
+ $ERROR('#889: 1073741823 >>> 26 === 15. Actual: ' + (1073741823 >>> 26));
+}
+
+
+if (2147483647 >>> 26 !== 31) {
+ $ERROR('#890: 2147483647 >>> 26 === 31. Actual: ' + (2147483647 >>> 26));
+}
+
+
+if (4294967295 >>> 26 !== 63) {
+ $ERROR('#891: 4294967295 >>> 26 === 63. Actual: ' + (4294967295 >>> 26));
+}
+
+
+if (0 >>> 27 !== 0) {
+ $ERROR('#892: 0 >>> 27 === 0. Actual: ' + (0 >>> 27));
+}
+
+
+if (1 >>> 27 !== 0) {
+ $ERROR('#893: 1 >>> 27 === 0. Actual: ' + (1 >>> 27));
+}
+
+
+if (3 >>> 27 !== 0) {
+ $ERROR('#894: 3 >>> 27 === 0. Actual: ' + (3 >>> 27));
+}
+
+
+if (7 >>> 27 !== 0) {
+ $ERROR('#895: 7 >>> 27 === 0. Actual: ' + (7 >>> 27));
+}
+
+
+if (15 >>> 27 !== 0) {
+ $ERROR('#896: 15 >>> 27 === 0. Actual: ' + (15 >>> 27));
+}
+
+
+if (31 >>> 27 !== 0) {
+ $ERROR('#897: 31 >>> 27 === 0. Actual: ' + (31 >>> 27));
+}
+
+
+if (63 >>> 27 !== 0) {
+ $ERROR('#898: 63 >>> 27 === 0. Actual: ' + (63 >>> 27));
+}
+
+
+if (127 >>> 27 !== 0) {
+ $ERROR('#899: 127 >>> 27 === 0. Actual: ' + (127 >>> 27));
+}
+
+
+if (255 >>> 27 !== 0) {
+ $ERROR('#900: 255 >>> 27 === 0. Actual: ' + (255 >>> 27));
+}
+
+
+if (511 >>> 27 !== 0) {
+ $ERROR('#901: 511 >>> 27 === 0. Actual: ' + (511 >>> 27));
+}
+
+
+if (1023 >>> 27 !== 0) {
+ $ERROR('#902: 1023 >>> 27 === 0. Actual: ' + (1023 >>> 27));
+}
+
+
+if (2047 >>> 27 !== 0) {
+ $ERROR('#903: 2047 >>> 27 === 0. Actual: ' + (2047 >>> 27));
+}
+
+
+if (4095 >>> 27 !== 0) {
+ $ERROR('#904: 4095 >>> 27 === 0. Actual: ' + (4095 >>> 27));
+}
+
+
+if (8191 >>> 27 !== 0) {
+ $ERROR('#905: 8191 >>> 27 === 0. Actual: ' + (8191 >>> 27));
+}
+
+
+if (16383 >>> 27 !== 0) {
+ $ERROR('#906: 16383 >>> 27 === 0. Actual: ' + (16383 >>> 27));
+}
+
+
+if (32767 >>> 27 !== 0) {
+ $ERROR('#907: 32767 >>> 27 === 0. Actual: ' + (32767 >>> 27));
+}
+
+
+if (65535 >>> 27 !== 0) {
+ $ERROR('#908: 65535 >>> 27 === 0. Actual: ' + (65535 >>> 27));
+}
+
+
+if (131071 >>> 27 !== 0) {
+ $ERROR('#909: 131071 >>> 27 === 0. Actual: ' + (131071 >>> 27));
+}
+
+
+if (262143 >>> 27 !== 0) {
+ $ERROR('#910: 262143 >>> 27 === 0. Actual: ' + (262143 >>> 27));
+}
+
+
+if (524287 >>> 27 !== 0) {
+ $ERROR('#911: 524287 >>> 27 === 0. Actual: ' + (524287 >>> 27));
+}
+
+
+if (1048575 >>> 27 !== 0) {
+ $ERROR('#912: 1048575 >>> 27 === 0. Actual: ' + (1048575 >>> 27));
+}
+
+
+if (2097151 >>> 27 !== 0) {
+ $ERROR('#913: 2097151 >>> 27 === 0. Actual: ' + (2097151 >>> 27));
+}
+
+
+if (4194303 >>> 27 !== 0) {
+ $ERROR('#914: 4194303 >>> 27 === 0. Actual: ' + (4194303 >>> 27));
+}
+
+
+if (8388607 >>> 27 !== 0) {
+ $ERROR('#915: 8388607 >>> 27 === 0. Actual: ' + (8388607 >>> 27));
+}
+
+
+if (16777215 >>> 27 !== 0) {
+ $ERROR('#916: 16777215 >>> 27 === 0. Actual: ' + (16777215 >>> 27));
+}
+
+
+if (33554431 >>> 27 !== 0) {
+ $ERROR('#917: 33554431 >>> 27 === 0. Actual: ' + (33554431 >>> 27));
+}
+
+
+if (67108863 >>> 27 !== 0) {
+ $ERROR('#918: 67108863 >>> 27 === 0. Actual: ' + (67108863 >>> 27));
+}
+
+
+if (134217727 >>> 27 !== 0) {
+ $ERROR('#919: 134217727 >>> 27 === 0. Actual: ' + (134217727 >>> 27));
+}
+
+
+if (268435455 >>> 27 !== 1) {
+ $ERROR('#920: 268435455 >>> 27 === 1. Actual: ' + (268435455 >>> 27));
+}
+
+
+if (536870911 >>> 27 !== 3) {
+ $ERROR('#921: 536870911 >>> 27 === 3. Actual: ' + (536870911 >>> 27));
+}
+
+
+if (1073741823 >>> 27 !== 7) {
+ $ERROR('#922: 1073741823 >>> 27 === 7. Actual: ' + (1073741823 >>> 27));
+}
+
+
+if (2147483647 >>> 27 !== 15) {
+ $ERROR('#923: 2147483647 >>> 27 === 15. Actual: ' + (2147483647 >>> 27));
+}
+
+
+if (4294967295 >>> 27 !== 31) {
+ $ERROR('#924: 4294967295 >>> 27 === 31. Actual: ' + (4294967295 >>> 27));
+}
+
+
+if (0 >>> 28 !== 0) {
+ $ERROR('#925: 0 >>> 28 === 0. Actual: ' + (0 >>> 28));
+}
+
+
+if (1 >>> 28 !== 0) {
+ $ERROR('#926: 1 >>> 28 === 0. Actual: ' + (1 >>> 28));
+}
+
+
+if (3 >>> 28 !== 0) {
+ $ERROR('#927: 3 >>> 28 === 0. Actual: ' + (3 >>> 28));
+}
+
+
+if (7 >>> 28 !== 0) {
+ $ERROR('#928: 7 >>> 28 === 0. Actual: ' + (7 >>> 28));
+}
+
+
+if (15 >>> 28 !== 0) {
+ $ERROR('#929: 15 >>> 28 === 0. Actual: ' + (15 >>> 28));
+}
+
+
+if (31 >>> 28 !== 0) {
+ $ERROR('#930: 31 >>> 28 === 0. Actual: ' + (31 >>> 28));
+}
+
+
+if (63 >>> 28 !== 0) {
+ $ERROR('#931: 63 >>> 28 === 0. Actual: ' + (63 >>> 28));
+}
+
+
+if (127 >>> 28 !== 0) {
+ $ERROR('#932: 127 >>> 28 === 0. Actual: ' + (127 >>> 28));
+}
+
+
+if (255 >>> 28 !== 0) {
+ $ERROR('#933: 255 >>> 28 === 0. Actual: ' + (255 >>> 28));
+}
+
+
+if (511 >>> 28 !== 0) {
+ $ERROR('#934: 511 >>> 28 === 0. Actual: ' + (511 >>> 28));
+}
+
+
+if (1023 >>> 28 !== 0) {
+ $ERROR('#935: 1023 >>> 28 === 0. Actual: ' + (1023 >>> 28));
+}
+
+
+if (2047 >>> 28 !== 0) {
+ $ERROR('#936: 2047 >>> 28 === 0. Actual: ' + (2047 >>> 28));
+}
+
+
+if (4095 >>> 28 !== 0) {
+ $ERROR('#937: 4095 >>> 28 === 0. Actual: ' + (4095 >>> 28));
+}
+
+
+if (8191 >>> 28 !== 0) {
+ $ERROR('#938: 8191 >>> 28 === 0. Actual: ' + (8191 >>> 28));
+}
+
+
+if (16383 >>> 28 !== 0) {
+ $ERROR('#939: 16383 >>> 28 === 0. Actual: ' + (16383 >>> 28));
+}
+
+
+if (32767 >>> 28 !== 0) {
+ $ERROR('#940: 32767 >>> 28 === 0. Actual: ' + (32767 >>> 28));
+}
+
+
+if (65535 >>> 28 !== 0) {
+ $ERROR('#941: 65535 >>> 28 === 0. Actual: ' + (65535 >>> 28));
+}
+
+
+if (131071 >>> 28 !== 0) {
+ $ERROR('#942: 131071 >>> 28 === 0. Actual: ' + (131071 >>> 28));
+}
+
+
+if (262143 >>> 28 !== 0) {
+ $ERROR('#943: 262143 >>> 28 === 0. Actual: ' + (262143 >>> 28));
+}
+
+
+if (524287 >>> 28 !== 0) {
+ $ERROR('#944: 524287 >>> 28 === 0. Actual: ' + (524287 >>> 28));
+}
+
+
+if (1048575 >>> 28 !== 0) {
+ $ERROR('#945: 1048575 >>> 28 === 0. Actual: ' + (1048575 >>> 28));
+}
+
+
+if (2097151 >>> 28 !== 0) {
+ $ERROR('#946: 2097151 >>> 28 === 0. Actual: ' + (2097151 >>> 28));
+}
+
+
+if (4194303 >>> 28 !== 0) {
+ $ERROR('#947: 4194303 >>> 28 === 0. Actual: ' + (4194303 >>> 28));
+}
+
+
+if (8388607 >>> 28 !== 0) {
+ $ERROR('#948: 8388607 >>> 28 === 0. Actual: ' + (8388607 >>> 28));
+}
+
+
+if (16777215 >>> 28 !== 0) {
+ $ERROR('#949: 16777215 >>> 28 === 0. Actual: ' + (16777215 >>> 28));
+}
+
+
+if (33554431 >>> 28 !== 0) {
+ $ERROR('#950: 33554431 >>> 28 === 0. Actual: ' + (33554431 >>> 28));
+}
+
+
+if (67108863 >>> 28 !== 0) {
+ $ERROR('#951: 67108863 >>> 28 === 0. Actual: ' + (67108863 >>> 28));
+}
+
+
+if (134217727 >>> 28 !== 0) {
+ $ERROR('#952: 134217727 >>> 28 === 0. Actual: ' + (134217727 >>> 28));
+}
+
+
+if (268435455 >>> 28 !== 0) {
+ $ERROR('#953: 268435455 >>> 28 === 0. Actual: ' + (268435455 >>> 28));
+}
+
+
+if (536870911 >>> 28 !== 1) {
+ $ERROR('#954: 536870911 >>> 28 === 1. Actual: ' + (536870911 >>> 28));
+}
+
+
+if (1073741823 >>> 28 !== 3) {
+ $ERROR('#955: 1073741823 >>> 28 === 3. Actual: ' + (1073741823 >>> 28));
+}
+
+
+if (2147483647 >>> 28 !== 7) {
+ $ERROR('#956: 2147483647 >>> 28 === 7. Actual: ' + (2147483647 >>> 28));
+}
+
+
+if (4294967295 >>> 28 !== 15) {
+ $ERROR('#957: 4294967295 >>> 28 === 15. Actual: ' + (4294967295 >>> 28));
+}
+
+
+if (0 >>> 29 !== 0) {
+ $ERROR('#958: 0 >>> 29 === 0. Actual: ' + (0 >>> 29));
+}
+
+
+if (1 >>> 29 !== 0) {
+ $ERROR('#959: 1 >>> 29 === 0. Actual: ' + (1 >>> 29));
+}
+
+
+if (3 >>> 29 !== 0) {
+ $ERROR('#960: 3 >>> 29 === 0. Actual: ' + (3 >>> 29));
+}
+
+
+if (7 >>> 29 !== 0) {
+ $ERROR('#961: 7 >>> 29 === 0. Actual: ' + (7 >>> 29));
+}
+
+
+if (15 >>> 29 !== 0) {
+ $ERROR('#962: 15 >>> 29 === 0. Actual: ' + (15 >>> 29));
+}
+
+
+if (31 >>> 29 !== 0) {
+ $ERROR('#963: 31 >>> 29 === 0. Actual: ' + (31 >>> 29));
+}
+
+
+if (63 >>> 29 !== 0) {
+ $ERROR('#964: 63 >>> 29 === 0. Actual: ' + (63 >>> 29));
+}
+
+
+if (127 >>> 29 !== 0) {
+ $ERROR('#965: 127 >>> 29 === 0. Actual: ' + (127 >>> 29));
+}
+
+
+if (255 >>> 29 !== 0) {
+ $ERROR('#966: 255 >>> 29 === 0. Actual: ' + (255 >>> 29));
+}
+
+
+if (511 >>> 29 !== 0) {
+ $ERROR('#967: 511 >>> 29 === 0. Actual: ' + (511 >>> 29));
+}
+
+
+if (1023 >>> 29 !== 0) {
+ $ERROR('#968: 1023 >>> 29 === 0. Actual: ' + (1023 >>> 29));
+}
+
+
+if (2047 >>> 29 !== 0) {
+ $ERROR('#969: 2047 >>> 29 === 0. Actual: ' + (2047 >>> 29));
+}
+
+
+if (4095 >>> 29 !== 0) {
+ $ERROR('#970: 4095 >>> 29 === 0. Actual: ' + (4095 >>> 29));
+}
+
+
+if (8191 >>> 29 !== 0) {
+ $ERROR('#971: 8191 >>> 29 === 0. Actual: ' + (8191 >>> 29));
+}
+
+
+if (16383 >>> 29 !== 0) {
+ $ERROR('#972: 16383 >>> 29 === 0. Actual: ' + (16383 >>> 29));
+}
+
+
+if (32767 >>> 29 !== 0) {
+ $ERROR('#973: 32767 >>> 29 === 0. Actual: ' + (32767 >>> 29));
+}
+
+
+if (65535 >>> 29 !== 0) {
+ $ERROR('#974: 65535 >>> 29 === 0. Actual: ' + (65535 >>> 29));
+}
+
+
+if (131071 >>> 29 !== 0) {
+ $ERROR('#975: 131071 >>> 29 === 0. Actual: ' + (131071 >>> 29));
+}
+
+
+if (262143 >>> 29 !== 0) {
+ $ERROR('#976: 262143 >>> 29 === 0. Actual: ' + (262143 >>> 29));
+}
+
+
+if (524287 >>> 29 !== 0) {
+ $ERROR('#977: 524287 >>> 29 === 0. Actual: ' + (524287 >>> 29));
+}
+
+
+if (1048575 >>> 29 !== 0) {
+ $ERROR('#978: 1048575 >>> 29 === 0. Actual: ' + (1048575 >>> 29));
+}
+
+
+if (2097151 >>> 29 !== 0) {
+ $ERROR('#979: 2097151 >>> 29 === 0. Actual: ' + (2097151 >>> 29));
+}
+
+
+if (4194303 >>> 29 !== 0) {
+ $ERROR('#980: 4194303 >>> 29 === 0. Actual: ' + (4194303 >>> 29));
+}
+
+
+if (8388607 >>> 29 !== 0) {
+ $ERROR('#981: 8388607 >>> 29 === 0. Actual: ' + (8388607 >>> 29));
+}
+
+
+if (16777215 >>> 29 !== 0) {
+ $ERROR('#982: 16777215 >>> 29 === 0. Actual: ' + (16777215 >>> 29));
+}
+
+
+if (33554431 >>> 29 !== 0) {
+ $ERROR('#983: 33554431 >>> 29 === 0. Actual: ' + (33554431 >>> 29));
+}
+
+
+if (67108863 >>> 29 !== 0) {
+ $ERROR('#984: 67108863 >>> 29 === 0. Actual: ' + (67108863 >>> 29));
+}
+
+
+if (134217727 >>> 29 !== 0) {
+ $ERROR('#985: 134217727 >>> 29 === 0. Actual: ' + (134217727 >>> 29));
+}
+
+
+if (268435455 >>> 29 !== 0) {
+ $ERROR('#986: 268435455 >>> 29 === 0. Actual: ' + (268435455 >>> 29));
+}
+
+
+if (536870911 >>> 29 !== 0) {
+ $ERROR('#987: 536870911 >>> 29 === 0. Actual: ' + (536870911 >>> 29));
+}
+
+
+if (1073741823 >>> 29 !== 1) {
+ $ERROR('#988: 1073741823 >>> 29 === 1. Actual: ' + (1073741823 >>> 29));
+}
+
+
+if (2147483647 >>> 29 !== 3) {
+ $ERROR('#989: 2147483647 >>> 29 === 3. Actual: ' + (2147483647 >>> 29));
+}
+
+
+if (4294967295 >>> 29 !== 7) {
+ $ERROR('#990: 4294967295 >>> 29 === 7. Actual: ' + (4294967295 >>> 29));
+}
+
+
+if (0 >>> 30 !== 0) {
+ $ERROR('#991: 0 >>> 30 === 0. Actual: ' + (0 >>> 30));
+}
+
+
+if (1 >>> 30 !== 0) {
+ $ERROR('#992: 1 >>> 30 === 0. Actual: ' + (1 >>> 30));
+}
+
+
+if (3 >>> 30 !== 0) {
+ $ERROR('#993: 3 >>> 30 === 0. Actual: ' + (3 >>> 30));
+}
+
+
+if (7 >>> 30 !== 0) {
+ $ERROR('#994: 7 >>> 30 === 0. Actual: ' + (7 >>> 30));
+}
+
+
+if (15 >>> 30 !== 0) {
+ $ERROR('#995: 15 >>> 30 === 0. Actual: ' + (15 >>> 30));
+}
+
+
+if (31 >>> 30 !== 0) {
+ $ERROR('#996: 31 >>> 30 === 0. Actual: ' + (31 >>> 30));
+}
+
+
+if (63 >>> 30 !== 0) {
+ $ERROR('#997: 63 >>> 30 === 0. Actual: ' + (63 >>> 30));
+}
+
+
+if (127 >>> 30 !== 0) {
+ $ERROR('#998: 127 >>> 30 === 0. Actual: ' + (127 >>> 30));
+}
+
+
+if (255 >>> 30 !== 0) {
+ $ERROR('#999: 255 >>> 30 === 0. Actual: ' + (255 >>> 30));
+}
+
+
+if (511 >>> 30 !== 0) {
+ $ERROR('#1000: 511 >>> 30 === 0. Actual: ' + (511 >>> 30));
+}
+
+
+if (1023 >>> 30 !== 0) {
+ $ERROR('#1001: 1023 >>> 30 === 0. Actual: ' + (1023 >>> 30));
+}
+
+
+if (2047 >>> 30 !== 0) {
+ $ERROR('#1002: 2047 >>> 30 === 0. Actual: ' + (2047 >>> 30));
+}
+
+
+if (4095 >>> 30 !== 0) {
+ $ERROR('#1003: 4095 >>> 30 === 0. Actual: ' + (4095 >>> 30));
+}
+
+
+if (8191 >>> 30 !== 0) {
+ $ERROR('#1004: 8191 >>> 30 === 0. Actual: ' + (8191 >>> 30));
+}
+
+
+if (16383 >>> 30 !== 0) {
+ $ERROR('#1005: 16383 >>> 30 === 0. Actual: ' + (16383 >>> 30));
+}
+
+
+if (32767 >>> 30 !== 0) {
+ $ERROR('#1006: 32767 >>> 30 === 0. Actual: ' + (32767 >>> 30));
+}
+
+
+if (65535 >>> 30 !== 0) {
+ $ERROR('#1007: 65535 >>> 30 === 0. Actual: ' + (65535 >>> 30));
+}
+
+
+if (131071 >>> 30 !== 0) {
+ $ERROR('#1008: 131071 >>> 30 === 0. Actual: ' + (131071 >>> 30));
+}
+
+
+if (262143 >>> 30 !== 0) {
+ $ERROR('#1009: 262143 >>> 30 === 0. Actual: ' + (262143 >>> 30));
+}
+
+
+if (524287 >>> 30 !== 0) {
+ $ERROR('#1010: 524287 >>> 30 === 0. Actual: ' + (524287 >>> 30));
+}
+
+
+if (1048575 >>> 30 !== 0) {
+ $ERROR('#1011: 1048575 >>> 30 === 0. Actual: ' + (1048575 >>> 30));
+}
+
+
+if (2097151 >>> 30 !== 0) {
+ $ERROR('#1012: 2097151 >>> 30 === 0. Actual: ' + (2097151 >>> 30));
+}
+
+
+if (4194303 >>> 30 !== 0) {
+ $ERROR('#1013: 4194303 >>> 30 === 0. Actual: ' + (4194303 >>> 30));
+}
+
+
+if (8388607 >>> 30 !== 0) {
+ $ERROR('#1014: 8388607 >>> 30 === 0. Actual: ' + (8388607 >>> 30));
+}
+
+
+if (16777215 >>> 30 !== 0) {
+ $ERROR('#1015: 16777215 >>> 30 === 0. Actual: ' + (16777215 >>> 30));
+}
+
+
+if (33554431 >>> 30 !== 0) {
+ $ERROR('#1016: 33554431 >>> 30 === 0. Actual: ' + (33554431 >>> 30));
+}
+
+
+if (67108863 >>> 30 !== 0) {
+ $ERROR('#1017: 67108863 >>> 30 === 0. Actual: ' + (67108863 >>> 30));
+}
+
+
+if (134217727 >>> 30 !== 0) {
+ $ERROR('#1018: 134217727 >>> 30 === 0. Actual: ' + (134217727 >>> 30));
+}
+
+
+if (268435455 >>> 30 !== 0) {
+ $ERROR('#1019: 268435455 >>> 30 === 0. Actual: ' + (268435455 >>> 30));
+}
+
+
+if (536870911 >>> 30 !== 0) {
+ $ERROR('#1020: 536870911 >>> 30 === 0. Actual: ' + (536870911 >>> 30));
+}
+
+
+if (1073741823 >>> 30 !== 0) {
+ $ERROR('#1021: 1073741823 >>> 30 === 0. Actual: ' + (1073741823 >>> 30));
+}
+
+
+if (2147483647 >>> 30 !== 1) {
+ $ERROR('#1022: 2147483647 >>> 30 === 1. Actual: ' + (2147483647 >>> 30));
+}
+
+
+if (4294967295 >>> 30 !== 3) {
+ $ERROR('#1023: 4294967295 >>> 30 === 3. Actual: ' + (4294967295 >>> 30));
+}
+
+
+if (0 >>> 31 !== 0) {
+ $ERROR('#1024: 0 >>> 31 === 0. Actual: ' + (0 >>> 31));
+}
+
+
+if (1 >>> 31 !== 0) {
+ $ERROR('#1025: 1 >>> 31 === 0. Actual: ' + (1 >>> 31));
+}
+
+
+if (3 >>> 31 !== 0) {
+ $ERROR('#1026: 3 >>> 31 === 0. Actual: ' + (3 >>> 31));
+}
+
+
+if (7 >>> 31 !== 0) {
+ $ERROR('#1027: 7 >>> 31 === 0. Actual: ' + (7 >>> 31));
+}
+
+
+if (15 >>> 31 !== 0) {
+ $ERROR('#1028: 15 >>> 31 === 0. Actual: ' + (15 >>> 31));
+}
+
+
+if (31 >>> 31 !== 0) {
+ $ERROR('#1029: 31 >>> 31 === 0. Actual: ' + (31 >>> 31));
+}
+
+
+if (63 >>> 31 !== 0) {
+ $ERROR('#1030: 63 >>> 31 === 0. Actual: ' + (63 >>> 31));
+}
+
+
+if (127 >>> 31 !== 0) {
+ $ERROR('#1031: 127 >>> 31 === 0. Actual: ' + (127 >>> 31));
+}
+
+
+if (255 >>> 31 !== 0) {
+ $ERROR('#1032: 255 >>> 31 === 0. Actual: ' + (255 >>> 31));
+}
+
+
+if (511 >>> 31 !== 0) {
+ $ERROR('#1033: 511 >>> 31 === 0. Actual: ' + (511 >>> 31));
+}
+
+
+if (1023 >>> 31 !== 0) {
+ $ERROR('#1034: 1023 >>> 31 === 0. Actual: ' + (1023 >>> 31));
+}
+
+
+if (2047 >>> 31 !== 0) {
+ $ERROR('#1035: 2047 >>> 31 === 0. Actual: ' + (2047 >>> 31));
+}
+
+
+if (4095 >>> 31 !== 0) {
+ $ERROR('#1036: 4095 >>> 31 === 0. Actual: ' + (4095 >>> 31));
+}
+
+
+if (8191 >>> 31 !== 0) {
+ $ERROR('#1037: 8191 >>> 31 === 0. Actual: ' + (8191 >>> 31));
+}
+
+
+if (16383 >>> 31 !== 0) {
+ $ERROR('#1038: 16383 >>> 31 === 0. Actual: ' + (16383 >>> 31));
+}
+
+
+if (32767 >>> 31 !== 0) {
+ $ERROR('#1039: 32767 >>> 31 === 0. Actual: ' + (32767 >>> 31));
+}
+
+
+if (65535 >>> 31 !== 0) {
+ $ERROR('#1040: 65535 >>> 31 === 0. Actual: ' + (65535 >>> 31));
+}
+
+
+if (131071 >>> 31 !== 0) {
+ $ERROR('#1041: 131071 >>> 31 === 0. Actual: ' + (131071 >>> 31));
+}
+
+
+if (262143 >>> 31 !== 0) {
+ $ERROR('#1042: 262143 >>> 31 === 0. Actual: ' + (262143 >>> 31));
+}
+
+
+if (524287 >>> 31 !== 0) {
+ $ERROR('#1043: 524287 >>> 31 === 0. Actual: ' + (524287 >>> 31));
+}
+
+
+if (1048575 >>> 31 !== 0) {
+ $ERROR('#1044: 1048575 >>> 31 === 0. Actual: ' + (1048575 >>> 31));
+}
+
+
+if (2097151 >>> 31 !== 0) {
+ $ERROR('#1045: 2097151 >>> 31 === 0. Actual: ' + (2097151 >>> 31));
+}
+
+
+if (4194303 >>> 31 !== 0) {
+ $ERROR('#1046: 4194303 >>> 31 === 0. Actual: ' + (4194303 >>> 31));
+}
+
+
+if (8388607 >>> 31 !== 0) {
+ $ERROR('#1047: 8388607 >>> 31 === 0. Actual: ' + (8388607 >>> 31));
+}
+
+
+if (16777215 >>> 31 !== 0) {
+ $ERROR('#1048: 16777215 >>> 31 === 0. Actual: ' + (16777215 >>> 31));
+}
+
+
+if (33554431 >>> 31 !== 0) {
+ $ERROR('#1049: 33554431 >>> 31 === 0. Actual: ' + (33554431 >>> 31));
+}
+
+
+if (67108863 >>> 31 !== 0) {
+ $ERROR('#1050: 67108863 >>> 31 === 0. Actual: ' + (67108863 >>> 31));
+}
+
+
+if (134217727 >>> 31 !== 0) {
+ $ERROR('#1051: 134217727 >>> 31 === 0. Actual: ' + (134217727 >>> 31));
+}
+
+
+if (268435455 >>> 31 !== 0) {
+ $ERROR('#1052: 268435455 >>> 31 === 0. Actual: ' + (268435455 >>> 31));
+}
+
+
+if (536870911 >>> 31 !== 0) {
+ $ERROR('#1053: 536870911 >>> 31 === 0. Actual: ' + (536870911 >>> 31));
+}
+
+
+if (1073741823 >>> 31 !== 0) {
+ $ERROR('#1054: 1073741823 >>> 31 === 0. Actual: ' + (1073741823 >>> 31));
+}
+
+
+if (2147483647 >>> 31 !== 0) {
+ $ERROR('#1055: 2147483647 >>> 31 === 0. Actual: ' + (2147483647 >>> 31));
+}
+
+
+if (4294967295 >>> 31 !== 1) {
+ $ERROR('#1056: 4294967295 >>> 31 === 1. Actual: ' + (4294967295 >>> 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.1_T1.js
new file mode 100644
index 000000000..cb3547ad4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.1_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A5.1_T1;
+ * @section: 11.7.3, 9.5;
+ * @assertion: Operator x >>> y uses ToUint32(ShiftExpression);
+ * @description: Checking boundary points;
+ */
+
+//CHECK#1
+if (2147483648.1 >>> 0 !== 2147483648) {
+ $ERROR('#1: 2147483648.1 >>> 0 === 2147483648. Actual: ' + (2147483648.1 >>> 0));
+}
+
+//CHECK#2
+if (4294967296.1 >>> 0 !== 0) {
+ $ERROR('#2: 4294967296.1 >>> 0 === 0. Actual: ' + (4294967296.1 >>> 0));
+}
+
+//CHECK#3
+if (6442450944.1 >>> 0 !== 2147483648) {
+ $ERROR('#3: 6442450944.1 >>> 0 === 2147483648. Actual: ' + (6442450944.1 >>> 0));
+}
+
+//CHECK#4
+if (4294967295.1 >>> 0 !== 4294967295) {
+ $ERROR('#4: 4294967295.1 >>> 0 === 4294967295. Actual: ' + (4294967295.1 >>> 0));
+}
+
+//CHECK#5
+if (6442450943.1 >>> 0 !== 2147483647) {
+ $ERROR('#5: 6442450943.1 >>> 0 === 2147483647. Actual: ' + (6442450943.1 >>> 0));
+}
+
+//CHECK#6
+if (-2147483649.1 >>> 0 !== 2147483647) {
+ $ERROR('#6: -2147483649.1 >>> 0 === 2147483647. Actual: ' + (-2147483649.1 >>> 0));
+}
+
+//CHECK#7
+if (-4294967297.1 >>> 0 !== 4294967295) {
+ $ERROR('#7: -4294967297.1 >>> 0 === 4294967295. Actual: ' + (-4294967297.1 >>> 0));
+}
+
+//CHECK#8
+if (-6442450945.1 >>> 0 !== 2147483647) {
+ $ERROR('#8: -6442450945.1 >>> 0 === 2147483647. Actual: ' + (-6442450945.1 >>> 0));
+}
+
+//CHECK#9
+if (-4294967296.1 >>> 0 !== 0) {
+ $ERROR('#9: -4294967296.1 >>> 0 === 0 . Actual: ' + (-4294967296.1 >>> 0));
+}
+
+//CHECK#10
+if (-6442450944.1 >>> 0 !== 2147483648) {
+ $ERROR('#10: -6442450944.1 >>> 0 === 2147483648. Actual: ' + (-6442450944.1 >>> 0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.2_T1.js
new file mode 100644
index 000000000..8a17bca20
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.2_T1.js
@@ -0,0 +1,330 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A5.2_T1;
+ * @section: 11.7.3, 9.5;
+ * @assertion: Operator x >>> y uses ToUint32(AdditiveExpression) & 31;
+ * @description: Checking distinct points;
+ */
+
+//CHECK#1
+if (4294967295 >>> -32.1 !== 4294967295) {
+ $ERROR('#1: 4294967295 >>> -32.1 === 4294967295. Actual: ' + (4294967295 >>> -32.1));
+}
+
+//CHECK#2
+if (4294967295 >>> -31.1 !== 2147483647) {
+ $ERROR('#2: 4294967295 >>> -31.1 === 2147483647. Actual: ' + (4294967295 >>> -31.1));
+}
+
+//CHECK#3
+if (4294967295 >>> -30.1 !== 1073741823) {
+ $ERROR('#3: 4294967295 >>> -30.1 === 1073741823. Actual: ' + (4294967295 >>> -30.1));
+}
+
+//CHECK#4
+if (4294967295 >>> -29.1 !== 536870911) {
+ $ERROR('#4: 4294967295 >>> -29.1 === 536870911. Actual: ' + (4294967295 >>> -29.1));
+}
+
+//CHECK#5
+if (4294967295 >>> -28.1 !== 268435455) {
+ $ERROR('#5: 4294967295 >>> -28.1 === 268435455. Actual: ' + (4294967295 >>> -28.1));
+}
+
+//CHECK#6
+if (4294967295 >>> -27.1 !== 134217727) {
+ $ERROR('#6: 4294967295 >>> -27.1 === 134217727. Actual: ' + (4294967295 >>> -27.1));
+}
+
+//CHECK#7
+if (4294967295 >>> -26.1 !== 67108863) {
+ $ERROR('#7: 4294967295 >>> -26.1 === 67108863. Actual: ' + (4294967295 >>> -26.1));
+}
+
+//CHECK#8
+if (4294967295 >>> -25.1 !== 33554431) {
+ $ERROR('#8: 4294967295 >>> -25.1 === 33554431. Actual: ' + (4294967295 >>> -25.1));
+}
+
+//CHECK#9
+if (4294967295 >>> -24.1 !== 16777215) {
+ $ERROR('#9: 4294967295 >>> -24.1 === 16777215. Actual: ' + (4294967295 >>> -24.1));
+}
+
+//CHECK#10
+if (4294967295 >>> -23.1 !== 8388607) {
+ $ERROR('#10: 4294967295 >>> -23.1 === 8388607. Actual: ' + (4294967295 >>> -23.1));
+}
+
+//CHECK#11
+if (4294967295 >>> -22.1 !== 4194303) {
+ $ERROR('#11: 4294967295 >>> -22.1 === 4194303. Actual: ' + (4294967295 >>> -22.1));
+}
+
+//CHECK#12
+if (4294967295 >>> -21.1 !== 2097151) {
+ $ERROR('#12: 4294967295 >>> -21.1 === 2097151. Actual: ' + (4294967295 >>> -21.1));
+}
+
+//CHECK#13
+if (4294967295 >>> -20.1 !== 1048575) {
+ $ERROR('#13: 4294967295 >>> -20.1 === 1048575. Actual: ' + (4294967295 >>> -20.1));
+}
+
+//CHECK#14
+if (4294967295 >>> -19.1 !== 524287) {
+ $ERROR('#14: 4294967295 >>> -19.1 === 524287. Actual: ' + (4294967295 >>> -19.1));
+}
+
+//CHECK#15
+if (4294967295 >>> -18.1 !== 262143) {
+ $ERROR('#15: 4294967295 >>> -18.1 === 262143. Actual: ' + (4294967295 >>> -18.1));
+}
+
+//CHECK#16
+if (4294967295 >>> -17.1 !== 131071) {
+ $ERROR('#16: 4294967295 >>> -17.1 === 131071. Actual: ' + (4294967295 >>> -17.1));
+}
+
+//CHECK#17
+if (4294967295 >>> -16.1 !== 65535) {
+ $ERROR('#17: 4294967295 >>> -16.1 === 65535. Actual: ' + (4294967295 >>> -16.1));
+}
+
+//CHECK#18
+if (4294967295 >>> -15.1 !== 32767) {
+ $ERROR('#18: 4294967295 >>> -15.1 === 32767. Actual: ' + (4294967295 >>> -15.1));
+}
+
+//CHECK#19
+if (4294967295 >>> -14.1 !== 16383) {
+ $ERROR('#19: 4294967295 >>> -14.1 === 16383. Actual: ' + (4294967295 >>> -14.1));
+}
+
+//CHECK#20
+if (4294967295 >>> -13.1 !== 8191) {
+ $ERROR('#20: 4294967295 >>> -13.1 === 8191. Actual: ' + (4294967295 >>> -13.1));
+}
+
+//CHECK#21
+if (4294967295 >>> -12.1 !== 4095) {
+ $ERROR('#21: 4294967295 >>> -12.1 === 4095. Actual: ' + (4294967295 >>> -12.1));
+}
+
+//CHECK#22
+if (4294967295 >>> -11.1 !== 2047) {
+ $ERROR('#22: 4294967295 >>> -11.1 === 2047. Actual: ' + (4294967295 >>> -11.1));
+}
+
+//CHECK#23
+if (4294967295 >>> -10.1 !== 1023) {
+ $ERROR('#23: 4294967295 >>> -10.1 === 1023. Actual: ' + (4294967295 >>> -10.1));
+}
+
+//CHECK#24
+if (4294967295 >>> -9.1 !== 511) {
+ $ERROR('#24: 4294967295 >>> -9.1 === 511. Actual: ' + (4294967295 >>> -9.1));
+}
+
+//CHECK#25
+if (4294967295 >>> -8.1 !== 255) {
+ $ERROR('#25: 4294967295 >>> -8.1 === 255. Actual: ' + (4294967295 >>> -8.1));
+}
+
+//CHECK#26
+if (4294967295 >>> -7.1 !== 127) {
+ $ERROR('#26: 4294967295 >>> -7.1 === 127. Actual: ' + (4294967295 >>> -7.1));
+}
+
+//CHECK#27
+if (4294967295 >>> -6.1 !== 63) {
+ $ERROR('#27: 4294967295 >>> -6.1 === 63. Actual: ' + (4294967295 >>> -6.1));
+}
+
+//CHECK#28
+if (4294967295 >>> -5.1 !== 31) {
+ $ERROR('#28: 4294967295 >>> -5.1 === 31. Actual: ' + (4294967295 >>> -5.1));
+}
+
+//CHECK#29
+if (4294967295 >>> -4.1 !== 15) {
+ $ERROR('#29: 4294967295 >>> -4.1 === 15. Actual: ' + (4294967295 >>> -4.1));
+}
+
+//CHECK#30
+if (4294967295 >>> -3.1 !== 7) {
+ $ERROR('#30: 4294967295 >>> -3.1 === 7. Actual: ' + (4294967295 >>> -3.1));
+}
+
+//CHECK#31
+if (4294967295 >>> -2.1 !== 3) {
+ $ERROR('#31: 4294967295 >>> -2.1 === 3. Actual: ' + (4294967295 >>> -2.1));
+}
+
+//CHECK#32
+if (4294967295 >>> -1.1 !== 1) {
+ $ERROR('#32: 4294967295 >>> -1.1 === 1. Actual: ' + (4294967295 >>> -1.1));
+}
+
+//CHECK#33
+if (4294967295 >>> 32.1 !== 4294967295) {
+ $ERROR('#33: 4294967295 >>> 32.1 === 4294967295. Actual: ' + (4294967295 >>> 32.1));
+}
+
+//CHECK#34
+if (4294967295 >>> 33.1 !== 2147483647) {
+ $ERROR('#34: 4294967295 >>> 33.1 === 2147483647. Actual: ' + (4294967295 >>> 33.1));
+}
+
+//CHECK#35
+if (4294967295 >>> 34.1 !== 1073741823) {
+ $ERROR('#35: 4294967295 >>> 34.1 === 1073741823. Actual: ' + (4294967295 >>> 34.1));
+}
+
+//CHECK#36
+if (4294967295 >>> 35.1 !== 536870911) {
+ $ERROR('#36: 4294967295 >>> 35.1 === 536870911. Actual: ' + (4294967295 >>> 35.1));
+}
+
+//CHECK#37
+if (4294967295 >>> 36.1 !== 268435455) {
+ $ERROR('#37: 4294967295 >>> 36.1 === 268435455. Actual: ' + (4294967295 >>> 36.1));
+}
+
+//CHECK#38
+if (4294967295 >>> 37.1 !== 134217727) {
+ $ERROR('#38: 4294967295 >>> 37.1 === 134217727. Actual: ' + (4294967295 >>> 37.1));
+}
+
+//CHECK#39
+if (4294967295 >>> 38.1 !== 67108863) {
+ $ERROR('#39: 4294967295 >>> 38.1 === 67108863. Actual: ' + (4294967295 >>> 38.1));
+}
+
+//CHECK#40
+if (4294967295 >>> 39.1 !== 33554431) {
+ $ERROR('#40: 4294967295 >>> 39.1 === 33554431. Actual: ' + (4294967295 >>> 39.1));
+}
+
+//CHECK#41
+if (4294967295 >>> 40.1 !== 16777215) {
+ $ERROR('#41: 4294967295 >>> 40.1 === 16777215. Actual: ' + (4294967295 >>> 40.1));
+}
+
+//CHECK#42
+if (4294967295 >>> 41.1 !== 8388607) {
+ $ERROR('#42: 4294967295 >>> 41.1 === 8388607. Actual: ' + (4294967295 >>> 41.1));
+}
+
+//CHECK#43
+if (4294967295 >>> 42.1 !== 4194303) {
+ $ERROR('#43: 4294967295 >>> 42.1 === 4194303. Actual: ' + (4294967295 >>> 42.1));
+}
+
+//CHECK#44
+if (4294967295 >>> 43.1 !== 2097151) {
+ $ERROR('#44: 4294967295 >>> 43.1 === 2097151. Actual: ' + (4294967295 >>> 43.1));
+}
+
+//CHECK#45
+if (4294967295 >>> 44.1 !== 1048575) {
+ $ERROR('#45: 4294967295 >>> 44.1 === 1048575. Actual: ' + (4294967295 >>> 44.1));
+}
+
+//CHECK#46
+if (4294967295 >>> 45.1 !== 524287) {
+ $ERROR('#46: 4294967295 >>> 45.1 === 524287. Actual: ' + (4294967295 >>> 45.1));
+}
+
+//CHECK#47
+if (4294967295 >>> 46.1 !== 262143) {
+ $ERROR('#47: 4294967295 >>> 46.1 === 262143. Actual: ' + (4294967295 >>> 46.1));
+}
+
+//CHECK#48
+if (4294967295 >>> 47.1 !== 131071) {
+ $ERROR('#48: 4294967295 >>> 47.1 === 131071. Actual: ' + (4294967295 >>> 47.1));
+}
+
+//CHECK#49
+if (4294967295 >>> 48.1 !== 65535) {
+ $ERROR('#49: 4294967295 >>> 48.1 === 65535. Actual: ' + (4294967295 >>> 48.1));
+}
+
+//CHECK#50
+if (4294967295 >>> 49.1 !== 32767) {
+ $ERROR('#50: 4294967295 >>> 49.1 === 32767. Actual: ' + (4294967295 >>> 49.1));
+}
+
+//CHECK#51
+if (4294967295 >>> 50.1 !== 16383) {
+ $ERROR('#51: 4294967295 >>> 50.1 === 16383. Actual: ' + (4294967295 >>> 50.1));
+}
+
+//CHECK#52
+if (4294967295 >>> 51.1 !== 8191) {
+ $ERROR('#52: 4294967295 >>> 51.1 === 8191. Actual: ' + (4294967295 >>> 51.1));
+}
+
+//CHECK#53
+if (4294967295 >>> 52.1 !== 4095) {
+ $ERROR('#53: 4294967295 >>> 52.1 === 4095. Actual: ' + (4294967295 >>> 52.1));
+}
+
+//CHECK#54
+if (4294967295 >>> 53.1 !== 2047) {
+ $ERROR('#54: 4294967295 >>> 53.1 === 2047. Actual: ' + (4294967295 >>> 53.1));
+}
+
+//CHECK#55
+if (4294967295 >>> 54.1 !== 1023) {
+ $ERROR('#55: 4294967295 >>> 54.1 === 1023. Actual: ' + (4294967295 >>> 54.1));
+}
+
+//CHECK#56
+if (4294967295 >>> 55.1 !== 511) {
+ $ERROR('#56: 4294967295 >>> 55.1 === 511. Actual: ' + (4294967295 >>> 55.1));
+}
+
+//CHECK#57
+if (4294967295 >>> 56.1 !== 255) {
+ $ERROR('#57: 4294967295 >>> 56.1 === 255. Actual: ' + (4294967295 >>> 56.1));
+}
+
+//CHECK#58
+if (4294967295 >>> 57.1 !== 127) {
+ $ERROR('#58: 4294967295 >>> 57.1 === 127. Actual: ' + (4294967295 >>> 57.1));
+}
+
+//CHECK#59
+if (4294967295 >>> 58.1 !== 63) {
+ $ERROR('#59: 4294967295 >>> 58.1 === 63. Actual: ' + (4294967295 >>> 58.1));
+}
+
+//CHECK#60
+if (4294967295 >>> 59.1 !== 31) {
+ $ERROR('#60: 4294967295 >>> 59.1 === 31. Actual: ' + (4294967295 >>> 59.1));
+}
+
+//CHECK#61
+if (4294967295 >>> 60.1 !== 15) {
+ $ERROR('#61: 4294967295 >>> 60.1 === 15. Actual: ' + (4294967295 >>> 60.1));
+}
+
+//CHECK#62
+if (4294967295 >>> 61.1 !== 7) {
+ $ERROR('#62: 4294967295 >>> 61.1 === 7. Actual: ' + (4294967295 >>> 61.1));
+}
+
+//CHECK#63
+if (4294967295 >>> 62.1 !== 3) {
+ $ERROR('#63: 4294967295 >>> 62.1 === 3. Actual: ' + (4294967295 >>> 62.1));
+}
+
+//CHECK#64
+if (4294967295 >>> 63.1 !== 1) {
+ $ERROR('#64: 4294967295 >>> 63.1 === 1. Actual: ' + (4294967295 >>> 63.1));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A1.js
new file mode 100644
index 000000000..85b40a593
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A1;
+* @section: 11.8.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "<" or between "<" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("0\u0009<\u00091") !== true) {
+ $ERROR('#1: (0\\u0009<\\u00091) === true');
+}
+
+//CHECK#2
+if (eval("0\u000B<\u000B1") !== true) {
+ $ERROR('#2: (0\\u000B<\\u000B1) === true');
+}
+
+//CHECK#3
+if (eval("0\u000C<\u000C1") !== true) {
+ $ERROR('#3: (0\\u000C<\\u000C1) === true');
+}
+
+//CHECK#4
+if (eval("0\u0020<\u00201") !== true) {
+ $ERROR('#4: (0\\u0020<\\u00201) === true');
+}
+
+//CHECK#5
+if (eval("0\u00A0<\u00A01") !== true) {
+ $ERROR('#5: (0\\u00A0<\\u00A01) === true');
+}
+
+//CHECK#6
+if (eval("0\u000A<\u000A1") !== true) {
+ $ERROR('#6: (0\\u000A<\\u000A1) === true');
+}
+
+//CHECK#7
+if (eval("0\u000D<\u000D1") !== true) {
+ $ERROR('#7: (0\\u000D<\\u000D1) === true');
+}
+
+//CHECK#8
+if (eval("0\u2028<\u20281") !== true) {
+ $ERROR('#8: (0\\u2028<\\u20281) === true');
+}
+
+//CHECK#9
+if (eval("0\u2029<\u20291") !== true) {
+ $ERROR('#9: (0\\u2029<\\u20291) === true');
+}
+
+//CHECK#10
+if (eval("0\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== true) {
+ $ERROR('#10: (0\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029<\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T1.js
new file mode 100644
index 000000000..1bae3554b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A2.1_T1;
+* @section: 11.8.1, 11.8.5;
+* @assertion: Operator x < y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 < 2 !== true) {
+ $ERROR('#1: 1 < 2 === true');
+}
+
+//CHECK#2
+var x = 1;
+if (x < 2 !== true) {
+ $ERROR('#2: var x = 1; x < 2 === true');
+}
+
+//CHECK#3
+var y = 2;
+if (1 < y !== true) {
+ $ERROR('#3: var y = 2; 1 < y === true');
+}
+
+//CHECK#4
+var x = 1;
+var y = 2;
+if (x < y !== true) {
+ $ERROR('#4: var x = 1; var y = 2; x < y === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 2;
+if (objectx.prop < objecty.prop !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 2; objectx.prop < objecty.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T2.js
new file mode 100644
index 000000000..9f80a2086
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.1_T2;
+ * @section: 11.8.1, 11.8.5;
+ * @assertion: Operator x < y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x < 1;
+ $ERROR('#1.1: x < 1 throw ReferenceError. Actual: ' + (x < 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x < 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T3.js
new file mode 100644
index 000000000..b910103d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.1_T3;
+ * @section: 11.8.1, 11.8.5;
+ * @assertion: Operator x < y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 < y;
+ $ERROR('#1.1: 1 < y throw ReferenceError. Actual: ' + (1 < y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 < y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.2_T1.js
new file mode 100644
index 000000000..4e30f6530
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.2_T1;
+ * @section: 11.8.1, 8.6.2.6;
+ * @assertion: Operator x < y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 0}} < 1 !== true) {
+ $ERROR('#1: {valueOf: function() {return 1}} < 1 === true. Actual: ' + ({valueOf: function() {return 1}} < 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 0}, toString: function() {return 2}} < 1 !== true) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} < 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} < 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 0}, toString: function() {return {}}} < 1 !== true) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} < 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} < 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 0}, toString: function() {throw "error"}} < 1 !== true) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} < 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} < 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 0}, toString: function() {throw "error"}} < 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 0}, toString: function() {throw "error"}} < 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 < {toString: function() {return 2}} !== true) {
+ $ERROR('#5: 1 < {toString: function() {return 2}} === true. Actual: ' + (1 < {toString: function() {return 2}}));
+}
+
+//CHECK#6
+if (1 < {valueOf: function() {return {}}, toString: function() {return 2}} !== true) {
+ $ERROR('#6: 1 < {valueOf: function() {return {}}, toString: function() {return 2}} === true. Actual: ' + (1 < {valueOf: function() {return {}}, toString: function() {return 2}}));
+}
+
+//CHECK#7
+try {
+ 1 < {valueOf: function() {throw "error"}, toString: function() {return 2}};
+ $ERROR('#7.1: 1 < {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (1 < {valueOf: function() {throw "error"}, toString: function() {return 2}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 < {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 < {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 < {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 < {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 < {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.3_T1.js
new file mode 100644
index 000000000..46c9c52d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.3_T1;
+ * @section: 11.8.1;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x < y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x < y throw "x". Actual: ' + (x < y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x < y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T1.js
new file mode 100644
index 000000000..8427bb10e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.4_T1;
+ * @section: 11.8.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 1;
+if ((x = 0) < x !== false) {
+ $ERROR('#1: var x = 1; (x = 0) < x === false');
+}
+
+//CHECK#2
+var x = 0;
+if (x < (x = 1) !== true) {
+ $ERROR('#2: var x = 0; x < (x = 1) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T2.js
new file mode 100644
index 000000000..65d2141eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.4_T2;
+ * @section: 11.8.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() < y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() < y() throw "x". Actual: ' + (x() < y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() < y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T3.js
new file mode 100644
index 000000000..dd03a26a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.4_T3;
+ * @section: 11.8.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x < (x = 1);
+ $ERROR('#1.1: x < (x = 1) throw ReferenceError. Actual: ' + (x < (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x < (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) < y !== false) {
+ $ERROR('#2: (y = 1) < y === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.1.js
new file mode 100644
index 000000000..b24177cbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T1.1;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true < true !== false) {
+ $ERROR('#1: true < true === false');
+}
+
+//CHECK#2
+if (new Boolean(true) < true !== false) {
+ $ERROR('#2: new Boolean(true) < true === false');
+}
+
+//CHECK#3
+if (true < new Boolean(true) !== false) {
+ $ERROR('#3: true < new Boolean(true) === false');
+}
+
+//CHECK#4
+if (new Boolean(true) < new Boolean(true) !== false) {
+ $ERROR('#4: new Boolean(true) < new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.2.js
new file mode 100644
index 000000000..d924aa166
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T1.2;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 < 1 !== false) {
+ $ERROR('#1: 1 < 1 === false');
+}
+
+//CHECK#2
+if (new Number(1) < 1 !== false) {
+ $ERROR('#2: new Number(1) < 1 === false');
+}
+
+//CHECK#3
+if (1 < new Number(1) !== false) {
+ $ERROR('#3: 1 < new Number(1) === false');
+}
+
+//CHECK#4
+if (new Number(1) < new Number(1) !== false) {
+ $ERROR('#4: new Number(1) < new Number(1) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.3.js
new file mode 100644
index 000000000..fff96eba4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T1.3;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null < undefined !== false) {
+ $ERROR('#1: null < undefined === false');
+}
+
+//CHECK#2
+if (undefined < null !== false) {
+ $ERROR('#2: undefined < null === false');
+}
+
+//CHECK#3
+if (undefined < undefined !== false) {
+ $ERROR('#3: undefined < undefined === false');
+}
+
+//CHECK#4
+if (null < null !== false) {
+ $ERROR('#4: null < null === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.1.js
new file mode 100644
index 000000000..812fb63a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.1;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types are Number (primitive or object) or Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true < 1 !== false) {
+ $ERROR('#1: true < 1 === false');
+}
+
+//CHECK#2
+if (1 < true !== false) {
+ $ERROR('#2: 1 < true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) < 1 !== false) {
+ $ERROR('#3: new Boolean(true) < 1 === false');
+}
+
+//CHECK#4
+if (1 < new Boolean(true) !== false) {
+ $ERROR('#4: 1 < new Boolean(true) === false');
+}
+
+//CHECK#5
+if (true < new Number(1) !== false) {
+ $ERROR('#5: true < new Number(1) === false');
+}
+
+//CHECK#6
+if (new Number(1) < true !== false) {
+ $ERROR('#6: new Number(1) < true === false');
+}
+
+//CHECK#7
+if (new Boolean(true) < new Number(1) !== false) {
+ $ERROR('#7: new Boolean(true) < new Number(1) === false');
+}
+
+//CHECK#8
+if (new Number(1) < new Boolean(true) !== false) {
+ $ERROR('#8: new Number(1) < new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.2.js
new file mode 100644
index 000000000..78fef1158
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.2;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" < 1 !== false) {
+ $ERROR('#1: "1" < 1 === false');
+}
+
+//CHECK#2
+if (1 < "1" !== false) {
+ $ERROR('#2: 1 < "1" === false');
+}
+
+//CHECK#3
+if (new String("1") < 1 !== false) {
+ $ERROR('#3: new String("1") < 1 === false');
+}
+
+//CHECK#4
+if (1 < new String("1") !== false) {
+ $ERROR('#4: 1 < new String("1") === false');
+}
+
+//CHECK#5
+if ("1" < new Number(1) !== false) {
+ $ERROR('#5: "1" < new Number(1) === false');
+}
+
+//CHECK#6
+if (new Number(1) < "1" !== false) {
+ $ERROR('#6: new Number(1) < "1" === false');
+}
+
+//CHECK#7
+if (new String("1") < new Number(1) !== false) {
+ $ERROR('#7: new String("1") < new Number(1) === false');
+}
+
+//CHECK#8
+if (new Number(1) < new String("1") !== false) {
+ $ERROR('#8: new Number(1) < new String("1") === false');
+}
+
+//CHECK#9
+if ("x" < 1 !== false) {
+ $ERROR('#9: "x" < 1 === false');
+}
+
+//CHECK#10
+if (1 < "x" !== false) {
+ $ERROR('#10: 1 < "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.3.js
new file mode 100644
index 000000000..278bfefb7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.3;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 < null !== false) {
+ $ERROR('#1: 1 < null === false');
+}
+
+//CHECK#2
+if (null < 1 !== true) {
+ $ERROR('#2: null < 1 === true');
+}
+
+//CHECK#3
+if (new Number(1) < null !== false) {
+ $ERROR('#3: new Number(1) < null === false');
+}
+
+//CHECK#4
+if (null < new Number(1) !== true) {
+ $ERROR('#4: null < new Number(1) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.4.js
new file mode 100644
index 000000000..d33c4c52d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.4;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 < undefined !== false) {
+ $ERROR('#1: 1 < undefined === false');
+}
+
+//CHECK#2
+if (undefined < 1 !== false) {
+ $ERROR('#2: undefined < 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) < undefined !== false) {
+ $ERROR('#3: new Number(1) < undefined === false');
+}
+
+//CHECK#4
+if (undefined < new Number(1) !== false) {
+ $ERROR('#4: undefined < new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.5.js
new file mode 100644
index 000000000..569aa8f22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.5;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true < "1" !== false) {
+ $ERROR('#1: true < "1" === false');
+}
+
+//CHECK#2
+if ("1" < true !== false) {
+ $ERROR('#2: "1" < true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) < "1" !== false) {
+ $ERROR('#3: new Boolean(true) < "1" === false');
+}
+
+//CHECK#4
+if ("1" < new Boolean(true) !== false) {
+ $ERROR('#4: "1" < new Boolean(true) === false');
+}
+
+//CHECK#5
+if (true < new String("1") !== false) {
+ $ERROR('#5: true < new String("1") === false');
+}
+
+//CHECK#6
+if (new String("1") < true !== false) {
+ $ERROR('#6: new String("1") < true === false');
+}
+
+//CHECK#7
+if (new Boolean(true) < new String("1") !== false) {
+ $ERROR('#7: new Boolean(true) < new String("1") === false');
+}
+
+//CHECK#8
+if (new String("1") < new Boolean(true) !== false) {
+ $ERROR('#8: new String("1") < new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.6.js
new file mode 100644
index 000000000..8eb8c4d68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.6;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" < undefined !== false) {
+ $ERROR('#1: "1" < undefined === false');
+}
+
+//CHECK#2
+if (undefined < "1" !== false) {
+ $ERROR('#2: undefined < "1" === false');
+}
+
+//CHECK#3
+if (new String("1") < undefined !== false) {
+ $ERROR('#3: new String("1") < undefined === false');
+}
+
+//CHECK#4
+if (undefined < new String("1") !== false) {
+ $ERROR('#4: undefined < new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.7.js
new file mode 100644
index 000000000..6ecab8f71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.7;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" < null !== false) {
+ $ERROR('#1: "1" < null === false');
+}
+
+//CHECK#2
+if (null < "1" !== true) {
+ $ERROR('#2: null < "1" === true');
+}
+
+//CHECK#3
+if (new String("1") < null !== false) {
+ $ERROR('#3: new String("1") < null === false');
+}
+
+//CHECK#4
+if (null < new String("1") !== true) {
+ $ERROR('#4: null < new String("1") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.8.js
new file mode 100644
index 000000000..0a250d3c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.8;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true < undefined !== false) {
+ $ERROR('#1: true < undefined === false');
+}
+
+//CHECK#2
+if (undefined < true !== false) {
+ $ERROR('#2: undefined < true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) < undefined !== false) {
+ $ERROR('#3: new Boolean(true) < undefined === false');
+}
+
+//CHECK#4
+if (undefined < new Boolean(true) !== false) {
+ $ERROR('#4: undefined < new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.9.js
new file mode 100644
index 000000000..e67f97428
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.9;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true < null !== false) {
+ $ERROR('#1: true < null === false');
+}
+
+//CHECK#2
+if (null < true !== true) {
+ $ERROR('#2: null < true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) < null !== false) {
+ $ERROR('#3: new Boolean(true) < null === false');
+}
+
+//CHECK#4
+if (null < new Boolean(true) !== true) {
+ $ERROR('#4: null < new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.1.js
new file mode 100644
index 000000000..8be0500e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.2_T1.1;
+ * @section: 11.8.1;
+ * @assertion: Operator x < y returns ToString(x) < ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" < "1" !== false) {
+ $ERROR('#1: "1" < "1" === false');
+}
+
+//CHECK#2
+if (new String("1") < "1" !== false) {
+ $ERROR('#2: new String("1") < "1" === false');
+}
+
+//CHECK#3
+if ("1" < new String("1") !== false) {
+ $ERROR('#3: "1" < new String("1") === false');
+}
+
+//CHECK#4
+if (new String("1") < new String("1") !== false) {
+ $ERROR('#4: new String("1") < new String("1") === false');
+}
+
+//CHECK#5
+if ("x" < "1" !== false) {
+ $ERROR('#5: "x" < "1" === false');
+}
+
+//CHECK#6
+if ("1" < "x" !== true) {
+ $ERROR('#6: "1" < "x" === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.2.js
new file mode 100644
index 000000000..16a52aa26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.2_T1.2;
+ * @section: 11.8.1;
+ * @assertion: Operator x < y returns ToString(x) < ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} < function(){return 1}) !== ({}.toString() < function(){return 1}.toString())) {
+ $ERROR('#1: ({} < function(){return 1}) === ({}.toString() < function(){return 1}.toString())');
+}
+
+//CHECK#2
+if ((function(){return 1} < {}) !== (function(){return 1}.toString() < {}.toString())) {
+ $ERROR('#2: (function(){return 1} < {}) === (function(){return 1}.toString() < {}.toString())');
+}
+
+//CHECK#3
+if ((function(){return 1} < function(){return 1}) !== (function(){return 1}.toString() < function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} < function(){return 1}) === (function(){return 1}.toString() < function(){return 1}.toString())');
+}
+
+//CHECK#4
+if (({} < {}) !== ({}.toString() < {}.toString())) {
+ $ERROR('#4: ({} < {}) === ({}.toString() < {}.toString())');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.1.js
new file mode 100644
index 000000000..b6a0847b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.1;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NaN < 0) !== false) {
+ $ERROR('#1: (NaN < 0) === false');
+}
+
+//CHECK#2
+if ((Number.NaN < 1.1) !== false) {
+ $ERROR('#2: (NaN < 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN < -1.1) !== false) {
+ $ERROR('#3: (NaN < -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NaN < Number.NaN) !== false) {
+ $ERROR('#4: (NaN < NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NaN < Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN < +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (NaN < -Infinity) === false');
+}
+
+//CHECK#7
+if ((Number.NaN < Number.MAX_VALUE) !== false) {
+ $ERROR('#7: (NaN < Number.MAX_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN < Number.MIN_VALUE) !== false) {
+ $ERROR('#8: (NaN < Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.10.js
new file mode 100644
index 000000000..5949774ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.10.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.10;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If y is a prefix of x, return false;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" < "x") !== false) {
+ $ERROR('#1: ("x" < "x") === false');
+}
+
+//CHECK#2
+if (("x" < "") !== false) {
+ $ERROR('#2: ("x" < "") === false');
+}
+
+//CHECK#3
+if (("abcd" < "ab") !== false) {
+ $ERROR('#3: ("abcd" < ab") === false');
+}
+
+//CHECK#4
+if (("abc\u0064" < "abcd") !== false) {
+ $ERROR('#4: ("abc\\u0064" < abcd") === false');
+}
+
+//CHECK#5
+if (("x" + "y" < "x") !== false) {
+ $ERROR('#5: ("x" + "y" < "x") === false');
+}
+
+//CHECK#6
+var x = "x";
+if ((x + "y" < x) !== false) {
+ $ERROR('#6: var x = "x"; (x + "y" < x) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.11.js
new file mode 100644
index 000000000..d0942f293
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.11.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.11;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is a prefix of y and x !== y, return true;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" < "x ") !== true) {
+ $ERROR('#1: ("x" < "x ") === true');
+}
+
+//CHECK#2
+if (("" < "x") !== true) {
+ $ERROR('#2: ("" < "x") === true');
+}
+
+//CHECK#3
+if (("ab" < "abcd") !== true) {
+ $ERROR('#3: ("ab" < abcd") === true');
+}
+
+//CHECK#4
+if (("abcd" < "abc\u0064") !== false) {
+ $ERROR('#4: ("abcd" < abc\\u0064") === false');
+}
+
+//CHECK#5
+if (("x" < "x" + "y") !== true) {
+ $ERROR('#5: ("x" < "x" + "y") === true');
+}
+
+//CHECK#6
+var x = "x";
+if ((x < x + "y") !== true) {
+ $ERROR('#6: var x = "x"; (x < x + "y") === true');
+}
+
+//CHECK#7
+if (("a\u0000" < "a\u0000a") !== true) {
+ $ERROR('#7: ("a\\u0000" < "a\\u0000a") === true');
+}
+
+//CHECK#8
+if (("x" < " x") !== false) {
+ $ERROR('#8: ("x" < " x") === false');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T1.js
new file mode 100644
index 000000000..7a751c628
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.12_T1;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("xx" < "xy") !== true) {
+ $ERROR('#1: ("xx" < "xy") === true');
+}
+
+//CHECK#2
+if (("xy" < "xx") !== false) {
+ $ERROR('#2: ("xy" < "xx") === false');
+}
+
+//CHECK#3
+if (("x" < "y") !== true) {
+ $ERROR('#3: ("x" < y") === true');
+}
+
+//CHECK#4
+if (("aab" < "aba") !== true) {
+ $ERROR('#4: ("aab" < aba") === true');
+}
+
+//CHECK#5
+if (("\u0061\u0061\u0061\u0062" < "\u0061\u0061\u0061\u0061") !== false) {
+ $ERROR('#5: ("\\u0061\\u0061\\u0061\\u0062" < \\u0061\\u0061\\u0061\\u0061") === false');
+}
+
+//CHECK#6
+if (("a\u0000a" < "a\u0000b") !== true) {
+ $ERROR('#6: ("a\\u0000a" < "a\\u0000b") === true');
+}
+
+//CHECK#7
+if (("aB" < "aa") !== true) {
+ $ERROR('#7: ("aB" < aa") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T2.js
new file mode 100644
index 000000000..e473f00e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.12_T2;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("0" < "x") !== true) {
+ $ERROR('#1: ("0" < "x") !== true');
+}
+
+//CHECK#2
+if (("-" < "0") !== true) {
+ $ERROR('#2: ("-" < "0") !== true');
+}
+
+//CHECK#3
+if (("." < "0") !== true) {
+ $ERROR('#3: ("." < "0") !== true');
+}
+
+//CHECK#4
+if (("+" < "-") !== true) {
+ $ERROR('#4: ("+" < "-") !== true');
+}
+
+//CHECK#5
+if (("-0" < "-1") !== true) {
+ $ERROR('#5: ("-0" < "-1") !== true');
+}
+
+//CHECK#6
+if (("+1" < "-1") !== true) {
+ $ERROR('#6: ("+1" < "-1") !== true');
+}
+
+//CHECK#7
+if (("1" < "1e-10") !== true) {
+$ERROR('#7: ("1" < "1e-10") !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.2.js
new file mode 100644
index 000000000..b9d99d474
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.2;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If y is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 < Number.NaN) !== false) {
+ $ERROR('#1: (0 < NaN) === false');
+}
+
+//CHECK#2
+if ((1.1 < Number.NaN) !== false) {
+ $ERROR('#2: (1.1 < NaN) === false');
+}
+
+//CHECK#3
+if ((-1.1 < Number.NaN) !== false) {
+ $ERROR('#3: (-1.1 < NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN < Number.NaN) !== false) {
+ $ERROR('#4: (NaN < NaN) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY < Number.NaN) !== false) {
+ $ERROR('#5: (+Infinity < NaN) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY < Number.NaN) !== false) {
+ $ERROR('#6: (-Infinity < NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE < Number.NaN) !== false) {
+ $ERROR('#7: (Number.MAX_VALUE < NaN) === false');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE < Number.NaN) !== false) {
+ $ERROR('#8: (Number.MIN_VALUE < NaN) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.3.js
new file mode 100644
index 000000000..d7fd23ccd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.3.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.3;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x and y are the same number value, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 < 1) !== false) {
+ $ERROR('#1: (1 < 1) === false');
+}
+
+//CHECK#2
+if ((1.1 < 1.1) !== false) {
+ $ERROR('#2: (1.1 < 1.1) === false');
+}
+
+//CHECK#3
+if ((-1.1 < -1.1) !== false) {
+ $ERROR('#3: (-1.1 < -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity < -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY < Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (+Infinity < +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE < Number.MAX_VALUE) !== false) {
+ $ERROR('#6: (Number.MAX_VALUE < Number.MAX_VALUE) === false');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE < Number.MIN_VALUE) !== false) {
+ $ERROR('#7: (Number.MIN_VALUE < Number.MIN_VALUE) === false');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.4.js
new file mode 100644
index 000000000..fc8048fce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.4;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x and y are +0 and -0, return false;
+* @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((0 < 0) !== false) {
+ $ERROR('#1: (0 < 0) === false');
+}
+
+//CHECK#2
+if ((-0 < -0) !== false) {
+ $ERROR('#2: (-0 < -0) === false');
+}
+
+//CHECK#3
+if ((+0 < -0) !== false) {
+ $ERROR('#3: (+0 < -0) === false');
+}
+
+//CHECK#4
+if ((-0 < +0) !== false) {
+ $ERROR('#4: (-0 < +0) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.5.js
new file mode 100644
index 000000000..07b13e6f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.5;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is +Infinity, return false;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY < 0) !== false) {
+ $ERROR('#1: (+Infinity < 0) === false');
+}
+
+//CHECK#2
+if ((Number.POSITIVE_INFINITY < 1.1) !== false) {
+ $ERROR('#2: (+Infinity < 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY < -1.1) !== false) {
+ $ERROR('#3: (+Infinity < -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (+Infinity < -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY < Number.MAX_VALUE) !== false) {
+ $ERROR('#5: (+Infinity < Number.MAX_VALUE) === false');
+}
+
+//CHECK#6
+if ((Number.POSITIVE_INFINITY < Number.MIN_VALUE) !== false) {
+ $ERROR('#6: (+Infinity < Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.6.js
new file mode 100644
index 000000000..13073be10
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.6;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If y is +Infinity and x !== y, return true;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: (0 < +Infinity) === true');
+}
+
+//CHECK#2
+if ((1.1 < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#2: (1.1 < +Infinity) === true');
+}
+
+//CHECK#3
+if ((-1.1 < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#3: (-1.1 < +Infinity) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity < +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#5: (Number.MAX_VALUE < +Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#6: (Number.MIN_VALUE < +Infinity) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.7.js
new file mode 100644
index 000000000..f1a8b6be7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.7.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.7;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is -Infinity and x !== y, return true;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY < 0) !== true) {
+ $ERROR('#1: (-Infinity < 0) === true');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY < 1.1) !== true) {
+ $ERROR('#2: (-Infinity < 1.1) === true');
+}
+
+//CHECK#3
+if ((Number.NEGATIVE_INFINITY < -1.1) !== true) {
+ $ERROR('#3: (-Infinity < -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity < +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY < Number.MAX_VALUE) !== true) {
+ $ERROR('#5: (-Infinity < Number.MAX_VALUE) === true');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY < Number.MIN_VALUE) !== true) {
+ $ERROR('#6: (-Infinity < Number.MIN_VALUE) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.8.js
new file mode 100644
index 000000000..dc4e00379
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.8;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If y is -Infinity, return false;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#1: (0 < -Infinity) === false');
+}
+
+//CHECK#2
+if ((1.1 < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#2: (1.1 < -Infinity) === false');
+}
+
+//CHECK#3
+if ((-1.1 < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#3: (-1.1 < -Infinity) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (+Infinity < -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#5: (Number.MAX_VALUE < -Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (Number.MIN_VALUE < -Infinity) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.9.js
new file mode 100644
index 000000000..7aa63bfff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.9.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.9;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is less than y and these values are both finite non-zero, return true; otherwise, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1.1 < 1) !== false) {
+ $ERROR('#1: (1.1 < 1) === false');
+}
+
+//CHECK#2
+if ((1 < 1.1) !== true) {
+ $ERROR('#2: (1 < 1.1) === true');
+}
+
+//CHECK#3
+if ((-1.1 < -1) !== true) {
+ $ERROR('#3: (-1.1 < -1) === true');
+}
+
+//CHECK#4
+if ((-1 < -1.1) !== false) {
+ $ERROR('#4: (-1 < -1.1) === false');
+}
+
+//CHECK#5
+if ((0 < 0.1) !== true) {
+ $ERROR('#5: (0 < 0.1) === true');
+}
+
+//CHECK#6
+if ((-0.1 < 0) !== true) {
+ $ERROR('#6: (-0.1 < 0) === true');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE/2 < Number.MAX_VALUE) !== true) {
+ $ERROR('#7: (Number.MAX_VALUE/2 < Number.MAX_VALUE) === true');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE < Number.MIN_VALUE*2) !== true) {
+ $ERROR('#8: (Number.MIN_VALUE < Number.MIN_VALUE*2) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A1.js
new file mode 100644
index 000000000..b0ea8fe91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A1;
+* @section: 11.8.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and ">" or ">" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("0\u0009>\u00091") !== false) {
+ $ERROR('#1: 0\\u0009>\\u00091) === false');
+}
+
+//CHECK#2
+if (eval("0\u000B>\u000B1") !== false) {
+ $ERROR('#2: 0\\u000B>\\u000B1) === false');
+}
+
+//CHECK#3
+if (eval("0\u000C>\u000C1") !== false) {
+ $ERROR('#3: (0\\u000C>\\u000C1) === false');
+}
+
+//CHECK#4
+if (eval("0\u0020>\u00201") !== false) {
+ $ERROR('#4: (0\\u0020>\\u00201) === false');
+}
+
+//CHECK#5
+if (eval("0\u00A0>\u00A01") !== false) {
+ $ERROR('#5: (0\\u00A0>\\u00A01) === false');
+}
+
+//CHECK#6
+if (eval("0\u000A>\u000A1") !== false) {
+ $ERROR('#6: (0\\u000A>\\u000A1) === false');
+}
+
+//CHECK#7
+if (eval("0\u000D>\u000D1") !== false) {
+ $ERROR('#7: (0\\u000D>\\u000D1) === false');
+}
+
+//CHECK#8
+if (eval("0\u2028>\u20281") !== false) {
+ $ERROR('#8: (0\\u2028>\\u20281) === false');
+}
+
+//CHECK#9
+if (eval("0\u2029>\u20291") !== false) {
+ $ERROR('#9: (0\\u2029>\\u20291) === false');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== true) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T1.js
new file mode 100644
index 000000000..1e6e0ba8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A2.1_T1;
+* @section: 11.8.2, 11.8.5;
+* @assertion: Operator x > y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (2 > 1 !== true) {
+ $ERROR('#1: 2 > 1 === true');
+}
+
+//CHECK#2
+var x = 2;
+if (x > 1 !== true) {
+ $ERROR('#2: var x = 2; x > 1 === true');
+}
+
+//CHECK#3
+var y = 1;
+if (2 > y !== true) {
+ $ERROR('#3: var y = 1; 2 > y === true');
+}
+
+//CHECK#4
+var x = 2;
+var y = 1;
+if (x > y !== true) {
+ $ERROR('#4: var x = 2; var y = 1; x > y === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 2;
+objecty.prop = 1;
+if (objectx.prop > objecty.prop !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 2; objecty.prop = 1; objectx.prop > objecty.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T2.js
new file mode 100644
index 000000000..173eab055
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.1_T2;
+ * @section: 11.8.2, 11.8.5;
+ * @assertion: Operator x > y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x > 1;
+ $ERROR('#1.1: x > 1 throw ReferenceError. Actual: ' + (x > 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x > 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T3.js
new file mode 100644
index 000000000..b80115a6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.1_T3;
+ * @section: 11.8.2, 11.8.5;
+ * @assertion: Operator x > y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 > y;
+ $ERROR('#1.1: 1 > y throw ReferenceError. Actual: ' + (1 > y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 > y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.2_T1.js
new file mode 100644
index 000000000..ebf1b0eba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.2_T1;
+ * @section: 11.8.2, 8.6.2.6;
+ * @assertion: Operator x > y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 2}} > 1 !== true) {
+ $ERROR('#1: {valueOf: function() {return 1}} > 1 === true. Actual: ' + ({valueOf: function() {return 1}} > 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 2}, toString: function() {return 0}} > 1 !== true) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 2}} > 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 2}} > 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 2}, toString: function() {return {}}} > 1 !== true) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} > 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} > 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 2}, toString: function() {throw "error"}} > 1 !== true) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} > 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} > 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 2}, toString: function() {throw "error"}} > 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 2}, toString: function() {throw "error"}} > 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 > {toString: function() {return 0}} !== true) {
+ $ERROR('#5: 1 > {toString: function() {return 0}} === true. Actual: ' + (1 > {toString: function() {return 0}}));
+}
+
+//CHECK#6
+if (1 > {valueOf: function() {return {}}, toString: function() {return 0}} !== true) {
+ $ERROR('#6: 1 > {valueOf: function() {return {}}, toString: function() {return 0}} === true. Actual: ' + (1 > {valueOf: function() {return {}}, toString: function() {return 0}}));
+}
+
+//CHECK#7
+try {
+ 1 > {valueOf: function() {throw "error"}, toString: function() {return 0}};
+ $ERROR('#7.1: 1 > {valueOf: function() {throw "error"}, toString: function() {return 0}} throw "error". Actual: ' + (1 > {valueOf: function() {throw "error"}, toString: function() {return 0}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 > {valueOf: function() {throw "error"}, toString: function() {return 0}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 > {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 > {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 > {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 > {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.3_T1.js
new file mode 100644
index 000000000..a3d91e2cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.3_T1;
+ * @section: 11.8.2;
+ * @assertion: ToNumber(second expression) is called first, and then ToNumber(first expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x > y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x > y throw "y". Actual: ' + (x > y));
+} catch (e) {
+ if (e === "x") {
+ $ERROR('#1.2: ToNumber(second expression) is called first, and then ToNumber(first expression)');
+ } else {
+ if (e !== "y") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x > y throw "y". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T1.js
new file mode 100644
index 000000000..4a8414f98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.4_T1;
+ * @section: 11.8.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) > x !== false) {
+ $ERROR('#1: var x = 0; (x = 1) > x === false');
+}
+
+//CHECK#2
+var x = 1;
+if (x > (x = 0) !== true) {
+ $ERROR('#2: var x = 1; x > (x = 0) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T2.js
new file mode 100644
index 000000000..062a0690d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.4_T2;
+ * @section: 11.8.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() > y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() > y() throw "x". Actual: ' + (x() > y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() > y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T3.js
new file mode 100644
index 000000000..0c6df429e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.4_T3;
+ * @section: 11.8.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x > (x = 1);
+ $ERROR('#1.1: x > (x = 1) throw ReferenceError. Actual: ' + (x > (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x > (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) > y !== false) {
+ $ERROR('#2: (y = 1) > y === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.1.js
new file mode 100644
index 000000000..d61e4c0bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T1.1;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true > true !== false) {
+ $ERROR('#1: true > true === false');
+}
+
+//CHECK#2
+if (new Boolean(true) > true !== false) {
+ $ERROR('#2: new Boolean(true) > true === false');
+}
+
+//CHECK#3
+if (true > new Boolean(true) !== false) {
+ $ERROR('#3: true > new Boolean(true) === false');
+}
+
+//CHECK#4
+if (new Boolean(true) > new Boolean(true) !== false) {
+ $ERROR('#4: new Boolean(true) > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.2.js
new file mode 100644
index 000000000..bd9490f2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T1.2;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 > 1 !== false) {
+ $ERROR('#1: 1 > 1 === false');
+}
+
+//CHECK#2
+if (new Number(1) > 1 !== false) {
+ $ERROR('#2: new Number(1) > 1 === false');
+}
+
+//CHECK#3
+if (1 > new Number(1) !== false) {
+ $ERROR('#3: 1 > new Number(1) === false');
+}
+
+//CHECK#4
+if (new Number(1) > new Number(1) !== false) {
+ $ERROR('#4: new Number(1) > new Number(1) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.3.js
new file mode 100644
index 000000000..acbdaa1bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T1.3;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null > undefined !== false) {
+ $ERROR('#1: null > undefined === false');
+}
+
+//CHECK#2
+if (undefined > null !== false) {
+ $ERROR('#2: undefined > null === false');
+}
+
+//CHECK#3
+if (undefined > undefined !== false) {
+ $ERROR('#3: undefined > undefined === false');
+}
+
+//CHECK#4
+if (null > null !== false) {
+ $ERROR('#4: null > null === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.1.js
new file mode 100644
index 000000000..27fd050e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.1;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true > 1 !== false) {
+ $ERROR('#1: true > 1 === false');
+}
+
+//CHECK#2
+if (1 > true !== false) {
+ $ERROR('#2: 1 > true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) > 1 !== false) {
+ $ERROR('#3: new Boolean(true) > 1 === false');
+}
+
+//CHECK#4
+if (1 > new Boolean(true) !== false) {
+ $ERROR('#4: 1 > new Boolean(true) === false');
+}
+
+//CHECK#5
+if (true > new Number(1) !== false) {
+ $ERROR('#5: true > new Number(1) === false');
+}
+
+//CHECK#6
+if (new Number(1) > true !== false) {
+ $ERROR('#6: new Number(1) > true === false');
+}
+
+//CHECK#7
+if (new Boolean(true) > new Number(1) !== false) {
+ $ERROR('#7: new Boolean(true) > new Number(1) === false');
+}
+
+//CHECK#8
+if (new Number(1) > new Boolean(true) !== false) {
+ $ERROR('#8: new Number(1) > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.2.js
new file mode 100644
index 000000000..3d5b95451
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.2;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" > 1 !== false) {
+ $ERROR('#1: "1" > 1 === false');
+}
+
+//CHECK#2
+if (1 > "1" !== false) {
+ $ERROR('#2: 1 > "1" === false');
+}
+
+//CHECK#3
+if (new String("1") > 1 !== false) {
+ $ERROR('#3: new String("1") > 1 === false');
+}
+
+//CHECK#4
+if (1 > new String("1") !== false) {
+ $ERROR('#4: 1 > new String("1") === false');
+}
+
+//CHECK#5
+if ("1" > new Number(1) !== false) {
+ $ERROR('#5: "1" > new Number(1) === false');
+}
+
+//CHECK#6
+if (new Number(1) > "1" !== false) {
+ $ERROR('#6: new Number(1) > "1" === false');
+}
+
+//CHECK#7
+if (new String("1") > new Number(1) !== false) {
+ $ERROR('#7: new String("1") > new Number(1) === false');
+}
+
+//CHECK#8
+if (new Number(1) > new String("1") !== false) {
+ $ERROR('#8: new Number(1) > new String("1") === false');
+}
+
+//CHECK#9
+if ("x" > 1 !== false) {
+ $ERROR('#9: "x" > 1 === false');
+}
+
+//CHECK#10
+if (1 > "x" !== false) {
+ $ERROR('#10: 1 > "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.3.js
new file mode 100644
index 000000000..b02dda0aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.3;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 > null !== true) {
+ $ERROR('#1: 1 > null === true');
+}
+
+//CHECK#2
+if (null > 1 !== false) {
+ $ERROR('#2: null > 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) > null !== true) {
+ $ERROR('#3: new Number(1) > null === true');
+}
+
+//CHECK#4
+if (null > new Number(1) !== false) {
+ $ERROR('#4: null > new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.4.js
new file mode 100644
index 000000000..584be1496
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.4;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 > undefined !== false) {
+ $ERROR('#1: 1 > undefined === false');
+}
+
+//CHECK#2
+if (undefined > 1 !== false) {
+ $ERROR('#2: undefined > 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) > undefined !== false) {
+ $ERROR('#3: new Number(1) > undefined === false');
+}
+
+//CHECK#4
+if (undefined > new Number(1) !== false) {
+ $ERROR('#4: undefined > new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.5.js
new file mode 100644
index 000000000..ea806dc2f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.5;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true > "1" !== false) {
+ $ERROR('#1: true > "1" === false');
+}
+
+//CHECK#2
+if ("1" > true !== false) {
+ $ERROR('#2: "1" > true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) > "1" !== false) {
+ $ERROR('#3: new Boolean(true) > "1" === false');
+}
+
+//CHECK#4
+if ("1" > new Boolean(true) !== false) {
+ $ERROR('#4: "1" > new Boolean(true) === false');
+}
+
+//CHECK#5
+if (true > new String("1") !== false) {
+ $ERROR('#5: true > new String("1") === false');
+}
+
+//CHECK#6
+if (new String("1") > true !== false) {
+ $ERROR('#6: new String("1") > true === false');
+}
+
+//CHECK#7
+if (new Boolean(true) > new String("1") !== false) {
+ $ERROR('#7: new Boolean(true) > new String("1") === false');
+}
+
+//CHECK#8
+if (new String("1") > new Boolean(true) !== false) {
+ $ERROR('#8: new String("1") > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.6.js
new file mode 100644
index 000000000..c00a727a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.6;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" > undefined !== false) {
+ $ERROR('#1: "1" > undefined === false');
+}
+
+//CHECK#2
+if (undefined > "1" !== false) {
+ $ERROR('#2: undefined > "1" === false');
+}
+
+//CHECK#3
+if (new String("1") > undefined !== false) {
+ $ERROR('#3: new String("1") > undefined === false');
+}
+
+//CHECK#4
+if (undefined > new String("1") !== false) {
+ $ERROR('#4: undefined > new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.7.js
new file mode 100644
index 000000000..cc6d5b374
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.7;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" > null !== true) {
+ $ERROR('#1: "1" > null === true');
+}
+
+//CHECK#2
+if (null > "1" !== false) {
+ $ERROR('#2: null > "1" === false');
+}
+
+//CHECK#3
+if (new String("1") > null !== true) {
+ $ERROR('#3: new String("1") > null === true');
+}
+
+//CHECK#4
+if (null > new String("1") !== false) {
+ $ERROR('#4: null > new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.8.js
new file mode 100644
index 000000000..090c77504
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.8;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true > undefined !== false) {
+ $ERROR('#1: true > undefined === false');
+}
+
+//CHECK#2
+if (undefined > true !== false) {
+ $ERROR('#2: undefined > true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) > undefined !== false) {
+ $ERROR('#3: new Boolean(true) > undefined === false');
+}
+
+//CHECK#4
+if (undefined > new Boolean(true) !== false) {
+ $ERROR('#4: undefined > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.9.js
new file mode 100644
index 000000000..abe87c639
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.9;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true > null !== true) {
+ $ERROR('#1: true > null === true');
+}
+
+//CHECK#2
+if (null > true !== false) {
+ $ERROR('#2: null > true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) > null !== true) {
+ $ERROR('#3: new Boolean(true) > null === true');
+}
+
+//CHECK#4
+if (null > new Boolean(true) !== false) {
+ $ERROR('#4: null > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.1.js
new file mode 100644
index 000000000..d2ff7bf33
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.2_T1.1;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is String and Type(Primitive(y)) is String, then operator x > y returns ToString(x) > ToString(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" > "1" !== false) {
+ $ERROR('#1: "1" > "1" === false');
+}
+
+//CHECK#2
+if (new String("1") > "1" !== false) {
+ $ERROR('#2: new String("1") > "1" === false');
+}
+
+//CHECK#3
+if ("1" > new String("1") !== false) {
+ $ERROR('#3: "1" > new String("1") === false');
+}
+
+//CHECK#4
+if (new String("1") > new String("1") !== false) {
+ $ERROR('#4: new String("1") > new String("1") === false');
+}
+
+//CHECK#5
+if ("x" > "1" !== true) {
+ $ERROR('#5: "x" > "1" === true');
+}
+
+//CHECK#6
+if ("1" > "x" !== false) {
+ $ERROR('#6: "1" > "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.2.js
new file mode 100644
index 000000000..c9ebb0215
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.2_T1.2;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is String and Type(Primitive(y)) is String, then operator x > y returns ToString(x) > ToString(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} > function(){return 1}) !== ({}.toString() > function(){return 1}.toString())) {
+ $ERROR('#1: ({} > function(){return 1}) === ({}.toString() > function(){return 1}.toString())');
+}
+
+//CHECK#2
+if ((function(){return 1} > {}) !== (function(){return 1}.toString() > {}.toString())) {
+ $ERROR('#2: (function(){return 1} > {}) === (function(){return 1}.toString() > {}.toString())');
+}
+
+//CHECK#3
+if ((function(){return 1} > function(){return 1}) !== (function(){return 1}.toString() > function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} > function(){return 1}) === (function(){return 1}.toString() > function(){return 1}.toString())');
+}
+
+//CHECK#4
+if (({} > {}) !== ({}.toString() > {}.toString())) {
+ $ERROR('#4: ({} > {}) === ({}.toString() > {}.toString())');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.1.js
new file mode 100644
index 000000000..e7d69fbe0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.1;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NaN > 0) !== false) {
+ $ERROR('#1: (NaN > 0) === false');
+}
+
+//CHECK#2
+if ((Number.NaN > 1.1) !== false) {
+ $ERROR('#2: (NaN > 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN > -1.1) !== false) {
+ $ERROR('#3: (NaN > -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NaN > Number.NaN) !== false) {
+ $ERROR('#4: (NaN > NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NaN > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN > +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN > Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (NaN > -Infinity) === false');
+}
+
+//CHECK#7
+if ((Number.NaN > Number.MAX_VALUE) !== false) {
+ $ERROR('#7: (NaN > Number.MAX_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN > Number.MIN_VALUE) !== false) {
+ $ERROR('#8: (NaN > Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.10.js
new file mode 100644
index 000000000..155e78398
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.10.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.10;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x is a prefix of y, return false;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" > "x") !== false) {
+ $ERROR('#1: ("x" > "x") === false');
+}
+
+//CHECK#2
+if (("" > "x") !== false) {
+ $ERROR('#2: ("" > "x") === false');
+}
+
+//CHECK#3
+if (("ab" > "abcd") !== false) {
+ $ERROR('#3: ("ab" > abcd") === false');
+}
+
+//CHECK#4
+if (("abcd" > "abc\u0064") !== false) {
+ $ERROR('#4: ("abcd" > abc\\u0064") === false');
+}
+
+//CHECK#5
+if (("x" > "x" + "y") !== false) {
+ $ERROR('#5: ("x" > "x" + "y") === false');
+}
+
+//CHECK#6
+var x = "x";
+if ((x > x + "y") !== false) {
+ $ERROR('#6: var x = "x"; (x > x + "y") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.11.js
new file mode 100644
index 000000000..a5ebd3e36
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.11.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.11;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If y is a prefix of x and x !== y, return true;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x " > "x") !== true) {
+ $ERROR('#1: ("x " > "x") === true');
+}
+
+//CHECK#2
+if (("x" > "") !== true) {
+ $ERROR('#2: ("x" > "") === true');
+}
+
+//CHECK#3
+if (("abcd" > "ab") !== true) {
+ $ERROR('#3: ("abcd" > ab") === true');
+}
+
+//CHECK#4
+if (("abc\u0064" > "abcd") !== false) {
+ $ERROR('#4: ("abc\\u0064" > abc") === false');
+}
+
+//CHECK#5
+if (("x" + "y" > "x") !== true) {
+ $ERROR('#5: ("x" + "y" > "x") === true');
+}
+
+//CHECK#6
+var x = "x";
+if ((x + 'y' > x) !== true) {
+ $ERROR('#6: var x = "x"; (x + "y" > x) === true');
+}
+
+//CHECK#7
+if (("a\u0000a" > "a\u0000") !== true) {
+ $ERROR('#7: ("a\\u0000a" > "a\\u0000") === true');
+}
+
+//CHECK#8
+if ((" x" > "x") !== false) {
+ $ERROR('#8: (" x" > "x") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T1.js
new file mode 100644
index 000000000..cd8d393ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.12_T1;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("xy" > "xx") !== true) {
+ $ERROR('#1: ("xy" > "xx") === true');
+}
+
+//CHECK#2
+if (("xx" > "xy") !== false) {
+ $ERROR('#2: ("xx" > "xy") === false');
+}
+
+//CHECK#3
+if (("y" > "x") !== true) {
+ $ERROR('#3: ("y" > "x") === true');
+}
+
+//CHECK#4
+if (("aba" > "aab") !== true) {
+ $ERROR('#4: ("aba" > aab") === true');
+}
+
+//CHECK#5
+if (("\u0061\u0061\u0061\u0061" > "\u0061\u0061\u0061\u0062") !== false) {
+ $ERROR('#5: ("\\u0061\\u0061\\u0061\\u0061" > \\u0061\\u0061\\u0061\\u0062") === false');
+}
+
+//CHECK#6
+if (("a\u0000b" > "a\u0000a") !== true) {
+ $ERROR('#6: ("a\\u0000b" > "a\\u0000a") === true');
+}
+
+//CHECK#7
+if (("aa" > "aB") !== true) {
+ $ERROR('#7: ("aa" > aB") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T2.js
new file mode 100644
index 000000000..4ca285a7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.12_T2;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" > "0") !== true) {
+ $ERROR('#1: ("x" > "0") !== true');
+}
+
+//CHECK#2
+if (("0" > "-") !== true) {
+ $ERROR('#2: ("0" > "-") !== true');
+}
+
+//CHECK#3
+if (("0" > ".") !== true) {
+ $ERROR('#3: ("0" > ".") !== true');
+}
+
+//CHECK#4
+if (("-" > "+") !== true) {
+ $ERROR('#4: ("-" > "+") !== true');
+}
+
+//CHECK#5
+if (("-1" > "-0") !== true) {
+ $ERROR('#5: ("-1" > "-0") !== true');
+}
+
+//CHECK#6
+if (("-1" > "+1") !== true) {
+ $ERROR('#6: ("-1" > "+1") !== true');
+}
+
+//CHECK#7
+if (("1e-10" > "1") !== true) {
+$ERROR('#7: ("1e-10" > "1") !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.2.js
new file mode 100644
index 000000000..1419dc125
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.2;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If y is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 > Number.NaN) !== false) {
+ $ERROR('#1: (0 > NaN) === false');
+}
+
+//CHECK#2
+if ((1.1 > Number.NaN) !== false) {
+ $ERROR('#2: (1.1 > NaN) === false');
+}
+
+//CHECK#3
+if ((-1.1 > Number.NaN) !== false) {
+ $ERROR('#3: (-1.1 > NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN > Number.NaN) !== false) {
+ $ERROR('#4: (NaN > NaN) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY > Number.NaN) !== false) {
+ $ERROR('#5: (+Infinity > NaN) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY > Number.NaN) !== false) {
+ $ERROR('#6: (-Infinity > NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE > Number.NaN) !== false) {
+ $ERROR('#7: (Number.MAX_VALUE > NaN) === false');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE > Number.NaN) !== false) {
+ $ERROR('#8: (Number.MIN_VALUE > NaN) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.3.js
new file mode 100644
index 000000000..8cbec29cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.3.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.3;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x and y are the same number value, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 > 1) !== false) {
+ $ERROR('#1: (1 > 1) === false');
+}
+
+//CHECK#2
+if ((1.1 > 1.1) !== false) {
+ $ERROR('#2: (1.1 > 1.1) === false');
+}
+
+//CHECK#3
+if ((-1.1 > -1.1) !== false) {
+ $ERROR('#3: (-1.1 > -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY > Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity > -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (+Infinity > +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE > Number.MAX_VALUE) !== false) {
+ $ERROR('#6: (Number.MAX_VALUE > Number.MAX_VALUE) === false');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE > Number.MIN_VALUE) !== false) {
+ $ERROR('#7: (Number.MIN_VALUE > Number.MIN_VALUE) === false');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.4.js
new file mode 100644
index 000000000..5998df7d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.4;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If either variable x or y is +0 and the other is -0, return false;
+* @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((0 > 0) !== false) {
+ $ERROR('#1: (0 > 0) === false');
+}
+
+//CHECK#2
+if ((-0 > -0) !== false) {
+ $ERROR('#2: (-0 > -0) === false');
+}
+
+//CHECK#3
+if ((+0 > -0) !== false) {
+ $ERROR('#3: (+0 > -0) === false');
+}
+
+//CHECK#4
+if ((-0 > +0) !== false) {
+ $ERROR('#4: (-0 > +0) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.5.js
new file mode 100644
index 000000000..41c24a1b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.5;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x is +Infinity and x !== y, return true;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY > 0) !== true) {
+ $ERROR('#1: (+Infinity > 0) === true');
+}
+
+//CHECK#2
+if ((Number.POSITIVE_INFINITY > 1.1) !== true) {
+ $ERROR('#2: (+Infinity > 1.1) === true');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY > -1.1) !== true) {
+ $ERROR('#3: (+Infinity > -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (+Infinity > -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY > Number.MAX_VALUE) !== true) {
+ $ERROR('#5: (+Infinity > Number.MAX_VALUE) === true');
+}
+
+//CHECK#6
+if ((Number.POSITIVE_INFINITY > Number.MIN_VALUE) !== true) {
+ $ERROR('#6: (+Infinity > Number.MIN_VALUE) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.6.js
new file mode 100644
index 000000000..0477f3d8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.6;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If y is +Infinity, return false;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#1: (0 > +Infinity) === false');
+}
+
+//CHECK#2
+if ((1.1 > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#2: (1.1 > +Infinity) === false');
+}
+
+//CHECK#3
+if ((-1.1 > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#3: (-1.1 > +Infinity) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity > +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (Number.MAX_VALUE > +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#6: (Number.MIN_VALUE > +Infinity) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.7.js
new file mode 100644
index 000000000..0aec46a2f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.7.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.7;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x is -Infinity, return false;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY > 0) !== false) {
+ $ERROR('#1: (-Infinity > 0) === false');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY > 1.1) !== false) {
+ $ERROR('#2: (-Infinity > 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NEGATIVE_INFINITY > -1.1) !== false) {
+ $ERROR('#3: (-Infinity > -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity > +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY > Number.MAX_VALUE) !== false) {
+ $ERROR('#5: (-Infinity > Number.MAX_VALUE) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY > Number.MIN_VALUE) !== false) {
+ $ERROR('#6: (-Infinity > Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.8.js
new file mode 100644
index 000000000..df8d8c421
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.8;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If y is -Infinity and x !== y, return true;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#1: (0 > -Infinity) === true');
+}
+
+//CHECK#2
+if ((1.1 > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: (1.1 > -Infinity) === true');
+}
+
+//CHECK#3
+if ((-1.1 > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#3: (-1.1 > -Infinity) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (+Infinity > -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: (Number.MAX_VALUE > -Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#6: (Number.MIN_VALUE > -Infinity) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.9.js
new file mode 100644
index 000000000..c2b192cd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.9.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.9;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If is x greater than y and these values are both finite non-zero, return true; otherwise, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 > 1.1) !== false) {
+ $ERROR('#1: (1 > 1.1) === false');
+}
+
+//CHECK#2
+if ((1.1 > 1) !== true) {
+ $ERROR('#2: (1.1 > 1) === true');
+}
+
+//CHECK#3
+if ((-1 > -1.1) !== true) {
+ $ERROR('#3: (-1 > -1.1) === true');
+}
+
+//CHECK#4
+if ((-1.1 > -1) !== false) {
+ $ERROR('#4: (-1.1 > -1) === false');
+}
+
+//CHECK#5
+if ((0.1 > 0) !== true) {
+ $ERROR('#5: (0.1 > 0) === true');
+}
+
+//CHECK#6
+if ((0 > -0.1) !== true) {
+ $ERROR('#6: (0 > -0.1) === true');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE > Number.MAX_VALUE/2) !== true) {
+ $ERROR('#7: (Number.MAX_VALUE > Number.MAX_VALUE/2) === true');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE*2 > Number.MIN_VALUE) !== true) {
+ $ERROR('#8: (Number.MIN_VALUE*2 > Number.MIN_VALUE) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A1.js
new file mode 100644
index 000000000..d440e0935
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A1;
+* @section: 11.8.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "<=" or between "<=" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009<=\u00091") !== true) {
+ $ERROR('#1: (1\\u0009<=\\u00091) === true');
+}
+
+//CHECK#2
+if (eval("1\u000B<=\u000B1") !== true) {
+ $ERROR('#2: (1\\u000B<=\\u000B1) === true');
+}
+
+//CHECK#3
+if (eval("1\u000C<=\u000C1") !== true) {
+ $ERROR('#3: (1\\u000C<=\\u000C1) === true');
+}
+
+//CHECK#4
+if (eval("1\u0020<=\u00201") !== true) {
+ $ERROR('#4: (1\\u0020<=\\u00201) === true');
+}
+
+//CHECK#5
+if (eval("1\u00A0<=\u00A01") !== true) {
+ $ERROR('#5: (1\\u00A0<=\\u00A01) === true');
+}
+
+//CHECK#6
+if (eval("1\u000A<=\u000A1") !== true) {
+ $ERROR('#6: (1\\u000A<=\\u000A1) === true');
+}
+
+//CHECK#7
+if (eval("1\u000D<=\u000D1") !== true) {
+ $ERROR('#7: (1\\u000D<=\\u000D1) === true');
+}
+
+//CHECK#8
+if (eval("1\u2028<=\u20281") !== true) {
+ $ERROR('#8: (1\\u2028<=\\u20281) === true');
+}
+
+//CHECK#9
+if (eval("1\u2029<=\u20291") !== true) {
+ $ERROR('#9: (1\\u2029<=\\u20291) === true');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290") !== true) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20290) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T1.js
new file mode 100644
index 000000000..c80563b2c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A2.1_T1;
+* @section: 11.8.3, 11.8.5;
+* @assertion: Operator x <= y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 <= 1 !== true) {
+ $ERROR('#1: 1 <= 1 === true');
+}
+
+//CHECK#2
+var x = 1;
+if (x <= 1 !== true) {
+ $ERROR('#2: var x = 1; x <= 1 === true');
+}
+
+//CHECK#3
+var y = 1;
+if (1 <= y !== true) {
+ $ERROR('#3: var y = 1; 1 <= y === true');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x <= y !== true) {
+ $ERROR('#4: var x = 1; var y = 1; x <= y === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop <= objecty.prop !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop <= objecty.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T2.js
new file mode 100644
index 000000000..b7bb57e89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.1_T2;
+ * @section: 11.8.3, 11.8.5;
+ * @assertion: Operator x <= y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x <= 1;
+ $ERROR('#1.1: x <= 1 throw ReferenceError. Actual: ' + (x <= 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x <= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T3.js
new file mode 100644
index 000000000..fbb266ec1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.1_T3;
+ * @section: 11.8.3, 11.8.5;
+ * @assertion: Operator x <= y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 <= y;
+ $ERROR('#1.1: 1 <= y throw ReferenceError. Actual: ' + (1 <= y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 <= y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.2_T1.js
new file mode 100644
index 000000000..dc85f4908
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.2_T1;
+ * @section: 11.8.3, 8.6.2.6;
+ * @assertion: Operator x <= y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 0}} <= 1 !== true) {
+ $ERROR('#1: {valueOf: function() {return 1}} <= 1 === true. Actual: ' + ({valueOf: function() {return 1}} <= 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 0}, toString: function() {return 2}} <= 1 !== true) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} <= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} <= 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 0}, toString: function() {return {}}} <= 1 !== true) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} <= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} <= 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 0}, toString: function() {throw "error"}} <= 1 !== true) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} <= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} <= 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 0}, toString: function() {throw "error"}} <= 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 0}, toString: function() {throw "error"}} <= 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 <= {toString: function() {return 2}} !== true) {
+ $ERROR('#5: 1 <= {toString: function() {return 2}} === true. Actual: ' + (1 <= {toString: function() {return 2}}));
+}
+
+//CHECK#6
+if (1 <= {valueOf: function() {return {}}, toString: function() {return 2}} !== true) {
+ $ERROR('#6: 1 <= {valueOf: function() {return {}}, toString: function() {return 2}} === true. Actual: ' + (1 <= {valueOf: function() {return {}}, toString: function() {return 2}}));
+}
+
+//CHECK#7
+try {
+ 1 <= {valueOf: function() {throw "error"}, toString: function() {return 2}};
+ $ERROR('#7.1: 1 <= {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (1 <= {valueOf: function() {throw "error"}, toString: function() {return 2}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 <= {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 <= {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 <= {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 <= {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 <= {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.3_T1.js
new file mode 100644
index 000000000..9658773e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.3_T1;
+ * @section: 11.8.3;
+ * @assertion: ToNumber(second expression) is called first, and then ToNumber(first expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x <= y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x <= y throw "y". Actual: ' + (x <= y));
+} catch (e) {
+ if (e === "x") {
+ $ERROR('#1.2: ToNumber(second expression) is called first, and then ToNumber(first expression)');
+ } else {
+ if (e !== "y") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x <= y throw "y". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T1.js
new file mode 100644
index 000000000..4d767dc02
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.4_T1;
+ * @section: 11.8.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) <= x !== true) {
+ $ERROR('#1: var x = 0; (x = 1) <= x === true');
+}
+
+//CHECK#2
+var x = 1;
+if (x <= (x = 0) !== false) {
+ $ERROR('#2: var x = 1; x <= (x = 0) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T2.js
new file mode 100644
index 000000000..7c1890301
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.4_T2;
+ * @section: 11.8.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() <= y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() <= y() throw "x". Actual: ' + (x() <= y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() <= y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T3.js
new file mode 100644
index 000000000..ede9323aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.4_T3;
+ * @section: 11.8.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x <= (x = 1);
+ $ERROR('#1.1: x <= (x = 1) throw ReferenceError. Actual: ' + (x <= (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x <= (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) <= y !== true) {
+ $ERROR('#2: (y = 1) <= y === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.1.js
new file mode 100644
index 000000000..416964ccf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T1.1;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true <= true !== true) {
+ $ERROR('#1: true <= true === true');
+}
+
+//CHECK#2
+if (new Boolean(true) <= true !== true) {
+ $ERROR('#2: new Boolean(true) <= true === true');
+}
+
+//CHECK#3
+if (true <= new Boolean(true) !== true) {
+ $ERROR('#3: true <= new Boolean(true) === true');
+}
+
+//CHECK#4
+if (new Boolean(true) <= new Boolean(true) !== true) {
+ $ERROR('#4: new Boolean(true) <= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.2.js
new file mode 100644
index 000000000..0df36ffa9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T1.2;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 <= 1 !== true) {
+ $ERROR('#1: 1 <= 1 === true');
+}
+
+//CHECK#2
+if (new Number(1) <= 1 !== true) {
+ $ERROR('#2: new Number(1) <= 1 === true');
+}
+
+//CHECK#3
+if (1 <= new Number(1) !== true) {
+ $ERROR('#3: 1 <= new Number(1) === true');
+}
+
+//CHECK#4
+if (new Number(1) <= new Number(1) !== true) {
+ $ERROR('#4: new Number(1) <= new Number(1) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.3.js
new file mode 100644
index 000000000..01eed6a06
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T1.3;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null <= undefined !== false) {
+ $ERROR('#1: null <= undefined === false');
+}
+
+//CHECK#2
+if (undefined <= null !== false) {
+ $ERROR('#2: undefined <= null === false');
+}
+
+//CHECK#3
+if (undefined <= undefined !== false) {
+ $ERROR('#3: undefined <= undefined === false');
+}
+
+//CHECK#4
+if (null <= null !== true) {
+ $ERROR('#4: null <= null === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.1.js
new file mode 100644
index 000000000..00cfb73a9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.1;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true <= 1 !== true) {
+ $ERROR('#1: true <= 1 === true');
+}
+
+//CHECK#2
+if (1 <= true !== true) {
+ $ERROR('#2: 1 <= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) <= 1 !== true) {
+ $ERROR('#3: new Boolean(true) <= 1 === true');
+}
+
+//CHECK#4
+if (1 <= new Boolean(true) !== true) {
+ $ERROR('#4: 1 <= new Boolean(true) === true');
+}
+
+//CHECK#5
+if (true <= new Number(1) !== true) {
+ $ERROR('#5: true <= new Number(1) === true');
+}
+
+//CHECK#6
+if (new Number(1) <= true !== true) {
+ $ERROR('#6: new Number(1) <= true === true');
+}
+
+//CHECK#7
+if (new Boolean(true) <= new Number(1) !== true) {
+ $ERROR('#7: new Boolean(true) <= new Number(1) === true');
+}
+
+//CHECK#8
+if (new Number(1) <= new Boolean(true) !== true) {
+ $ERROR('#8: new Number(1) <= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.2.js
new file mode 100644
index 000000000..c2c55fe99
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.2;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" <= 1 !== true) {
+ $ERROR('#1: "1" <= 1 === true');
+}
+
+//CHECK#2
+if (1 <= "1" !== true) {
+ $ERROR('#2: 1 <= "1" === true');
+}
+
+//CHECK#3
+if (new String("1") <= 1 !== true) {
+ $ERROR('#3: new String("1") <= 1 === true');
+}
+
+//CHECK#4
+if (1 <= new String("1") !== true) {
+ $ERROR('#4: 1 <= new String("1") === true');
+}
+
+//CHECK#5
+if ("1" <= new Number(1) !== true) {
+ $ERROR('#5: "1" <= new Number(1) === true');
+}
+
+//CHECK#6
+if (new Number(1) <= "1" !== true) {
+ $ERROR('#6: new Number(1) <= "1" === true');
+}
+
+//CHECK#7
+if (new String("1") <= new Number(1) !== true) {
+ $ERROR('#7: new String("1") <= new Number(1) === true');
+}
+
+//CHECK#8
+if (new Number(1) <= new String("1") !== true) {
+ $ERROR('#8: new Number(1) <= new String("1") === true');
+}
+
+//CHECK#9
+if ("x" <= 1 !== false) {
+ $ERROR('#9: "x" <= 1 === false');
+}
+
+//CHECK#10
+if (1 <= "x" !== false) {
+ $ERROR('#10: 1 <= "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.3.js
new file mode 100644
index 000000000..4cd0b2a2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.3;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 <= null !== false) {
+ $ERROR('#1: 1 <= null === false');
+}
+
+//CHECK#2
+if (null <= 1 !== true) {
+ $ERROR('#2: null <= 1 === true');
+}
+
+//CHECK#3
+if (new Number(1) <= null !== false) {
+ $ERROR('#3: new Number(1) <= null === false');
+}
+
+//CHECK#4
+if (null <= new Number(1) !== true) {
+ $ERROR('#4: null <= new Number(1) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.4.js
new file mode 100644
index 000000000..bbdc03588
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.4;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 <= undefined !== false) {
+ $ERROR('#1: 1 <= undefined === false');
+}
+
+//CHECK#2
+if (undefined <= 1 !== false) {
+ $ERROR('#2: undefined <= 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) <= undefined !== false) {
+ $ERROR('#3: new Number(1) <= undefined === false');
+}
+
+//CHECK#4
+if (undefined <= new Number(1) !== false) {
+ $ERROR('#4: undefined <= new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.5.js
new file mode 100644
index 000000000..1666a6742
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.5;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true <= "1" !== true) {
+ $ERROR('#1: true <= "1" === true');
+}
+
+//CHECK#2
+if ("1" <= true !== true) {
+ $ERROR('#2: "1" <= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) <= "1" !== true) {
+ $ERROR('#3: new Boolean(true) <= "1" === true');
+}
+
+//CHECK#4
+if ("1" <= new Boolean(true) !== true) {
+ $ERROR('#4: "1" <= new Boolean(true) === true');
+}
+
+//CHECK#5
+if (true <= new String("1") !== true) {
+ $ERROR('#5: true <= new String("1") === true');
+}
+
+//CHECK#6
+if (new String("1") <= true !== true) {
+ $ERROR('#6: new String("1") <= true === true');
+}
+
+//CHECK#7
+if (new Boolean(true) <= new String("1") !== true) {
+ $ERROR('#7: new Boolean(true) <= new String("1") === true');
+}
+
+//CHECK#8
+if (new String("1") <= new Boolean(true) !== true) {
+ $ERROR('#8: new String("1") <= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.6.js
new file mode 100644
index 000000000..d28c3ba53
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.6;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" <= undefined !== false) {
+ $ERROR('#1: "1" <= undefined === false');
+}
+
+//CHECK#2
+if (undefined <= "1" !== false) {
+ $ERROR('#2: undefined <= "1" === false');
+}
+
+//CHECK#3
+if (new String("1") <= undefined !== false) {
+ $ERROR('#3: new String("1") <= undefined === false');
+}
+
+//CHECK#4
+if (undefined <= new String("1") !== false) {
+ $ERROR('#4: undefined <= new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.7.js
new file mode 100644
index 000000000..e6b96451e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.7;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" <= null !== false) {
+ $ERROR('#1: "1" <= null === false');
+}
+
+//CHECK#2
+if (null <= "1" !== true) {
+ $ERROR('#2: null <= "1" === true');
+}
+
+//CHECK#3
+if (new String("1") <= null !== false) {
+ $ERROR('#3: new String("1") <= null === false');
+}
+
+//CHECK#4
+if (null <= new String("1") !== true) {
+ $ERROR('#4: null <= new String("1") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.8.js
new file mode 100644
index 000000000..bdbc28959
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.8;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true <= undefined !== false) {
+ $ERROR('#1: true <= undefined === false');
+}
+
+//CHECK#2
+if (undefined <= true !== false) {
+ $ERROR('#2: undefined <= true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) <= undefined !== false) {
+ $ERROR('#3: new Boolean(true) <= undefined === false');
+}
+
+//CHECK#4
+if (undefined <= new Boolean(true) !== false) {
+ $ERROR('#4: undefined <= new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.9.js
new file mode 100644
index 000000000..8e54c2931
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.9;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true <= null !== false) {
+ $ERROR('#1: true <= null === false');
+}
+
+//CHECK#2
+if (null <= true !== true) {
+ $ERROR('#2: null <= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) <= null !== false) {
+ $ERROR('#3: new Boolean(true) <= null === false');
+}
+
+//CHECK#4
+if (null <= new Boolean(true) !== true) {
+ $ERROR('#4: null <= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.1.js
new file mode 100644
index 000000000..5125d8d2c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.2_T1.1;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToString(x) <= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" <= "1" !== true) {
+ $ERROR('#1: "1" <= "1" === true');
+}
+
+//CHECK#2
+if (new String("1") <= "1" !== true) {
+ $ERROR('#2: new String("1") <= "1" === true');
+}
+
+//CHECK#3
+if ("1" <= new String("1") !== true) {
+ $ERROR('#3: "1" <= new String("1") === true');
+}
+
+//CHECK#4
+if (new String("1") <= new String("1") !== true) {
+ $ERROR('#4: new String("1") <= new String("1") === true');
+}
+
+//CHECK#5
+if ("x" <= "1" !== false) {
+ $ERROR('#5: "x" <= "1" === false');
+}
+
+//CHECK#6
+if ("1" <= "x" !== true) {
+ $ERROR('#6: "1" <= "x" === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.2.js
new file mode 100644
index 000000000..e1691a13b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.2_T1.2;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToString(x) <= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} <= function(){return 1}) !== ({}.toString() <= function(){return 1}.toString())) {
+ $ERROR('#1: ({} <= function(){return 1}) === ({}.toString() <= function(){return 1}.toString())');
+}
+
+//CHECK#2
+if ((function(){return 1} <= {}) !== (function(){return 1}.toString() <= {}.toString())) {
+ $ERROR('#2: (function(){return 1} <= {}) === (function(){return 1}.toString() <= {}.toString())');
+}
+
+//CHECK#3
+if ((function(){return 1} <= function(){return 1}) !== (function(){return 1}.toString() <= function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} <= function(){return 1}) === (function(){return 1}.toString() <= function(){return 1}.toString())');
+}
+
+//CHECK#4
+if (({} <= {}) !== ({}.toString() <= {}.toString())) {
+ $ERROR('#4: ({} <= {}) === ({}.toString() <= {}.toString())');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.1.js
new file mode 100644
index 000000000..4cffbd13b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.1;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NaN <= 0) !== false) {
+ $ERROR('#1: (NaN <= 0) === false');
+}
+
+//CHECK#2
+if ((Number.NaN <= 1.1) !== false) {
+ $ERROR('#2: (NaN <= 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN <= -1.1) !== false) {
+ $ERROR('#3: (NaN <= -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NaN <= Number.NaN) !== false) {
+ $ERROR('#4: (NaN <= NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NaN <= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN <= +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (NaN <= -Infinity) === false');
+}
+
+//CHECK#7
+if ((Number.NaN <= Number.MAX_VALUE) !== false) {
+ $ERROR('#7: (NaN <= Number.MAX_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN <= Number.MIN_VALUE) !== false) {
+ $ERROR('#8: (NaN <= Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.10.js
new file mode 100644
index 000000000..c00afb1fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.10.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.10;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If y is a prefix of x and x !== y, return false;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x " <= "x") !== false) {
+ $ERROR('#1: ("x " <= "x") === false');
+}
+
+//CHECK#2
+if (("x" <= "") !== false) {
+ $ERROR('#2: ("x" <= "") === false');
+}
+
+//CHECK#3
+if (("abcd" <= "ab") !== false) {
+ $ERROR('#3: ("abcd" <= ab") === false');
+}
+
+//CHECK#4
+if (("abc\u0064" <= "abcd") !== true) {
+ $ERROR('#4: ("abc\\u0064" <= abcd") === true');
+}
+
+//CHECK#5
+if (("x" + "y" <= "x") !== false) {
+ $ERROR('#5: ("x" + "y" <= "x") === false');
+}
+
+//CHECK#6
+var x = "x";
+if ((x + 'y' <= x) !== false) {
+ $ERROR('#6: var x = "x"; (x + "y" <= x) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.11.js
new file mode 100644
index 000000000..0931d3963
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.11.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.11;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is a prefix of y, return true;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" <= "x") !== true) {
+ $ERROR('#1: ("x" <= "x") === true');
+}
+
+//CHECK#2
+if (("" <= "x") !== true) {
+ $ERROR('#2: ("" <= "x") === true');
+}
+
+//CHECK#3
+if (("ab" <= "abcd") !== true) {
+ $ERROR('#3: ("ab" <= abcd") === true');
+}
+
+//CHECK#4
+if (("abcd" <= "abc\u0064") !== true) {
+ $ERROR('#4: ("abcd" <= abc\\u0064") === true');
+}
+
+//CHECK#5
+if (("x" <= "x" + "y") !== true) {
+ $ERROR('#5: ("x" <= "x" + "y") === true');
+}
+
+//CHECK#6
+var x = "x";
+if ((x <= x + "y") !== true) {
+ $ERROR('#6: var x = "x"; (x <= x + "y") === true');
+}
+
+//CHECK#7
+if (("a\u0000" <= "a\u0000a") !== true) {
+ $ERROR('#7: ("a\\u0000" <= "a\\u0000a") === true');
+}
+
+//CHECK#8
+if (("x" <= " x") !== false) {
+ $ERROR('#8: ("x" <= " x") === false');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T1.js
new file mode 100644
index 000000000..dbf3f6997
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.12_T1;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("xx" <= "xy") !== true) {
+ $ERROR('#1: ("xx" <= "xy") === true');
+}
+
+//CHECK#2
+if (("xy" <= "xx") !== false) {
+ $ERROR('#2: ("xy" <= "xx") === false');
+}
+
+//CHECK#3
+if (("x" <= "y") !== true) {
+ $ERROR('#3: ("x" <= y") === true');
+}
+
+//CHECK#4
+if (("aab" <= "aba") !== true) {
+ $ERROR('#4: ("aab" <= aba") === true');
+}
+
+//CHECK#5
+if (("\u0061\u0061\u0061\u0062" <= "\u0061\u0061\u0061\u0061") !== false) {
+ $ERROR('#5: ("\\u0061\\u0061\\u0061\\u0062" <= \\u0061\\u0061\\u0061\\u0061") === false');
+}
+
+//CHECK#6
+if (("a\u0000a" <= "a\u0000b") !== true) {
+ $ERROR('#6: ("a\\u0000a" <= "a\\u0000b") === true');
+}
+
+//CHECK#7
+if (("aB" <= "aa") !== true) {
+ $ERROR('#7: ("aB" <= aa") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T2.js
new file mode 100644
index 000000000..af86e980c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.12_T2;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("0" <= "x") !== true) {
+ $ERROR('#1: ("0" <= "x") !== true');
+}
+
+//CHECK#2
+if (("-" <= "0") !== true) {
+ $ERROR('#2: ("-" <= "0") !== true');
+}
+
+//CHECK#3
+if (("." <= "0") !== true) {
+ $ERROR('#3: ("." <= "0") !== true');
+}
+
+//CHECK#4
+if (("+" <= "-") !== true) {
+ $ERROR('#4: ("+" <= "-") !== true');
+}
+
+//CHECK#5
+if (("-0" <= "-1") !== true) {
+ $ERROR('#5: ("-0" <= "-1") !== true');
+}
+
+//CHECK#6
+if (("+1" <= "-1") !== true) {
+ $ERROR('#6: ("+1" <= "-1") !== true');
+}
+
+//CHECK#7
+if (("1" <= "1e-10") !== true) {
+$ERROR('#7: ("1" <= "1e-10") !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.2.js
new file mode 100644
index 000000000..c35d5a8cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.2;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If y is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 <= Number.NaN) !== false) {
+ $ERROR('#1: (0 <= NaN) === false');
+}
+
+//CHECK#2
+if ((1.1 <= Number.NaN) !== false) {
+ $ERROR('#2: (1.1 <= NaN) === false');
+}
+
+//CHECK#3
+if ((-1.1 <= Number.NaN) !== false) {
+ $ERROR('#3: (-1.1 <= NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN <= Number.NaN) !== false) {
+ $ERROR('#4: (NaN <= NaN) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY <= Number.NaN) !== false) {
+ $ERROR('#5: (+Infinity <= NaN) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY <= Number.NaN) !== false) {
+ $ERROR('#6: (-Infinity <= NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE <= Number.NaN) !== false) {
+ $ERROR('#7: (Number.MAX_VALUE <= NaN) === false');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE <= Number.NaN) !== false) {
+ $ERROR('#8: (Number.MIN_VALUE <= NaN) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.3.js
new file mode 100644
index 000000000..178b67d18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.3.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.3;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x and y are the same number value, return true;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 <= 1) !== true) {
+ $ERROR('#1: (1 <= 1) === true');
+}
+
+//CHECK#2
+if ((1.1 <= 1.1) !== true) {
+ $ERROR('#2: (1.1 <= 1.1) === true');
+}
+
+//CHECK#3
+if ((-1.1 <= -1.1) !== true) {
+ $ERROR('#3: (-1.1 <= -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY <= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity <= -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#5: (+Infinity <= +Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE <= Number.MAX_VALUE) !== true) {
+ $ERROR('#6: (Number.MAX_VALUE <= Number.MAX_VALUE) === true');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE <= Number.MIN_VALUE) !== true) {
+ $ERROR('#7: (Number.MIN_VALUE <= Number.MIN_VALUE) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.4.js
new file mode 100644
index 000000000..05a810ccd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.4;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If either x or y is +0 and the other is -0, return true;
+* @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((0 <= 0) !== true) {
+ $ERROR('#1: (0 <= 0) === true');
+}
+
+//CHECK#2
+if ((-0 <= -0) !== true) {
+ $ERROR('#2: (-0 <= -0) === true');
+}
+
+//CHECK#3
+if ((+0 <= -0) !== true) {
+ $ERROR('#3: (+0 <= -0) === true');
+}
+
+//CHECK#4
+if ((-0 <= +0) !== true) {
+ $ERROR('#4: (-0 <= +0) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.5.js
new file mode 100644
index 000000000..edf1b850e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.5;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is +Infinity and x !== y, return false;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY <= 0) !== false) {
+ $ERROR('#1: (+Infinity <= 0) === false');
+}
+
+//CHECK#2
+if ((Number.POSITIVE_INFINITY <= 1.1) !== false) {
+ $ERROR('#2: (+Infinity <= 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY <= -1.1) !== false) {
+ $ERROR('#3: (+Infinity <= -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (+Infinity <= -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY <= Number.MAX_VALUE) !== false) {
+ $ERROR('#5: (+Infinity <= Number.MAX_VALUE) === false');
+}
+
+//CHECK#6
+if ((Number.POSITIVE_INFINITY <= Number.MIN_VALUE) !== false) {
+ $ERROR('#6: (+Infinity <= Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.6.js
new file mode 100644
index 000000000..bfa210542
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.6;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If y is +Infinity and x !== y, return true;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: (0 <= +Infinity) === true');
+}
+
+//CHECK#2
+if ((1.1 <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#2: (1.1 <= +Infinity) === true');
+}
+
+//CHECK#3
+if ((-1.1 <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#3: (-1.1 <= +Infinity) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity <= +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#5: (Number.MAX_VALUE <= +Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#6: (Number.MIN_VALUE <= +Infinity) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.7.js
new file mode 100644
index 000000000..dd05f8dd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.7.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.7;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is -Infinity, return true;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY <= 0) !== true) {
+ $ERROR('#1: (-Infinity <= 0) === true');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY <= 1.1) !== true) {
+ $ERROR('#2: (-Infinity <= 1.1) === true');
+}
+
+//CHECK#3
+if ((Number.NEGATIVE_INFINITY <= -1.1) !== true) {
+ $ERROR('#3: (-Infinity <= -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity <= +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY <= Number.MAX_VALUE) !== true) {
+ $ERROR('#5: (-Infinity <= Number.MAX_VALUE) === true');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY <= Number.MIN_VALUE) !== true) {
+ $ERROR('#6: (-Infinity <= Number.MIN_VALUE) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.8.js
new file mode 100644
index 000000000..074b872f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.8;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If y is -Infinity and x !== y, return false;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#1: (0 <= -Infinity) === false');
+}
+
+//CHECK#2
+if ((1.1 <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#2: (1.1 <= -Infinity) === false');
+}
+
+//CHECK#3
+if ((-1.1 <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#3: (-1.1 <= -Infinity) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (+Infinity <= -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#5: (Number.MAX_VALUE <= -Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (Number.MIN_VALUE <= -Infinity) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.9.js
new file mode 100644
index 000000000..b87947fd4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.9.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.9;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is less or equal than y and these values are both finite non-zero, return true; otherwise, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1.1 <= 1) !== false) {
+ $ERROR('#1: (1.1 <= 1) === false');
+}
+
+//CHECK#2
+if ((1 <= 1.1) !== true) {
+ $ERROR('#2: (1 <= 1.1) === true');
+}
+
+//CHECK#3
+if ((-1.1 <= -1) !== true) {
+ $ERROR('#3: (-1.1 <= -1) === true');
+}
+
+//CHECK#4
+if ((-1 <= -1.1) !== false) {
+ $ERROR('#4: (-1 <= -1.1) === false');
+}
+
+//CHECK#5
+if ((0 <= 0.1) !== true) {
+ $ERROR('#5: (0 <= 0.1) === true');
+}
+
+//CHECK#6
+if ((-0.1 <= 0) !== true) {
+ $ERROR('#6: (-0.1 <= 0) === true');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE/2 <= Number.MAX_VALUE) !== true) {
+ $ERROR('#7: (Number.MAX_VALUE/2 <= Number.MAX_VALUE) === true');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE <= Number.MIN_VALUE*2) !== true) {
+ $ERROR('#8: (Number.MIN_VALUE <= Number.MIN_VALUE*2) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A1.js
new file mode 100644
index 000000000..9403e0073
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A1;
+* @section: 11.8.4, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "=>" or "=>" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009>=\u00091") !== true) {
+ $ERROR('#1: (1\\u0009>=\\u00091) === true');
+}
+
+//CHECK#2
+if (eval("1\u000B>=\u000B1") !== true) {
+ $ERROR('#2: (1\\u000B>=\\u000B1) === true');
+}
+
+//CHECK#3
+if (eval("1\u000C>=\u000C1") !== true) {
+ $ERROR('#3: (1\\u000C>=\\u000C1) === true');
+}
+
+//CHECK#4
+if (eval("1\u0020>=\u00201") !== true) {
+ $ERROR('#4: (1\\u0020>=\\u00201) === true');
+}
+
+//CHECK#5
+if (eval("1\u00A0>=\u00A01") !== true) {
+ $ERROR('#5: (1\\u00A0>=\\u00A01) === true');
+}
+
+//CHECK#6
+if (eval("1\u000A>=\u000A1") !== true) {
+ $ERROR('#6: (1\\u000A>=\\u000A1) === true');
+}
+
+//CHECK#7
+if (eval("1\u000D>=\u000D1") !== true) {
+ $ERROR('#7: (1\\u000D>=\\u000D1) === true');
+}
+
+//CHECK#8
+if (eval("1\u2028>=\u20281") !== true) {
+ $ERROR('#8: (1\\u2028>=\\u20281) === true');
+}
+
+//CHECK#9
+if (eval("1\u2029>=\u20291") !== true) {
+ $ERROR('#9: (1\\u2029>=\\u20291) === true');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== true) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T1.js
new file mode 100644
index 000000000..9451db9e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A2.1_T1;
+* @section: 11.8.4, 11.8.5;
+* @assertion: Operator x >= y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 >= 1 !== true) {
+ $ERROR('#1: 1 >= 1 === true');
+}
+
+//CHECK#2
+var x = 1;
+if (x >= 1 !== true) {
+ $ERROR('#2: var x = 1; x >= 1 === true');
+}
+
+//CHECK#3
+var y = 1;
+if (1 >= y !== true) {
+ $ERROR('#3: var y = 1; 1 >= y === true');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x >= y !== true) {
+ $ERROR('#4: var x = 1; var y = 1; x >= y === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop >= objecty.prop !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop >= objecty.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T2.js
new file mode 100644
index 000000000..fbd86a0d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.1_T2;
+ * @section: 11.8.4, 11.8.5;
+ * @assertion: Operator x >= y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x >= 1;
+ $ERROR('#1.1: x >= 1 throw ReferenceError. Actual: ' + (x >= 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T3.js
new file mode 100644
index 000000000..1be8779f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.1_T3;
+ * @section: 11.8.4, 11.8.5;
+ * @assertion: Operator x >= y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 >= y;
+ $ERROR('#1.1: 1 >= y throw ReferenceError. Actual: ' + (1 >= y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >= y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.2_T1.js
new file mode 100644
index 000000000..762957595
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.2_T1;
+ * @section: 11.8.4, 8.6.2.6;
+ * @assertion: Operator x >= y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 2}} >= 1 !== true) {
+ $ERROR('#1: {valueOf: function() {return 1}} >= 1 === true. Actual: ' + ({valueOf: function() {return 1}} >= 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 2}, toString: function() {return 0}} >= 1 !== true) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 2}} >= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 2}} >= 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 2}, toString: function() {return {}}} >= 1 !== true) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} >= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} >= 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 2}, toString: function() {throw "error"}} >= 1 !== true) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} >= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} >= 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 2}, toString: function() {throw "error"}} >= 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 2}, toString: function() {throw "error"}} >= 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 >= {toString: function() {return 0}} !== true) {
+ $ERROR('#5: 1 >= {toString: function() {return 0}} === true. Actual: ' + (1 >= {toString: function() {return 0}}));
+}
+
+//CHECK#6
+if (1 >= {valueOf: function() {return {}}, toString: function() {return 0}} !== true) {
+ $ERROR('#6: 1 >= {valueOf: function() {return {}}, toString: function() {return 0}} === true. Actual: ' + (1 >= {valueOf: function() {return {}}, toString: function() {return 0}}));
+}
+
+//CHECK#7
+try {
+ 1 >= {valueOf: function() {throw "error"}, toString: function() {return 0}};
+ $ERROR('#7.1: 1 >= {valueOf: function() {throw "error"}, toString: function() {return 0}} throw "error". Actual: ' + (1 >= {valueOf: function() {throw "error"}, toString: function() {return 0}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 >= {valueOf: function() {throw "error"}, toString: function() {return 0}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 >= {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 >= {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 >= {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 >= {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.3_T1.js
new file mode 100644
index 000000000..a3ee44f9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.3_T1;
+ * @section: 11.8.4;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x >= y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >= y throw "x". Actual: ' + (x >= y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >= y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T1.js
new file mode 100644
index 000000000..b0e9c1cc9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.4_T1;
+ * @section: 11.8.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 1;
+if ((x = 0) >= x !== true) {
+ $ERROR('#1: var x = 1; (x = 0) >= x === true');
+}
+
+//CHECK#2
+var x = 0;
+if (x >= (x = 1) !== false) {
+ $ERROR('#2: var x = 0; x >= (x = 1) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T2.js
new file mode 100644
index 000000000..11250f560
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.4_T2;
+ * @section: 11.8.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() >= y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >= y() throw "x". Actual: ' + (x() >= y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >= y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T3.js
new file mode 100644
index 000000000..57016dfb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.4_T3;
+ * @section: 11.8.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x >= (x = 1);
+ $ERROR('#1.1: x >= (x = 1) throw ReferenceError. Actual: ' + (x >= (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >= (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) >= y !== true) {
+ $ERROR('#2: (y = 1) >= y === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.1.js
new file mode 100644
index 000000000..30bff4796
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T1.1;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true >= true !== true) {
+ $ERROR('#1: true >= true === true');
+}
+
+//CHECK#2
+if (new Boolean(true) >= true !== true) {
+ $ERROR('#2: new Boolean(true) >= true === true');
+}
+
+//CHECK#3
+if (true >= new Boolean(true) !== true) {
+ $ERROR('#3: true >= new Boolean(true) === true');
+}
+
+//CHECK#4
+if (new Boolean(true) >= new Boolean(true) !== true) {
+ $ERROR('#4: new Boolean(true) >= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.2.js
new file mode 100644
index 000000000..77e44b155
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T1.2;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 >= 1 !== true) {
+ $ERROR('#1: 1 >= 1 === true');
+}
+
+//CHECK#2
+if (new Number(1) >= 1 !== true) {
+ $ERROR('#2: new Number(1) >= 1 === true');
+}
+
+//CHECK#3
+if (1 >= new Number(1) !== true) {
+ $ERROR('#3: 1 >= new Number(1) === true');
+}
+
+//CHECK#4
+if (new Number(1) >= new Number(1) !== true) {
+ $ERROR('#4: new Number(1) >= new Number(1) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.3.js
new file mode 100644
index 000000000..f3977baf1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T1.3;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null >= undefined !== false) {
+ $ERROR('#1: null >= undefined === false');
+}
+
+//CHECK#2
+if (undefined >= null !== false) {
+ $ERROR('#2: undefined >= null === false');
+}
+
+//CHECK#3
+if (undefined >= undefined !== false) {
+ $ERROR('#3: undefined >= undefined === false');
+}
+
+//CHECK#4
+if (null >= null !== true) {
+ $ERROR('#4: null >= null === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.1.js
new file mode 100644
index 000000000..4e8f97587
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.1;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true >= 1 !== true) {
+ $ERROR('#1: true >= 1 === true');
+}
+
+//CHECK#2
+if (1 >= true !== true) {
+ $ERROR('#2: 1 >= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) >= 1 !== true) {
+ $ERROR('#3: new Boolean(true) >= 1 === true');
+}
+
+//CHECK#4
+if (1 >= new Boolean(true) !== true) {
+ $ERROR('#4: 1 >= new Boolean(true) === true');
+}
+
+//CHECK#5
+if (true >= new Number(1) !== true) {
+ $ERROR('#5: true >= new Number(1) === true');
+}
+
+//CHECK#6
+if (new Number(1) >= true !== true) {
+ $ERROR('#6: new Number(1) >= true === true');
+}
+
+//CHECK#7
+if (new Boolean(true) >= new Number(1) !== true) {
+ $ERROR('#7: new Boolean(true) >= new Number(1) === true');
+}
+
+//CHECK#8
+if (new Number(1) >= new Boolean(true) !== true) {
+ $ERROR('#8: new Number(1) >= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.2.js
new file mode 100644
index 000000000..d93a54e8b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.2;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" >= 1 !== true) {
+ $ERROR('#1: "1" >= 1 === true');
+}
+
+//CHECK#2
+if (1 >= "1" !== true) {
+ $ERROR('#2: 1 >= "1" === true');
+}
+
+//CHECK#3
+if (new String("1") >= 1 !== true) {
+ $ERROR('#3: new String("1") >= 1 === true');
+}
+
+//CHECK#4
+if (1 >= new String("1") !== true) {
+ $ERROR('#4: 1 >= new String("1") === true');
+}
+
+//CHECK#5
+if ("1" >= new Number(1) !== true) {
+ $ERROR('#5: "1" >= new Number(1) === true');
+}
+
+//CHECK#6
+if (new Number(1) >= "1" !== true) {
+ $ERROR('#6: new Number(1) >= "1" === true');
+}
+
+//CHECK#7
+if (new String("1") >= new Number(1) !== true) {
+ $ERROR('#7: new String("1") >= new Number(1) === true');
+}
+
+//CHECK#8
+if (new Number(1) >= new String("1") !== true) {
+ $ERROR('#8: new Number(1) >= new String("1") === true');
+}
+
+//CHECK#9
+if ("x" >= 1 !== false) {
+ $ERROR('#9: "x" >= 1 === false');
+}
+
+//CHECK#10
+if (1 >= "x" !== false) {
+ $ERROR('#10: 1 >= "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.3.js
new file mode 100644
index 000000000..3975f680f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.3;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 >= null !== true) {
+ $ERROR('#1: 1 >= null === true');
+}
+
+//CHECK#2
+if (null >= 1 !== false) {
+ $ERROR('#2: null >= 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) >= null !== true) {
+ $ERROR('#3: new Number(1) >= null === true');
+}
+
+//CHECK#4
+if (null >= new Number(1) !== false) {
+ $ERROR('#4: null >= new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.4.js
new file mode 100644
index 000000000..b860593ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.4;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 >= undefined !== false) {
+ $ERROR('#1: 1 >= undefined === false');
+}
+
+//CHECK#2
+if (undefined >= 1 !== false) {
+ $ERROR('#2: undefined >= 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) >= undefined !== false) {
+ $ERROR('#3: new Number(1) >= undefined === false');
+}
+
+//CHECK#4
+if (undefined >= new Number(1) !== false) {
+ $ERROR('#4: undefined >= new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.5.js
new file mode 100644
index 000000000..10de8929c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.5;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true >= "1" !== true) {
+ $ERROR('#1: true >= "1" === true');
+}
+
+//CHECK#2
+if ("1" >= true !== true) {
+ $ERROR('#2: "1" >= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) >= "1" !== true) {
+ $ERROR('#3: new Boolean(true) >= "1" === true');
+}
+
+//CHECK#4
+if ("1" >= new Boolean(true) !== true) {
+ $ERROR('#4: "1" >= new Boolean(true) === true');
+}
+
+//CHECK#5
+if (true >= new String("1") !== true) {
+ $ERROR('#5: true >= new String("1") === true');
+}
+
+//CHECK#6
+if (new String("1") >= true !== true) {
+ $ERROR('#6: new String("1") >= true === true');
+}
+
+//CHECK#7
+if (new Boolean(true) >= new String("1") !== true) {
+ $ERROR('#7: new Boolean(true) >= new String("1") === true');
+}
+
+//CHECK#8
+if (new String("1") >= new Boolean(true) !== true) {
+ $ERROR('#8: new String("1") >= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.6.js
new file mode 100644
index 000000000..d1633e1eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.6;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" >= undefined !== false) {
+ $ERROR('#1: "1" >= undefined === false');
+}
+
+//CHECK#2
+if (undefined >= "1" !== false) {
+ $ERROR('#2: undefined >= "1" === false');
+}
+
+//CHECK#3
+if (new String("1") >= undefined !== false) {
+ $ERROR('#3: new String("1") >= undefined === false');
+}
+
+//CHECK#4
+if (undefined >= new String("1") !== false) {
+ $ERROR('#4: undefined >= new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.7.js
new file mode 100644
index 000000000..a4ef97ee0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.7;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" >= null !== true) {
+ $ERROR('#1: "1" >= null === true');
+}
+
+//CHECK#2
+if (null >= "1" !== false) {
+ $ERROR('#2: null >= "1" === false');
+}
+
+//CHECK#3
+if (new String("1") >= null !== true) {
+ $ERROR('#3: new String("1") >= null === true');
+}
+
+//CHECK#4
+if (null >= new String("1") !== false) {
+ $ERROR('#4: null >= new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.8.js
new file mode 100644
index 000000000..eee04b22e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.8;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true >= undefined !== false) {
+ $ERROR('#1: true >= undefined === false');
+}
+
+//CHECK#2
+if (undefined >= true !== false) {
+ $ERROR('#2: undefined >= true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) >= undefined !== false) {
+ $ERROR('#3: new Boolean(true) >= undefined === false');
+}
+
+//CHECK#4
+if (undefined >= new Boolean(true) !== false) {
+ $ERROR('#4: undefined >= new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.9.js
new file mode 100644
index 000000000..041ab7b00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.9;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true >= null !== true) {
+ $ERROR('#1: true >= null === true');
+}
+
+//CHECK#2
+if (null >= true !== false) {
+ $ERROR('#2: null >= true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) >= null !== true) {
+ $ERROR('#3: new Boolean(true) >= null === true');
+}
+
+//CHECK#4
+if (null >= new Boolean(true) !== false) {
+ $ERROR('#4: null >= new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.1.js
new file mode 100644
index 000000000..8dad32cf8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.2_T1.1;
+ * @section: 11.8.4;
+ * @assertion: Operator x >= y returns ToString(x) >= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" >= "1" !== true) {
+ $ERROR('#1: "1" >= "1" === true');
+}
+
+//CHECK#2
+if (new String("1") >= "1" !== true) {
+ $ERROR('#2: new String("1") >= "1" === true');
+}
+
+//CHECK#3
+if ("1" >= new String("1") !== true) {
+ $ERROR('#3: "1" >= new String("1") === true');
+}
+
+//CHECK#4
+if (new String("1") >= new String("1") !== true) {
+ $ERROR('#4: new String("1") >= new String("1") === true');
+}
+
+//CHECK#5
+if ("x" >= "1" !== true) {
+ $ERROR('#5: "x" >= "1" === true');
+}
+
+//CHECK#6
+if ("1" >= "x" !== false) {
+ $ERROR('#6: "1" >= "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.2.js
new file mode 100644
index 000000000..9b5503612
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.2_T1.2;
+ * @section: 11.8.4;
+ * @assertion: Operator x >= y returns ToString(x) >= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} >= function(){return 1}) !== ({}.toString() >= function(){return 1}.toString())) {
+ $ERROR('#1: ({} >= function(){return 1}) === ({}.toString() >= function(){return 1}.toString())');
+}
+
+//CHECK#2
+if ((function(){return 1} >= {}) !== (function(){return 1}.toString() >= {}.toString())) {
+ $ERROR('#2: (function(){return 1} >= {}) === (function(){return 1}.toString() >= {}.toString())');
+}
+
+//CHECK#3
+if ((function(){return 1} >= function(){return 1}) !== (function(){return 1}.toString() >= function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} >= function(){return 1}) === (function(){return 1}.toString() >= function(){return 1}.toString())');
+}
+
+//CHECK#4
+if (({} >= {}) !== ({}.toString() >= {}.toString())) {
+ $ERROR('#4: ({} >= {}) === ({}.toString() >= {}.toString())');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.1.js
new file mode 100644
index 000000000..8cae53768
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.1;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NaN >= 0) !== false) {
+ $ERROR('#1: (NaN >= 0) === false');
+}
+
+//CHECK#2
+if ((Number.NaN >= 1.1) !== false) {
+ $ERROR('#2: (NaN >= 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN >= -1.1) !== false) {
+ $ERROR('#3: (NaN >= -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NaN >= Number.NaN) !== false) {
+ $ERROR('#4: (NaN >= NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NaN >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN >= +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN >= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (NaN >= -Infinity) === false');
+}
+
+//CHECK#7
+if ((Number.NaN >= Number.MAX_VALUE) !== false) {
+ $ERROR('#7: (NaN >= Number.MAX_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN >= Number.MIN_VALUE) !== false) {
+ $ERROR('#8: (NaN >= Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.10.js
new file mode 100644
index 000000000..e754ddece
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.10.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.10;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is a prefix of y and x !== y, return false;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" >= "x ") !== false) {
+ $ERROR('#1: ("x" >= "x ") === false');
+}
+
+//CHECK#2
+if (("" >= "x") !== false) {
+ $ERROR('#2: ("" >= "x") === false');
+}
+
+//CHECK#3
+if (("ab" >= "abcd") !== false) {
+ $ERROR('#3: ("ab" >= abcd") === false');
+}
+
+//CHECK#4
+if (("abcd" >= "abc\u0064") !== true) {
+ $ERROR('#4: ("abcd" >= abc\\u0064") === true');
+}
+
+//CHECK#5
+if (("x" >= "x" + "y") !== false) {
+ $ERROR('#5: ("x" >= "x" + "y") === false');
+}
+
+//CHECK#6
+var x = "x";
+if ((x >= x + "y") !== false) {
+ $ERROR('#6: var x = "x"; (x >= x + "y") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.11.js
new file mode 100644
index 000000000..fa80b90eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.11.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.11;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If y is a prefix of x, return true;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" >= "x") !== true) {
+ $ERROR('#1: ("x" >= "x") === true');
+}
+
+//CHECK#2
+if (("x" >= "") !== true) {
+ $ERROR('#2: ("x" >= "") === true');
+}
+
+//CHECK#3
+if (("abcd" >= "ab") !== true) {
+ $ERROR('#3: ("abcd" >= ab") === true');
+}
+
+//CHECK#4
+if (("abc\u0064" >= "abcd") !== true) {
+ $ERROR('#4: ("abc\\u0064" >= abc") === true');
+}
+
+//CHECK#5
+if (("x" + "y" >= "x") !== true) {
+ $ERROR('#5: ("x" + "y" >= "x") === true');
+}
+
+//CHECK#6
+var x = "x";
+if ((x + 'y' >= x) !== true) {
+ $ERROR('#6: var x = "x"; (x + "y" >= x) === true');
+}
+
+//CHECK#7
+if (("a\u0000a" >= "a\u0000") !== true) {
+ $ERROR('#7: ("a\\u0000a" >= "a\\u0000") === true');
+}
+
+//CHECK#8
+if ((" x" >= "x") !== false) {
+ $ERROR('#8: (" x" >= "x") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T1.js
new file mode 100644
index 000000000..676adedd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.12_T1;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("xy" >= "xx") !== true) {
+ $ERROR('#1: ("xy" >= "xx") === true');
+}
+
+//CHECK#2
+if (("xx" >= "xy") !== false) {
+ $ERROR('#2: ("xx" >= "xy") === false');
+}
+
+//CHECK#3
+if (("y" >= "x") !== true) {
+ $ERROR('#3: ("y" >= "x") === true');
+}
+
+//CHECK#4
+if (("aba" >= "aab") !== true) {
+ $ERROR('#4: ("aba" >= aab") === true');
+}
+
+//CHECK#5
+if (("\u0061\u0061\u0061\u0061" >= "\u0061\u0061\u0061\u0062") !== false) {
+ $ERROR('#5: ("\\u0061\\u0061\\u0061\\u0061" >= \\u0061\\u0061\\u0061\\u0062") === false');
+}
+
+//CHECK#6
+if (("a\u0000b" >= "a\u0000a") !== true) {
+ $ERROR('#6: ("a\\u0000b" >= "a\\u0000a") === true');
+}
+
+//CHECK#7
+if (("aa" >= "aB") !== true) {
+ $ERROR('#7: ("aa" >= aB") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T2.js
new file mode 100644
index 000000000..014924451
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.12_T2;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" >= "0") !== true) {
+ $ERROR('#1: ("x" >= "0") !== true');
+}
+
+//CHECK#2
+if (("0" >= "-") !== true) {
+ $ERROR('#2: ("0" >= "-") !== true');
+}
+
+//CHECK#3
+if (("0" >= ".") !== true) {
+ $ERROR('#3: ("0" >= ".") !== true');
+}
+
+//CHECK#4
+if (("-" >= "+") !== true) {
+ $ERROR('#4: ("-" >= "+") !== true');
+}
+
+//CHECK#5
+if (("-1" >= "-0") !== true) {
+ $ERROR('#5: ("-1" >= "-0") !== true');
+}
+
+//CHECK#6
+if (("-1" >= "+1") !== true) {
+ $ERROR('#6: ("-1" >= "+1") !== true');
+}
+
+//CHECK#7
+if (("1e-10" >= "1") !== true) {
+$ERROR('#7: ("1e-10" >= "1") !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.2.js
new file mode 100644
index 000000000..0881d92f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.2;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If y is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 >= Number.NaN) !== false) {
+ $ERROR('#1: (0 >= NaN) === false');
+}
+
+//CHECK#2
+if ((1.1 >= Number.NaN) !== false) {
+ $ERROR('#2: (1.1 >= NaN) === false');
+}
+
+//CHECK#3
+if ((-1.1 >= Number.NaN) !== false) {
+ $ERROR('#3: (-1.1 >= NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN >= Number.NaN) !== false) {
+ $ERROR('#4: (NaN >= NaN) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY >= Number.NaN) !== false) {
+ $ERROR('#5: (+Infinity >= NaN) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY >= Number.NaN) !== false) {
+ $ERROR('#6: (-Infinity >= NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE >= Number.NaN) !== false) {
+ $ERROR('#7: (Number.MAX_VALUE >= NaN) === false');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE >= Number.NaN) !== false) {
+ $ERROR('#8: (Number.MIN_VALUE >= NaN) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.3.js
new file mode 100644
index 000000000..556c1337c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.3.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.3;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x and y are the same number value, return true;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 >= 1) !== true) {
+ $ERROR('#1: (1 >= 1) === true');
+}
+
+//CHECK#2
+if ((1.1 >= 1.1) !== true) {
+ $ERROR('#2: (1.1 >= 1.1) === true');
+}
+
+//CHECK#3
+if ((-1.1 >= -1.1) !== true) {
+ $ERROR('#3: (-1.1 >= -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity >= -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY >= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#5: (+Infinity >= +Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE >= Number.MAX_VALUE) !== true) {
+ $ERROR('#6: (Number.MAX_VALUE >= Number.MAX_VALUE) === true');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE >= Number.MIN_VALUE) !== true) {
+ $ERROR('#7: (Number.MIN_VALUE >= Number.MIN_VALUE) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.4.js
new file mode 100644
index 000000000..f5694a6af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.4;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If either x or y is +0 and the other is -0, return true;
+* @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((0 >= 0) !== true) {
+ $ERROR('#1: (0 >= 0) === true');
+}
+
+//CHECK#2
+if ((-0 >= -0) !== true) {
+ $ERROR('#2: (-0 >= -0) === true');
+}
+
+//CHECK#3
+if ((+0 >= -0) !== true) {
+ $ERROR('#3: (+0 >= -0) === true');
+}
+
+//CHECK#4
+if ((-0 >= +0) !== true) {
+ $ERROR('#4: (-0 >= +0) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.5.js
new file mode 100644
index 000000000..1ae107c95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.5;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is +Infinity, return true;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY >= 0) !== true) {
+ $ERROR('#1: (+Infinity >= 0) === true');
+}
+
+//CHECK#2
+if ((Number.POSITIVE_INFINITY >= 1.1) !== true) {
+ $ERROR('#2: (+Infinity >= 1.1) === true');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY >= -1.1) !== true) {
+ $ERROR('#3: (+Infinity >= -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (+Infinity >= -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY >= Number.MAX_VALUE) !== true) {
+ $ERROR('#5: (+Infinity >= Number.MAX_VALUE) === true');
+}
+
+//CHECK#6
+if ((Number.POSITIVE_INFINITY >= Number.MIN_VALUE) !== true) {
+ $ERROR('#6: (+Infinity >= Number.MIN_VALUE) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.6.js
new file mode 100644
index 000000000..6c0fdcd7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.6;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If y is +Infinity and x !== y, return false;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#1: (0 >= +Infinity) === false');
+}
+
+//CHECK#2
+if ((1.1 >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#2: (1.1 >= +Infinity) === false');
+}
+
+//CHECK#3
+if ((-1.1 >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#3: (-1.1 >= +Infinity) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity >= +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (Number.MAX_VALUE >= +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#6: (Number.MIN_VALUE >= +Infinity) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.7.js
new file mode 100644
index 000000000..295a20ce7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.7.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.7;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is -Infinity and x !== y, return false;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY >= 0) !== false) {
+ $ERROR('#1: (-Infinity >= 0) === false');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY >= 1.1) !== false) {
+ $ERROR('#2: (-Infinity >= 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NEGATIVE_INFINITY >= -1.1) !== false) {
+ $ERROR('#3: (-Infinity >= -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity >= +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY >= Number.MAX_VALUE) !== false) {
+ $ERROR('#5: (-Infinity >= Number.MAX_VALUE) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY >= Number.MIN_VALUE) !== false) {
+ $ERROR('#6: (-Infinity >= Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.8.js
new file mode 100644
index 000000000..ccf85a8ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.8;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If y is -Infinity, return true;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#1: (0 >= -Infinity) === true');
+}
+
+//CHECK#2
+if ((1.1 >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: (1.1 >= -Infinity) === true');
+}
+
+//CHECK#3
+if ((-1.1 >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#3: (-1.1 >= -Infinity) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (+Infinity >= -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: (Number.MAX_VALUE >= -Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#6: (Number.MIN_VALUE >= -Infinity) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.9.js
new file mode 100644
index 000000000..c612324e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.9.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.9;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is greater or equal than y and these values are both finite non-zero, return true; otherwise, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 >= 1.1) !== false) {
+ $ERROR('#1: (1 >= 1.1) === false');
+}
+
+//CHECK#2
+if ((1.1 >= 1) !== true) {
+ $ERROR('#2: (1.1 >= 1) === true');
+}
+
+//CHECK#3
+if ((-1 >= -1.1) !== true) {
+ $ERROR('#3: (-1 >= -1.1) === true');
+}
+
+//CHECK#4
+if ((-1.1 >= -1) !== false) {
+ $ERROR('#4: (-1.1 >= -1) === false');
+}
+
+//CHECK#5
+if ((0.1 >= 0) !== true) {
+ $ERROR('#5: (0.1 >= 0) === true');
+}
+
+//CHECK#6
+if ((0 >= -0.1) !== true) {
+ $ERROR('#6: (0 >= -0.1) === true');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE >= Number.MAX_VALUE/2) !== true) {
+ $ERROR('#7: (Number.MAX_VALUE >= Number.MAX_VALUE/2) === true');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE*2 >= Number.MIN_VALUE) !== true) {
+ $ERROR('#8: (Number.MIN_VALUE*2 >= Number.MIN_VALUE) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A1.js
new file mode 100644
index 000000000..bae86c92f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A1;
+* @section: 11.8.6, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "instanceof" and between "instanceof" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("({})\u0009instanceof\u0009Object") !== true) {
+ $ERROR('#1: ({})\\u0009instanceof\\u0009Object === true');
+}
+
+//CHECK#2
+if (eval("({})\u000Binstanceof\u000BObject") !== true) {
+ $ERROR('#2: ({})\\u000Binstanceof\\u000BObject === true');
+}
+
+//CHECK#3
+if (eval("({})\u000Cinstanceof\u000CObject") !== true) {
+ $ERROR('#3: ({})\\u000Cinstanceof\\u000CObject === true');
+}
+
+//CHECK#4
+if (eval("({})\u0020instanceof\u0020Object") !== true) {
+ $ERROR('#4: ({})\\u0020instanceof\\u0020Object === true');
+}
+
+//CHECK#5
+if (eval("({})\u00A0instanceof\u00A0Object") !== true) {
+ $ERROR('#5: ({})\\u00A0instanceof\\u00A0Object === true');
+}
+
+//CHECK#6
+if (eval("({})\u000Ainstanceof\u000AObject") !== true) {
+ $ERROR('#6: ({})\\u000Ainstanceof\\u000AObject === true');
+}
+
+//CHECK#7
+if (eval("({})\u000Dinstanceof\u000DObject") !== true) {
+ $ERROR('#7: ({})\\u000Dinstanceof\\u000DObject === true');
+}
+
+//CHECK#8
+if (eval("({})\u2028instanceof\u2028Object") !== true) {
+ $ERROR('#8: ({})\\u2028instanceof\\u2028Object === true');
+}
+
+//CHECK#9
+if (eval("({})\u2029instanceof\u2029Object") !== true) {
+ $ERROR('#9: ({})\\u2029instanceof\\u2029Object === true');
+}
+
+//CHECK#10
+if (eval("({})\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029instanceof\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Object") !== true) {
+ $ERROR('#10: ({})\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029instanceof\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029Object === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T1.js
new file mode 100644
index 000000000..7cf637264
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.6_A2.1_T1;
+ * @section: 11.8.6;
+ * @assertion: Operator "instanceof" uses GetValue;
+ * @description: Either Expression is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (({}) instanceof Object !== true) {
+ $ERROR('#1: ({}) instanceof Object === true');
+}
+
+//CHECK#2
+var object = {};
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {}; object instanceof Object === true');
+}
+
+//CHECK#3
+var OBJECT = Object;
+if (({}) instanceof OBJECT !== true) {
+ $ERROR('#3: var OBJECT = Object; ({}) instanceof OBJECT === true');
+}
+
+//CHECK#4
+var object = {};
+var OBJECT = Object;
+if (object instanceof OBJECT !== true) {
+ $ERROR('#4: var object = {}; var OBJECT = Object; object instanceof OBJECT === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T2.js
new file mode 100644
index 000000000..74da3f4e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A2.1_T2;
+* @section: 11.8.6;
+* @assertion: Operator "instanceof" uses GetValue;
+* @description: If GetBase(RelationalExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ object instanceof Object;
+ $ERROR('#1.1: object instanceof Object throw ReferenceError. Actual: ' + (object instanceof Object));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: object instanceof Object throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T3.js
new file mode 100644
index 000000000..87352bc41
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A2.1_T3;
+* @section: 11.8.6;
+* @assertion: Operator "instanceof" uses GetValue;
+* @description: If GetBase(ShiftExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ ({}) instanceof OBJECT;
+ $ERROR('#1.1: ({}) instanceof OBJECT throw ReferenceError. Actual: ' + (({}) instanceof OBJECT));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: ({}) instanceof OBJECT throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T1.js
new file mode 100644
index 000000000..d285ad028
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.6_A2.4_T1;
+ * @section: 11.8.6;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var OBJECT = 0;
+if ((OBJECT = Object, {}) instanceof OBJECT !== true) {
+ $ERROR('#1: var OBJECT = 0; (OBJECT = Object, {}) instanceof OBJECT === true');
+}
+
+//CHECK#2
+var object = {};
+if (object instanceof (object = 0, Object) !== true) {
+ $ERROR('#2: var object = {}; object instanceof (object = 0, Object) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T2.js
new file mode 100644
index 000000000..33292f527
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.6_A2.4_T2;
+ * @section: 11.8.6;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() instanceof y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() instanceof y() throw "x". Actual: ' + (x() instanceof y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() instanceof y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T3.js
new file mode 100644
index 000000000..a30e58164
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.6_A2.4_T3;
+ * @section: 11.8.6;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ object instanceof (object = {}, Object);
+ $ERROR('#1.1: object instanceof (object = {}, Object) throw ReferenceError. Actual: ' + (object instanceof (object = {}, Object)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: object instanceof (object = {}, Object) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((OBJECT = Object, {}) instanceof OBJECT !== true) {
+ $ERROR('#2: (OBJECT = Object, {}) instanceof OBJECT !== true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A3.js
new file mode 100644
index 000000000..e7d2a2107
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A3.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A3;
+* @section: 11.8.6;
+* @assertion: If ShiftExpression is not an object, throw TypeError;
+* @description: Checking all the types of primitives;
+*/
+
+//CHECK#1
+try {
+ true instanceof true;
+ $ERROR('#1: true instanceof true throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#1: true instanceof true throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ 1 instanceof 1;
+ $ERROR('#2: 1 instanceof 1 throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#2: 1 instanceof 1 throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ "string" instanceof "string";
+ $ERROR('#3: "string" instanceof "string" throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#3: "string" instanceof "string" throw TypeError');
+ }
+}
+
+//CHECK#4
+try {
+ undefined instanceof undefined;
+ $ERROR('#4: undefined instanceof undefined throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#4: undefined instanceof undefined throw TypeError');
+ }
+}
+
+//CHECK#5
+try {
+ null instanceof null;
+ $ERROR('#5: null instanceof null throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#5: null instanceof null throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T1.js
new file mode 100644
index 000000000..16d69f904
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A4_T1;
+* @section: 11.8.6;
+* @assertion: Only constructor call (with "new" keyword) makes instance;
+* @description: Checking Boolean case;
+*/
+
+//CHECK#1
+if (false instanceof Boolean) {
+ $ERROR('#1: false is not instanceof Boolean');
+}
+
+//CHECK#2
+if (Boolean(false) instanceof Boolean) {
+ $ERROR('#2: Boolean(false) is not instanceof Boolean');
+}
+
+//CHECK#3
+if (new Boolean instanceof Boolean !== true) {
+ $ERROR('#3: new Boolean instanceof Boolean');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T2.js
new file mode 100644
index 000000000..cc4f50454
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A4_T2;
+* @section: 11.8.6;
+* @assertion: Only constructor call (with "new" keyword) makes instance;
+* @description: Checking Number case;
+*/
+
+//CHECK#1
+if (0 instanceof Number) {
+ $ERROR('#1: 0 is not instanceof Number');
+}
+
+//CHECK#2
+if (Number(0) instanceof Number) {
+ $ERROR('#2: Number(0) is not instanceof Number');
+}
+
+//CHECK#3
+if (new Number instanceof Number !== true) {
+ $ERROR('#3: new Number instanceof Number');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T3.js
new file mode 100644
index 000000000..035120958
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A4_T3;
+* @section: 11.8.6;
+* @assertion: Only constructor call (with "new" keyword) makes instance;
+* @description: Checking String case;
+*/
+
+//CHECK#1
+if ("" instanceof String) {
+ $ERROR('#1: "" is not instanceof String');
+}
+
+//CHECK#2
+if (String("") instanceof String) {
+ $ERROR('#2: String("") is not instanceof String');
+}
+
+//CHECK#3
+if (new String instanceof String !== true) {
+ $ERROR('#3: new String instanceof String');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T1.js
new file mode 100644
index 000000000..4e139a9c7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T1.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A5_T1;
+* @section: 11.8.6;
+* @assertion: TypeError is subclass of Error from instanceof operator point of view;
+* @description: Checking Error case;
+*/
+
+var __err = new Error;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__err instanceof Error)) {
+ $ERROR('#1: TypeError is subclass of Error from instanceof operator poit of view');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__err instanceof TypeError) {
+ $ERROR('#2: TypeError is subclass of Error from instanceof operator poit of view');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var err__ = Error('failed');
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (!(err__ instanceof Error)) {
+ $ERROR('#3: TypeError is subclass of Error from instanceof operator poit of view');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (err__ instanceof TypeError) {
+ $ERROR('#4: TypeError is subclass of Error from instanceof operator poit of view');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T2.js
new file mode 100644
index 000000000..3896a1c01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A5_T2;
+* @section: 11.8.6;
+* @assertion: TypeError is subclass of Error from instanceof operator point of view;
+* @description: Checking TypeError case;
+*/
+
+var __t__err = new TypeError;
+
+//CHECK#1
+if (!(__t__err instanceof Error)) {
+ $ERROR('#1: TypeError is subclass of Error from instanceof operator poit of view');
+}
+
+//CHECK#2
+if (!(__t__err instanceof TypeError)) {
+ $ERROR('#2: TypeError is subclass of Error from instanceof operator poit of view');
+}
+
+//////////////////////////////////////////////////////////////////////////////
+var err__t__ = TypeError('failed');
+
+//CHECK#3
+if (!(err__t__ instanceof Error)) {
+ $ERROR('#3: TypeError is subclass of Error from instanceof operator poit of view');
+}
+
+//CHECK#4
+if (!(err__t__ instanceof TypeError)) {
+ $ERROR('#4: TypeError is subclass of Error from instanceof operator poit of view');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T1.js
new file mode 100644
index 000000000..330bf01ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A6_T1;
+* @section: 11.8.6;
+* @assertion: Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently
+* @description: Checking "this" case;
+*/
+
+//CHECK#1
+try{
+ ({}) instanceof this;
+ $ERROR('#1: Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+catch(e){
+ if (e instanceof TypeError !== true) {
+ $ERROR('#1: Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T2.js
new file mode 100644
index 000000000..9575f673f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A6_T2;
+* @section: 11.8.6;
+* @assertion: Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently;
+* @description: Checking Math case;
+*/
+
+//CHECK#1
+try{
+ 1 instanceof Math;
+ $ERROR('#1: 1 instanceof Math throw TypeError');
+}
+catch(e){
+ if (e instanceof TypeError !== true) {
+ $ERROR('#1: 1 instanceof Math throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T3.js
new file mode 100644
index 000000000..40184d2a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A6_T3;
+* @section: 11.8.6;
+* @assertion: Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently;
+* @description: Checking if RelationalExpression is function;
+*/
+
+function MyFunct(){return 0};
+
+//CHECK#1
+if (MyFunct instanceof MyFunct){
+ $ERROR('#1 function MyFunct(){return 0}; MyFunct instanceof MyFunct === false');
+}
+
+//CHECK#2
+if (MyFunct instanceof Function !== true){
+ $ERROR('#2 function MyFunct(){return 0}; MyFunct instanceof Function === true');
+}
+
+//CHECK#3
+if (MyFunct instanceof Object !== true){
+ $ERROR('#3 function MyFunct(){return 0}; MyFunct instanceof Object === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T4.js
new file mode 100644
index 000000000..be183635b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T4.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A6_T4;
+* @section: 11.8.6;
+* @assertion: Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently;
+* @description: Checking if RelationalExpression is object;
+*/
+
+MyFunct = function(){};
+__my__funct = new MyFunct;
+
+
+//CHECK#1
+if (!(__my__funct instanceof MyFunct)){
+ $ERROR('#1 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+
+//CHECK#2
+if (__my__funct instanceof Function){
+ $ERROR('#2 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+
+//CHECK#3
+if (!(__my__funct instanceof Object)){
+ $ERROR('#3 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+
+//CHECK#4
+try{
+ __my__funct instanceof __my__funct;
+ $ERROR('#4 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+catch(e){
+ if (e instanceof TypeError !== true) {
+ $ERROR('#4 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T1.js
new file mode 100644
index 000000000..7bd2f0041
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A7_T1;
+* @section: 11.8.6;
+* @assertion: When "instanceof" returns true it means that GetValue(RelationalExpression) is constructed with ShiftExpression;
+* @description: Checking Object object;
+*/
+
+var __obj={};
+
+//CHECK#1
+if (!(__obj instanceof Object)) {
+ $ERROR('#1: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
+
+//CHECK#2
+if (__obj.constructor !== Object) {
+ $ERROR('#2: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T2.js
new file mode 100644
index 000000000..143fa5c11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A7_T2;
+* @section: 11.8.6;
+* @assertion: When "instanceof" returns true it means that GetValue(RelationalExpression) is constructed with ShiftExpression;
+* @description: Checking Array object;
+*/
+
+var __arr=[];
+
+//CHECK#1
+if (!(__arr instanceof Array)) {
+ $ERROR('#1: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
+
+//CHECK#2
+if (__arr.constructor !== Array) {
+ $ERROR('#2: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T3.js
new file mode 100644
index 000000000..01b877567
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A7_T3;
+* @section: 11.8.6;
+* @assertion: When "instanceof" returns true it means that GetValue(RelationalExpression) is constructed with ShiftExpression;
+* @description: Checking Function object;
+*/
+
+var __func = new Function;
+
+//CHECK#1
+if (!(__func instanceof Function)) {
+ $ERROR('#1: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
+
+//CHECK#2
+if (__func.constructor !== Function) {
+ $ERROR('#2: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A1.js
new file mode 100644
index 000000000..91d445af3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A1;
+* @section: 11.8.7, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "in" and between "in" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("'MAX_VALUE'\u0009in\u0009Number") !== true) {
+ $ERROR('#1: "MAX_VALUE"\\u0009in\\u0009Number === true');
+}
+
+//CHECK#2
+if (eval("'MAX_VALUE'\u000Bin\u000BNumber") !== true) {
+ $ERROR('#2: "MAX_VALUE"\\u000Bin\\u000BNumber === true');
+}
+
+//CHECK#3
+if (eval("'MAX_VALUE'\u000Cin\u000CNumber") !== true) {
+ $ERROR('#3: "MAX_VALUE"\\u000Cin\\u000CNumber === true');
+}
+
+//CHECK#4
+if (eval("'MAX_VALUE'\u0020in\u0020Number") !== true) {
+ $ERROR('#4: "MAX_VALUE"\\u0020in\\u0020Number === true');
+}
+
+//CHECK#5
+if (eval("'MAX_VALUE'\u00A0in\u00A0Number") !== true) {
+ $ERROR('#5: "MAX_VALUE"\\u00A0in\\u00A0Number === true');
+}
+
+//CHECK#6
+if (eval("'MAX_VALUE'\u000Ain\u000ANumber") !== true) {
+ $ERROR('#6: "MAX_VALUE"\\u000Ain\\u000ANumber === true');
+}
+
+//CHECK#7
+if (eval("'MAX_VALUE'\u000Din\u000DNumber") !== true) {
+ $ERROR('#7: "MAX_VALUE"\\u000Din\\u000DNumber === true');
+}
+
+//CHECK#8
+if (eval("'MAX_VALUE'\u2028in\u2028Number") !== true) {
+ $ERROR('#8: "MAX_VALUE"\\u2028in\\u2028Number === true');
+}
+
+//CHECK#9
+if (eval("'MAX_VALUE'\u2029in\u2029Number") !== true) {
+ $ERROR('#9: "MAX_VALUE"\\u2029in\\u2029Number === true');
+}
+
+//CHECK#10
+if (eval("'MAX_VALUE'\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029in\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Number") !== true) {
+ $ERROR('#10: "MAX_VALUE"\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029in\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029Number === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T1.js
new file mode 100644
index 000000000..e16410e7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.7_A2.1_T1;
+ * @section: 11.8.7;
+ * @assertion: Operator "in" uses GetValue;
+ * @description: Either Expression is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ("MAX_VALUE" in Number !== true) {
+ $ERROR('#1: "MAX_VALUE" in Number === true');
+}
+
+//CHECK#2
+var x = "MAX_VALUE";
+if (x in Number !== true) {
+ $ERROR('#2: var x = "MAX_VALUE"; x in Number === true');
+}
+
+//CHECK#3
+var y = Number;
+if ("MAX_VALUE" in y !== true) {
+ $ERROR('#3: var y = Number; "MAX_VALUE" in y === true');
+}
+
+//CHECK#4
+var x = "MAX_VALUE";
+var y = Number;
+if (x in y !== true) {
+ $ERROR('#4: var x = "MAX_VALUE"; var y = Number; x in y === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T2.js
new file mode 100644
index 000000000..8c5b353b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A2.1_T2;
+* @section: 11.8.7;
+* @assertion: Operator "in" uses GetValue;
+* @description: If GetBase(RelationalExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ MAX_VALUE in Number;
+ $ERROR('#1.1: MAX_VALUE in Number throw ReferenceError. Actual: ' + (MAX_VALUE in Number));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: MAX_VALUE in Number throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T3.js
new file mode 100644
index 000000000..b08ff3cc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A2.1_T3;
+* @section: 11.8.7;
+* @assertion: Operator "in" uses GetValue;
+* @description: If GetBase(ShiftExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ "MAX_VALUE" in NUMBER;
+ $ERROR('#1.1: "MAX_VALUE" in NUMBER throw ReferenceError. Actual: ' + ("MAX_VALUE" in NUMBER));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: "MAX_VALUE" in NUMBER throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T1.js
new file mode 100644
index 000000000..8f874ed6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.7_A2.4_T1;
+ * @section: 11.8.7;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var NUMBER = 0;
+if ((NUMBER = Number, "MAX_VALUE") in NUMBER !== true) {
+ $ERROR('#1: var NUMBER = 0; (NUMBER = Number, "MAX_VALUE") in NUMBER === true');
+}
+
+//CHECK#2
+var max_value = "MAX_VALUE";
+if (max_value in (max_value = "none", Number) !== true) {
+ $ERROR('#2: var max_value = "MAX_VALUE"; max_value in (max_value = "none", Number) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T2.js
new file mode 100644
index 000000000..1f1e645f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.7_A2.4_T2;
+ * @section: 11.8.7;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() in y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() in y() throw "x". Actual: ' + (x() in y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() in y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T3.js
new file mode 100644
index 000000000..42e63d81f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.7_A2.4_T3;
+ * @section: 11.8.7;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ max_value in (max_value = "MAX_VALUE", Number);
+ $ERROR('#1.1: max_value in (max_value = "MAX_VALUE", Number) throw ReferenceError. Actual: ' + (max_value in (max_value = "MAX_VALUE", Number)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: max_value in (max_value = "MAX_VALUE", Number) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((NUMBER = Number, "MAX_VALUE") in NUMBER !== true) {
+ $ERROR('#2: (NUMBER = Number, "MAX_VALUE") in NUMBER !== true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A3.js
new file mode 100644
index 000000000..47996cb5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A3.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A3;
+* @section: 11.8.7;
+* @assertion: If ShiftExpression is not an object, throw TypeError;
+* @description: Checking all the types of primitives;
+*/
+
+//CHECK#1
+try {
+ "toString" in true;
+ $ERROR('#1: "toString" in true throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: "toString" in true throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ "MAX_VALUE" in 1;
+ $ERROR('#2: "MAX_VALUE" in 1 throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: "MAX_VALUE" in 1 throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ "length" in "string";
+ $ERROR('#3: "length" in "string" throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: "length" in "string" throw TypeError');
+ }
+}
+
+//CHECK#4
+try {
+ "toString" in undefined;
+ $ERROR('#4: "toString" in undefined throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#4: "toString" in undefined throw TypeError');
+ }
+}
+
+//CHECK#5
+try {
+ "toString" in null;
+ $ERROR('#5: "toString" in null throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#5: "toString" in null throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A4.js
new file mode 100644
index 000000000..7f92b44fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A4;
+* @section: 11.8.7, 9.8;
+* @assertion: Operator "in" calls ToString(ShiftExpression);
+* @description: Checking ToString coversion;;
+*/
+
+//CHECK#1
+var object = {};
+object["true"] = 1;
+if (true in object !== "true" in object) {
+ $ERROR('#1: "var object = {}; object["true"] = 1; true in object === "true" in object');
+}
+
+//CHECK#2
+var object = {};
+object.Infinity = 1;
+if (Infinity in object !== "Infinity" in object) {
+ $ERROR('#2: "var object = {}; object.Infinity = 1; Infinity in object === "Infinity" in object');
+}
+
+//CHECK#4
+var object = {};
+object.undefined = 1;
+if (undefined in object !== "undefined" in object) {
+ $ERROR('#4: "var object = {}; object.undefined = 1; undefined in object === "undefined" in object');
+}
+
+//CHECK#5
+var object = {};
+object["null"] = 1;
+if (null in object !== "null" in object) {
+ $ERROR('#5: "var object = {}; object["null"] = 1; null in object === "null" in object');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A1.js
new file mode 100644
index 000000000..637f50ef9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.9.1_A1;
+* @section: 11.9.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between EqualityExpression and "==" or between "==" and RelationalExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("true\u0009==\u00091") !== true) {
+ $ERROR('#1: (true\\u0009==\\u00091) === true');
+}
+
+//CHECK#2
+if (eval("true\u000B==\u000B1") !== true) {
+ $ERROR('#2: (true\\u000B==\\u000B1) === true');
+}
+
+//CHECK#3
+if (eval("true\u000C==\u000C1") !== true) {
+ $ERROR('#3: (true\\u000C==\\u000C1) === true');
+}
+
+//CHECK#4
+if (eval("true\u0020==\u00201") !== true) {
+ $ERROR('#4: (true\\u0020==\\u00201) === true');
+}
+
+//CHECK#5
+if (eval("true\u00A0==\u00A01") !== true) {
+ $ERROR('#5: (true\\u00A0==\\u00A01) === true');
+}
+
+//CHECK#6
+if (eval("true\u000A==\u000A1") !== true) {
+ $ERROR('#6: (true\\u000A==\\u000A1) === true');
+}
+
+//CHECK#7
+if (eval("true\u000D==\u000D1") !== true) {
+ $ERROR('#7: (true\\u000D==\\u000D1) === true');
+}
+
+//CHECK#8
+if (eval("true\u2028==\u20281") !== true) {
+ $ERROR('#8: (true\\u2028==\\u20281) === true');
+}
+
+//CHECK#9
+if (eval("true\u2029==\u20291") !== true) {
+ $ERROR('#9: (true\\u2029==\\u20291) === true');
+}
+
+//CHECK#10
+if (eval("true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029==\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== true) {
+ $ERROR('#10: (true\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029==\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T1.js
new file mode 100644
index 000000000..8a751c0b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.1_T1;
+ * @section: 11.9.1;
+ * @assertion: Operator x == y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 == 1) !== true) {
+ $ERROR('#1: (1 == 1) === true');
+}
+
+//CHECK#2
+var x = 1;
+if ((x == 1) !== true) {
+ $ERROR('#2: var x = 1; (x == 1) === true');
+}
+
+//CHECK#3
+var y = 1;
+if ((1 == y) !== true) {
+ $ERROR('#3: var y = 1; (1 == y) === true');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if ((x == y) !== true) {
+ $ERROR('#4: var x = 1; var y = 1; (x == y) === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if ((objectx.prop == objecty.prop) !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop == objecty.prop) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T2.js
new file mode 100644
index 000000000..e631cf4a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.1_T2;
+ * @section: 11.9.1;
+ * @assertion: Operator x == y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x == 1;
+ $ERROR('#1.1: x == 1 throw ReferenceError. Actual: ' + (x == 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x == 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T3.js
new file mode 100644
index 000000000..87dfd3630
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.1_T3;
+ * @section: 11.9.1;
+ * @assertion: Operator x == y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 == y;
+ $ERROR('#1.1: 1 == y throw ReferenceError. Actual: ' + (1 == y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 == y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T1.js
new file mode 100644
index 000000000..e712df117
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.4_T1;
+ * @section: 11.9.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if (((x = 1) == x) !== true) {
+ $ERROR('#1: var x = 0; ((x = 1) == x) === true');
+}
+
+//CHECK#2
+var x = 0;
+if ((x == (x = 1)) !== false) {
+ $ERROR('#2: var x = 0; (x == (x = 1)) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T2.js
new file mode 100644
index 000000000..7f9642a5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.4_T2;
+ * @section: 11.9.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() == y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() == y() throw "x". Actual: ' + (x() == y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() == y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T3.js
new file mode 100644
index 000000000..ee4f3cc27
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.4_T3;
+ * @section: 11.9.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x == (x = 1);
+ $ERROR('#1.1: x == (x = 1) throw ReferenceError. Actual: ' + (x == (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x == (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) == y) !== true) {
+ $ERROR('#2: ((y = 1) == y) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.1.js
new file mode 100644
index 000000000..c9ca2a415
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A3.1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: Return true, if x and y are both true or both false; otherwise, return false;
+ * @description: x and y are boolean primitives;
+ */
+
+//CHECK#1
+if ((true == true) !== true) {
+ $ERROR('#1: (true == true) === true');
+}
+
+//CHECK#2
+if ((false == false) !== true) {
+ $ERROR('#2: (false == false) === true');
+}
+
+//CHECK#3
+if ((true == false) !== false) {
+ $ERROR('#3: (true == false) === false');
+}
+
+//CHECK#4
+if ((false == true) !== false) {
+ $ERROR('#4: (false == true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.2.js
new file mode 100644
index 000000000..9306cefd8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A3.2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Boolean and Type(y) is Number,
+ * return the result of comparison ToNumber(x) == y;
+ * @description: x is primitive boolean, y is primitive number;
+ */
+
+//CHECK#1
+if ((true == 1) !== true) {
+ $ERROR('#1: (true == 1) === true');
+}
+
+//CHECK#2
+if ((false == "0") !== true) {
+ $ERROR('#2: (false == "0") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.3.js
new file mode 100644
index 000000000..2548c4b2e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A3.3;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(y) is Number and Type(y) is Boolean,
+ * return the result of comparison x == ToNumber(y);
+ * @description: x is primitive number, y is primitive boolean;
+ */
+
+//CHECK#1
+if ((0 == false) !== true) {
+ $ERROR('#1: (0 == false) === true');
+}
+
+//CHECK#2
+if (("1" == true) !== true) {
+ $ERROR('#2: ("1" == true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T1.js
new file mode 100644
index 000000000..16e798bb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A4.1_T1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If x or y is NaN, return false;
+ * @description: x is NaN;
+*/
+
+//CHECK#1
+if ((Number.NaN == true) !== false) {
+ $ERROR('#1: (NaN == true) === false');
+}
+
+//CHECK#2
+if ((Number.NaN == 1) !== false) {
+ $ERROR('#2: (NaN == 1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN == Number.NaN) !== false) {
+ $ERROR('#3: (NaN == NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN == Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (NaN == +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.NaN == Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN == -Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN == Number.MAX_VALUE) !== false) {
+ $ERROR('#6: (NaN == Number.MAX_VALUE) === false');
+}
+
+//CHECK#7
+if ((Number.NaN == Number.MIN_VALUE) !== false) {
+ $ERROR('#7: (NaN == Number.MIN_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN == "string") !== false) {
+ $ERROR('#8: (NaN == "string") === false');
+}
+
+//CHECK#9
+if ((Number.NaN == new Object()) !== false) {
+ $ERROR('#9: (NaN == new Object()) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T2.js
new file mode 100644
index 000000000..78d0dd8be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A4.1_T2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If x or y is NaN, return false;
+ * @description: y is NaN;
+*/
+
+//CHECK#1
+if ((true == Number.NaN) !== false) {
+ $ERROR('#1: (true == NaN) === false');
+}
+
+//CHECK#2
+if ((-1 == Number.NaN) !== false) {
+ $ERROR('#2: (-1 == NaN) === false');
+}
+
+//CHECK#3
+if ((Number.NaN == Number.NaN) !== false) {
+ $ERROR('#3: (NaN == NaN) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY == Number.NaN) !== false) {
+ $ERROR('#4: (+Infinity == NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY == Number.NaN) !== false) {
+ $ERROR('#5: (-Infinity == NaN) === false');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE == Number.NaN) !== false) {
+ $ERROR('#6: (Number.MAX_VALUE == NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE == Number.NaN) !== false) {
+ $ERROR('#7: (Number.MIN_VALUE == NaN) === false');
+}
+
+//CHECK#8
+if (("string" == Number.NaN) !== false) {
+ $ERROR('#8: ("string" == NaN) === false');
+}
+
+//CHECK#9
+if ((new Object() == Number.NaN) !== false) {
+ $ERROR('#9: (new Object() == NaN) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.2.js
new file mode 100644
index 000000000..303505e0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A4.2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If x is +0(-0) and y is -0(+0), return true;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((+0 == -0) !== true) {
+ $ERROR('#1: (+0 == -0) === true');
+}
+
+//CHECK#2
+if ((-0 == +0) !== true) {
+ $ERROR('#2: (-0 == +0) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.3.js
new file mode 100644
index 000000000..5ed26d722
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A4.3;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: Type(x) and Type(y) are Number-s minus NaN, +0, -0.
+ * Return true, if x is the same number value as y; otherwise, return false;
+ * @description: x and y are primitive numbers;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: (+Infinity == +Infinity) === true');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: (-Infinity == -Infinity) === true');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY == -Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#3: (+Infinity == -(-Infinity)) === true');
+}
+
+//CHECK#4
+if ((1 == 0.999999999999) !== false) {
+ $ERROR('#4: (1 == 0.999999999999) === false');
+}
+
+//CHECK#5
+if ((1.0 == 1) !== true) {
+ $ERROR('#5: (1.0 == 1) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.1.js
new file mode 100644
index 000000000..6e2c34006
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A5.1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: Type(x) and Type(y) are String-s.
+ * Return true, if x and y are exactly the same sequence of characters; otherwise, return false;
+ * @description: x and y are primitive string;
+ */
+
+//CHECK#1
+if (("" == "") !== true) {
+ $ERROR('#1: ("" == "") === true');
+}
+
+//CHECK#2
+if ((" " == " ") !== true) {
+ $ERROR('#2: " (" == " ") === true');
+}
+
+//CHECK#3
+if ((" " == "") !== false) {
+ $ERROR('#3: " (" == "") === false');
+}
+
+//CHECK#4
+if (("string" == "string") !== true) {
+ $ERROR('#4: ("string" == "string") === true');
+}
+
+//CHECK#5
+if ((" string" == "string ") !== false) {
+ $ERROR('#5: (" string" == "string ") === false');
+}
+
+//CHECK#6
+if (("1.0" == "1") !== false) {
+ $ERROR('#6: ("1.0" == "1") === false');
+}
+
+//CHECK#7
+if (("0xff" == "255") !== false) {
+ $ERROR('#7: ("0xff" == "255") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.2.js
new file mode 100644
index 000000000..c9357227e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A5.2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Number and Type(y) is String,
+ * return the result of comparison x == ToNumber(y);
+ * @description: x is primitive number, y is primitive string;
+ */
+
+//CHECK#1
+if ((1 == "1") !== true) {
+ $ERROR('#1: (1 == "1") === true');
+}
+
+//CHECK#2
+if ((1.100 == "+1.10") !== true) {
+ $ERROR('#2: (1.100 == "+1.10") === true');
+}
+
+//CHECK#3
+if ((1 == "true") !== false) {
+ $ERROR('#3: (1 == "true") === false');
+}
+
+//CHECK#4
+if ((255 == "0xff") !== true) {
+ $ERROR('#4: (255 == "0xff") === true');
+}
+
+//CHECK#5
+if ((0 == "") !== true) {
+ $ERROR('#5: (0 == "") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.3.js
new file mode 100644
index 000000000..c947908e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.3.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A5.3;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is String and Type(y) is Number,
+ * return the result of comparison ToNumber(x) == y;
+ * @description: x is primitive string, y is primitive number;
+ */
+
+//CHECK#1
+if (("-1" == -1) !== true) {
+ $ERROR('#1: ("-1" == -1) === true');
+}
+
+//CHECK#2
+if (("-1.100" == -1.10) !== true) {
+ $ERROR('#2: ("-1.100" == -1.10) === true');
+}
+
+//CHECK#3
+if (("false" == 0) !== false) {
+ $ERROR('#3: ("false" == 0) === false');
+}
+
+//CHECK#4
+if (("5e-324" == 5e-324) !== true) {
+ $ERROR('#4: ("5e-324" == 5e-324) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.1.js
new file mode 100644
index 000000000..6d59e89b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A6.1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) as well as Type(y) is undefined or null, return true;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((undefined == undefined) !== true) {
+ $ERROR('#1: (undefined == undefined) === true');
+}
+
+//CHECK#2
+if ((void 0 == undefined) !== true) {
+ $ERROR('#2: (void 0 == undefined) === true');
+}
+
+//CHECK#3
+if ((undefined == eval("var x")) !== true) {
+ $ERROR('#3: (undefined == eval("var x")) === true');
+}
+
+//CHECK#4
+if ((undefined == null) !== true) {
+ $ERROR('#4: (undefined == null) === true');
+}
+
+//CHECK#5
+if ((null == void 0) !== true) {
+ $ERROR('#5: (null == void 0) === true');
+}
+
+//CHECK#6
+if ((null == null) !== true) {
+ $ERROR('#6: (null == null) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T1.js
new file mode 100644
index 000000000..2d8e77275
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A6.2_T1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If one expression is undefined or null and another is not, return false;
+ * @description: x is null or undefined, y is not;
+*/
+
+//CHECK#1
+if ((undefined == true) !== false) {
+ $ERROR('#1: (undefined == true) === false');
+}
+
+//CHECK#2
+if ((undefined == 0) !== false) {
+ $ERROR('#2: (undefined == 0) === false');
+}
+
+//CHECK#3
+if ((undefined == "undefined") !== false) {
+ $ERROR('#3: (undefined == "undefined") === false');
+}
+
+//CHECK#4
+if ((undefined == {}) !== false) {
+ $ERROR('#4: (undefined == {}) === false');
+}
+
+//CHECK#5
+if ((null == false) !== false) {
+ $ERROR('#5: (null == false) === false');
+}
+
+//CHECK#6
+if ((null == 0) !== false) {
+ $ERROR('#6: (null == 0) === false');
+}
+
+//CHECK#7
+if ((null == "null") !== false) {
+ $ERROR('#7: (null == "null") === false');
+}
+
+//CHECK#8
+if ((null == {}) !== false) {
+ $ERROR('#8: (null == {}) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T2.js
new file mode 100644
index 000000000..f0de41ae1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A6.2_T2;
+ * @section: 11.9.1, 11.9.3;
+* @assertion: If one expression is undefined or null and another is not, return false;
+ * @description: y is null or undefined, x is not;
+*/
+
+//CHECK#1
+if ((false == undefined) !== false) {
+ $ERROR('#1: (false == undefined) === false');
+}
+
+//CHECK#2
+if ((Number.NaN == undefined) !== false) {
+ $ERROR('#2: (Number.NaN == undefined) === false');
+}
+
+//CHECK#3
+if (("undefined" == undefined) !== false) {
+ $ERROR('#3: ("undefined" == undefined) === false');
+}
+
+//CHECK#4
+if (({} == undefined) !== false) {
+ $ERROR('#4: ({} == undefined) === false');
+}
+
+//CHECK#5
+if ((false == null) !== false) {
+ $ERROR('#5: (false == null) === false');
+}
+
+//CHECK#6
+if ((0 == null) !== false) {
+ $ERROR('#6: (0 == null) === false');
+}
+
+//CHECK#7
+if (("null" == null) !== false) {
+ $ERROR('#7: ("null" == null) === false');
+}
+
+//CHECK#8
+if (({} == null) !== false) {
+ $ERROR('#8: ({} == null) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.1.js
new file mode 100644
index 000000000..f416f2ea9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: Type(x) and Type(y) are Object-s.
+ * Return true, if x and y are references to the same Object; otherwise, return false;
+ * @description: Checking Boolean object, Number object, String object, Object object;
+ */
+
+//CHECK#1
+if ((new Boolean(true) == new Boolean(true)) !== false) {
+ $ERROR('#1: (new Boolean(true) == new Boolean(true)) === false');
+}
+
+//CHECK#2
+if ((new Number(1) == new Number(1)) !== false) {
+ $ERROR('#2: (new Number(1) == new Number(1)) === false');
+}
+
+//CHECK#3
+if ((new String("x") == new String("x")) !== false) {
+ $ERROR('#3: (new String("x") == new String("x")) === false');
+}
+
+//CHECK#4
+if ((new Object() == new Object()) !== false) {
+ $ERROR('#4: (new Object() == new Object()) === false');
+}
+
+//CHECK#5
+x = {};
+y = x;
+if ((x == y) !== true) {
+ $ERROR('#5: x = {}; y = x; (x == y) === true');
+}
+
+//CHECK#6
+if ((new Boolean(true) == new Number(1)) !== false) {
+ $ERROR('#6 (new Boolean(true) == new Number(1)) === false');
+}
+
+//CHECK#7
+if ((new Number(1) == new String("1")) !== false) {
+ $ERROR('#7: (new Number(1) == new String("1")) === false');
+}
+
+//CHECK#8
+if ((new String("1") == new Boolean(true)) !== false) {
+ $ERROR('#8: (new String("x") == new Boolean(true)) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.2.js
new file mode 100644
index 000000000..dabd9d1f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is Boolean,
+ * return ToPrimitive(x) == y;
+ * @description: x is object, y is primitive boolean;
+*/
+
+//CHECK#1
+if ((new Boolean(true) == true) !== true) {
+ $ERROR('#1: (new Boolean(true) == true) === true');
+}
+
+//CHECK#2
+if ((new Number(1) == true) !== true) {
+ $ERROR('#2: (new Number(1) == true) === true');
+}
+
+//CHECK#3
+if ((new String("1") == true) !== true) {
+ $ERROR('#3: (new String("1") == true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.3.js
new file mode 100644
index 000000000..efc959768
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.3;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Boolean and Type(y) is Object,
+ * return x == ToPrimitive(y);
+ * @description: y is object, x is primitive boolean;
+ */
+
+//CHECK#1
+if ((true == new Boolean(true)) !== true) {
+ $ERROR('#1: (true == new Boolean(true)) === true');
+}
+
+//CHECK#2
+if ((true == new Number(1)) !== true) {
+ $ERROR('#2: (true == new Number(1)) === true');
+}
+
+//CHECK#3
+if ((true == new String("+1")) !== true) {
+ $ERROR('#3: (true == new String("+1")) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.4.js
new file mode 100644
index 000000000..229fe3859
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.4;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is Number,
+ * return ToPrimitive(x) == y;
+ * @description: x is object, y is primitive number;
+*/
+
+//CHECK#1
+if ((new Boolean(true) == 1) !== true) {
+ $ERROR('#1: (new Boolean(true) == 1) === true');
+}
+
+//CHECK#2
+if ((new Number(-1) == -1) !== true) {
+ $ERROR('#2: (new Number(-1) == -1) === true');
+}
+
+//CHECK#3
+if ((new String("-1") == -1) !== true) {
+ $ERROR('#3: (new String("-1") == -1) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.5.js
new file mode 100644
index 000000000..e87efbf77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.5;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Number and Type(y) is Object,
+ * return x == ToPrimitive(y);
+ * @description: y is object, x is primitive number;
+ */
+
+//CHECK#1
+if ((1 == new Boolean(true)) !== true) {
+ $ERROR('#1: (1 == new Boolean(true)) === true');
+}
+
+//CHECK#2
+if ((-1 == new Number(-1)) !== true) {
+ $ERROR('#2: (-1 == new Number(-1)) === true');
+}
+
+//CHECK#3
+if ((-1 == new String("-1")) !== true) {
+ $ERROR('#3: (-1 == new String("-1")) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.6.js
new file mode 100644
index 000000000..092a50f5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.6;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is String,
+ * return ToPrimitive(x) == y;
+ * @description: x is object, y is primitive string;
+ */
+
+//CHECK#1
+if ((new Boolean(true) == "1") !== true) {
+ $ERROR('#1: (new Boolean(true) == "1") === true');
+}
+
+//CHECK#2
+if ((new Number(-1) == "-1") !== true) {
+ $ERROR('#2: (new Number(-1) == "-1") === true');
+}
+
+//CHECK#3
+if ((new String("x") == "x") !== true) {
+ $ERROR('#3: (new String("x") == "x") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.7.js
new file mode 100644
index 000000000..77d8d4847
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.7.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.7;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is String and Type(y) is Object,
+ * return x == ToPrimitive(y);
+ * @description: y is object, x is primitive string;
+ */
+
+//CHECK#1
+if (("1" == new Boolean(true)) !== true) {
+ $ERROR('#1: ("1" == new Boolean(true)) === true');
+}
+
+//CHECK#2
+if (("-1" == new Number(-1)) !== true) {
+ $ERROR('#2: ("-1" == new Number(-1)) === true');
+}
+
+//CHECK#3
+if (("x" == new String("x")) !== true) {
+ $ERROR('#3: ("x" == new String("x")) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.8.js
new file mode 100644
index 000000000..586f09748
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.8.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.8;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is primitive type,
+ * return ToPrimitive(x) == y;
+ * @description: x is object, y is primtitive;
+ */
+
+//CHECK#1
+if (({valueOf: function() {return 1}} == true) !== true) {
+ $ERROR('#1: ({valueOf: function() {return 1}} == true) === true');
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} == 1) !== true) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} == 1) === true');
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} == "+1") !== true) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} == "+1") === true');
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return "+1"}, toString: function() {throw "error"}} == true) !== true) {
+ $ERROR('#4.1: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} == true) === true');
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} == true) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} == true) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (({toString: function() {return "+1"}} == 1) !== true) {
+ $ERROR('#5: ({toString: function() {return "+1"}} == 1) === true');
+}
+
+//CHECK#6
+if (({valueOf: function() {return {}}, toString: function() {return "+1"}} == "1") !== false) {
+ $ERROR('#6.1: ({valueOf: function() {return {}}, toString: function() {return "+1"}} == "1") === false');
+} else {
+ if (({valueOf: function() {return {}}, toString: function() {return "+1"}} == "+1") !== true) {
+ $ERROR('#6.2: ({valueOf: function() {return {}}, toString: function() {return "+1"}} == "+1") === true');
+ }
+}
+
+//CHECK#7
+try {
+ ({valueOf: function() {throw "error"}, toString: function() {return 1}} == 1);
+ $ERROR('#7.1: ({valueOf: function() {throw "error"}, toString: function() {return 1}} == 1) throw "error". Actual: ' + (({valueOf: function() {throw "error"}, toString: function() {return 1}} == 1)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: ({valueOf: function() {throw "error"}, toString: function() {return 1}} == 1) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ ({valueOf: function() {return {}}, toString: function() {return {}}} == 1);
+ $ERROR('#8.1: ({valueOf: function() {return {}}, toString: function() {return {}}} == 1) throw TypeError. Actual: ' + (({valueOf: function() {return {}}, toString: function() {return {}}} == 1)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: ({valueOf: function() {return {}}, toString: function() {return {}}} == 1) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.9.js
new file mode 100644
index 000000000..d20fdb5a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.9.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.9;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is primitive type and Type(y) is Object,
+ * return x == ToPrimitive(y);
+ * @description: y is object, x is primtitive;
+ */
+
+//CHECK#1
+if ((true == {valueOf: function() {return 1}}) !== true) {
+ $ERROR('#1: (true == {valueOf: function() {return 1}}) === true');
+}
+
+//CHECK#2
+if ((1 == {valueOf: function() {return 1}, toString: function() {return 0}}) !== true) {
+ $ERROR('#2: (1 == {valueOf: function() {return 1}, toString: function() {return 0}}) === true');
+}
+
+//CHECK#3
+if (("+1" == {valueOf: function() {return 1}, toString: function() {return {}}}) !== true) {
+ $ERROR('#3: ("+1" == {valueOf: function() {return 1}, toString: function() {return {}}}) === true');
+}
+
+//CHECK#4
+try {
+ if ((true == {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) !== true) {
+ $ERROR('#4.1: (true == {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) === true');
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: (true == {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) not throw "error"');
+ } else {
+ $ERROR('#4.3: (true == {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((1 == {toString: function() {return "+1"}}) !== true) {
+ $ERROR('#5: (1 == {toString: function() {return "+1"}}) === true');
+}
+
+//CHECK#6
+if (("1" == {valueOf: function() {return {}}, toString: function() {return "+1"}}) !== false) {
+ $ERROR('#6.1: ("1" == {valueOf: function() {return {}}, toString: function() {return "+1"}}) === false');
+} else {
+ if (("+1" == {valueOf: function() {return {}}, toString: function() {return "+1"}}) !== true) {
+ $ERROR('#6.2: ("+1" == {valueOf: function() {return {}}, toString: function() {return "+1"}}) === true');
+ }
+}
+
+//CHECK#7
+try {
+ (1 == {valueOf: function() {throw "error"}, toString: function() {return 1}});
+ $ERROR('#7.1: (1 == {valueOf: function() {throw "error"}, toString: function() {return 1}}) throw "error". Actual: ' + ((1 == {valueOf: function() {throw "error"}, toString: function() {return 1}})));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: (1 == {valueOf: function() {throw "error"}, toString: function() {return 1}}) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ (1 == {valueOf: function() {return {}}, toString: function() {return {}}});
+ $ERROR('#8.1: (1 == {valueOf: function() {return {}}, toString: function() {return {}}}) throw TypeError. Actual: ' + ((1 == {valueOf: function() {return {}}, toString: function() {return {}}})));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: (1 == {valueOf: function() {return {}}, toString: function() {return {}}}) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A1.js
new file mode 100644
index 000000000..b28112e40
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.9.2_A1;
+* @section: 11.9.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between EqualityExpression and "!=" or between "!=" and RelationalExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("true\u0009!=\u00091") !== false) {
+ $ERROR('#1: (true\\u0009!=\\u00091) === false');
+}
+
+//CHECK#2
+if (eval("true\u000B!=\u000B1") !== false) {
+ $ERROR('#2: (true\\u000B!=\\u000B1) === false');
+}
+
+//CHECK#3
+if (eval("true\u000C!=\u000C1") !== false) {
+ $ERROR('#3: (true\\u000C!=\\u000C1) === false');
+}
+
+//CHECK#4
+if (eval("true\u0020!=\u00201") !== false) {
+ $ERROR('#4: (true\\u0020!=\\u00201) === false');
+}
+
+//CHECK#5
+if (eval("true\u00A0!=\u00A01") !== false) {
+ $ERROR('#5: (true\\u00A0!=\\u00A01) === false');
+}
+
+//CHECK#6
+if (eval("true\u000A!=\u000A1") !== false) {
+ $ERROR('#6: (true\\u000A!=\\u000A1) === false');
+}
+
+//CHECK#7
+if (eval("true\u000D!=\u000D1") !== false) {
+ $ERROR('#7: (true\\u000D!=\\u000D1) === false');
+}
+
+//CHECK#8
+if (eval("true\u2028!=\u20281") !== false) {
+ $ERROR('#8: (true\\u2028!=\\u20281) === false');
+}
+
+//CHECK#9
+if (eval("true\u2029!=\u20291") !== false) {
+ $ERROR('#9: (true\\u2029!=\\u20291) === false');
+}
+
+//CHECK#10
+if (eval("true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029!=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== false) {
+ $ERROR('#10: (true\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029!=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T1.js
new file mode 100644
index 000000000..ad4d6d0b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.1_T1;
+ * @section: 11.9.2;
+ * @assertion: Operator x != y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 != 1) !== false) {
+ $ERROR('#1: (1 != 1) === false');
+}
+
+//CHECK#2
+var x = 1;
+if ((x != 1) !== false) {
+ $ERROR('#2: var x = 1; (x != 1) === false');
+}
+
+//CHECK#3
+var y = 1;
+if ((1 != y) !== false) {
+ $ERROR('#3: var y = 1; (1 != y) === false');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if ((x != y) !== false) {
+ $ERROR('#4: var x = 1; var y = 1; (x != y) === false');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if ((objectx.prop != objecty.prop) !== false) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop != objecty.prop) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T2.js
new file mode 100644
index 000000000..bc78732e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.1_T2;
+ * @section: 11.9.2;
+ * @assertion: Operator x != y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x != 1;
+ $ERROR('#1.1: x != 1 throw ReferenceError. Actual: ' + (x != 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x != 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T3.js
new file mode 100644
index 000000000..353978e37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.1_T3;
+ * @section: 11.9.2;
+ * @assertion: Operator x != y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 != y;
+ $ERROR('#1: 1 != y throw ReferenceError');
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 != y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T1.js
new file mode 100644
index 000000000..513caef75
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.4_T1;
+ * @section: 11.9.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if (((x = 1) != x) !== false) {
+ $ERROR('#1: var x = 0; ((x = 1) != x) === false');
+}
+
+//CHECK#2
+var x = 0;
+if ((x != (x = 1)) !== true) {
+ $ERROR('#2: var x = 0; (x != (x = 1)) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T2.js
new file mode 100644
index 000000000..2f86f3785
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.4_T2;
+ * @section: 11.9.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() != y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() != y() throw "x". Actual: ' + (x() != y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() != y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T3.js
new file mode 100644
index 000000000..519b668dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.4_T3;
+ * @section: 11.9.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x != (x = 1);
+ $ERROR('#1.1: x != (x = 1) throw ReferenceError. Actual: ' + (x != (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x != (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) != y) !== false) {
+ $ERROR('#2: ((y = 1) != y) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.1.js
new file mode 100644
index 000000000..330be229c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A3.1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: Return false, if x and y are both true or both false; otherwise, return true;
+ * @description: x and y are boolean primitives;
+ */
+
+//CHECK#1
+if ((true != true) !== false) {
+ $ERROR('#1: (true != true) === false');
+}
+
+//CHECK#2
+if ((false != false) !== false) {
+ $ERROR('#2: (false != false) === false');
+}
+
+//CHECK#3
+if ((true != false) !== true) {
+ $ERROR('#3: (true != false) === true');
+}
+
+//CHECK#4
+if ((false != true) !== true) {
+ $ERROR('#4: (false != true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.2.js
new file mode 100644
index 000000000..1b76cf1f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A3.2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Boolean and Type(y) is Number,
+ * return the result of comparison ToNumber(x) != y;
+ * @description: x is primitive boolean, y is primitive number;
+ */
+
+//CHECK#1
+if ((true != 1) !== false) {
+ $ERROR('#1: (true != 1) === false');
+}
+
+//CHECK#2
+if ((false != "0") !== false) {
+ $ERROR('#2: (false != "0") === false');
+}
+
+//CHECK#3
+if ((true != new Boolean(true)) !== false) {
+ $ERROR('#3: (true != new Boolean(true)) === false');
+}
+
+//CHECK#4
+if ((true != {valueOf: function () {return 1}}) !== false) {
+ $ERROR('#4: (true != {valueOf: function () {return 1}}) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.3.js
new file mode 100644
index 000000000..383ecd18a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A3.3;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(y) is Number and Type(y) is Boolean,
+ * return the result of comparison x != ToNumber(y);
+ * @description: x is primitive number, y is primitive boolean;
+ */
+
+//CHECK#1
+if ((0 != false) !== false) {
+ $ERROR('#1: (0 != false) === false');
+}
+
+//CHECK#2
+if (("1" != true) !== false) {
+ $ERROR('#2: ("1" != true) === false');
+}
+
+//CHECK#3
+if ((new Boolean(false) != false) !== false) {
+ $ERROR('#3: (new Boolean(false) != false) === false');
+}
+
+//CHECK#4
+if (({valueOf: function () {return "0"}} != false) !== false) {
+ $ERROR('#4: ({valueOf: function () {return "0"}} != false) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T1.js
new file mode 100644
index 000000000..86d36429c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A4.1_T1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If x or y is NaN, return true;
+ * @description: x is NaN;
+*/
+
+//CHECK#1
+if ((Number.NaN != true) !== true) {
+ $ERROR('#1: (NaN != true) === true');
+}
+
+//CHECK#2
+if ((Number.NaN != 1) !== true) {
+ $ERROR('#2: (NaN != 1) === true');
+}
+
+//CHECK#3
+if ((Number.NaN != Number.NaN) !== true) {
+ $ERROR('#3: (NaN != NaN) === true');
+}
+
+//CHECK#4
+if ((Number.NaN != Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (NaN != +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.NaN != Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: (NaN != -Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.NaN != Number.MAX_VALUE) !== true) {
+ $ERROR('#6: (NaN != Number.MAX_VALUE) === true');
+}
+
+//CHECK#7
+if ((Number.NaN != Number.MIN_VALUE) !== true) {
+ $ERROR('#7: (NaN != Number.MIN_VALUE) === true');
+}
+
+//CHECK#8
+if ((Number.NaN != "string") !== true) {
+ $ERROR('#8: (NaN != "string") === true');
+}
+
+//CHECK#9
+if ((Number.NaN != new Object()) !== true) {
+ $ERROR('#9: (NaN != new Object()) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T2.js
new file mode 100644
index 000000000..e0dd5081a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A4.1_T2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If x or y is NaN, return true;
+ * @description: y is NaN;
+*/
+
+//CHECK#1
+if ((true != Number.NaN) !== true) {
+ $ERROR('#1: (true != NaN) === true');
+}
+
+//CHECK#2
+if ((-1 != Number.NaN) !== true) {
+ $ERROR('#2: (-1 != NaN) === true');
+}
+
+//CHECK#3
+if ((Number.NaN != Number.NaN) !== true) {
+ $ERROR('#3: (NaN != NaN) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY != Number.NaN) !== true) {
+ $ERROR('#4: (+Infinity != NaN) === true');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY != Number.NaN) !== true) {
+ $ERROR('#5: (-Infinity != NaN) === true');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE != Number.NaN) !== true) {
+ $ERROR('#6: (Number.MAX_VALUE != NaN) === true');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE != Number.NaN) !== true) {
+ $ERROR('#7: (Number.MIN_VALUE != NaN) === true');
+}
+
+//CHECK#8
+if (("string" != Number.NaN) !== true) {
+ $ERROR('#8: ("string" != NaN) === true');
+}
+
+//CHECK#9
+if ((new Object() != Number.NaN) !== true) {
+ $ERROR('#9: (new Object() != NaN) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.2.js
new file mode 100644
index 000000000..78a6f0c4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A4.2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If x is +0(-0) and y is -0(+0), return false;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((+0 != -0) !== false) {
+ $ERROR('#1: (+0 != -0) === false');
+}
+
+//CHECK#2
+if ((-0 != +0) !== false) {
+ $ERROR('#2: (-0 != +0) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.3.js
new file mode 100644
index 000000000..51e9e6d6d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A4.3;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: Type(x) and Type(y) are Number-s minus NaN, +0, -0.
+ * Return false, if x is the same number value as y; otherwise, return true;
+ * @description: x and y are primitive numbers;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY != Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#1: (+Infinity != +Infinity) === false');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY != Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#2: (-Infinity != -Infinity) === false');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY != -Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#3: (+Infinity != -(-Infinity)) === false');
+}
+
+//CHECK#4
+if ((1 != 0.999999999999) !== true) {
+ $ERROR('#4: (1 != 0.999999999999) === true');
+}
+
+//CHECK#5
+if ((1.0 != 1) !== false) {
+ $ERROR('#5: (1.0 != 1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.1.js
new file mode 100644
index 000000000..a33364a20
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A5.1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: Type(x) and Type(y) are String-s.
+ * Return true, if x and y are exactly the same sequence of characters; otherwise, return false;
+ * @description: x and y are primitive strings;
+ */
+
+//CHECK#1
+if (("" != "") !== false) {
+ $ERROR('#1: ("" != "") === false');
+}
+
+//CHECK#2
+if ((" " != " ") !== false) {
+ $ERROR('#2: " (" != " ") === false');
+}
+
+//CHECK#3
+if ((" " != "") !== true) {
+ $ERROR('#3: " (" != "") === true');
+}
+
+//CHECK#4
+if (("string" != "string") !== false) {
+ $ERROR('#4: ("string" != "string") === false');
+}
+
+//CHECK#5
+if ((" string" != "string ") !== true) {
+ $ERROR('#5: (" string" != "string ") === true');
+}
+
+//CHECK#6
+if (("1.0" != "1") !== true) {
+ $ERROR('#6: ("1.0" != "1") === true');
+}
+
+//CHECK#7
+if (("0xff" != "255") !== true) {
+ $ERROR('#7: ("0xff" != "255") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.2.js
new file mode 100644
index 000000000..81efe0521
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A5.2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Number and Type(y) is String,
+ * return the result of comparison x != ToNumber(y);
+ * @description: x is primitive number, y is primitive string;
+ */
+
+//CHECK#1
+if ((1 != "1") !== false) {
+ $ERROR('#1: (1 != "1") === false');
+}
+
+//CHECK#2
+if ((1.100 != "+1.10") !== false) {
+ $ERROR('#2: (1.100 != "+1.10") === false');
+}
+
+//CHECK#3
+if ((1 != "true") !== true) {
+ $ERROR('#3: (1 != "true") === true');
+}
+
+//CHECK#4
+if ((255 != "0xff") !== false) {
+ $ERROR('#4: (255 != "0xff") === false');
+}
+
+//CHECK#5
+if ((0 != "") !== false) {
+ $ERROR('#5: (0 != "") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.3.js
new file mode 100644
index 000000000..d2b9f8802
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.3.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A5.3;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is String and Type(y) is Number,
+ * return the result of comparison ToNumber(x) != y;
+ * @description: x is primitive string, y is primitive number;
+ */
+
+//CHECK#1
+if (("-1" != -1) !== false) {
+ $ERROR('#1: ("-1" != -1) === false');
+}
+
+//CHECK#2
+if (("-1.100" != -1.10) !== false) {
+ $ERROR('#2: ("-1.100" != -1.10) === false');
+}
+
+//CHECK#3
+if (("false" != 0) !== true) {
+ $ERROR('#3: ("false" != 0) === true');
+}
+
+//CHECK#4
+if (("5e-324" != 5e-324) !== false) {
+ $ERROR('#4: ("5e-324" != 5e-324) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.1.js
new file mode 100644
index 000000000..b1eff0595
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A6.1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) as well as Type(y) is Undefined or Null, return true;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((undefined != undefined) !== false) {
+ $ERROR('#1: (undefined != undefined) === false');
+}
+
+//CHECK#2
+if ((void 0 != undefined) !== false) {
+ $ERROR('#2: (void 0 != undefined) === false');
+}
+
+//CHECK#3
+if ((undefined != eval("var x")) !== false) {
+ $ERROR('#3: (undefined != eval("var x")) === false');
+}
+
+//CHECK#4
+if ((undefined != null) !== false) {
+ $ERROR('#4: (undefined != null) === false');
+}
+
+//CHECK#5
+if ((null != void 0) !== false) {
+ $ERROR('#5: (null != void 0) === false');
+}
+
+//CHECK#6
+if ((null != null) !== false) {
+ $ERROR('#6: (null != null) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T1.js
new file mode 100644
index 000000000..77459322f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A6.2_T1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If one expression is undefined or null and another is not, return false;
+ * @description: x is null or undefined, y is not;
+*/
+
+//CHECK#1
+if ((undefined != true) !== true) {
+ $ERROR('#1: (undefined != true) === true');
+}
+
+//CHECK#2
+if ((undefined != 0) !== true) {
+ $ERROR('#2: (undefined != 0) === true');
+}
+
+//CHECK#3
+if ((undefined != "undefined") !== true) {
+ $ERROR('#3: (undefined != "undefined") === true');
+}
+
+//CHECK#4
+if ((undefined != {}) !== true) {
+ $ERROR('#4: (undefined != {}) === true');
+}
+
+//CHECK#5
+if ((null != false) !== true) {
+ $ERROR('#5: (null != false) === true');
+}
+
+//CHECK#6
+if ((null != 0) !== true) {
+ $ERROR('#6: (null != 0) === true');
+}
+
+//CHECK#7
+if ((null != "null") !== true) {
+ $ERROR('#7: (null != "null") === true');
+}
+
+//CHECK#8
+if ((null != {}) !== true) {
+ $ERROR('#8: (null != {}) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T2.js
new file mode 100644
index 000000000..7d4df946e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A6.2_T2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If one expression is undefined or null and another is not, return false;
+ * @description: y is null or undefined, x is not;
+*/
+
+//CHECK#1
+if ((false != undefined) !== true) {
+ $ERROR('#1: (false != undefined) === true');
+}
+
+//CHECK#2
+if ((Number.NaN != undefined) !== true) {
+ $ERROR('#2: (Number.NaN != undefined) === true');
+}
+
+//CHECK#3
+if (("undefined" != undefined) !== true) {
+ $ERROR('#3: ("undefined" != undefined) === true');
+}
+
+//CHECK#4
+if (({} != undefined) !== true) {
+ $ERROR('#4: ({} != undefined) === true');
+}
+
+//CHECK#5
+if ((false != null) !== true) {
+ $ERROR('#5: (false != null) === true');
+}
+
+//CHECK#6
+if ((0 != null) !== true) {
+ $ERROR('#6: (0 != null) === true');
+}
+
+//CHECK#7
+if (("null" != null) !== true) {
+ $ERROR('#7: ("null" != null) === true');
+}
+
+//CHECK#8
+if (({} != null) !== true) {
+ $ERROR('#8: ({} != null) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.1.js
new file mode 100644
index 000000000..daa9218fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: Type(x) and Type(y) are Object-s.
+ * Return true, if x and y are references to the same Object; otherwise, return false;
+ * @description: Checking Boolean object, Number object, String object, Object object;
+ */
+
+//CHECK#1
+if ((new Boolean(true) != new Boolean(true)) !== true) {
+ $ERROR('#1: (new Boolean(true) != new Boolean(true)) === true');
+}
+
+//CHECK#2
+if ((new Number(1) != new Number(1)) !== true) {
+ $ERROR('#2: (new Number(1) != new Number(1)) === true');
+}
+
+//CHECK#3
+if ((new String("x") != new String("x")) !== true) {
+ $ERROR('#3: (new String("x") != new String("x")) === true');
+}
+
+//CHECK#4
+if ((new Object() != new Object()) !== true) {
+ $ERROR('#4: (new Object() != new Object()) === true');
+}
+
+//CHECK#5
+x = {};
+y = x;
+if ((x != y) !== false) {
+ $ERROR('#5: x = {}; y = x; (x != y) === false');
+}
+
+//CHECK#6
+if ((new Boolean(true) != new Number(1)) !== true) {
+ $ERROR('#6 (new Boolean(true) != new Number(1)) === true');
+}
+
+//CHECK#7
+if ((new Number(1) != new String("1")) !== true) {
+ $ERROR('#7: (new Number(1) != new String("1")) === true');
+}
+
+//CHECK#8
+if ((new String("1") != new Boolean(true)) !== true) {
+ $ERROR('#8: (new String("x") != new Boolean(true)) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.2.js
new file mode 100644
index 000000000..cc60a640a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is Boolean,
+ * return ToPrimitive(x) != y;
+ * @description: x is object, y is primitive boolean;
+*/
+
+//CHECK#1
+if ((new Boolean(true) != true) !== false) {
+ $ERROR('#1: (new Boolean(true) != true) === false');
+}
+
+//CHECK#2
+if ((new Number(1) != true) !== false) {
+ $ERROR('#2: (new Number(1) != true) === false');
+}
+
+//CHECK#3
+if ((new String("1") != true) !== false) {
+ $ERROR('#3: (new String("1") != true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.3.js
new file mode 100644
index 000000000..90449b38c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.3;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Boolean and Type(y) is Object,
+ * return x != ToPrimitive(y);
+ * @description: y is object, x is primitive boolean;
+ */
+
+//CHECK#1
+if ((true != new Boolean(true)) !== false) {
+ $ERROR('#1: (true != new Boolean(true)) === false');
+}
+
+//CHECK#2
+if ((true != new Number(1)) !== false) {
+ $ERROR('#2: (true != new Number(1)) === false');
+}
+
+//CHECK#3
+if ((true != new String("+1")) !== false) {
+ $ERROR('#3: (true != new String("+1")) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.4.js
new file mode 100644
index 000000000..59f178672
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.4;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is Number,
+ * return ToPrimitive(x) != y;
+ * @description: x is object, y is primitive number;
+*/
+
+//CHECK#1
+if ((new Boolean(true) != 1) !== false) {
+ $ERROR('#1: (new Boolean(true) != 1) === false');
+}
+
+//CHECK#2
+if ((new Number(-1) != -1) !== false) {
+ $ERROR('#2: (new Number(-1) != -1) === false');
+}
+
+//CHECK#3
+if ((new String("-1") != -1) !== false) {
+ $ERROR('#3: (new String("-1") != -1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.5.js
new file mode 100644
index 000000000..fc587b166
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.5;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Number and Type(y) is Object,
+ * return x != ToPrimitive(y);
+ * @description: y is object, x is primitive number;
+ */
+
+//CHECK#1
+if ((1 != new Boolean(true)) !== false) {
+ $ERROR('#1: (1 != new Boolean(true)) === false');
+}
+
+//CHECK#2
+if ((-1 != new Number(-1)) !== false) {
+ $ERROR('#2: (-1 != new Number(-1)) === false');
+}
+
+//CHECK#3
+if ((-1 != new String("-1")) !== false) {
+ $ERROR('#3: (-1 != new String("-1")) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.6.js
new file mode 100644
index 000000000..d9d9566b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.6;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is String,
+ * return ToPrimitive(x) != y;
+ * @description: x is object, y is primitive string;
+ */
+
+//CHECK#1
+if ((new Boolean(true) != "1") !== false) {
+ $ERROR('#1: (new Boolean(true) != "1") === false');
+}
+
+//CHECK#2
+if ((new Number(-1) != "-1") !== false) {
+ $ERROR('#2: (new Number(-1) != "-1") === false');
+}
+
+//CHECK#3
+if ((new String("x") != "x") !== false) {
+ $ERROR('#3: (new String("x") != "x") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.7.js
new file mode 100644
index 000000000..56a8d5b52
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.7.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.7;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is String and Type(y) is Object,
+ * return x != ToPrimitive(y);
+ * @description: y is object, x is primitive string;
+ */
+
+//CHECK#1
+if (("1" != new Boolean(true)) !== false) {
+ $ERROR('#1: ("1" != new Boolean(true)) === false');
+}
+
+//CHECK#2
+if (("-1" != new Number(-1)) !== false) {
+ $ERROR('#2: ("-1" != new Number(-1)) === false');
+}
+
+//CHECK#3
+if (("x" != new String("x")) !== false) {
+ $ERROR('#3: ("x" != new String("x")) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.8.js
new file mode 100644
index 000000000..0e2521ab5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.8.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.8;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is primitive type,
+ * return ToPrimitive(x) != y;
+ * @description: x is object, y is primtitive;
+ */
+
+//CHECK#1
+if ((true != {valueOf: function() {return 1}}) !== false) {
+ $ERROR('#1: (true != {valueOf: function() {return 1}}) === false');
+}
+
+//CHECK#2
+if ((1 != {valueOf: function() {return 1}, toString: function() {return 0}}) !== false) {
+ $ERROR('#2: (1 != {valueOf: function() {return 1}, toString: function() {return 0}}) === false');
+}
+
+//CHECK#3
+if (("+1" != {valueOf: function() {return 1}, toString: function() {return {}}}) !== false) {
+ $ERROR('#3: ("+1" != {valueOf: function() {return 1}, toString: function() {return {}}}) === false');
+}
+
+//CHECK#4
+try {
+ if ((true != {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) !== false) {
+ $ERROR('#4.1: (true != {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) === false');
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: (true != {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) not throw "error"');
+ } else {
+ $ERROR('#4.3: (true != {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((1 != {toString: function() {return "+1"}}) !== false) {
+ $ERROR('#5: (1 != {toString: function() {return "+1"}}) === false');
+}
+
+//CHECK#6
+if (("1" != {valueOf: function() {return {}}, toString: function() {return "+1"}}) !== true) {
+ $ERROR('#6.1: ("1" != {valueOf: function() {return {}}, toString: function() {return "+1"}}) === true');
+} else {
+ if (("+1" != {valueOf: function() {return {}}, toString: function() {return "+1"}}) !== false) {
+ $ERROR('#6.2: ("+1" != {valueOf: function() {return {}}, toString: function() {return "+1"}}) === false');
+ }
+}
+
+//CHECK#7
+try {
+ (1 != {valueOf: function() {throw "error"}, toString: function() {return 1}});
+ $ERROR('#7: (1 != {valueOf: function() {throw "error"}, toString: function() {return 1}}) throw "error"');
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7: (1 != {valueOf: function() {throw "error"}, toString: function() {return 1}}) throw "error"');
+ }
+}
+
+//CHECK#8
+try {
+ (1 != {valueOf: function() {return {}}, toString: function() {return {}}});
+ $ERROR('#8: (1 != {valueOf: function() {return {}}, toString: function() {return {}}}) throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8: (1 != {valueOf: function() {return {}}, toString: function() {return {}}}) throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.9.js
new file mode 100644
index 000000000..6b91adb63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.9.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.9;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is primitive type and Type(y) is Object,
+ * return x != ToPrimitive(y);
+ * @description: y is object, x is primtitive;
+ */
+
+//CHECK#1
+if (({valueOf: function() {return 1}} != true) !== false) {
+ $ERROR('#1: ({valueOf: function() {return 1}} != true) === false');
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} != 1) !== false) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} != 1) === false');
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} != "+1") !== false) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} != "+1") === false');
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return "+1"}, toString: function() {throw "error"}} != true) !== false) {
+ $ERROR('#4.1: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} != true) === false');
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} != true) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} != true) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (({toString: function() {return "+1"}} != 1) !== false) {
+ $ERROR('#5: ({toString: function() {return "+1"}} != 1) === false');
+}
+
+//CHECK#6
+if (({valueOf: function() {return {}}, toString: function() {return "+1"}} != "1") !== true) {
+ $ERROR('#6.1: ({valueOf: function() {return {}}, toString: function() {return "+1"}} != "1") === true');
+} else {
+ if (({valueOf: function() {return {}}, toString: function() {return "+1"}} != "+1") !== false) {
+ $ERROR('#6.2: ({valueOf: function() {return {}}, toString: function() {return "+1"}} != "+1") === false');
+ }
+}
+
+//CHECK#7
+try {
+ ({valueOf: function() {throw "error"}, toString: function() {return 1}} != 1);
+ $ERROR('#7.1: ({valueOf: function() {throw "error"}, toString: function() {return 1}} != 1) throw "error". Actual: ' + (({valueOf: function() {throw "error"}, toString: function() {return 1}} != 1)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: ({valueOf: function() {throw "error"}, toString: function() {return 1}} != 1) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ ({valueOf: function() {return {}}, toString: function() {return {}}} != 1);
+ $ERROR('#8.1: ({valueOf: function() {return {}}, toString: function() {return {}}} != 1) throw TypeError. Actual: ' + (({valueOf: function() {return {}}, toString: function() {return {}}} != 1)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: ({valueOf: function() {return {}}, toString: function() {return {}}} != 1) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A1.js
new file mode 100644
index 000000000..67fb026a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A1;
+ * @section: 11.9.4, 7.2, 7.3;
+ * @assertion: White Space and Line Terminator between EqualityExpression and "===" or between "===" and RelationalExpression are allowed;
+ * @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (!(eval("1\u0009===\u00091"))) {
+ $ERROR('#1: 1\\u0009===\\u00091');
+}
+
+//CHECK#2
+if (!(eval("1\u000B===\u000B1"))) {
+ $ERROR('#2: 1\\u000B===\\u000B1');
+}
+
+//CHECK#3
+if (!(eval("1\u000C===\u000C1"))) {
+ $ERROR('#3: 1\\u000C===\\u000C1');
+}
+
+//CHECK#4
+if (!(eval("1\u0020===\u00201"))) {
+ $ERROR('#4: 1\\u0020===\\u00201');
+}
+
+//CHECK#5
+if (!(eval("1\u00A0===\u00A01"))) {
+ $ERROR('#5: 1\\u00A0===\\u00A01');
+}
+
+//CHECK#6
+if (!(eval("1\u000A===\u000A1"))) {
+ $ERROR('#6: 1\\u000A===\\u000A1');
+}
+
+//CHECK#7
+if (!(eval("1\u000D===\u000D1"))) {
+ $ERROR('#7: 1\\u000D===\\u000D1');
+}
+
+//CHECK#8
+if (!(eval("1\u2028===\u20281"))) {
+ $ERROR('#8: 1\\u2028===\\u20281');
+}
+
+//CHECK#9
+if (!(eval("1\u2029===\u20291"))) {
+ $ERROR('#9: 1\\u2029===\\u20291');
+}
+
+//CHECK#10
+if (!(eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029===\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291"))) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029===\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T1.js
new file mode 100644
index 000000000..2c5a6d258
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.1_T1;
+ * @section: 11.9.4;
+ * @assertion: Operator x === y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (!(1 === 1)) {
+ $ERROR('#1: 1 === 1');
+}
+
+//CHECK#2
+var x = 1;
+if (!(x === 1)) {
+ $ERROR('#2: var x = 1; x === 1');
+}
+
+//CHECK#3
+var y = 1;
+if (!(1 === y)) {
+ $ERROR('#3: var y = 1; 1 === y');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (!(x === y)) {
+ $ERROR('#4: var x = 1; var y = 1; x === y');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (!(objectx.prop === objecty.prop)) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop === objecty.prop');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T2.js
new file mode 100644
index 000000000..4f134f56b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.1_T2;
+ * @section: 11.9.4;
+ * @assertion: Operator x === y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x === 1;
+ $ERROR('#1.1: x === 1 throw ReferenceError. Actual: ' + (x === 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x === 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T3.js
new file mode 100644
index 000000000..143989d2f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.1_T3;
+ * @section: 11.9.4;
+ * @assertion: Operator x === y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 === y;
+ $ERROR('#1.1: 1 === y throw ReferenceError. Actual: ' + (1 === y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 === y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T1.js
new file mode 100644
index 000000000..aecbd9e18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.4_T1;
+ * @section: 11.9.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if (!((x = 1) === x)) {
+ $ERROR('#1: var x = 0; (x = 1) === x');
+}
+
+//CHECK#2
+var x = 0;
+if (x === (x = 1)) {
+ $ERROR('#2: var x = 0; x !== (x = 1)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T2.js
new file mode 100644
index 000000000..cc7ffabf2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.4_T2;
+ * @section: 11.9.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() === y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() === y() throw "x". Actual: ' + (x() === y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (!(e === "x")) {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() === y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T3.js
new file mode 100644
index 000000000..106fa5bcb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.4_T3;
+ * @section: 11.9.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x === (x = 1);
+ $ERROR('#1.1: x === (x = 1) throw ReferenceError. Actual: ' + (x === (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x === (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (!((y = 1) === y)) {
+ $ERROR('#2: (y = 1) === y');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A3.js
new file mode 100644
index 000000000..eae3e555d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A3;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Boolean-s.
+ * Return true, if x and y are both true and both false; otherwise, return false;
+ * @description: x and y are primitive booleans;
+ */
+
+//CHECK#1
+if (!(true === true)) {
+ $ERROR('#1: true === true');
+}
+
+//CHECK#2
+if (!(false === false)) {
+ $ERROR('#2: false === false');
+}
+
+//CHECK#3
+if (true === false) {
+ $ERROR('#3: true !== false');
+}
+
+//CHECK#4
+if (false === true) {
+ $ERROR('#4: false !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T1.js
new file mode 100644
index 000000000..191771ee1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A4.1_T1;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If x or y is NaN, return false;
+ * @description: x is NaN;
+*/
+
+//CHECK#1
+if (Number.NaN === true) {
+ $ERROR('#1: NaN !== true');
+}
+
+//CHECK#2
+if (Number.NaN === 1) {
+ $ERROR('#2: NaN !== 1');
+}
+
+//CHECK#3
+if (Number.NaN === Number.NaN) {
+ $ERROR('#3: NaN !== NaN');
+}
+
+//CHECK#4
+if (Number.NaN === Number.POSITIVE_INFINITY) {
+ $ERROR('#4: NaN !== +Infinity');
+}
+
+//CHECK#5
+if (Number.NaN === Number.NEGATIVE_INFINITY) {
+ $ERROR('#5: NaN !== -Infinity');
+}
+
+//CHECK#6
+if (Number.NaN === Number.MAX_VALUE) {
+ $ERROR('#6: NaN !== Number.MAX_VALUE');
+}
+
+//CHECK#7
+if (Number.NaN === Number.MIN_VALUE) {
+ $ERROR('#7: NaN !== Number.MIN_VALUE');
+}
+
+//CHECK#8
+if (Number.NaN === "string") {
+ $ERROR('#8: NaN !== "string"');
+}
+
+//CHECK#9
+if (Number.NaN === new Object()) {
+ $ERROR('#9: NaN !== new Object()');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T2.js
new file mode 100644
index 000000000..b0d8358c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A4.1_T2;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If x or y is NaN, return false;
+ * @description: y is NaN;
+*/
+
+//CHECK#1
+if (true === Number.NaN) {
+ $ERROR('#1: true !== NaN');
+}
+
+//CHECK#2
+if (-1 === Number.NaN) {
+ $ERROR('#2: -1 !== NaN');
+}
+
+//CHECK#3
+if (Number.NaN === Number.NaN) {
+ $ERROR('#3: NaN !== NaN');
+}
+
+//CHECK#4
+if (Number.POSITIVE_INFINITY === Number.NaN) {
+ $ERROR('#4: +Infinity !== NaN');
+}
+
+//CHECK#5
+if (Number.NEGATIVE_INFINITY === Number.NaN) {
+ $ERROR('#5: -Infinity !== NaN');
+}
+
+//CHECK#6
+if (Number.MAX_VALUE === Number.NaN) {
+ $ERROR('#6: Number.MAX_VALUE !== NaN');
+}
+
+//CHECK#7
+if (Number.MIN_VALUE === Number.NaN) {
+ $ERROR('#7: Number.MIN_VALUE !== NaN');
+}
+
+//CHECK#8
+if ("string" === Number.NaN) {
+ $ERROR('#8: "string" !== NaN');
+}
+
+//CHECK#9
+if (new Object() === Number.NaN) {
+ $ERROR('#9: new Object() !== NaN');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.2.js
new file mode 100644
index 000000000..d9c5a3c7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A4.2;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If x is +0(-0) and y is -0(+0), return true;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if (!(+0 === -0)) {
+ $ERROR('#1: +0 === -0');
+}
+
+//CHECK#2
+if (!(-0 === +0)) {
+ $ERROR('#2: -0 === +0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.3.js
new file mode 100644
index 000000000..f3cec65bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.3.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A4.3;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Number-s minus NaN, +0, -0.
+ * Return true, if x is the same number value as y; otherwise, return false;
+ * @description: x and y are primitive numbers;
+*/
+
+//CHECK#1
+if (!(Number.POSITIVE_INFINITY === Number.POSITIVE_INFINITY)) {
+ $ERROR('#1: +Infinity === +Infinity');
+}
+
+//CHECK#2
+if (!(Number.NEGATIVE_INFINITY === Number.NEGATIVE_INFINITY)) {
+ $ERROR('#2: -Infinity === -Infinity');
+}
+
+//CHECK#3
+if (!(13 === 13)) {
+ $ERROR('#3: 13 === 13');
+}
+
+//CHECK#4
+if (!(-13 === -13)) {
+ $ERROR('#4: -13 === -13');
+}
+
+//CHECK#5
+if (!(1.3 === 1.3)) {
+ $ERROR('#5: 1.3 === 1.3');
+}
+
+//CHECK#6
+if (!(-1.3 === -1.3)) {
+ $ERROR('#6: -1.3 === -1.3');
+}
+
+//CHECK#7
+if (!(Number.POSITIVE_INFINITY === -Number.NEGATIVE_INFINITY)) {
+ $ERROR('#7: +Infinity === -(-Infinity)');
+}
+
+//CHECK#8
+if (1 === 0.999999999999) {
+ $ERROR('#8: 1 !== 0.999999999999');
+}
+
+//CHECK#9
+if (!(1.0 === 1)) {
+ $ERROR('#9: 1.0 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A5.js
new file mode 100644
index 000000000..77ea8f4ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A5.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A5;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: Type(x) and Type(y) are String-s.
+ * Return true, if x and y are exactly the same sequence of characters; otherwise, return false;
+ * @description: x and y are primitive strings;
+ */
+
+//CHECK#1
+if (!("" === "")) {
+ $ERROR('#1: "" === ""');
+}
+
+//CHECK#2
+if (!(" " === " ")) {
+ $ERROR('#2: " " === " "');
+}
+
+//CHECK#3
+if (!("string" === "string")) {
+ $ERROR('#3: "string" === "string"');
+}
+
+//CHECK#4
+if (" string" === "string ") {
+ $ERROR('#4: " string" !== "string "');
+}
+
+//CHECK#5
+if ("1.0" === "1") {
+ $ERROR('#5: "1.0" !== "1"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.1.js
new file mode 100644
index 000000000..46aed6b96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A6.1;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) and Type(y) are Undefined-s, return true;
+ * @description: void 0, eval("var x") is undefined;
+*/
+
+//CHECK#1
+if (!(undefined === undefined)) {
+ $ERROR('#1: undefined === undefined');
+}
+
+//CHECK#2
+if (!(void 0 === undefined)) {
+ $ERROR('#2: void 0 === undefined');
+}
+
+//CHECK#3
+if (!(undefined === eval("var x"))) {
+ $ERROR('#3: undefined === eval("var x")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.2.js
new file mode 100644
index 000000000..c08658e89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A6.2;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) and Type(y) are Null-s, return true;
+ * @description: null === null;
+*/
+
+//CHECK#1
+if (!(null === null)) {
+ $ERROR('#1: null === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A7.js
new file mode 100644
index 000000000..6414908d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A7.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A7;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Object-s.
+ * Return true, if x and y are references to the same Object; otherwise, return false;
+ * @description: Checking Boolean object, Number object, String object, Object object;
+ */
+
+//CHECK#1
+if (new Object() === new Object()) {
+ $ERROR('#1: new Object() !== new Object()');
+}
+
+//CHECK#2
+if (new Object(true) === new Object(true)) {
+ $ERROR('#2: new Object() !== new Object()');
+}
+
+//CHECK#3
+if (new Object(false) === new Object(false)) {
+ $ERROR('#3: new Object() !== new Object()');
+}
+
+//CHECK#4
+if (new Object(+0) === new Object(-0)) {
+ $ERROR('#4: new Object(+0) !== new Object(-0)');
+}
+
+//CHECK#5
+x = {};
+y = x;
+if (!(x === y)) {
+ $ERROR('#5: x = {}; y = x; x === y');
+}
+
+//CHECK#6
+if (new Boolean(true) === new Number(1)) {
+ $ERROR('#6 new Boolean(true) === new Number(1)');
+}
+
+//CHECK#7
+if (new Number(1) === new String("1")) {
+ $ERROR('#7: new Number(1) === new String("1")');
+}
+
+//CHECK#8
+if (new String("1") === new Boolean(true)) {
+ $ERROR('#8: new String("x") === new Boolean(true)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T1.js
new file mode 100644
index 000000000..480009b30
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T1.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T1;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: x or y is primitive boolean;
+*/
+
+//CHECK#1
+if (true === new Boolean(true)) {
+ $ERROR('#1: true !== new Number(true)');
+}
+
+//CHECK#2
+if (true === 1) {
+ $ERROR('#2: true !== 1');
+}
+
+//CHECK#3
+if (true === new Number(true)) {
+ $ERROR('#3: true !== new Number(true)');
+}
+
+//CHECK#4
+if (true === "1") {
+ $ERROR('#4: true !== "1"');
+}
+
+//CHECK#5
+if (true === new String(true)) {
+ $ERROR('#5: true !== new String(true)');
+}
+
+//CHECK#6
+if (new Boolean(false) === false) {
+ $ERROR('#6: new Number(false) !== false');
+}
+
+//CHECK#7
+if (0 === false) {
+ $ERROR('#7: 0 !== false');
+}
+
+//CHECK#8
+if (new Number(false) === false) {
+ $ERROR('#8: new Number(false) !== false');
+}
+
+//CHECK#9
+if ("0" === false) {
+ $ERROR('#9: "0" !== false');
+}
+
+//CHECK#10
+if (false === new String(false)) {
+ $ERROR('#10: false !== new String(false)');
+}
+
+//CHECK#11
+if (true === {valueOf: function () {return true}}) {
+ $ERROR('#11: true === {valueOf: function () {return true}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T2.js
new file mode 100644
index 000000000..bce65a4dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T2.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T2;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: x or y is primitive number;
+*/
+
+//CHECK#1
+if (1 === new Number(1)) {
+ $ERROR('#1: 1 !== new Number(1)');
+}
+
+//CHECK#2
+if (1 === true) {
+ $ERROR('#2: 1 !== true');
+}
+
+//CHECK#3
+if (1 === new Boolean(1)) {
+ $ERROR('#3: 1 !== new Boolean(1)');
+}
+
+//CHECK#4
+if (1 === "1") {
+ $ERROR('#4: 1 !== "1"');
+}
+
+//CHECK#5
+if (1 === new String(1)) {
+ $ERROR('#5: 1 !== new String(1)');
+}
+
+//CHECK#6
+if (new Number(0) === 0) {
+ $ERROR('#6: new Number(0) !== 0');
+}
+
+//CHECK#7
+if (false === 0) {
+ $ERROR('#7: false !== 0');
+}
+
+//CHECK#8
+if (new Boolean(0) === 0) {
+ $ERROR('#8: new Boolean(0) !== 0');
+}
+
+//CHECK#9
+if ("0" === 0) {
+ $ERROR('#9: "0" !== 0');
+}
+
+//CHECK#10
+if (new String(0) === 0) {
+ $ERROR('#10: new String(0) !== 0');
+}
+
+//CHECK#11
+if (1 === {valueOf: function () {return 1}}) {
+ $ERROR('#11: 1 === {valueOf: function () {return 1}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T3.js
new file mode 100644
index 000000000..f9447ec9a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T3.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T3;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: x or y is primitive string;
+*/
+
+//CHECK#1
+if ("1" === new String("1")) {
+ $ERROR('#1: "1" !== new String("1")');
+}
+
+//CHECK#2
+if ("1" === true) {
+ $ERROR('#2: "1" !== true');
+}
+
+//CHECK#3
+if ("1" === new Boolean("1")) {
+ $ERROR('#3: "1" !== new Boolean("1")');
+}
+
+//CHECK#4
+if ("1" === 1) {
+ $ERROR('#4: "1" === 1');
+}
+
+//CHECK#5
+if ("1" === new Number("1")) {
+ $ERROR('#5: "1" === new Number("1")');
+}
+
+//CHECK#6
+if (new String(false) === false) {
+ $ERROR('#6: new Number(false) !== false');
+}
+
+//CHECK#7
+if (false === "0") {
+ $ERROR('#7: false !== "0"');
+}
+
+//CHECK#8
+if ("0" === new Boolean("0")) {
+ $ERROR('#8: "0" !== new Boolean("0")');
+}
+
+//CHECK#9
+if (false === 0) {
+ $ERROR('#9: false !== 0');
+}
+
+//CHECK#10
+if (false === new Number(false)) {
+ $ERROR('#10: false !== new Number(false)');
+}
+
+//CHECK#11
+if ("1" === {valueOf: function () {return "1"}}) {
+ $ERROR('#11: "1" === {valueOf: function () {return "1"}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T4.js
new file mode 100644
index 000000000..66800f24c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T4.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T4;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: x or y is null or undefined;
+*/
+
+//CHECK#1
+if (undefined === null) {
+ $ERROR('#1: undefined !== null');
+}
+
+//CHECK#2
+if (null === undefined) {
+ $ERROR('#2: null !== undefined');
+}
+
+//CHECK#3
+if (null === 0) {
+ $ERROR('#3: null !== 0');
+}
+
+//CHECK#4
+if (0 === null) {
+ $ERROR('#4: 0 !== null');
+}
+
+//CHECK#5
+if (null === false) {
+ $ERROR('#5: null !== false');
+}
+
+//CHECK#6
+if (false === null) {
+ $ERROR('#6: false !== null');
+}
+
+//CHECK#7
+if (undefined === false) {
+ $ERROR('#7: undefined !== false');
+}
+
+//CHECK#8
+if (false === undefined) {
+ $ERROR('#8: false !== undefined');
+}
+
+//CHECK#9
+if (null === new Object()) {
+ $ERROR('#9: null !== new Object()');
+}
+
+//CHECK#10
+if (new Object() === null) {
+ $ERROR('#10: new Object() !== null');
+}
+
+//CHECK#11
+if (null === "null") {
+ $ERROR('#11: null !== "null"');
+}
+
+//CHECK#12
+if ("null" === null) {
+ $ERROR('#12: "null" !== null');
+}
+
+//CHECK#13
+if (undefined === "undefined") {
+ $ERROR('#13: undefined !== "undefined"');
+}
+
+//CHECK#14
+if ("undefined" === undefined) {
+ $ERROR('#14: "undefined" !== undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T5.js
new file mode 100644
index 000000000..ef3e8bbd1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T5;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: Checking with such x and y that either x or y is primitive string and the other is primitive number;
+*/
+
+//CHECK#1
+try {
+ throw 1;
+} catch(e) {
+ if (e === "1") {
+ $ERROR('#1: throw 1 !== "1"');
+ }
+}
+
+//CHECK#2
+try {
+ throw "1";
+} catch(e) {
+ if (1 === e) {
+ $ERROR('#2: 1 !== throw "1"');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A1.js
new file mode 100644
index 000000000..b0997e8da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.9.5_A1;
+* @section: 11.9.5, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between EqualityExpression and "!==" or between "!==" and RelationalExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009!==\u00091")) {
+ $ERROR('#1: 1\\u0009!==\\u00091');
+}
+
+//CHECK#2
+if (eval("1\u000B!==\u000B1")) {
+ $ERROR('#2: 1\\u000B!==\\u000B1');
+}
+
+//CHECK#3
+if (eval("1\u000C!==\u000C1")) {
+ $ERROR('#3: 1\\u000C!==\\u000C1');
+}
+
+//CHECK#4
+if (eval("1\u0020!==\u00201")) {
+ $ERROR('#4: 1\\u0020!==\\u00201');
+}
+
+//CHECK#5
+if (eval("1\u00A0!==\u00A01")) {
+ $ERROR('#5: 1\\u00A0!==\\u00A01');
+}
+
+//CHECK#6
+if (eval("1\u000A!==\u000A1")) {
+ $ERROR('#6: 1\\u000A!==\\u000A1');
+}
+
+//CHECK#7
+if (eval("1\u000D!==\u000D1")) {
+ $ERROR('#7: 1\\u000D!==\\u000D1');
+}
+
+//CHECK#8
+if (eval("1\u2028!==\u20281")) {
+ $ERROR('#8: 1\\u2028!==\\u20281');
+}
+
+//CHECK#9
+if (eval("1\u2029!==\u20291")) {
+ $ERROR('#9: 1\\u2029!==\\u20291');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029!==\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029!==\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T1.js
new file mode 100644
index 000000000..f815bfaf5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.1_T1;
+ * @section: 11.9.5;
+ * @assertion: Operator x !== y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 !== 1) {
+ $ERROR('#1: 1 === 1');
+}
+
+//CHECK#2
+var x = 1;
+if (x !== 1) {
+ $ERROR('#2: var x = 1; x === 1');
+}
+
+//CHECK#3
+var y = 1;
+if (1 !== y) {
+ $ERROR('#3: var y = 1; 1 === y');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x !== y) {
+ $ERROR('#4: var x = 1; var y = 1; x === y');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop !== objecty.prop) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop === objecty.prop');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T2.js
new file mode 100644
index 000000000..050585621
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.1_T2;
+ * @section: 11.9.5;
+ * @assertion: Operator x !== y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x !== 1;
+ $ERROR('#1.1: x !== 1 throw ReferenceError. Actual: ' + (x !== 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x !== 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T3.js
new file mode 100644
index 000000000..25f372a9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.1_T3;
+ * @section: 11.9.5;
+ * @assertion: Operator x !== y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 !== y;
+ $ERROR('#1.1: 1 !== y throw ReferenceError. Actual: ' + (1 !== y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 !== y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T1.js
new file mode 100644
index 000000000..6e54ab64b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.4_T1;
+ * @section: 11.9.5;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) !== x) {
+ $ERROR('#1: var x = 0; (x = 1) === x');
+}
+
+//CHECK#2
+var x = 0;
+if (!(x !== (x = 1))) {
+ $ERROR('#2: var x = 0; x !== (x = 1)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T2.js
new file mode 100644
index 000000000..cd6055d65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.4_T2;
+ * @section: 11.9.5;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() !== y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() !== y() throw "x". Actual: ' + (x() !== y()));
+} catch (e) {
+ if (!(e !== "y")) {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() !== y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T3.js
new file mode 100644
index 000000000..18492f179
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.4_T3;
+ * @section: 11.9.5;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x !== (x = 1);
+ $ERROR('#1.1: x !== (x = 1) throw ReferenceError. Actual: ' + (x !== (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x !== (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) !== y) {
+ $ERROR('#2: (y = 1) === y');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A3.js
new file mode 100644
index 000000000..fca518099
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A3;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Boolean-s.
+ * Return false, if x and y are both true or both false; otherwise, return true;
+ * @description: x and y are primitive booleans;
+ */
+
+//CHECK#1
+if (true !== true) {
+ $ERROR('#1: true === true');
+}
+
+//CHECK#2
+if (false !== false) {
+ $ERROR('#2: false === false');
+}
+
+//CHECK#3
+if (!(true !== false)) {
+ $ERROR('#3: true !== false');
+}
+
+//CHECK#4
+if (!(false !== true)) {
+ $ERROR('#4: false !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T1.js
new file mode 100644
index 000000000..c6d2f70d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A4.1_T1;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If x or y is NaN, return true;
+ * @description: x is NaN;
+*/
+
+//CHECK#1
+if (!(Number.NaN !== true)) {
+ $ERROR('#1: NaN !== true');
+}
+
+//CHECK#2
+if (!(Number.NaN !== 1)) {
+ $ERROR('#2: NaN !== 1');
+}
+
+//CHECK#3
+if (!(Number.NaN !== Number.NaN)) {
+ $ERROR('#3: NaN !== NaN');
+}
+
+//CHECK#4
+if (!(Number.NaN !== Number.POSITIVE_INFINITY)) {
+ $ERROR('#4: NaN !== +Infinity');
+}
+
+//CHECK#5
+if (!(Number.NaN !== Number.NEGATIVE_INFINITY)) {
+ $ERROR('#5: NaN !== -Infinity');
+}
+
+//CHECK#6
+if (!(Number.NaN !== Number.MAX_VALUE)) {
+ $ERROR('#6: NaN !== Number.MAX_VALUE');
+}
+
+//CHECK#7
+if (!(Number.NaN !== Number.MIN_VALUE)) {
+ $ERROR('#7: NaN !== Number.MIN_VALUE');
+}
+
+//CHECK#8
+if (!(Number.NaN !== "string")) {
+ $ERROR('#8: NaN !== "string"');
+}
+
+//CHECK#9
+if (!(Number.NaN !== new Object())) {
+ $ERROR('#9: NaN !== new Object()');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T2.js
new file mode 100644
index 000000000..1917a9a32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A4.1_T2;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If x or y is NaN, return true;
+ * @description: y is NaN;
+*/
+
+//CHECK#1
+if (!(true !== Number.NaN)) {
+ $ERROR('#1: true !== NaN');
+}
+
+//CHECK#2
+if (!(-1 !== Number.NaN)) {
+ $ERROR('#2: -1 !== NaN');
+}
+
+//CHECK#3
+if (!(Number.NaN !== Number.NaN)) {
+ $ERROR('#3: NaN !== NaN');
+}
+
+//CHECK#4
+if (!(Number.POSITIVE_INFINITY !== Number.NaN)) {
+ $ERROR('#4: +Infinity !== NaN');
+}
+
+//CHECK#5
+if (!(Number.NEGATIVE_INFINITY !== Number.NaN)) {
+ $ERROR('#5: -Infinity !== NaN');
+}
+
+//CHECK#6
+if (!(Number.MAX_VALUE !== Number.NaN)) {
+ $ERROR('#6: Number.MAX_VALUE !== NaN');
+}
+
+//CHECK#7
+if (!(Number.MIN_VALUE !== Number.NaN)) {
+ $ERROR('#7: Number.MIN_VALUE !== NaN');
+}
+
+//CHECK#8
+if (!("string" !== Number.NaN)) {
+ $ERROR('#8: "string" !== NaN');
+}
+
+//CHECK#9
+if (!(new Object() !== Number.NaN)) {
+ $ERROR('#9: new Object() !== NaN');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.2.js
new file mode 100644
index 000000000..ff0b4ef47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A4.2;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If x is +0(-0) and y is -0(+0), return false;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if (+0 !== -0) {
+ $ERROR('#1: +0 === -0');
+}
+
+//CHECK#2
+if (-0 !== +0) {
+ $ERROR('#2: -0 === +0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.3.js
new file mode 100644
index 000000000..8d98f1d1b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.3.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A4.3;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Number-s minus NaN, +0, -0.
+ * Return false, if x is the same number value as y; otherwise, return true;
+ * @description: x and y are primitive numbers;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: +Infinity === +Infinity');
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: -Infinity === -Infinity');
+}
+
+//CHECK#3
+if (13 !== 13) {
+ $ERROR('#3: 13 === 13');
+}
+
+//CHECK#4
+if (-13 !== -13) {
+ $ERROR('#4: -13 === -13');
+}
+
+//CHECK#5
+if (1.3 !== 1.3) {
+ $ERROR('#5: 1.3 === 1.3');
+}
+
+//CHECK#6
+if (-1.3 !== -1.3) {
+ $ERROR('#6: -1.3 === -1.3');
+}
+
+//CHECK#7
+if (Number.POSITIVE_INFINITY !== -Number.NEGATIVE_INFINITY) {
+ $ERROR('#7: +Infinity === -(-Infinity)');
+}
+
+//CHECK#8
+if (!(1 !== 0.999999999999)) {
+ $ERROR('#8: 1 !== 0.999999999999');
+}
+
+//CHECK#9
+if (1.0 !== 1) {
+ $ERROR('#9: 1.0 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A5.js
new file mode 100644
index 000000000..d042e90d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A5.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A5;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: Type(x) and Type(y) are String-s.
+ * Return false, if x and y are exactly the same sequence of characters; otherwise, return true;
+ * @description: x and y are primitive strings;
+ */
+
+//CHECK#1
+if ("" !== "") {
+ $ERROR('#1: "" === ""');
+}
+
+//CHECK#2
+if (" " !== " ") {
+ $ERROR('#2: " " === " "');
+}
+
+//CHECK#3
+if ("string" !== "string") {
+ $ERROR('#3: "string" === "string"');
+}
+
+//CHECK#4
+if (!(" string" !== "string ")) {
+ $ERROR('#4: " string" !== "string "');
+}
+
+//CHECK#5
+if (!("1.0" !== "1")) {
+ $ERROR('#5: "1.0" !== "1"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.1.js
new file mode 100644
index 000000000..8785131cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A6.1;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) and Type(y) are Undefined-s, return false;
+ * @description: void 0, eval("var x") is undefined;
+*/
+
+//CHECK#1
+if (undefined !== undefined) {
+ $ERROR('#1: undefined === undefined');
+}
+
+//CHECK#2
+if (void 0 !== undefined) {
+ $ERROR('#2: void 0 === undefined');
+}
+
+//CHECK#3
+if (undefined !== eval("var x")) {
+ $ERROR('#3: undefined === eval("var x")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.2.js
new file mode 100644
index 000000000..407d49339
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A6.2;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) and Type(y) are Null-s, return false;
+ * @description: null === null;
+*/
+
+//CHECK#1
+if (null !== null) {
+ $ERROR('#1: null === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A7.js
new file mode 100644
index 000000000..f31dfd011
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A7.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A7;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Object-s.
+ * Return false, if x and y are references to the same Object; otherwise, return true;
+ * @description: Checking Boolean object, Number object, String object, Object object;
+ */
+
+//CHECK#1
+if (!(new Object() !== new Object())) {
+ $ERROR('#1: new Object() !== new Object()');
+}
+
+//CHECK#2
+if (!(new Object(true) !== new Object(true))) {
+ $ERROR('#2: new Object() !== new Object()');
+}
+
+//CHECK#3
+if (!(new Object(false) !== new Object(false))) {
+ $ERROR('#3: new Object() !== new Object()');
+}
+
+//CHECK#4
+if (!(new Object(+0) !== new Object(-0))) {
+ $ERROR('#4: new Object(+0) !== new Object(-0)');
+}
+
+//CHECK#5
+x = {};
+y = x;
+if (x !== y) {
+ $ERROR('#5: x = {}; y = x; x === y');
+}
+
+//CHECK#6
+if (!(new Boolean(true) !== new Number(1))) {
+ $ERROR('#6 new Boolean(true) !== new Number(1)');
+}
+
+//CHECK#7
+if (!(new Number(1) !== new String("1"))) {
+ $ERROR('#7: new Number(1) !== new String("1")');
+}
+
+//CHECK#8
+if (!(new String("1") !== new Boolean(true))) {
+ $ERROR('#8: new String("x") !== new Boolean(true)');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T1.js
new file mode 100644
index 000000000..0374f3aad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T1.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T1;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: x or y is primitive boolean;
+*/
+
+//CHECK#1
+if (!(true !== new Boolean(true))) {
+ $ERROR('#1: true !== new Number(true)');
+}
+
+//CHECK#2
+if (!(true !== 1)) {
+ $ERROR('#2: true !== 1');
+}
+
+//CHECK#3
+if (!(true !== new Number(true))) {
+ $ERROR('#3: true !== new Number(true)');
+}
+
+//CHECK#4
+if (!(true !== "1")) {
+ $ERROR('#4: true !== "1"');
+}
+
+//CHECK#5
+if (!(true !== new String(true))) {
+ $ERROR('#5: true !== new String(true)');
+}
+
+//CHECK#6
+if (!(new Boolean(false) !== false)) {
+ $ERROR('#6: new Number(false) !== false');
+}
+
+//CHECK#7
+if (!(0 !== false)) {
+ $ERROR('#7: 0 !== false');
+}
+
+//CHECK#8
+if (!(new Number(false) !== false)) {
+ $ERROR('#8: new Number(false) !== false');
+}
+
+//CHECK#9
+if (!("0" !== false)) {
+ $ERROR('#9: "0" !== false');
+}
+
+//CHECK#10
+if (!(false !== new String(false))) {
+ $ERROR('#10: false !== new String(false)');
+}
+
+//CHECK#11
+if (!(true !== {valueOf: function () {return true}})) {
+ $ERROR('#11: true !== {valueOf: function () {return true}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T2.js
new file mode 100644
index 000000000..4f8d6419f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T2.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T2;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: x or y is primitive number;
+*/
+
+//CHECK#1
+if (!(1 !== new Number(1))) {
+ $ERROR('#1: 1 !== new Number(1)');
+}
+
+//CHECK#2
+if (!(1 !== true)) {
+ $ERROR('#2: 1 !== true');
+}
+
+//CHECK#3
+if (!(1 !== new Boolean(1))) {
+ $ERROR('#3: 1 !== new Boolean(1)');
+}
+
+//CHECK#4
+if (!(1 !== "1")) {
+ $ERROR('#4: 1 !== "1"');
+}
+
+//CHECK#5
+if (!(1 !== new String(1))) {
+ $ERROR('#5: 1 !== new String(1)');
+}
+
+//CHECK#6
+if (!(new Number(0) !== 0)) {
+ $ERROR('#6: new Number(0) !== 0');
+}
+
+//CHECK#7
+if (!(false !== 0)) {
+ $ERROR('#7: false !== 0');
+}
+
+//CHECK#8
+if (!(new Boolean(0) !== 0)) {
+ $ERROR('#8: new Boolean(0) !== 0');
+}
+
+//CHECK#9
+if (!("0" !== 0)) {
+ $ERROR('#9: "0" !== 0');
+}
+
+//CHECK#10
+if (!(new String(0) !== 0)) {
+ $ERROR('#10: new String(0) !== 0');
+}
+
+//CHECK#11
+if (!(1 !== {valueOf: function () {return 1}})) {
+ $ERROR('#11: 1 !== {valueOf: function () {return 1}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T3.js
new file mode 100644
index 000000000..6f7ba6bf9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T3.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T3;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: x or y is primitive string;
+*/
+
+//CHECK#1
+if (!("1" !== new String("1"))) {
+ $ERROR('#1: "1" !== new String("1")');
+}
+
+//CHECK#2
+if (!("1" !== true)) {
+ $ERROR('#2: "1" !== true');
+}
+
+//CHECK#3
+if (!("1" !== new Boolean("1"))) {
+ $ERROR('#3: "1" !== new Boolean("1")');
+}
+
+//CHECK#4
+if (!("1" !== 1)) {
+ $ERROR('#4: "1" === 1');
+}
+
+//CHECK#5
+if (!("1" !== new Number("1"))) {
+ $ERROR('#5: "1" === new Number("1")');
+}
+
+//CHECK#6
+if (!(new String(false) !== false)) {
+ $ERROR('#6: new Number(false) !== false');
+}
+
+//CHECK#7
+if (!(false !== "0")) {
+ $ERROR('#7: false !== "0"');
+}
+
+//CHECK#8
+if (!("0" !== new Boolean("0"))) {
+ $ERROR('#8: "0" !== new Boolean("0")');
+}
+
+//CHECK#9
+if (!(false !== 0)) {
+ $ERROR('#9: false !== 0');
+}
+
+//CHECK#10
+if (!(false !== new Number(false))) {
+ $ERROR('#10: false !== new Number(false)');
+}
+
+//CHECK#11
+if (!("1" !== {valueOf: function () {return "1"}})) {
+ $ERROR('#11: "1" !== {valueOf: function () {return "1"}}');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T4.js
new file mode 100644
index 000000000..74c58f83e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T4.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T4;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: x or y is null or undefined;
+*/
+
+//CHECK#1
+if (!(undefined !== null)) {
+ $ERROR('#1: undefined !== null');
+}
+
+//CHECK#2
+if (!(null !== undefined)) {
+ $ERROR('#2: null !== undefined');
+}
+
+//CHECK#3
+if (!(null !== 0)) {
+ $ERROR('#3: null !== 0');
+}
+
+//CHECK#4
+if (!(0 !== null)) {
+ $ERROR('#4: 0 !== null');
+}
+
+//CHECK#5
+if (!(null !== false)) {
+ $ERROR('#5: null !== false');
+}
+
+//CHECK#6
+if (!(false !== null)) {
+ $ERROR('#6: false !== null');
+}
+
+//CHECK#7
+if (!(undefined !== false)) {
+ $ERROR('#7: undefined !== false');
+}
+
+//CHECK#8
+if (!(false !== undefined)) {
+ $ERROR('#8: false !== undefined');
+}
+
+//CHECK#9
+if (!(null !== new Object())) {
+ $ERROR('#9: null !== new Object()');
+}
+
+//CHECK#10
+if (!(new Object() !== null)) {
+ $ERROR('#10: new Object() !== null');
+}
+
+//CHECK#11
+if (!(null !== "null")) {
+ $ERROR('#11: null !== "null"');
+}
+
+//CHECK#12
+if (!("null" !== null)) {
+ $ERROR('#12: "null" !== null');
+}
+
+//CHECK#13
+if (!(undefined !== "undefined")) {
+ $ERROR('#13: undefined !== "undefined"');
+}
+
+//CHECK#14
+if (!("undefined" !== undefined)) {
+ $ERROR('#14: "undefined" !== undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T5.js
new file mode 100644
index 000000000..b8be977d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T5;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: Checking such x and y that either x or y is primitive string and the other is primitive number;
+*/
+
+//CHECK#1
+try {
+ throw 1;
+} catch(e) {
+ if (!(e !== "1")) {
+ $ERROR('#1: throw 1 !== "1"');
+ }
+}
+
+//CHECK#2
+try {
+ throw "1";
+} catch(e) {
+ if (!(1 !== e)) {
+ $ERROR('#2: 1 !== throw "1"');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T1.js
new file mode 100644
index 000000000..2e748f597
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T1.js
@@ -0,0 +1,137 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.10_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using interation statement within "with" statement leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ do{
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ while(false);
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T2.js
new file mode 100644
index 000000000..62239c832
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T2.js
@@ -0,0 +1,146 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.10_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using iteration statement within "with" statement leading to completion by exception
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ do{
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ while(false);
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T3.js
new file mode 100644
index 000000000..2475cf952
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T3.js
@@ -0,0 +1,149 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.10_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using iteration statment withing "with" statement leading to completion by exception
+ * iteration statement inside with statement - exception completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ do{
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ while(false);
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T4.js
new file mode 100644
index 000000000..7fdc47020
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T4.js
@@ -0,0 +1,139 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.10_T4;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using iteration statement witthin "with" staement leading to completion by break
+ * iteration statement inside with statement - break completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ do{
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ break;
+ }
+ while(false);
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T5.js
new file mode 100644
index 000000000..601fb7a4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.10_T5.js
@@ -0,0 +1,140 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.10_T5;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using iteration statement within "with" statement leading to completion by break
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ do{
+ break;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ while(false);
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T1.js
new file mode 100644
index 000000000..ead6eea3c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T1.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.11_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared without the statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+}
+
+with(myObj){
+ f();
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+try{
+ p3;
+ $ERROR('#3: p3 is nod defined');
+}
+catch(e){
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === parseInt)){
+ $ERROR('#11: st_parseInt === parseInt. Actual: st_parseInt ==='+ st_parseInt );
+}
+
+if(!isNaN(st_NaN)){
+ $ERROR('#12: st_NaN === NaN. Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === Infinity)){
+ $ERROR('#13: st_Infinity === Infinity. Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === eval)){
+ $ERROR('#14: st_eval === eval. Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === parseFloat)){
+ $ERROR('#15: st_parseFloat === parseFloat. Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === isNaN)){
+ $ERROR('#16: st_isNaN === isNaN. Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === isFinite)){
+ $ERROR('#17: st_isFinite === isFinite. Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T2.js
new file mode 100644
index 000000000..91408438f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T2.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.11_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared without the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+}
+
+with(myObj){
+ result = f();
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+try{
+ p3;
+ $ERROR('#3: p3 is nod defined');
+}
+catch(e){
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === parseInt)){
+ $ERROR('#11: st_parseInt === parseInt. Actual: st_parseInt ==='+ st_parseInt );
+}
+
+if(!isNaN(st_NaN)){
+ $ERROR('#12: st_NaN === NaN. Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === Infinity)){
+ $ERROR('#13: st_Infinity === Infinity. Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === eval)){
+ $ERROR('#14: st_eval === eval. Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === parseFloat)){
+ $ERROR('#15: st_parseFloat === parseFloat. Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === isNaN)){
+ $ERROR('#16: st_isNaN === isNaN. Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === isFinite)){
+ $ERROR('#17: st_isFinite === isFinite. Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T3.js
new file mode 100644
index 000000000..d59ab9d66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T3.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.11_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared without the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+}
+
+with(myObj){
+ result = f();
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try{
+ p4;
+ $ERROR('#4: p4 doesn\'t exists');
+}
+catch(e){
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T4.js
new file mode 100644
index 000000000..d4ca6d312
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T4.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.11_T4;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared without the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ with(myObj){
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+try{
+ p3;
+ $ERROR('#3: p3 is nod defined');
+}
+catch(e){
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === parseInt)){
+ $ERROR('#11: st_parseInt === parseInt. Actual: st_parseInt ==='+ st_parseInt );
+}
+
+if(!isNaN(st_NaN)){
+ $ERROR('#12: st_NaN === NaN. Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === Infinity)){
+ $ERROR('#13: st_Infinity === Infinity. Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === eval)){
+ $ERROR('#14: st_eval === eval. Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === parseFloat)){
+ $ERROR('#15: st_parseFloat === parseFloat. Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === isNaN)){
+ $ERROR('#16: st_isNaN === isNaN. Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === isFinite)){
+ $ERROR('#17: st_isFinite === isFinite. Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T5.js
new file mode 100644
index 000000000..fa33fb322
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.11_T5.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.11_T5;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared without the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ with(myObj){
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try{
+ p4;
+ $ERROR('#4: p4 doesn\'t exists');
+}
+catch(e){
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T1.js
new file mode 100644
index 000000000..cb8ec8be5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T1.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.12_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement declared within the statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try{
+ p4;
+ $ERROR('#4: p4 doesn\'t exists');
+}
+catch(e){
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T2.js
new file mode 100644
index 000000000..c9364e9b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T2.js
@@ -0,0 +1,148 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.12_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement declared within the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+}
+result = f();
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try{
+ p4;
+ $ERROR('#4: p4 doesn\'t exists');
+}
+catch(e){
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T3.js
new file mode 100644
index 000000000..6ad8c60cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T3.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.12_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement declared within the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+result = f();
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T4.js
new file mode 100644
index 000000000..2d169483e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T4.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.12_T4;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement declared within the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T5.js
new file mode 100644
index 000000000..e1bcb06dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.12_T5.js
@@ -0,0 +1,154 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.12_T5;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement declared within the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T1.js
new file mode 100644
index 000000000..43f5b1609
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T1.js
@@ -0,0 +1,135 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.1_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" inside of global context leading to normal completion;
+ * @strict_mode_negative
+*/
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T2.js
new file mode 100644
index 000000000..62f2cc4ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T2.js
@@ -0,0 +1,143 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.1_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" inside of global context leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T3.js
new file mode 100644
index 000000000..8bd895a14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.1_T3.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.1_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" inside of global context leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T1.js
new file mode 100644
index 000000000..f8f6fd3aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T1.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.2_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T2.js
new file mode 100644
index 000000000..8f88481ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T2.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.2_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+}
+result = f();
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T3.js
new file mode 100644
index 000000000..ce73cf31e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T3.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.2_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+result = f();
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T4.js
new file mode 100644
index 000000000..775df08f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T4.js
@@ -0,0 +1,151 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.2_T4;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T5.js
new file mode 100644
index 000000000..884d4e696
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.2_T5.js
@@ -0,0 +1,149 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.2_T5;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T1.js
new file mode 100644
index 000000000..f8ce3c02c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T1.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.3_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within function constructor, leading to normal completition;
+ * @strict_mode_negative
+*/
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+var obj = new f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T2.js
new file mode 100644
index 000000000..22fa94bb0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T2.js
@@ -0,0 +1,143 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.3_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within function constructor, leading to normal completition by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+}
+var obj = new f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T3.js
new file mode 100644
index 000000000..c66601348
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T3.js
@@ -0,0 +1,146 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.3_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within function constructor, leading to normal completition by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+var obj = new f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T4.js
new file mode 100644
index 000000000..168ecfc14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T4.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.3_T4;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within function constructor, leading to completition by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+ var obj = new f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T5.js
new file mode 100644
index 000000000..3f88e55bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.3_T5.js
@@ -0,0 +1,154 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.3_T5;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within function constructor, leading to completition by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+ var obj = new f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T1.js
new file mode 100644
index 000000000..7108acda2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T1.js
@@ -0,0 +1,137 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.4_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within iteration statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+do{
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+while(false);
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T2.js
new file mode 100644
index 000000000..511075e22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T2.js
@@ -0,0 +1,146 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.4_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within iteration statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ do{
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+ while(false);
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T3.js
new file mode 100644
index 000000000..0fcbf5d0c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T3.js
@@ -0,0 +1,148 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.4_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within iteration statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ do{
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+ while(false);
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T4.js
new file mode 100644
index 000000000..eaf0c8e6d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T4.js
@@ -0,0 +1,138 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.4_T4;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within iteration statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+do{
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ break;
+ }
+}
+while(false);
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T5.js
new file mode 100644
index 000000000..dee420ea7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.4_T5.js
@@ -0,0 +1,140 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.4_T5;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within iteration statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+do{
+ with(myObj){
+ break;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+while(false);
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 ===undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T1.js
new file mode 100644
index 000000000..fa3c7e6c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T1.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.5_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within "for-in" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+for(var prop in myObj){
+ with(myObj){
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T2.js
new file mode 100644
index 000000000..5d52747d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T2.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.5_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within "for-in" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ for(var prop in myObj){
+ with(myObj){
+ st_p1 = p1;
+ p1 = 'x1';
+ st_p2 = p2;
+ this.p2 = 'x2';
+ st_p3 = p3;
+ del = delete p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T3.js
new file mode 100644
index 000000000..157b954a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T3.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.5_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within "for-in" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ for(var prop in myObj){
+ with(myObj){
+ throw value;
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T4.js
new file mode 100644
index 000000000..1a5ad3866
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T4.js
@@ -0,0 +1,137 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.5_T4;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within "for-in" statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+for(var prop in myObj){
+ with(myObj){
+ st_p1 = p1;
+ p1 = 'x1';
+ st_p2 = p2;
+ this.p2 = 'x2';
+ st_p3 = p3;
+ del = delete p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ break;
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T5.js
new file mode 100644
index 000000000..1a72d740c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.5_T5.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.5_T5;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within "for-in" statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+for(var prop in myObj){
+ with(myObj){
+ break;
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T1.js
new file mode 100644
index 000000000..701cf8b2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T1.js
@@ -0,0 +1,136 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.6_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within another "with" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T2.js
new file mode 100644
index 000000000..6b9f32524
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T2.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.6_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within another "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T3.js
new file mode 100644
index 000000000..3f8f75169
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.6_T3.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.6_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "with" statement within another "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T1.js
new file mode 100644
index 000000000..0f1e291df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T1.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.7_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared within the statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T2.js
new file mode 100644
index 000000000..35862aa25
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T2.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.7_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared within the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+ result = f();
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T3.js
new file mode 100644
index 000000000..68f887dbb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T3.js
@@ -0,0 +1,149 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.7_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared within the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ result = f();
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T4.js
new file mode 100644
index 000000000..54f9edcf2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T4.js
@@ -0,0 +1,151 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.7_T4;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared within the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T5.js
new file mode 100644
index 000000000..4c9f1b010
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.7_T5.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.7_T5;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Calling a function within "with" statement declared within the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T1.js
new file mode 100644
index 000000000..ca1809325
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T1.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.8_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Declaring function constructor within "with" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ var obj = new f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T2.js
new file mode 100644
index 000000000..f65041c7d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T2.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.8_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Declaring function constructor within "with" statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+ var obj = new f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T3.js
new file mode 100644
index 000000000..f341e365b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T3.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.8_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Declaring function constructor within "with" statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ var obj = new f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T4.js
new file mode 100644
index 000000000..fe72cb4d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T4.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.8_T4;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Declaring function constructor within "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ var obj = new f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T5.js
new file mode 100644
index 000000000..4e83da95e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.8_T5.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.8_T5;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Declaring function constructor within "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ var obj = new f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T1.js
new file mode 100644
index 000000000..411217c2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T1.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.9_T1;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "for-in" statement within "with" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ for(var prop in myObj){
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T2.js
new file mode 100644
index 000000000..e79e62b26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T2.js
@@ -0,0 +1,137 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.9_T2;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "for-in" statement within "with" statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ for(var prop in myObj){
+ st_p1 = p1;
+ p1 = 'x1';
+ st_p2 = p2;
+ this.p2 = 'x2';
+ st_p3 = p3;
+ del = delete p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ break;
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T3.js
new file mode 100644
index 000000000..f7add5e40
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A1.9_T3.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A1.9_T3;
+ * @section: 12.10;
+ * @assertion: The with statement adds a computed object to the front of the
+ * scope chain of the current execution context;
+ * @description: Using "for-in" statement within "with" statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ for(var prop in myObj){
+ break;
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T1.js
new file mode 100644
index 000000000..9171feed0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T1.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.10_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using iteration statement within "with" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ do{
+ p1 = 'x1';
+ } while(false);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T2.js
new file mode 100644
index 000000000..a0ce58c3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T2.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.10_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using iteration statement within "with" statement, leading completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ do{
+ p1 = 'x1';
+ throw value;
+ } while(false);
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T3.js
new file mode 100644
index 000000000..0ec4391e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T3.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.10_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using iteration statement within "with" statement, leading completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ do{
+ throw value;
+ p1 = 'x1';
+ } while(false);
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T4.js
new file mode 100644
index 000000000..c85386b5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T4.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.10_T4;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using iteration statement within "with" statement, leading completion be break;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ do{
+ p1 = 'x1';
+ break;
+ } while(false);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T5.js
new file mode 100644
index 000000000..03274112b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.10_T5.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.10_T5;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using iteration statement within "with" statement, leading completion be break;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ do{
+ break;
+ p1 = 'x1';
+ } while(false);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T1.js
new file mode 100644
index 000000000..44f13fabd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.11_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function within "with" statement declared without the statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ p1 = 'x1';
+}
+
+with(myObj){
+ f();
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T2.js
new file mode 100644
index 000000000..9103764bb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.11_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function within "with" statement declared without the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ p1 = 'x1';
+ return value;
+}
+
+with(myObj){
+ result = f();
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "value")){
+ $ERROR('#3: result === "value". Actual: result ==='+ result );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T3.js
new file mode 100644
index 000000000..c7292d107
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.11_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function within "with" statement declared without the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ return value;
+ p1 = 'x1';
+}
+
+with(myObj){
+ result = f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "value")){
+ $ERROR('#3: result === "value". Actual: result ==='+ result );
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T4.js
new file mode 100644
index 000000000..790ea31d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T4.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.11_T4;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function within "with" statement declared without the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ var f = function(){
+ p1 = 'x1';
+ throw value;
+ }
+
+ with(myObj){
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "value")){
+ $ERROR('#3: result === "value". Actual: result ==='+ result );
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T5.js
new file mode 100644
index 000000000..4cdabc677
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.11_T5.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.11_T5;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function within "with" statement declared without the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ var f = function(){
+ throw value;
+ p1 = 'x1';
+ }
+ with(myObj){
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "value")){
+ $ERROR('#3: result === "value". Actual: result ==='+ result );
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T1.js
new file mode 100644
index 000000000..91efaa23e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.12_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function without "with" statement declared within the statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var f = function(){
+ p1 = 'x1';
+ }
+}
+
+f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T2.js
new file mode 100644
index 000000000..7c49c8a09
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.12_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function without "with" statement declared within the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var f = function(){
+ p1 = 'x1'
+ return value;
+ }
+}
+
+result = f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#3: result === "myObj_value". Actual: result ==='+ result );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T3.js
new file mode 100644
index 000000000..050bad4a1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.12_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function without "with" statement declared within the statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var f = function(){
+ return value;
+ p1 = 'x1';
+ }
+}
+result = f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#3: result === "myObj_value". Actual: result ==='+ result );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T4.js
new file mode 100644
index 000000000..ba6f77735
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T4.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.12_T4;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function without "with" statement declared within the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ var f = function(){
+ p1 = 'x1';
+ throw value;
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#3: result === "myObj_value". Actual: result ==='+ result );
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T5.js
new file mode 100644
index 000000000..fb27553b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.12_T5.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.12_T5;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Calling a function without "with" statement declared within the statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ var f = function(){
+ throw value;
+ p1 = 'x1';
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#3: result === "myObj_value". Actual: result ==='+ result );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T1.js
new file mode 100644
index 000000000..26c37ac14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.1_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within global context - normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+
+with(myObj){
+ p1 = 'x1';
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T2.js
new file mode 100644
index 000000000..4746c2ad1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T2.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.1_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within global context, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+
+ with(myObj){
+
+ p1 = 'x1'
+ throw value;
+
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (myObj.p1 !== "x1") {
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T3.js
new file mode 100644
index 000000000..c757b57d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.1_T3.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.1_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within global context, leading to completion by exception;
+ * @strict_mode_negative
+ */
+this.p1 = 1;
+var result = "result";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+
+ with(myObj){
+
+ throw value;
+ p1 = 'x1'
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(result === 1)){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(p1 === 1)){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!(myObj.p1 === "a")){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T1.js
new file mode 100644
index 000000000..1da1b7ee2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.2_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function body, leading to normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ with(myObj){
+ p1 = 'x1';
+ }
+}
+
+f();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T2.js
new file mode 100644
index 000000000..cbca41680
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T2.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.2_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function body, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ with(myObj){
+ p1 = 'x1';
+ return value;
+ }
+};
+
+f();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== "x1"){
+ $ERROR('#1: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T3.js
new file mode 100644
index 000000000..a6b1b3c1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T3.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.2_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function body, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ with(myObj){
+ return value;
+ p1 = 'x1';
+ }
+};
+
+f();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T4.js
new file mode 100644
index 000000000..9e7dedad4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.2_T4;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function body, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ var f = function(){
+ with(myObj){
+ p1 = 'x1';
+ throw value;
+ }
+ };
+
+ f();
+} catch(e){
+ result = p1;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T5.js
new file mode 100644
index 000000000..c1289305c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.2_T5.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.
+
+/**
+ * @name: S12.10_A3.2_T5;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function body, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+};
+
+try {
+ var f = function(){
+ with(myObj){
+ throw value;
+ p1 = 'x1';
+ }
+ };
+ f();
+} catch(e){
+ result = p1;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T1.js
new file mode 100644
index 000000000..fc3ab3d91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T1.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.3_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function constructor, leading to normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+function __FACTORY(){
+ with(myObj){
+ p1 = 'x1';
+ }
+}
+
+var obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T2.js
new file mode 100644
index 000000000..6b5969d5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T2.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.3_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function constructor, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+function __FACTORY(){
+ with(myObj){
+ p1 = 'x1';
+ return value;
+ }
+}
+
+var obj = new __FACTORY;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T3.js
new file mode 100644
index 000000000..9affbbb98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T3.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.3_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function constructor, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+function __FACTORY(){
+ with(myObj){
+ return value;
+ p1 = 'x1';
+ }
+}
+
+var obj = new __FACTORY;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T4.js
new file mode 100644
index 000000000..9932f9d9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.3_T4;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function
+ * constructor, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+};
+
+function __FACTORY(){
+ with(myObj){
+ var p1 = 'x1';
+ throw value;
+ }
+}
+
+try {
+ var obj = new __FACTORY();
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (p1 !== 1) {
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (myObj.p1 !== "x1") {
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T5.js
new file mode 100644
index 000000000..7d6e8571a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.3_T5.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.3_T5;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring "with" statement within a function constructor, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ function __FACTORY(){
+ with(myObj){
+ throw value;
+ p1 = 'x1';
+ }
+ }
+ var obj = new __FACTORY();
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T1.js
new file mode 100644
index 000000000..c5bdd2c78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.4_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within iteration statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+do {
+ with(myObj){
+ p1 = 'x1';
+ }
+} while(false);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T2.js
new file mode 100644
index 000000000..c975dd8c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T2.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.4_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within iteration statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ do{
+ with(myObj){
+ p1 = 'x1';
+ throw value;
+ }
+ } while(false);
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T3.js
new file mode 100644
index 000000000..56615fc12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T3.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.4_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within iteration statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ do{
+ with(myObj){
+ throw value;
+ p1 = 'x1';
+ }
+ } while(false);
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T4.js
new file mode 100644
index 000000000..bf7d87fa2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T4.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.4_T4;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within iteration statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+do {
+ with(myObj){
+ p1 = 'x1';
+ break;
+ }
+} while(false);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T5.js
new file mode 100644
index 000000000..6da97f002
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.4_T5.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.4_T5;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within iteration statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+do {
+ with(myObj){
+ break;
+ p1 = 'x1';
+ }
+} while(false);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T1.js
new file mode 100644
index 000000000..fe68264ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.5_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within "for-in" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+for(var prop in myObj){
+ with(myObj){
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T2.js
new file mode 100644
index 000000000..23d728348
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T2.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.5_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within "for-in" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ for(var prop in myObj){
+ with(myObj){
+ p1 = 'x1';
+ throw value;
+ }
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T3.js
new file mode 100644
index 000000000..f2309145f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T3.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.5_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within "for-in" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ for(var prop in myObj){
+ with(myObj){
+ throw value;
+ p1 = 'x1';
+ }
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T4.js
new file mode 100644
index 000000000..660cc145d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T4.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.5_T4;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within "for-in" statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+for(var prop in myObj){
+ with(myObj){
+ p1 = 'x1';
+ break;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T5.js
new file mode 100644
index 000000000..661994155
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.5_T5.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.5_T5;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within "for-in" statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+for(var prop in myObj){
+ with(myObj){
+ break;
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== "a"){
+ $ERROR('#1: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T1.js
new file mode 100644
index 000000000..68f14f116
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.6_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within another "with" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var theirObj = {
+ p1: true,
+ value: 'theirObj_value',
+ valueOf : function(){return 'thr_valueOf';}
+}
+
+with(myObj){
+ with(theirObj){
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(theirObj.p1 !== "x1"){
+ $ERROR('#3: theirObj.p1 === "x1". Actual: theirObj.p1 ==='+ theirObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T2.js
new file mode 100644
index 000000000..c56da025c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T2.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.6_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within another "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var theirObj = {
+ p1: true,
+ value: 'theirObj_value',
+ valueOf : function(){return 'thr_valueOf';}
+}
+
+
+try {
+ with(myObj){
+ with(theirObj){
+ p1 = 'x1';
+ throw value;
+ }
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(theirObj.p1 !== "x1"){
+ $ERROR('#3: theirObj.p1 === "x1". Actual: theirObj.p1 ==='+ theirObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T3.js
new file mode 100644
index 000000000..54bd93a7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.6_T3.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.6_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "with" statement within another "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var theirObj = {
+ p1: true,
+ value: 'theirObj_value',
+ valueOf : function(){return 'thr_valueOf';}
+}
+
+
+try {
+ with(myObj){
+ with(theirObj){
+ throw value;
+ p1 = 'x1';
+
+ }
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(theirObj.p1 !== true){
+ $ERROR('#3: theirObj.p1 === true. Actual: theirObj.p1 ==='+ theirObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T1.js
new file mode 100644
index 000000000..666ed900d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.7_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring and calling a function within "with" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ (function(){
+ p1 = 'x1';
+ })();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T2.js
new file mode 100644
index 000000000..407bcddcc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.7_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring and calling a function within "with" statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ result=(function(){
+ p1 = 'x1';
+ return value;
+ })();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(result !== "myObj_value"){
+ $ERROR('#2: result === "myObj_value". Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T3.js
new file mode 100644
index 000000000..34750863b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T3.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.7_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring and calling a function within "with" statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ result=(function(){
+ return value;
+ p1 = 'x1';
+ })();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(result !== 'myObj_value'){
+ $ERROR('#2: result === \'myObj_value\'. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T4.js
new file mode 100644
index 000000000..abf1a534a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T4.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.7_T4;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring and calling a function within "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ (function (){
+ p1 = 'x1';
+ throw value;
+ })();
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T5.js
new file mode 100644
index 000000000..a31ec4583
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.7_T5.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.7_T5;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring and calling a function within "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ (function f(){
+ throw value;
+ p1 = 'x1';
+ })();
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T1.js
new file mode 100644
index 000000000..88474f834
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.8_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring function constructor within "with" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var __FACTORY = function(){
+ p1 = 'x1';
+ }
+ var obj = new __FACTORY;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T2.js
new file mode 100644
index 000000000..f208f29be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T2.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.8_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring function constructor within "with" statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var __FACTORY = function(){
+ p1 = 'x1';
+ return value;
+ }
+ var obj = new __FACTORY;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T3.js
new file mode 100644
index 000000000..507384ecf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.8_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring function constructor within "with" statement, leading to normal completion by "return";
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var __FACTORY = function(){
+ return value;
+ p1 = 'x1';
+ }
+ var obj = new __FACTORY;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T4.js
new file mode 100644
index 000000000..2366bbb01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T4.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.8_T4;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring function constructor within "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ var __FACTORY = function(){
+ p1 = 'x1';
+ throw value;
+ }
+ var obj = new __FACTORY;
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T5.js
new file mode 100644
index 000000000..a12766435
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.8_T5.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.8_T5;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Declaring function constructor within "with" statement, leading to completion by exception;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ var __FACTORY = function(){
+ throw value;
+ p1 = 'x1';
+ }
+ var obj = new __FACTORY;
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T1.js
new file mode 100644
index 000000000..4c03877e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.9_T1;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "for-in" statement within "with" statement, leading to normal completion;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ for(var prop in myObj){
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T2.js
new file mode 100644
index 000000000..b5fdee851
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T2.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.9_T2;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "for-in" statement within "with" statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ for(var prop in myObj){
+ p1 = 'x1';
+ break;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T3.js
new file mode 100644
index 000000000..e5482ec64
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A3.9_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A3.9_T3;
+ * @section: 12.10;
+ * @assertion: No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state;
+ * @description: Using "for-in" statement within "with" statement, leading to completion by break;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ for(var prop in myObj){
+ break;
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T1.js
new file mode 100644
index 000000000..5beb7fd07
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A4_T1;
+ * @section: 12.10;
+ * @assertion: Changing property using "eval" statement containing "with" statement;
+ * @description: Changing string property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+var myObj = {
+ p1: 'a',
+}
+eval("with(myObj){p1='b'}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== 'b'){
+ $ERROR('#1: myObj.p1 === "b". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 === 1){
+ $ERROR('#2: myObj.p1 !== 1');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T2.js
new file mode 100644
index 000000000..207ecf8ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A4_T2;
+ * @section: 12.10;
+ * @assertion: Changing property using "eval" statement containing "with" statement;
+ * @description: Changing number property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: 1,
+}
+eval("with(myObj){p1=2}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== 2){
+ $ERROR('#1: myObj.p1 === 2. Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 === 'a'){
+ $ERROR('#2: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T3.js
new file mode 100644
index 000000000..0b91f7b88
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A4_T3;
+ * @section: 12.10;
+ * @assertion: Changing property using "eval" statement containing "with" statement;
+ * @description: Changing boolean property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: true,
+}
+eval("with(myObj){p1=false}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== false){
+ $ERROR('#1: myObj.p1 === false. Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 === 'a'){
+ $ERROR('#2: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T4.js
new file mode 100644
index 000000000..e9cc027bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T4.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A4_T4;
+ * @section: 12.10;
+ * @assertion: Changing property using "eval" statement containing "with" statement;
+ * @description: Changing object property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: {a:"hello"},
+}
+eval("with(myObj){p1={b:'hi'}}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1.a === "hello"){
+ $ERROR('#1: myObj.p1.a !== "hello"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1.b !== "hi"){
+ $ERROR('#2: myObj.p1.b === "hi". Actual: myObj.p1.b ==='+ myObj.p1.b );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 === 'a'){
+ $ERROR('#3: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T5.js
new file mode 100644
index 000000000..a425de8ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T5.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A4_T5;
+ * @section: 12.10;
+ * @assertion: Changing property using "eval" statement containing "with" statement;
+ * @description: Changing array property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: [1,2,3],
+}
+eval("with(myObj){p1=[3,2,1]}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1[2] !== 1){
+ $ERROR('#1: myObj.p1[2] === 1. Actual: myObj.p1[2] ==='+ myObj.p1[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 === 'a'){
+ $ERROR('#2: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T6.js
new file mode 100644
index 000000000..036f64d7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A4_T6.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A4_T6;
+ * @section: 12.10;
+ * @assertion: Changing property using "eval" statement containing "with" statement;
+ * @description: Changing function property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: function(){return 0;},
+}
+eval("with(myObj){p1=function(){return 1;}}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1() !== 1){
+ $ERROR('#1: myObj.p1 === 1. Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 === 'a'){
+ $ERROR('#2: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T1.js
new file mode 100644
index 000000000..bbcce8bbe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A5_T1;
+ * @section: 12.10;
+ * @assertion: Deleting property using "eval" statement containing "with" statement;
+ * @description: Deleting string property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 1;
+var myObj = {
+ p1: 'a',
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 === 'a'){
+ $ERROR('#1: myObj.p1 !== "a"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined. Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true. Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 1){
+ $ERROR('#4: myObj.p1 !== 1');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T2.js
new file mode 100644
index 000000000..29e3f28b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A5_T2;
+ * @section: 12.10;
+ * @assertion: Deleting property using "eval" statement containing "with" statement;
+ * @description: Deleting number property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: 1,
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 === 1){
+ $ERROR('#1: myObj.p1 !== 1');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true. Actual: myObj.del ===. Actual: myObj.del ==='+ myObj.del +myObj.del);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T3.js
new file mode 100644
index 000000000..d5632a21d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T3.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A5_T3;
+ * @section: 12.10;
+ * @assertion: Deleting property using "eval" statement containing "with" statement;
+ * @description: Deleting boolean property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: true,
+ del:false
+}
+
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 === true){
+ $ERROR('#1: myObj.p1 !== true ');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true . Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T4.js
new file mode 100644
index 000000000..4316fabee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T4.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A5_T4;
+ * @section: 12.10;
+ * @assertion: Deleting property using "eval" statement containing "with" statement;
+ * @description: Deleting object property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: {a:"hello"},
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+if(myObj.p1.a === "hello"){
+ $ERROR('#1: myObj.p1.a !== "hello" ');
+}
+}catch(e){var x=1};
+if(x !== 1){
+ $ERROR('#1: x === 1. Actual: x ==='+ x );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true . Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T5.js
new file mode 100644
index 000000000..4351c21ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T5.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A5_T5;
+ * @section: 12.10;
+ * @assertion: Deleting property using "eval" statement containing "with" statement;
+ * @description: Deleting array property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: [1,2,3],
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+if(myObj.p1[2] === 3){
+ $ERROR('#1: myObj.p1[2] !== 3 ');
+}
+}catch(e){var x=1};
+if(x !== 1){
+ $ERROR('#1: x === 1. Actual: x ==='+ x );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true . Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T6.js
new file mode 100644
index 000000000..b1202f195
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.10_The_with_Statement/S12.10_A5_T6.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.10_A5_T6;
+ * @section: 12.10;
+ * @assertion: Deleting property using "eval" statement containing "with" statement;
+ * @description: Deleting function property;
+ * @strict_mode_negative
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: function(){return 0;},
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+if(myObj.p1() === 0){
+ $ERROR('#1: myObj.p1() !== 0 ');
+}
+}catch(e){var x=1};
+if(x !== 1){
+ $ERROR('#1: x === 1. Actual: x ==='+ x );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true . Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T1.js
new file mode 100644
index 000000000..6e9432bcc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T1.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A1_T1;
+ * @section: 12.11;
+ * @assertion: If Result.type is break and Result.target is in the current
+ * label set, return (normal, Result.value, empty);
+ * @description: Simple test using switch statement;
+*/
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ case 1:
+ result += 4;
+ break;
+ case 2:
+ result += 8;
+ case 3:
+ result += 16;
+ default:
+ result += 32;
+ break;
+ case 4:
+ result += 64;
+ }
+
+ return result;
+}
+
+if(!(SwitchTest(0) === 6)){
+ $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
+}
+
+if(!(SwitchTest(1) === 4)){
+ $ERROR("#2: SwitchTest(1) === 4. Actual: SwitchTest(1) ==="+ SwitchTest(1) );
+}
+
+if(!(SwitchTest(2) === 56)){
+ $ERROR("#3: SwitchTest(2) === 56. Actual: SwitchTest(2) ==="+ SwitchTest(2) );
+}
+
+if(!(SwitchTest(3) === 48)){
+ $ERROR("#4: SwitchTest(3) === 48. Actual: SwitchTest(3) ==="+ SwitchTest(3) );
+}
+
+if(!(SwitchTest(4) === 64)){
+ $ERROR("#5: SwitchTest(4) === 64. Actual: SwitchTest(4) ==="+ SwitchTest(4) );
+}
+
+if(!(SwitchTest(true) === 32)){
+ $ERROR("#6: SwitchTest(true) === 32. Actual: SwitchTest(true) ==="+ SwitchTest(true) );
+}
+
+if(!(SwitchTest(false) === 32)){
+ $ERROR("#7: SwitchTest(false) === 32. Actual: SwitchTest(false) ==="+ SwitchTest(false) );
+}
+
+if(!(SwitchTest(null) === 32)){
+ $ERROR("#8: SwitchTest(null) === 32. Actual: SwitchTest(null) ==="+ SwitchTest(null) );
+}
+
+if(!(SwitchTest(void 0) === 32)){
+ $ERROR("#9: SwitchTest(void 0) === 32. Actual: SwitchTest(void 0) ==="+ SwitchTest(void 0) );
+}
+
+if(!(SwitchTest('0') === 32)){
+ $ERROR("#10: SwitchTest('0') === 32. Actual: SwitchTest('0') ==="+ SwitchTest('0') );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T2.js
new file mode 100644
index 000000000..7bcc32d6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T2.js
@@ -0,0 +1,87 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A1_T2;
+ * @section: 12.11;
+ * @assertion: If Result.type is break and Result.target is in the current
+ * label set, return (normal, Result.value, empty);
+ * @description: Switch with different types of variables;
+*/
+
+var x = new Number(2);
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ case '1':
+ result += 4;
+ break;
+ case new Number(2):
+ result += 8;
+ case 3:
+ result += 16;
+ default:
+ result += 32;
+ break;
+ case 4:
+ result += 64;
+ break;
+ case x:
+ result += 128;
+ break;
+ case 0:
+ result += 256;
+ case 1:
+ result += 512;
+ }
+
+ return result;
+}
+
+if(!(SwitchTest(0) === 6)){
+ $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
+}
+
+if(!(SwitchTest(1) === 512)){
+ $ERROR("#2: SwitchTest(1) === 512. Actual: SwitchTest(1) ==="+ SwitchTest(1) );
+}
+
+if(!(SwitchTest(2) === 32)){
+ $ERROR("#3: SwitchTest(2) === 32. Actual: SwitchTest(2) ==="+ SwitchTest(2) );
+}
+
+if(!(SwitchTest(3) === 48)){
+ $ERROR("#4: SwitchTest(3) === 48. Actual: SwitchTest(3) ==="+ SwitchTest(3) );
+}
+
+if(!(SwitchTest(4) === 64)){
+ $ERROR("#5: SwitchTest(4) === 64. Actual: SwitchTest(4) ==="+ SwitchTest(4) );
+}
+
+if(!(SwitchTest(true) === 32)){
+ $ERROR("#6: SwitchTest(true) === 32. Actual: SwitchTest(true) ==="+ SwitchTest(true) );
+}
+
+if(!(SwitchTest(false) === 32)){
+ $ERROR("#7: SwitchTest(false) === 32. Actual: SwitchTest(false) ==="+ SwitchTest(false) );
+}
+
+if(!(SwitchTest(null) === 32)){
+ $ERROR("#8: SwitchTest(null) === 32. Actual: SwitchTest(null) ==="+ SwitchTest(null) );
+}
+
+if(!(SwitchTest(void 0) === 32)){
+ $ERROR("#9: SwitchTest(void 0) === 32. Actual: SwitchTest(void 0) ==="+ SwitchTest(void 0) );
+}
+
+if(!(SwitchTest('0') === 32)){
+ $ERROR("#10: SwitchTest('0') === 32. Actual: SwitchTest('0') ==="+ SwitchTest('0') );
+}
+
+if(!(SwitchTest(x) === 128)){
+ $ERROR("#10: SwitchTest(x) === 128. Actual: SwitchTest(x) ==="+ SwitchTest(x) );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T3.js
new file mode 100644
index 000000000..bf500dc4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T3.js
@@ -0,0 +1,91 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A1_T3;
+ * @section: 12.11;
+ * @assertion: If Result.type is break and Result.target is in the current
+ * label set, return (normal, Result.value, empty);
+ * @description: Using case with null, NaN, Infinity;
+*/
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ case 1:
+ result += 4;
+ break;
+ case 2:
+ result += 8;
+ case 3:
+ result += 16;
+ default:
+ result += 32;
+ break;
+ case null:
+ result += 64;
+ case NaN:
+ result += 128;
+ break;
+ case Infinity:
+ result += 256;
+ case 2+3:
+ result += 512;
+ break;
+ case undefined:
+ result += 1024;
+ }
+
+ return result;
+}
+
+if(!(SwitchTest(0) === 6)){
+ $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
+}
+
+if(!(SwitchTest(1) === 4)){
+ $ERROR("#2: SwitchTest(1) === 4. Actual: SwitchTest(1) ==="+ SwitchTest(1) );
+}
+
+if(!(SwitchTest(2) === 56)){
+ $ERROR("#3: SwitchTest(2) === 56. Actual: SwitchTest(2) ==="+ SwitchTest(2) );
+}
+
+if(!(SwitchTest(3) === 48)){
+ $ERROR("#4: SwitchTest(3) === 48. Actual: SwitchTest(3) ==="+ SwitchTest(3) );
+}
+
+if(!(SwitchTest(4) === 32)){
+ $ERROR("#5: SwitchTest(4) === 32. Actual: SwitchTest(4) ==="+ SwitchTest(4) );
+}
+
+if(!(SwitchTest(5) === 512)){
+ $ERROR("#5: SwitchTest(5) === 512. Actual: SwitchTest(5) ==="+ SwitchTest(5) );
+}
+
+if(!(SwitchTest(true) === 32)){
+ $ERROR("#6: SwitchTest(true) === 32. Actual: SwitchTest(true) ==="+ SwitchTest(true) );
+}
+
+if(!(SwitchTest(false) === 32)){
+ $ERROR("#7: SwitchTest(false) === 32. Actual: SwitchTest(false) ==="+ SwitchTest(false) );
+}
+
+if(!(SwitchTest(null) === 192)){
+ $ERROR("#8: SwitchTest(null) === 192. Actual: SwitchTest(null) ==="+ SwitchTest(null) );
+}
+
+if(!(SwitchTest(void 0) === 1024)){
+ $ERROR("#9: SwitchTest(void 0) === 1024. Actual: SwitchTest(void 0) ==="+ SwitchTest(void 0) );
+}
+
+if(!(SwitchTest(NaN) === 32)){
+ $ERROR("#10: SwitchTest(NaN) === 32. Actual: SwitchTest(NaN) ==="+ SwitchTest(NaN) );
+}
+
+if(!(SwitchTest(Infinity) === 768)){
+ $ERROR("#10: SwitchTest(NaN) === 768. Actual: SwitchTest(NaN) ==="+ SwitchTest(NaN) );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T4.js
new file mode 100644
index 000000000..e16208ead
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A1_T4.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A1_T4;
+ * @section: 12.11;
+ * @assertion: If Result.type is break and Result.target is in the current
+ * label set, return (normal, Result.value, empty);
+ * @description: Using case with isNaN and isNaN(value);
+*/
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ case 1:
+ result += 4;
+ break;
+ case 2:
+ result += 8;
+ case isNaN(value):
+ result += 16;
+ default:
+ result += 32;
+ break;
+ case null:
+ result += 64;
+ case isNaN:
+ result += 128;
+ break;
+ case Infinity:
+ result += 256;
+ case 2+3:
+ result += 512;
+ break;
+ case undefined:
+ result += 1024;
+ }
+
+ return result;
+}
+
+if(!(SwitchTest(eval('Number(false)')) === 6)){
+ $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
+}
+
+if(!(SwitchTest(parseInt) === 32)){
+ $ERROR("#2: SwitchTest(parseInt) === 32. Actual: SwitchTest(parseInt) ==="+ SwitchTest(parseInt) );
+}
+
+if(!(SwitchTest(isNaN) === 128)){
+ $ERROR("#3: SwitchTest(isNaN) === 128. Actual: SwitchTest(isNaN) ==="+ SwitchTest(isNaN) );
+}
+
+if(!(SwitchTest(true) === 32)){
+ $ERROR("#6: SwitchTest(true) === 32. Actual: SwitchTest(true) ==="+ SwitchTest(true) );
+}
+
+if(!(SwitchTest(false) === 48)){
+ $ERROR("#7: SwitchTest(false) === 48. Actual: SwitchTest(false) ==="+ SwitchTest(false) );
+}
+
+if(!(SwitchTest(null) === 192)){
+ $ERROR("#8: SwitchTest(null) === 192. Actual: SwitchTest(null) ==="+ SwitchTest(null) );
+}
+
+if(!(SwitchTest(void 0) === 1024)){
+ $ERROR("#9: SwitchTest(void 0) === 1024. Actual: SwitchTest(void 0) ==="+ SwitchTest(void 0) );
+}
+
+if(!(SwitchTest(NaN) === 32)){
+ $ERROR("#10: SwitchTest(NaN) === 32. Actual: SwitchTest(NaN) ==="+ SwitchTest(NaN) );
+}
+
+if(!(SwitchTest(Infinity) === 768)){
+ $ERROR("#10: SwitchTest(NaN) === 768. Actual: SwitchTest(NaN) ==="+ SwitchTest(NaN) );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A2_T1.js
new file mode 100644
index 000000000..a49811116
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A2_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A2_T1;
+ * @section: 12.11;
+ * @assertion: There can be only one DefaultClause;
+ * @description: Duplicate DefaultClause;
+ * @negative;
+*/
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T1.js
new file mode 100644
index 000000000..475cbcf2c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A3_T1;
+ * @section: 12.11;
+ * @assertion: Syntax constructions of switch statement;
+ * @description: Checking if execution of "switch() {}" fails;
+ * @negative;
+*/
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch() {
+ case 0:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T2.js
new file mode 100644
index 000000000..d4d8c0e93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A3_T2;
+ * @section: 12.11;
+ * @assertion: Syntax constructions of switch statement;
+ * @description: Checking if execution of "switch {}" fails;
+ * @negative;
+*/
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch {
+ case 0:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T3.js
new file mode 100644
index 000000000..2c0982971
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A3_T3;
+ * @section: 12.11;
+ * @assertion: Syntax constructions of switch statement;
+ * @description: Checking if execution of "switch(value)" fails;
+ * @negative;
+*/
+
+switch(value);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T4.js
new file mode 100644
index 000000000..7f022d653
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A3_T4;
+ * @section: 12.11;
+ * @assertion: Syntax constructions of switch statement;
+ * @description: Using "case" that has no Expresson after it. "CaseClause: case Expression : [StatementList]";
+ * @negative;
+*/
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T5.js
new file mode 100644
index 000000000..eba1868ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A3_T5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A3_T5;
+ * @section: 12.11;
+ * @assertion: Syntax constructions of switch statement;
+ * @description: Introducing statement not followed by "case" keyword;
+ * @negative;
+*/
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ result =2;
+ case 0:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A4_T1.js
new file mode 100644
index 000000000..b7fbd2a82
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.11_The_switch_Statement/S12.11_A4_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.11_A4_T1;
+ * @section: 12.11;
+ * @assertion: Embedded syntax constructions of switch statement;
+ * @description: Nesting one "switch" statement into StatementList of the other's;
+*/
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ switch(value) {
+ case 0:
+ result += 3;
+ break;
+ default:
+ result += 32;
+ break;
+ }
+ result *= 2;
+ break;
+ result=3;
+ default:
+ result += 32;
+ break;
+ }
+ return result;
+}
+
+var x = SwitchTest(0);
+if(x!==6) $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.12_Labelled_Statements/S12.12_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.12_Labelled_Statements/S12.12_A1_T1.js
new file mode 100644
index 000000000..724921c93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.12_Labelled_Statements/S12.12_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.12_A1_T1;
+ * @section: 12.12;
+ * @assertion: Labelled statements are only used in conjunction with labelled
+ * break and continue statements;
+ * @description: Checking if labelled break works. See continue and break sections;
+*/
+
+var object = {p1: 1, p2: 1};
+var result = 0;
+lbl: for(var i in object){
+ result += object[i];
+ break lbl;
+}
+
+if(!(result === 1)){
+ $ERROR("'break label' should break execution of labelled iteration statement");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A1.js
new file mode 100644
index 000000000..be310e00d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A1;
+ * @section: 12.13;
+ * @assertion: Sanity test for throw statement;
+ * @description: Trying to throw exception with "throw";
+ * @negative;
+ */
+
+throw "error";
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T1.js
new file mode 100644
index 000000000..b017454aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A2_T1;
+ * @section: 12.13;
+ * @assertion: "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression;
+ * @description: Throwing undefined;
+ */
+
+// CHECK#1
+try{
+ throw undefined;
+}
+catch(e){
+ if (e!==undefined) $ERROR('#1: Exception === undefined. Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T2.js
new file mode 100644
index 000000000..d0dfd9318
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_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.
+
+/**
+ * @name: S12.13_A2_T2;
+ * @section: 12.13;
+ * @assertion: "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression;
+ * @description: Throwing null;
+ */
+
+// CHECK#1
+try{
+ throw null;
+}
+catch(e){
+ if (e!==null) $ERROR('#1: Exception === null. Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T3.js
new file mode 100644
index 000000000..537e0bedf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T3.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A2_T3;
+ * @section: 12.13;
+ * @assertion: "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression;
+ * @description: Throwing boolean;
+ */
+
+// CHECK#1
+try{
+ throw true;
+}
+catch(e){
+ if (e!==true) $ERROR('#1: Exception ===true. Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+try{
+ throw false;
+}
+catch(e){
+ if (e!==false) $ERROR('#2: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+var b=false;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==false) $ERROR('#3: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var b=true;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==true) $ERROR('#4: Exception ===true. Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T4.js
new file mode 100644
index 000000000..2f70a0ce0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A2_T4;
+ * @section: 12.13;
+ * @assertion: "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression;
+ * @description: Throwing string;
+ */
+
+// CHECK#1
+try{
+ throw "exception #1";
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#1: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+var b="exception #1";
+try{
+ throw b;
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#2: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T5.js
new file mode 100644
index 000000000..56ce263d2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T5.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A2_T5;
+ * @section: 12.13;
+ * @assertion: "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression;
+ * @description: Throwing number;
+ */
+
+// CHECK#1
+try{
+ throw 13;
+}
+catch(e){
+ if (e!==13) $ERROR('#1: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+var b=13;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==13) $ERROR('#2: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+try{
+ throw 2.13;
+}
+catch(e){
+ if (e!==2.13) $ERROR('#3: Exception ===2.13. Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+try{
+ throw NaN;
+}
+catch(e){
+ if (!isNaN(e)) $ERROR('#4: Exception is NaN');
+}
+
+// CHECK#5
+try{
+ throw +Infinity;
+}
+catch(e){
+ if (e!==+Infinity) $ERROR('#5: Exception ===+Infinity. Actual: Exception ==='+ e );
+}
+
+// CHECK#6
+try{
+ throw -Infinity;
+}
+catch(e){
+ if (e!==-Infinity) $ERROR('#6: Exception ===-Infinity. Actual: Exception ==='+ e );
+}
+
+// CHECK#7
+try{
+ throw +0;
+}
+catch(e){
+ if (e!==+0) $ERROR('#7: Exception ===+0. Actual: Exception ==='+ e );
+}
+
+// CHECK#8
+try{
+ throw -0;
+}
+catch(e){
+ if (e!==-0) $ERROR('#8: Exception ===-0. Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T6.js
new file mode 100644
index 000000000..1c9c8ce6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T6.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A2_T6;
+ * @section: 12.13;
+ * @assertion: "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression;
+ * @description: Throwing object;
+ */
+
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';},
+ i:7
+}
+
+try{
+ throw myObj;
+}
+catch(e){
+// CHECK#1
+ if (e.p1!=="a") $ERROR('#1: e.p1 === "a". Actual: e.p1 ==='+ e.p1 );
+// CHECK#2
+ if (e.value!=='myObj_value') $ERROR('#2: e.p1 === \'myObj_value\'. Actual: e.p1 ==='+ e.p1 );
+// CHECK#3
+ if (e.eval()!=='obj_eval') $ERROR('#3: e.p1 === \'obj_eval\'. Actual: e.p1 ==='+ e.p1 );
+}
+
+// CHECK#4
+myObj.i=6
+try{
+ throw myObj;
+}
+catch(e){}
+if (myObj.i!==6) $ERROR('#4: Handling of catch must be correct');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T7.js
new file mode 100644
index 000000000..a6464faef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A2_T7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A2_T7;
+ * @section: 12.13;
+ * @assertion: "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression;
+ * @description: Throwing Array;
+ */
+
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+var mycars2 = new Array();
+mycars2[0] = "Mercedes";
+mycars2[1] = "Jeep";
+mycars2[2] = "Suzuki";
+
+// CHECK#1
+try{
+ throw mycars;
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#1.'+i+': Exception['+i+'] === mycars['+i+']. Actual: Exception['+i+'] ==='+ e[i] );
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T1.js
new file mode 100644
index 000000000..bc420d5c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A3_T1;
+ * @section: 12.13;
+ * @assertion: 1. Evaluate Expression;
+ * @description: Evaluating boolean expression;
+ */
+
+// CHECK#1
+var b=true;
+try{
+ throw b&&false;
+}
+catch(e){
+ if (e!==false) $ERROR('#1: Exception === false(operaton &&). Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+var b=true;
+try{
+ throw b||false;
+}
+catch(e){
+ if (e!==true) $ERROR('#2: Exception === true(operaton ||). Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+try{
+ throw !false;
+}
+catch(e){
+ if (e!==true) $ERROR('#3: Exception === true(operaton !). Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var b=true;
+try{
+ throw !(b&&false);
+}
+catch(e){
+ if (e!==true) $ERROR('#4: Exception === true(operaton &&). Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T2.js
new file mode 100644
index 000000000..4dbf33d0c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A3_T2;
+ * @section: 12.13;
+ * @assertion: 1. Evaluate Expression;
+ * @description: Evaluating string expression;
+ */
+
+// CHECK#1
+try{
+ throw "exception"+" #1";
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#1: Exception === "exception #1"(operaton +). Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+var b="exception"
+var a=" #1";
+try{
+ throw b+a;
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#2: Exception === "exception #1"(operaton +). Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T3.js
new file mode 100644
index 000000000..f2a60cab8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T3.js
@@ -0,0 +1,91 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A3_T3;
+ * @section: 12.13;
+ * @assertion: 1. Evaluate Expression;
+ * @description: Evaluating number expression;
+ */
+
+// CHECK#1
+try{
+ throw 10+3;
+}
+catch(e){
+ if (e!==13) $ERROR('#1: Exception ===13(operaton +). Actual: Exception ==='+ e);
+}
+
+// CHECK#2
+var b=10;
+var a=3;
+try{
+ throw a+b;
+}
+catch(e){
+ if (e!==13) $ERROR('#2: Exception ===13(operaton +). Actual: Exception ==='+ e);
+}
+
+// CHECK#3
+try{
+ throw 3.15-1.02;
+}
+catch(e){
+ if (e!==2.13) $ERROR('#3: Exception ===2.13(operaton -). Actual: Exception ==='+ e);
+}
+
+// CHECK#4
+try{
+ throw 2*2;
+}
+catch(e){
+ if (e!==4) $ERROR('#4: Exception ===4(operaton *). Actual: Exception ==='+ e);
+}
+
+// CHECK#5
+try{
+ throw 1+Infinity;
+}
+catch(e){
+ if (e!==+Infinity) $ERROR('#5: Exception ===+Infinity(operaton +). Actual: Exception ==='+ e);
+}
+
+// CHECK#6
+try{
+ throw 1-Infinity;
+}
+catch(e){
+ if (e!==-Infinity) $ERROR('#6: Exception ===-Infinity(operaton -). Actual: Exception ==='+ e);
+}
+
+// CHECK#7
+try{
+ throw 10/5;
+}
+catch(e){
+ if (e!==2) $ERROR('#7: Exception ===2(operaton /). Actual: Exception ==='+ e);
+}
+
+// CHECK#8
+try{
+ throw 8>>2;
+}
+catch(e){
+ if (e!==2) $ERROR('#8: Exception ===2(operaton >>). Actual: Exception ==='+ e);
+}
+
+// CHECK#9
+try{
+ throw 2<<2;
+}
+catch(e){
+ if (e!==8) $ERROR('#9: Exception ===8(operaton <<). Actual: Exception ==='+ e);
+}
+
+// CHECK#10
+try{
+ throw 123%100;
+}
+catch(e){
+ if (e!==23) $ERROR('#10: Exception ===23(operaton %). Actual: Exception ==='+ e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T4.js
new file mode 100644
index 000000000..ed0204eac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T4.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A3_T4;
+ * @section: 12.13;
+ * @assertion: 1. Evaluate Expression;
+ * @description: Evaluating array expression;
+ */
+
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+var mycars2 = new Array();
+mycars2[0] = "Mercedes";
+mycars2[1] = "Jeep";
+mycars2[2] = "Suzuki";
+
+// CHECK#1
+try{
+ throw mycars.concat(mycars2);
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#1.'+i+': Exception['+i+']===mycars['+i+'](operation .concat). Actual: Exception['+i+']==='+ e[i] );
+ }
+ for (var i=3;i<6;i++){
+ if (e[i]!==mycars2[i-3]) $ERROR('#1.'+i+': Exception['+i+']===mycars2['+(i-3)+'](operation .concat). Actual: Exception['+i+']==='+ e[i] );
+ }
+}
+
+// CHECK#2
+try{
+ throw new Array("Mercedes","Jeep","Suzuki");
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars2[i]) $ERROR('#2.'+i+': Exception['+i+']===mycars2['+i+'](operation new). Actual: Exception['+i+']==='+ e[i] );
+ }
+}
+
+// CHECK#3
+try{
+ throw mycars.concat(new Array("Mercedes","Jeep","Suzuki"));
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#3.'+i+': Exception['+i+']===mycars['+i+'](operation .concat(new)). Actual: Exception['+i+']==='+ e[i] );
+ }
+ for (var i=3;i<6;i++){
+ if (e[i]!==mycars2[i-3]) $ERROR('#3.'+i+': Exception['+i+']===mycars2['+(i-3)+'](operation .concat(new)). Actual: Exception['+i+']==='+ e[i] );
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T5.js
new file mode 100644
index 000000000..c64f4387e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A3_T5;
+ * @section: 12.13;
+ * @assertion: 1. Evaluate Expression;
+ * @description: Evaluating equation expression;
+ */
+
+// CHECK#1
+var a=true;
+var b=false;
+try{
+ throw ((a&&(!b))?"exception":" #1");
+}
+catch(e){
+ if (e!=="exception") $ERROR('#1: Exception ==="exception"(operaton ? , ). Actual: Exception ==='+e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T6.js
new file mode 100644
index 000000000..88bc25518
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.13_The_throw_statement/S12.13_A3_T6.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.13_A3_T6;
+ * @section: 12.13;
+ * @assertion: 1. Evaluate Expression;
+ * @description: Evaluating functions;
+ */
+
+// CHECK#1
+var i=0;
+function adding1(){
+ i++;
+ return 1;
+}
+try{
+ throw (adding1());
+}
+catch(e){
+ if (e!==1) $ERROR('#1: Exception ===1. Actual: Exception ==='+ e);
+}
+
+// CHECK#2
+var i=0;
+function adding2(){
+ i++;
+ return i;
+}
+try{
+ throw adding2();
+}
+catch(e){}
+if (i!==1) $ERROR('#2: i===1. Actual: i==='+ i);
+
+// CHECK#3
+var i=0;
+function adding3(){
+ i++;
+}
+try{
+ throw adding3();
+}
+catch(e){}
+if (i!==1) $ERROR('#3: i===1. Actual: i==='+i);
+
+// CHECK#4
+function adding4(i){
+ i++;
+ return i;
+}
+try{
+ throw (adding4(1));
+}
+catch(e){
+ if (e!==2) $ERROR('#4: Exception ===2. Actual: Exception ==='+ e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A1.js
new file mode 100644
index 000000000..be1377005
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A1;
+ * @section: 12.14;
+ * @assertion: The production TryStatement : try Block Catch is evaluated as follows: 2. If Result(1).type is not throw, return Result(1);
+ * @description: Executing TryStatement : try Block Catch. The statements doesn't cause actual exceptions;
+ */
+
+// CHECK#1
+try {
+ var x=0;
+}
+catch (e) {
+ $ERROR('#1: If Result(1).type is not throw, return Result(1). Actual: 4 Return(Result(3))');
+}
+
+// CHECK#2
+var c1=0;
+try{
+ var x1=1;
+}
+finally
+{
+ c1=1;
+}
+if(x1!==1){
+ $ERROR('#2.1: "try" block must be evaluated. Actual: try Block has not been evaluated');
+}
+if (c1!==1){
+ $ERROR('#2.2: "finally" block must be evaluated. Actual: finally Block has not been evaluated');
+}
+
+// CHECK#3
+var c2=0;
+try{
+ var x2=1;
+}
+catch(e){
+ $ERROR('#3.1: If Result(1).type is not throw, return Result(1). Actual: 4 Return(Result(3))');
+}
+finally{
+ c2=1;
+}
+if(x2!==1){
+ $ERROR('#3.2: "try" block must be evaluated. Actual: try Block has not been evaluated');
+}
+if (c2!==1){
+ $ERROR('#3.3: "finally" block must be evaluated. Actual: finally Block has not been evaluated');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T1.js
new file mode 100644
index 000000000..bc083cae9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A10_T1;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "while" statement;
+ * @description: Throwing exception while executing iteration statement placed into try Block;
+ */
+
+// CHECK#1
+var i=0;
+try{
+while(i<10){
+ if(i===5) throw i;
+ i++;
+}
+}
+catch(e){
+ if(e!==5)$ERROR('#1: Exception === 5. Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T2.js
new file mode 100644
index 000000000..083cc9b4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T2.js
@@ -0,0 +1,115 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A10_T2;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "while" statement;
+ * @description: Try statement inside loop, where use continue loop;
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+while(c1<2){
+ try{
+ c1+=1;
+ continue;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+};
+if(fin!==1){
+ $ERROR('#1: "finally" block must be evaluated at "try{continue} catch finally" construction');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+while(c2<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ continue;
+ }
+ finally{
+ fin2=1;
+ }
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2: "finally" block must be evaluated at "try catch{continue} finally" construction');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+while(c3<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ continue;
+ }
+ fin3=0;
+}
+if(fin3!==1){
+ $ERROR('#3: "finally" block must be evaluated at "try catch finally{continue}" construction');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+while(c4<2){
+ try{
+ c4+=1;
+ continue;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+};
+if(fin4!==1){
+ $ERROR('#4: "finally" block must be evaluated at "try{continue} finally" construction');
+}
+
+// CHECK#5
+var c5=0;
+while(c5<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c5+=1;
+ continue;
+ }
+}
+if(c5!==2){
+ $ERROR('#5: "try catch{continue}" must work correctly');
+}
+
+// CHECK#6
+var c6=0,fin6=0;
+while(c6<2){
+ try{
+ c6+=1;
+ throw "ex1"
+ }
+ finally{
+ fin6=1;
+ continue;
+ }
+ fin6=-1;
+}
+if(fin6!==1){
+ $ERROR('#6.1: "finally" block must be evaluated');
+}
+if(c6!==2){
+ $ERROR('#6.2: "try finally{continue}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T3.js
new file mode 100644
index 000000000..7bf95fd30
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T3.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A10_T3;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "while" statement;
+ * @description: Try statement inside loop, where use break;
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+while(c1<2){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+ c1+=2;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==1){
+ $ERROR('#1.2: "try{break}catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+while(c2<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==1){
+ $ERROR('#2.2: "try catch{break} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+while(c3<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ break;
+ }
+ c3+=2;
+ fin3=0;
+}
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==1){
+ $ERROR('#3.2: "try catch finally{break}" must work correctly');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+while(c4<2){
+ try{
+ c4+=1;
+ break;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+ c4+=2;
+}
+if(fin4!==1){
+ $ERROR('#4.1: "finally" block must be evaluated');
+}
+if(c4!==1){
+ $ERROR('#4.2: "try{break} finally" must work correctly');
+}
+
+// CHECK#5
+var c5=0;
+while(c5<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ break;
+ }
+}
+if(c5!==0){
+ $ERROR('#5: "try catch{break}" must work correctly');
+}
+
+// CHECK#6
+var c6=0;
+while(c6<2){
+ try{
+ c6+=1;
+ break;
+ }
+ catch(er1){}
+ c6+=2;
+}
+if(c6!==1){
+ $ERROR('#6: "try{break} catch" must work correctly');
+}
+
+// CHECK#7
+var c7=0,fin7=0;
+try{
+ while(c7<2){
+ try{
+ c7+=1;
+ throw "ex1";
+ }
+ finally{
+ fin7=1;
+ break;
+ }
+ fin7=-1;
+ c7+=2;
+ }
+}
+catch(ex1){
+ c7=10;
+}
+if(fin7!==1){
+ $ERROR('#7.1: "finally" block must be evaluated');
+}
+if(c7!==1){
+ $ERROR('#7.2: "try finally{break}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T4.js
new file mode 100644
index 000000000..1f0e49e7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T4.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A10_T4;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "while" statement;
+ * @description: Try statement inside loop, where combinate using break and continue;
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+while(c1<2){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ continue;
+ }
+ fin=-1;
+ c1+=2;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==2){
+ $ERROR('#1.2: "try{break} catch finally{continue}" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+while(c2<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ continue;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==2){
+ $ERROR('#2.2: "try catch{break} finally{continue} must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T5.js
new file mode 100644
index 000000000..a9f152725
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A10_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A10_T5;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "while" statement;
+ * @description: Throw some exceptions from different place of loop body;
+ */
+
+// CHECK#1
+var c=0, i=0;
+var fin=0;
+while(i<10){
+ i+=1;
+ try{
+ if(c===0){
+ throw "ex1";
+ $ERROR('#1.1: throw "ex1" lead to throwing exception');
+ }
+ c+=2;
+ if(c===1){
+ throw "ex2";
+ $ERROR('#1.2: throw "ex2" lead to throwing exception');
+ }
+ }
+ catch(er1){
+ c-=1;
+ continue;
+ $ERROR('#1.3: "try catch{continue} finally" must work correctly');
+ }
+ finally{
+ fin+=1;
+ }
+}
+if(fin!==10){
+ $ERROR('#1.4: "finally" block must be evaluated');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T1.js
new file mode 100644
index 000000000..0722243c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A11_T1;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "for" statement;
+ * @description: Loop inside try Block, where throw exception;
+ */
+
+// CHECK#1
+try{
+ for(var i=0;i<10;i++){
+ if(i===5) throw i;
+ }
+}
+catch(e){
+ if(e!==5)$ERROR('#1: Exception === 5. Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T2.js
new file mode 100644
index 000000000..07847e5de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T2.js
@@ -0,0 +1,122 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A11_T2;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "for" statement;
+ * @description: Try statement inside loop, where use continue loop;
+ */
+
+// CHECK#1
+var fin=0;
+for(var i=0;i<5;i++){
+ try{
+ i+=1;
+ continue;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+}
+if(fin!==1){
+ $ERROR('#1: "finally" block must be evaluated at "try{continue} catch finally" construction');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ continue;
+ }
+ finally{
+ fin2=1;
+ }
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==5){
+ $ERROR('#2.1: "try catch{continue} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ continue;
+ }
+ fin3=0;
+}
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==5){
+ $ERROR('#3.2: "try catch finally{continue}" must work correctly');
+}
+
+// CHECK#4
+var fin=0;
+for(var i=0;i<5;i++){
+ try{
+ i+=1;
+ continue;
+ }
+ finally{
+ fin=1;
+ }
+ fin=-1;
+};
+if(fin!==1){
+ $ERROR('#4: "finally" block must be evaluated at "try{continue} finally" construction');
+}
+
+// CHECK#5
+var c5=0;
+for(var c5=0;c5<10;){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c5+=1;
+ continue;
+ }
+ c5+=12;
+};
+if(c5!==10){
+ $ERROR('#5: "try catch{continue} must work correctly');
+}
+
+// CHECK#6
+var c6=0,fin6=0;
+for(var c6=0;c6<10;){
+ try{
+ c6+=1;
+ throw "ex1"
+ }
+ finally{
+ fin6=1;
+ continue;
+ }
+ fin6=-1;
+};
+if(fin6!==1){
+ $ERROR('#6.1: "finally" block must be evaluated');
+}
+if(c6!==10){
+ $ERROR('#6.2: "try finally{continue}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T3.js
new file mode 100644
index 000000000..dc4444c7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T3.js
@@ -0,0 +1,149 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A11_T3;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "for" statement;
+ * @description: Try statement inside loop, where use break;
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+for(var i=0;i<5;i++){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+ c1+=2;
+};
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==1){
+ $ERROR('#1.2: "try{break}catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ }
+ c2+=2;
+ fin2=-1;
+};
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==1){
+ $ERROR('#2.2: "try catch{break} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ break;
+ }
+ c3+=2;
+ fin3=0;
+};
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==1){
+ $ERROR('#3.2: "try catch finally{break}" must work correctly');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+for(var i=0;i<5;i++){
+ try{
+ c4+=1;
+ break;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+ c4+=2;
+};
+if(fin4!==1){
+ $ERROR('#4.1: "finally" block must be evaluated');
+}
+if(c4!==1){
+ $ERROR('#4.2: "try{break} finally" must work correctly');
+}
+
+// CHECK#5
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ break;
+ }
+};
+if(i!==0){
+ $ERROR('#5: "try catch{break}" must work correctly');
+}
+
+// CHECK#6
+var c6=0;
+for(var c6=0;c6<5;){
+ try{
+ c6+=1;
+ break;
+ }
+ catch(er1){}
+ c6+=2;
+};
+if(c6!==1){
+ $ERROR('#6: "try{break} catch" must work correctly');
+}
+
+// CHECK#7
+var c7=0,fin7=0;
+try{
+ for(var c7=0;c7<5;){
+ try{
+ c7+=1;
+ throw "ex1";
+ }
+ finally{
+ fin7=1;
+ break;
+ }
+ fin7=-1;
+ c7+=2;
+ }
+}
+catch(ex1){
+ c7=10;
+}
+if(fin7!==1){
+ $ERROR('#7.1: "finally" block must be evaluated');
+}
+if(c7!==1){
+ $ERROR('#7.2: "try finally{break}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T4.js
new file mode 100644
index 000000000..25934836f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A11_T4.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A11_T4;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "for" statement;
+ * @description: Try statement inside loop, where combinate using break and continue;
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+for(var i=0;i<5;i++){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ continue;
+ }
+ fin=-1;
+ c1+=2;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==5){
+ $ERROR('#1.2: "try{break} catch finally{continue}" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ continue;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==5){
+ $ERROR('#2.2: "try catch{break} finally{continue}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T1.js
new file mode 100644
index 000000000..14c7cb41a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A12_T1;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "for-in" statement;
+ * @description: Loop inside try Block, where throw exception;
+ */
+
+var x;
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+// CHECK#1
+try{
+ for (x in mycars){
+ if (mycars[x]==="BMW") throw "ex";
+ }
+}
+catch(e){
+ if(e!=="ex")$ERROR('#1: Exception ==="ex". Actual: Exception ==='+ e );
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T2.js
new file mode 100644
index 000000000..9d97197fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T2.js
@@ -0,0 +1,131 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A12_T2;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "for-in" statement;
+ * @description: Try statement inside loop, where use continue loop;
+ */
+
+var x;
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+// CHECK#1
+var fin=0;
+var i=0;
+for (x in mycars){
+ try{
+ i+=1;
+ continue;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(i!==3){
+ $ERROR('#1.2: "try{continue} catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ continue;
+ }
+ finally{
+ fin2=1;
+ }
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==3){
+ $ERROR('#2.1: "try catch{continue} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ continue;
+ }
+ fin3=0;
+}
+if(c3!==3){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(fin3!==1){
+ $ERROR('#3.2: "try catch finally{continue}" must work correctly');
+}
+
+// CHECK#4
+var fin=0;
+for (x in mycars){
+ try{
+ continue;
+ }
+ finally{
+ fin=1;
+ }
+ fin=-1;
+}
+if(fin!==1){
+ $ERROR('#4: "finally" block must be evaluated at "try{continue} finally" construction');
+}
+
+// CHECK#5
+var c5=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c5+=1;
+ continue;
+ }
+ c5+=12;
+}
+if(c5!==3){
+ $ERROR('#5: "try catch{continue}" must work correctly');
+}
+
+// CHECK#6
+var c6=0,fin6=0;
+for (x in mycars){
+ try{
+ c6+=1;
+ throw "ex1";
+ }
+ finally{
+ fin6=1;
+ continue;
+ }
+ fin6=-1;
+}
+if(fin6!==1){
+ $ERROR('#6.1: "finally" block must be evaluated');
+}
+if(c6!==3){
+ $ERROR('#6.2: "try finally{continue}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T3.js
new file mode 100644
index 000000000..e4749adbe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T3.js
@@ -0,0 +1,161 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A12_T3;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "for-in" statement;
+ * @description: Try statement inside loop, where use break;
+ */
+
+var x;
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+// CHECK#1
+var c1=0,fin=0;
+for (x in mycars){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){
+ c1+=1;
+ }
+ finally{
+ fin=1;
+ }
+ fin=-1;
+ c1+=2;
+};
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==1){
+ $ERROR('#1.2: "try{break}catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==1){
+ $ERROR('#2.2: "try catch{break} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ break;
+ }
+ c3+=2;
+ fin3=0;
+}
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==1){
+ $ERROR('#3.2: "try catch finally{break}" must work correctly');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+for (x in mycars){
+ try{
+ c4+=1;
+ break;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+ c4+=2;
+}
+if(fin4!==1){
+ $ERROR('#4.1: "finally" block must be evaluated');
+}
+if(c4!==1){
+ $ERROR('#4.2: "try{break} finally" must work correctly');
+}
+
+// CHECK#5
+var c5=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ c5++;
+ }
+ catch(er1){
+ break;
+ c5++;
+ }
+ c5++;
+}
+if(c5!==0){
+ $ERROR('#5: "try catch{break}" must work correctly');
+}
+
+// CHECK#6
+var c6=0;
+for (x in mycars){
+ try{
+ c6+=1;
+ break;
+ }
+ catch(er1){}
+ c6+=2;
+}
+if(c6!==1){
+ $ERROR('#6: "try{break} catch" must work correctly');
+}
+
+// CHECK#7
+var c7=0,fin7=0;
+try{
+ for (x in mycars){
+ try{
+ c7+=1;
+ throw "ex1";
+ }
+ finally{
+ fin7=1;
+ break;
+ }
+ fin7=-1;
+ c7+=2;
+ }
+}
+catch(ex1){
+ c7=10;
+}
+if(fin7!==1){
+ $ERROR('#7.1: "finally" block must be evaluated');
+}
+if(c7!==1){
+ $ERROR('#7.2: "try finally{break}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T4.js
new file mode 100644
index 000000000..07c979fde
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A12_T4.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A12_T4;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "for-in" statement;
+ * @description: Try statement inside loop, where combinate using break and continue;
+ */
+
+var x;
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+// CHECK#1
+var c1=0,fin=0;
+for (x in mycars){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ continue;
+ }
+ fin=-1;
+ c1+=2;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==3){
+ $ERROR('#1.2: "try{break} catch finally{continue}" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ continue;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==3){
+ $ERROR('#2.2: "try catch{break} finally{continue}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T1.js
new file mode 100644
index 000000000..7535db7f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A13_T1;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement with a "return" statement;
+ * @description: Using try/catch syntax construction;
+ */
+
+// CHECK#1
+function myFunction1(){
+ try{
+ return 1;
+ }
+ catch(err){
+ $ERROR('#1.1: "return 1" inside function does not lead to throwing exception');
+ return 0;
+ }
+ return 2;
+}
+var x1=myFunction1();
+if(x1!==1){
+ $ERROR('#1.2: x1===1. Actual: x1==='+x1);
+}
+
+// CHECK#2
+function myFunction2(){
+ try{
+ throw "exc";
+ return 1;
+ }catch(err){
+ return 2;
+ }
+ return 3;
+}
+var x2=myFunction2();
+if (x2!==2){
+ $ERROR('#2: x2===2. Actual: x2==='+x2);
+}
+
+// CHECK#3
+function myFunction3(){
+ try{
+ return someValue;
+ }catch(err){
+ return 1;
+ }
+ return 2;
+}
+var x3=myFunction3();
+if (x3!==1){
+ $ERROR('#3: x3===1. Actual: x3==='+x3);
+}
+
+// CHECK#4
+function myFunction4(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ throw "ex2"
+ return 0;
+ }
+ return 2;
+}
+try{
+ var x4=myFunction4();
+ $ERROR('#4.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#4.2: Exception !=="ex1". Actual: catch previous exception');
+ }
+ if(e!=="ex2"){
+ $ERROR('#4.3: Exception ==="ex2". Actual: Exception ==='+ e );
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T2.js
new file mode 100644
index 000000000..53ae98fe2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T2.js
@@ -0,0 +1,181 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A13_T2;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement with a "return" statement;
+ * @description: Using try/finally syntax construction;
+ */
+
+// CHECK#1
+var c1=0;
+function myFunction1(){
+ try{
+ return 1;
+ }finally{
+ c1=1;
+ }
+ return 2;
+}
+var x1=myFunction1();
+if(x1!==1){
+ $ERROR('#1.1: x1===1. Actual: x1==='+x1);
+}
+if (c1!==1){
+ $ERROR('#1.2: "finally" block must be evaluated');
+}
+
+// CHECK#2
+var c2=0;
+function myFunction2(){
+ try{
+ throw "exc";
+ return 1;
+ }finally{
+ c2=1;
+ }
+ return 2;
+}
+try{
+ var x2=myFunction2();
+ $ERROR('#2.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if (c2!==1){
+ $ERROR('#2.2: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#3
+var c3=0;
+function myFunction3(){
+ try{
+ return someValue;
+ }finally{
+ c3=1;
+ }
+ return 2;
+}
+try{
+ var x3=myFunction3();
+ $ERROR('#3.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if (c3!==1){
+ $ERROR('#3.2: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#4
+var c4=0;
+function myFunction4(){
+ try{
+ return 1;
+ }finally{
+ c4=1;
+ throw "exc";
+ return 0;
+ }
+ return 2;
+}
+try{
+ var x4=myFunction4();
+ $ERROR('#4.2: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if (c4!==1){
+ $ERROR('#4.3: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#5
+var c5=0;
+function myFunction5(){
+ try{
+ return 1;
+ }finally{
+ c5=1;
+ return someValue;
+ return 0;
+ }
+ return 2;
+}
+try{
+ var x5=myFunction5();
+ $ERROR('#5.2: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if (c5!==1){
+ $ERROR('#5.3: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#6
+var c6=0;
+function myFunction6(){
+ try{
+ throw "ex1";
+ return 1;
+ }finally{
+ c6=1;
+ throw "ex2";
+ return 2;
+ }
+ return 3;
+}
+try{
+ var x6=myFunction6();
+ $ERROR('#6.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#6.2: Exception !=="ex1". Actual: catch previous exception');
+ }
+ if(e!=="ex2"){
+ $ERROR('#6.3: Exception !=="ex1". Actual: '+e);
+ }
+ if (c6!==1){
+ $ERROR('#6.4: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#7
+var c7=0;
+function myFunction7(){
+ try{
+ return 1;
+ }finally{
+ c7=1;
+ return 2;
+ }
+ return 3;
+}
+var x7=myFunction7();
+if(x7!==2){
+ $ERROR('#7.1: "catch" block must be evaluated');
+}
+if (c7!==1){
+ $ERROR('#7.2: "finally" block must be evaluated');
+}
+
+// CHECK#8
+var c8=0;
+function myFunction8(){
+ try{
+ throw "ex1";
+ }finally{
+ c8=1;
+ return 2;
+ }
+ return 3;
+}
+try{
+ var x8=myFunction8();
+}
+catch(ex1){
+ c8=10;
+}
+if (c8!==1){
+ $ERROR('#8: "finally" block must be evaluated');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T3.js
new file mode 100644
index 000000000..bc64ecf3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A13_T3.js
@@ -0,0 +1,185 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A13_T3;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement with a "return" statement;
+ * @description: Using try/catch/finally syntax construction;
+ */
+
+// CHECK#1
+var c1=0;
+function myFunction1(){
+ try{
+ return 1;
+ }catch(err){
+ $ERROR('#1.1: "return 1" inside function does not lead to throwing exception');
+ return 0;
+ }finally{
+ c1=1;
+ }
+ return 2;
+}
+var x1=myFunction1();
+if(x1!==1){
+ $ERROR('#1.3: x1===1. Actual: x1==='+x1);
+}
+if (c1!==1){
+ $ERROR('#1.4: "finally" block must be evaluated');
+}
+
+// CHECK#2
+var c2=0;
+function myFunction2(){
+ try{
+ throw "exc";
+ return 1;
+ }catch(err){
+ return 0;
+ }finally{
+ c2=1;
+ }
+ return 2;
+}
+var x2=myFunction2();
+if (c2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if (x2!==0){
+ $ERROR('#2.2: x2===0. Actual: x2==='+x2);
+}
+
+// CHECK#3
+var c3=0;
+function myFunction3(){
+ try{
+ return someValue;
+ }catch(err){
+ return 1;
+ }finally{
+ c3=1;
+ }
+ return 2;
+}
+var x3=myFunction3();
+if (c3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if (x3!==1){
+ $ERROR('#3.2: x3===1. Actual: x3==='+x3);
+}
+
+// CHECK#4
+var c4=0;
+function myFunction4(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ throw "ex2"
+ return 0;
+ }finally{
+ c4=1;
+ }
+ return 2;
+}
+try{
+ var x4=myFunction4();
+ $ERROR('#4.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#4.2: Exception !== "ex1". Actual: catch previous exception');
+ }
+ if(e!=="ex2"){
+ $ERROR('#4.3: Exception === "ex2". Actual: Exception ==='+ e );
+ }
+ if (c4!==1){
+ $ERROR('#4.4: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#5
+var c5=0;
+function myFunction5(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ return 0;
+ }finally{
+ c5=1;
+ throw "ex2";
+ }
+ return 2;
+}
+try{
+ var x5=myFunction5();
+ $ERROR('#5.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#5.2: Exception !== "ex1". Actual: catch previous exception');
+ }
+ if(e!=="ex2"){
+ $ERROR('#5.3: Exception === "ex2". Actual: Exception ==='+ e );
+ }
+ if (c5!==1){
+ $ERROR('#5.4: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#6
+var c6=0;
+function myFunction6(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ throw "ex2";
+ return 0;
+ }finally{
+ c6=1;
+ throw "ex3";
+ }
+ return 2;
+}
+try{
+ var x6=myFunction6();
+ $ERROR('#6.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#6.2: Exception !== "ex1". Actual: catch previous exception');
+ }
+ if(e==="ex2"){
+ $ERROR('#6.3: Exception !== "ex2". Actual: catch previous exception');
+ }
+ if(e!=="ex3"){
+ $ERROR('#6.4: Exception === "ex3". Actual: Exception ==='+ e );
+ }
+ if(c6!==1) $ERROR('#6.5: "finally" block must be evaluated');
+}
+
+// CHECK#7
+var c7=0;
+function myFunction7(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ throw "ex2";
+ return 0;
+ }finally{
+ c7=1;
+ return 2;
+ }
+ return 3;
+}
+try{
+ var x7=myFunction7();
+ if(x7!==2) $ERROR('#7.1: x7===2. Actual: x7==='+x7);
+}
+catch(e){}
+if(c7!==1) $ERROR('#7.2: "finally" block must be evaluated');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A14.js
new file mode 100644
index 000000000..d6b9298d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A14.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A14;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "with" statement;
+ * @description: Using try/catch/finally in With and With in try/catch/finally;
+ * @strict_mode_negative SyntaxError;
+ */
+
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+
+// CHECK#1
+try{
+ with(myObj){
+ throw "ex";
+ }
+}
+catch(e){
+ if (e!=="ex") $ERROR('#1: Exception ==="ex". Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+with(myObj){
+ try{
+ throw p1;
+ }
+ catch(e){
+ if (e!=="a") $ERROR('#2.1: Exception ==="a". Actual: Exception ==='+ e );
+ p1='pass';
+ }
+}
+if(myObj.p1!=='pass') $ERROR('#2.2: "throw p1" lead to throwing exception');
+
+// CHECK#3
+with(myObj){
+ try{
+ p1='fail';
+ throw p2;
+ }
+ catch(e){
+ if (e!=="b") $ERROR('#3.1: Exception ==="b". Actual: Exception ==='+ e );
+ p1='pass';
+ }
+ finally{
+ p2='pass';
+ }
+}
+if(myObj.p1!=='pass') $ERROR('#3.2: "throw p2" lead to throwing exception');
+if(myObj.p2!=='pass') $ERROR('#3.3: "finally" block must be evaluated');
+
+// CHECK#4
+myObj.p1='fail';
+try{
+ with(myObj){
+ try{
+ throw p3;
+ }
+ finally{
+ p1='pass';
+ }
+ }
+}
+catch(e){}
+if(myObj.p1!=='pass') $ERROR('#4: "finally" block must be evaluated');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A15.js
new file mode 100644
index 000000000..60087fb5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A15.js
@@ -0,0 +1,91 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A15;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement within/without a "switch" statement;
+ * @description: Insert try/catch/finally to switch statement;
+ */
+
+// CHECK#1
+function SwitchTest1(value){
+ var result = 0;
+ try{
+ switch(value) {
+ case 1:
+ result += 4;
+ throw result;
+ break;
+ default:
+ result += 32;
+ break;
+ case 4:
+ result += 64;
+ throw "ex";
+ }
+ return result;
+ }
+ catch(e){
+ if ((value===1)&&(e!==4)) $ERROR('#1.1: Exception ===4. Actual: Exception ==='+ e );
+ if ((value===4)&&(e!=="ex")) $ERROR('#1.2: Exception ==="ex". Actual: Exception ==='+ e );
+ }
+ finally{
+ return result;
+ }
+}
+if (SwitchTest1(1)!==4) $ERROR('#1.3: SwitchTest1(1)===4. Actual: SwitchTest1(1)==='+ SwitchTest1(1) );
+if (SwitchTest1(4)!==64) $ERROR('#1.4: SwitchTest1(4)===64. Actual: SwitchTest1(4)==='+ SwitchTest1(4) );
+
+// CHECK#2
+var c2=0;
+function SwitchTest2(value){
+ var result = 0;
+ switch(value) {
+ case 0:
+ try{
+ result += 2;
+ break;
+ }
+ finally{
+ c2=1;
+ }
+ case 1:
+ result += 4;
+ break;
+ default:
+ result += 32;
+ break;
+ }
+ return result;
+}
+if (SwitchTest2(1)!==4) $ERROR('#2.1: SwitchTest1(1)===4. Actual: SwitchTest1(1)==='+ SwitchTest1(1) );
+if (c2===1) $ERROR('#2.2: Evaluate finally block');
+if (SwitchTest2(0)!==2) $ERROR('#2.3: SwitchTest1(0)===2. Actual: SwitchTest1(0)==='+ SwitchTest1(0) );
+if (c2!==1) $ERROR('#2.4: "finally" block must be evaluated');
+
+// CHECK#3
+function SwitchTest3(value){
+ var result = 0;
+ switch(value) {
+ case 0:
+ try{
+ result += 2;
+ throw "ex";
+ }
+ finally{
+ break;
+ }
+ default:
+ result += 32;
+ break;
+ }
+ return result;
+}
+try{
+ var x3=SwitchTest3(0);
+ if (x3!==2) $ERROR('#3.1: x3===2. Actual: x3==='+x3);
+}
+catch(e){
+ $ERROR('#3.2: Catching exception inside function does not lead to throwing exception outside this function');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T1.js
new file mode 100644
index 000000000..4fefdd726
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T1;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Checking if pure "try" syntax construction passes;
+ * @negative
+ */
+
+// CHECK#1
+try
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T10.js
new file mode 100644
index 000000000..f9f7cd60a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T10.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T10;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Catch: "catch (Identifier ) Block";
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch(){}
+finally{}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T11.js
new file mode 100644
index 000000000..32c33b382
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T11.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T11;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Catch and Finally are placed into the Block of "try" (whitle expected outside);
+ * @negative
+ */
+
+// CHECK#1
+try{
+ {
+ }
+ catch(e){}
+ finally{}
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T12.js
new file mode 100644
index 000000000..61693d517
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T12.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T12;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Embedded "try" statements followed by two "catch" statements;
+ * @negative
+ */
+
+// CHECK#1
+try
+{
+ try
+ {
+ }
+}
+catch(e1){}
+catch(e2){}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T13.js
new file mode 100644
index 000000000..ff38025e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T13.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T13;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Catch: "catch (Identifier ) Block". Checking if execution of "22" passes at the place of Identifier of "catch";
+ * @negative
+ */
+
+// CHECK#1
+try
+{
+}
+catch("22")
+{
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T14.js
new file mode 100644
index 000000000..31bb1d66e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T14.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T14;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Checking if passing argument to "try" statement fails;
+ * @negative
+ */
+
+// CHECK#1
+try(e1){
+}
+catch(e){}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T15.js
new file mode 100644
index 000000000..0c5441749
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T15.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T15;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Finally: "finally Block". Checking if passing argument to "try" statement fails;
+ * @negative
+ */
+
+// CHECK#1
+try{
+}
+finally(e){}
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T2.js
new file mode 100644
index 000000000..1f9deb436
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T2;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Checking if execution of "catch" with no "try" fails;
+ * @negative
+ */
+
+// CHECK#1
+catch
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T3.js
new file mode 100644
index 000000000..09db8002d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T3;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Checking if execution of "finally" with no "try" fails;
+ * @negative
+ */
+
+// CHECK#1
+finally
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T4.js
new file mode 100644
index 000000000..7d0a3b089
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T4;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Catch: "catch (Identifier ) Block". Checking if execution of "catch" that takes no arguments fails;
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch{}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T5.js
new file mode 100644
index 000000000..067dd0539
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T5.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T5;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Catch: "catch (Identifier ) Block". Checking if execution of "catch" with no Block fails;
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch()
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T6.js
new file mode 100644
index 000000000..c29bd071a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T6;
+ * @section: 12.14, 12.1;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Block: "{ StatementList }". Checking if execution of "try{ catch{}{}" fails;
+ * @negative
+ */
+
+// CHECK#1
+try{
+catch(){}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T7.js
new file mode 100644
index 000000000..b18356355
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T7.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T7;
+ * @section: 12.14, 12.1;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Block: "{ StatementList }". Checking if execution of "try{} catch(){" fails;
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch(){
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T8.js
new file mode 100644
index 000000000..53af6e95b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T8.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T8;
+ * @section: 12.14, 12.1;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Block: "{ StatementList }". Catch: "catch (Identifier ) Block". Checking if execution of "try{} catch(){finally{}" fails;
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch(){
+finally{}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T9.js
new file mode 100644
index 000000000..c2a031a37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T9.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A16_T9;
+ * @section: 12.14;
+ * @assertion: TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally";
+ * @description: Checking if execution of "catch(){} finally{}" fails;
+ * @negative
+ */
+
+// CHECK#1
+catch(){}
+finally{}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A17.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A17.js
new file mode 100644
index 000000000..3b5ff12ff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A17.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A17;
+ * @section: 12.14;
+ * @assertion: Using "try" with "catch" or "finally" statement in a constructor;
+ * @description: Creating exceptions within constructor;
+ */
+
+var i=1;
+function Integer( value, exception ) {
+ try{
+ this.value = checkValue( value );
+ if(exception) $ERROR('#'+i+'.1: Must be exception');
+ }
+ catch(e){
+ this.value = e.toString();
+ if(!exception) $ERROR('#'+i+'.2: Don`t must be exception');
+ }
+ i++;
+}
+
+function checkValue(value){
+ if(Math.floor(value)!=value||isNaN(value)){
+ throw (INVALID_INTEGER_VALUE +": " + value);
+ }
+ else{
+ return value;
+ }
+}
+
+// CHECK#1
+new Integer(13, false);
+// CHECK#2
+new Integer(NaN, true);
+// CHECK#3
+new Integer(0, false);
+// CHECK#4
+new Integer(Infinity, false);
+// CHECK#5
+new Integer(-1.23, true);
+// CHECK#6
+new Integer(Math.LN2, true);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T1.js
new file mode 100644
index 000000000..d31249a05
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A18_T1;
+ * @section: 12.14, 12.13;
+ * @assertion: Catching objects with try/catch/finally statement;
+ * @description: Catching undefined;
+ */
+
+// CHECK#1
+try{
+ throw undefined;
+}
+catch(e){
+ if (e!==undefined) $ERROR('#1: Exception === undefined. Actual: '+e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T2.js
new file mode 100644
index 000000000..985c79a52
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_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.
+
+/**
+ * @name: S12.14_A18_T2;
+ * @section: 12.14, 12.13;
+ * @assertion: Catching objects with try/catch/finally statement;
+ * @description: Catching null;
+ */
+
+// CHECK#1
+try{
+ throw null;
+}
+catch(e){
+ if (e!==null) $ERROR('#1: Exception ===null. Actual: '+e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T3.js
new file mode 100644
index 000000000..edd42501e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T3.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A18_T3;
+ * @section: 12.14, 12.13;
+ * @assertion: Catching objects with try/catch/finally statement;
+ * @description: Catching boolean;
+ */
+
+// CHECK#1
+try{
+ throw true;
+}
+catch(e){
+ if (e!==true) $ERROR('#1: Exception ===true. Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+try{
+ throw false;
+}
+catch(e){
+ if (e!==false) $ERROR('#2: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+var b=false;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==false) $ERROR('#3: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var b=true;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==true) $ERROR('#4: Exception ===true. Actual: Exception ==='+ e );
+}
+
+// CHECK#5
+var b=true;
+try{
+ throw b&&false;
+}
+catch(e){
+ if (e!==false) $ERROR('#5: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#5
+var b=true;
+try{
+ throw b||false;
+}
+catch(e){
+ if (e!==true) $ERROR('#6: Exception ===true. Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T4.js
new file mode 100644
index 000000000..d3f76e83b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T4.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A18_T4;
+ * @section: 12.14, 12.13;
+ * @assertion: Catching objects with try/catch/finally statement;
+ * @description: Catching string;
+ */
+
+// CHECK#1
+try{
+ throw "exception #1";
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#1: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+try{
+ throw "exception"+" #1";
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#2: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+var b="exception #1";
+try{
+ throw b;
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#3: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var a="exception";
+var b=" #1";
+try{
+ throw a+b;
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#4: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T5.js
new file mode 100644
index 000000000..699c88ce3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T5.js
@@ -0,0 +1,101 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A18_T5;
+ * @section: 12.14, 12.13;
+ * @assertion: Catching objects with try/catch/finally statement;
+ * @description: Catching Number;
+ */
+
+// CHECK#1
+try{
+ throw 13;
+}
+catch(e){
+ if (e!==13) $ERROR('#1: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+try{
+ throw 10+3;
+}
+catch(e){
+ if (e!==13) $ERROR('#2: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+var b=13;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==13) $ERROR('#3: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var a=3;
+var b=10;
+try{
+ throw a+b;
+}
+catch(e){
+ if (e!==13) $ERROR('#4: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#5
+try{
+ throw 2.13;
+}
+catch(e){
+ if (e!==2.13) $ERROR('#5: Exception ===2.13. Actual: Exception ==='+ e );
+}
+
+// CHECK#6
+var ex=2/3;
+try{
+ throw 2/3;
+}
+catch(e){
+ if (e!==ex) $ERROR('#6: Exception ===2/3. Actual: Exception ==='+ e );
+}
+
+// CHECK#7
+try{
+ throw NaN;
+}
+catch(e){
+ if (!isNaN(e)) $ERROR('#7: Exception is NaN');
+}
+
+// CHECK#8
+try{
+ throw +Infinity;
+}
+catch(e){
+ if (e!==+Infinity) $ERROR('#8: Exception ===+Infinity. Actual: Exception ==='+ e );
+}
+
+// CHECK#9
+try{
+ throw -Infinity;
+}
+catch(e){
+ if (e!==-Infinity) $ERROR('#9: Exception ===-Infinity. Actual: Exception ==='+ e );
+}
+
+// CHECK#10
+try{
+ throw +0;
+}
+catch(e){
+ if (e!==+0) $ERROR('#10: Exception ===+0. Actual: Exception ==='+ e );
+}
+
+// CHECK#11
+try{
+ throw -0;
+}
+catch(e){
+ if (e!==-0) $ERROR('#11: Exception ===-0. Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T6.js
new file mode 100644
index 000000000..3f21bdf42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T6.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A18_T6;
+ * @section: 12.14, 12.13;
+ * @assertion: Catching objects with try/catch/finally statement;
+ * @description: Catching Object;
+ */
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';},
+ i:7,
+}
+
+try{
+ throw myObj;
+}
+catch(e){
+// CHECK#1
+ if (e.p1!=="a") $ERROR('#1: e.p1==="a". Actual: e.p1==='+ e.p1 );
+// CHECK#2
+ if (e.value!=='myObj_value') $ERROR('#2: e.value===\'myObj_value\'. Actual: e.value==='+ e.value );
+// CHECK#3
+ if (e.eval()!=='obj_eval') $ERROR('#3: e.eval()===\'obj_eval\'. Actual: e.eval()==='+ e.eval() );
+}
+
+// CHECK#4
+myObj.i=6;
+try{
+ throw myObj;
+}
+catch(e){}
+if (myObj.i!==6) $ERROR('#4: Handling of catch must be correct');
+
+// CHECK#5
+myObj.i=6;
+try{
+ throw myObj;
+}
+catch(e){
+ e.i=10;
+}
+if (myObj.i!==10) $ERROR('#5: Handling of catch must be correct');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T7.js
new file mode 100644
index 000000000..b66fbac9a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A18_T7.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A18_T7;
+ * @section: 12.14, 12.13;
+ * @assertion: Catching objects with try/catch/finally statement;
+ * @description: Catching Array;
+ */
+
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+var mycars2 = new Array();
+mycars2[0] = "Mercedes";
+mycars2[1] = "Jeep";
+mycars2[2] = "Suzuki";
+
+// CHECK#1
+try{
+ throw mycars;
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#1.'+i+': Exception['+i+']===mycars['+i+']. Actual: Exception['+i+']==='+ e[i] );
+ }
+}
+
+// CHECK#2
+try{
+ throw mycars.concat(mycars2);
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#2.'+i+': Exception['+i+']===mycars['+i+']. Actual: Exception['+i+']==='+ e[i] );
+ }
+ for (var i=3;i<6;i++){
+ if (e[i]!==mycars2[i-3]) $ERROR('#2.'+i+': Exception['+i+']===mycars2['+i+']. Actual: Exception['+i+']==='+ e[i] );
+ }
+}
+
+// CHECK#3
+try{
+ throw new Array("Mercedes","Jeep","Suzuki");
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars2[i]) $ERROR('#3.'+i+': Exception['+i+']===mycars2['+i+']. Actual: Exception['+i+']==='+ e[i]);
+ }
+}
+
+// CHECK#4
+try{
+ throw mycars.concat(new Array("Mercedes","Jeep","Suzuki"));
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#4.'+i+': Exception['+i+']===mycars['+i+']. Actual: Exception['+i+']==='+ e[i] );
+ }
+ for (var i=3;i<6;i++){
+ if (e[i]!==mycars2[i-3]) $ERROR('#4.'+i+': Exception['+i+']===mycars2['+(i-3)+']. Actual: Exception['+i+']==='+ e[i]);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A19_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A19_T1.js
new file mode 100644
index 000000000..80a07116a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A19_T1.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A19_T1;
+ * @section: 12.14, 15.11, 16;
+ * @assertion: Catching system exceptions of different types with try statement;
+ * @description: Testing try/catch syntax construction;
+ */
+
+// CHECK#1
+try{
+ throw (Error("hello"));
+}
+catch(e){
+ if (e.toString()!=="Error: hello") $ERROR('#1: Exception.toString()==="Error: hello". Actual: Exception is '+e);
+}
+
+// CHECK#2
+try{
+ throw (new Error("hello"));
+}
+catch(e){
+ if (e.toString()!=="Error: hello") $ERROR('#2: Exception.toString()==="Error: hello". Actual: Exception is '+e);
+}
+
+// CHECK#3
+var c3=0;
+try{
+ throw EvalError(1);
+}
+catch(e){
+ if (e.toString()!=="EvalError: 1") $ERROR('#3: Exception.toString()==="EvalError: 1". Actual: Exception is '+e);
+}
+
+// CHECK#4
+try{
+ throw RangeError(1);
+}
+catch(e){
+ if (e.toString()!=="RangeError: 1") $ERROR('#4: Exception.toString()==="RangeError: 1". Actual: Exception is '+e);
+}
+
+// CHECK#5
+try{
+ throw ReferenceError(1);
+}
+catch(e){
+ if (e.toString()!=="ReferenceError: 1") $ERROR('#5: Exception.toString()==="ReferenceError: 1". Actual: Exception is '+e);
+}
+
+// CHECK#6
+var c6=0;
+try{
+ throw TypeError(1);
+}
+catch(e){
+ if (e.toString()!=="TypeError: 1") $ERROR('#6: Exception.toString()==="TypeError: 1". Actual: Exception is '+e);
+}
+
+// CHECK#7
+try{
+ throw URIError("message", "fileName", "1");
+}
+catch(e){
+ if (e.toString()!=="URIError: message") $ERROR('#7: Exception.toString()==="URIError: message". Actual: Exception is '+e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A19_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A19_T2.js
new file mode 100644
index 000000000..c1ff03c8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A19_T2.js
@@ -0,0 +1,101 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A19_T2;
+ * @section: 12.14;
+ * @assertion: Catching system exceptions of different types with try statement;
+ * @description: Testing try/catch/finally syntax construction;
+ */
+
+var fin=0;
+// CHECK#1
+try{
+ throw (Error("hello"));
+}
+catch(e){
+ if (e.toString()!=="Error: hello") $ERROR('#1.1: Exception.toString()==="Error: hello". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#1.2: "finally" block must be evaluated');
+
+// CHECK#2
+fin=0;
+try{
+ throw (new Error("hello"));
+}
+catch(e){
+ if (e.toString()!=="Error: hello") $ERROR('#2.1: Exception.toString()==="Error: hello". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#2.2: "finally" block must be evaluated');
+
+// CHECK#3
+fin=0;
+var c3=0;
+try{
+ throw EvalError(1);
+}
+catch(e){
+ if (e.toString()!=="EvalError: 1") $ERROR('#3.1: Exception.toString()==="EvalError: 1". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#3.2: "finally" block must be evaluated');
+
+// CHECK#4
+fin=0;
+try{
+ throw RangeError(1);
+}
+catch(e){
+ if (e.toString()!=="RangeError: 1") $ERROR('#4.1: Exception.toString()==="RangeError: 1". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#4.2: "finally" block must be evaluated');
+
+// CHECK#5
+fin=0;
+try{
+ throw ReferenceError(1);
+}
+catch(e){
+ if (e.toString()!=="ReferenceError: 1") $ERROR('#5.1: Exception.toString()==="ReferenceError: 1". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#5.2: "finally" block must be evaluated');
+
+// CHECK#6
+fin=0;
+try{
+ throw TypeError(1);
+}
+catch(e){
+ if (e.toString()!=="TypeError: 1") $ERROR('#6.1: Exception.toString()==="TypeError: 1". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#6.2: "finally" block must be evaluated');
+
+// CHECK#7
+fin=0;
+try{
+ throw URIError("message", "fileName", "1");
+}
+catch(e){
+ if (e.toString()!=="URIError: message") $ERROR('#7.1: Exception.toString()==="URIError: message". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#7.2: "finally" block must be evaluated');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A2.js
new file mode 100644
index 000000000..83b637fe5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A2.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A2;
+ * @section: 12.14;
+ * @assertion: Throwing exception with "throw" and catching it with "try" statement;
+ * @description: Checking if execution of "catch" catches an exception thrown with "throw";
+ */
+
+// CHECK#1
+try {
+ throw "catchme";
+ $ERROR('#1: throw "catchme" lead to throwing exception');
+}
+catch(e){}
+
+// CHECK#2
+var c2=0;
+try{
+ try{
+ throw "exc";
+ $ERROR('#2.1: throw "exc" lead to throwing exception');
+ }finally{
+ c2=1;
+ }
+}
+catch(e){
+ if (c2!==1){
+ $ERROR('#2.2: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#3
+var c3=0;
+try{
+ throw "exc";
+ $ERROR('#3.1: throw "exc" lead to throwing exception');
+}
+catch(err){
+ var x3=1;
+}
+finally{
+ c3=1;
+}
+if (x3!==1){
+ $ERROR('#3.2: "catch" block must be evaluated');
+}
+if (c3!==1){
+ $ERROR('#3.3: "finally" block must be evaluated');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A3.js
new file mode 100644
index 000000000..0d69b28b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A3.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A3;
+ * @section: 12.14;
+ * @assertion: Catching system exception with "try" statement;
+ * @description: Checking if execution of "catch" catches system exceptions;
+ */
+
+// CHECK#1
+try{
+ y;
+ $ERROR('#1: "y" lead to throwing exception');
+}
+catch(e){}
+
+// CHECK#2
+var c2=0;
+try{
+ try{
+ someValue;
+ $ERROR('#3.1: "someValues" lead to throwing exception');
+ }
+ finally{
+ c2=1;
+ }
+}
+catch(e){
+ if (c2!==1){
+ $ERROR('#3.2: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#3
+var c3=0,x3=0;
+try{
+ x3=someValue;
+ $ERROR('#3.1: "x3=someValues" lead to throwing exception');
+}
+catch(err){
+ x3=1;
+}
+finally{
+ c3=1;
+}
+if (x3!==1){
+ $ERROR('#3.2: "catch" block must be evaluated');
+}
+if (c3!==1){
+ $ERROR('#3.3: "finally" block must be evaluated');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A4.js
new file mode 100644
index 000000000..e76809232
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A4;
+ * @section: 12.14;
+ * @assertion: Sanity test for "catch(Indetifier) statement";
+ * @description: Checking if deleting an exception fails;
+ * @strict_mode_negative SyntaxError;
+ */
+
+// CHECK#1
+try {
+ throw "catchme";
+ $ERROR('#1.1: throw "catchme" lead to throwing exception');
+}
+catch (e) {
+ if (delete e){
+ $ERROR('#1.2: Exception has DontDelete property');
+ }
+ if (e!=="catchme") {
+ $ERROR('#1.3: Exception === "catchme". Actual: Exception ==='+ e );
+ }
+}
+
+// CHECK#2
+try {
+ throw "catchme";
+ $ERROR('#2.1: throw "catchme" lead to throwing exception');
+}
+catch(e){}
+try{
+ e;
+ $ERROR('#2.2: Deleting catching exception after ending "catch" block');
+}
+catch(err){}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A5.js
new file mode 100644
index 000000000..5be0e3786
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A5.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A5;
+ * @section: 12.14;
+ * @assertion: The production TryStatement: "try Block Finally" and the production TryStatement: "try Block Catch Finally";
+ * @description: Checking "catch" catches the Identifier in appropriate way;
+ */
+
+// CHECK#1
+try {
+ throw "catchme";
+ throw "dontcatchme";
+ $ERROR('#1.1: throw "catchme" lead to throwing exception');
+}
+catch (e) {
+ if(e==="dontcatchme"){
+ $ERROR('#1.2: Exception !== "dontcatchme"');
+ }
+ if (e!=="catchme") {
+ $ERROR('#1.3: Exception === "catchme". Actual: Exception ==='+ e );
+ }
+}
+
+// CHECK#2
+function SwitchTest1(value){
+ var result = 0;
+ try{
+ switch(value) {
+ case 1:
+ result += 4;
+ throw result;
+ break;
+ case 4:
+ result += 64;
+ throw "ex";
+ }
+ return result;
+ }
+ catch(e){
+ if ((value===1)&&(e!==4)) $ERROR('#2.1: Exception === 4. Actual: '+e);
+ if ((value===4)&&(e!=="ex"))$ERROR('#2.2: Exception === "ex". Actual: '+e);
+ }
+ finally{
+ return result;
+ }
+}
+if (SwitchTest1(1)!==4) $ERROR('#2.3: "finally" block must be evaluated');
+if (SwitchTest1(4)!==64)$ERROR('#2.4: "finally" block must be evaluated');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A6.js
new file mode 100644
index 000000000..fbdb4287d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A6.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A6;
+ * @section: 12.14;
+ * @assertion: The production TryStatement: "try Block Catch Finally";
+ * @description: Executing sequence of "try" statements, using counters with varying values within;
+ */
+
+// CHECK#1
+var c1=0;
+try {
+ c1+=1;
+ y;
+ $ERROR('#1.1: "y" lead to throwing exception');
+}
+catch (e) {
+ c1*=2;
+}
+if (c1!==2){
+ $ERROR('#1.2: Sequence evaluation of commands try/catch is 1. try, 2. catch');
+}
+
+// CHECK#2
+var c2=0;
+try{
+ c2+=1;
+}
+finally{
+ c2*=2;
+}
+if (c2!==2){
+ $ERROR('#2: Sequence evaluation of commands try/finally is 1. try, 2. finally');
+}
+
+// CHECK#3
+var c3=0;
+try{
+ c3=1;
+ z;
+}
+catch(err){
+ c3*=2;
+}
+finally{
+ c3+=1;
+}
+if (c3!==3){
+ $ERROR('#3: Sequence evaluation of commands try/catch/finally(with exception) is 1. try, 2. catch, 3. finally');
+}
+
+// CHECK#4
+var c4=0;
+try{
+ c4=1;
+}
+catch(err){
+ c4*=3;
+}
+finally{
+ c4+=1;
+}
+if (c4!==2){
+ $ERROR('#4: Sequence evaluation of commands try/catch/finally(without exception) is 1. try, 2. finally');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T1.js
new file mode 100644
index 000000000..b6b2609a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T1.js
@@ -0,0 +1,137 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A7_T1;
+ * @section: 12.14;
+ * @assertion: Evaluating the nested productions TryStatement;
+ * @description: Checking if the production of nested TryStatement statements evaluates correct;
+ */
+
+// CHECK#1
+try{
+ try{
+ throw "ex2";
+ }
+ catch(er2){
+ if (er2!=="ex2")
+ $ERROR('#1.1: Exception === "ex2". Actual: Exception ==='+ e );
+ throw "ex1";
+ }
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#1.2: Exception === "ex1". Actual: '+er1);
+ if (er1==="ex2") $ERROR('#1.3: Exception !== "ex2". Actual: catch previous embedded exception');
+}
+
+// CHECK#2
+try{
+ throw "ex1";
+}
+catch(er1){
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#2.1: Exception !== "ex1". Actual: catch previous catching exception');
+ if (er1!=="ex2") $ERROR('#2.2: Exception === "ex2". Actual: Exception ==='+ er1 );
+ }
+ if (er1!=="ex1") $ERROR('#2.3: Exception === "ex1". Actual: Exception ==='+ er1 );
+ if (er1==="ex2") $ERROR('#2.4: Exception !== "ex2". Actual: catch previous catching exception');
+}
+
+// CHECK#3
+try{
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#3.1: Exception ==="ex1". Actual: Exception ==='+ er1 );
+}
+finally{
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#3.2: Exception !=="ex1". Actual: catch previous embedded exception');
+ if (er1!=="ex2") $ERROR('#3.3: Exception ==="ex2". Actual: Exception ==='+ er1 );
+ }
+}
+
+// CHECK#4
+var c4=0;
+try{
+ throw "ex1";
+}
+catch(er1){
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#4.1: Exception !=="ex1". Actual: catch previous catching exception');
+ if (er1!=="ex2") $ERROR('#4.2: Exception ==="ex2". Actual: Exception ==='+ er1 );
+ }
+ if (er1!=="ex1") $ERROR('#4.3: Exception ==="ex1". Actual: Exception ==='+ er1 );
+ if (er1==="ex2") $ERROR('#4.4: Exception !=="ex2". Actual: Catch previous embedded exception');
+}
+finally{
+ c4=1;
+}
+if (c4!==1) $ERROR('#4.5: "finally" block must be evaluated');
+
+// CHECK#5
+var c5=0;
+try{
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1!=="ex2") $ERROR('#5.1: Exception ==="ex2". Actual: Exception ==='+ er1 );
+ }
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#5.2: Exception ==="ex1". Actual: Exception ==='+ er1 );
+ if (er1==="ex2") $ERROR('#5.3: Exception !=="ex2". Actual: catch previous embedded exception');
+}
+finally{
+ c5=1;
+}
+if (c5!==1) $ERROR('#5.4: "finally" block must be evaluated');
+
+// CHECK#6
+var c6=0;
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#6.1: Exception ==="ex1". Actual: Exception ==='+ er1 );
+ }
+}
+finally{
+ c6=1;
+}
+if (c6!==1) $ERROR('#6.2: "finally" block must be evaluated');
+
+// CHECK#7
+var c7=0;
+try{
+ try{
+ throw "ex1";
+ }
+ finally{
+ try{
+ c7=1;
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1!=="ex2") $ERROR('#7.1: Exception ==="ex2". Actual: Exception ==='+ er1 );
+ if (er1==="ex1") $ERROR('#7.2: Exception !=="ex1". Actual: catch previous embedded exception');
+ c7++;
+ }
+ }
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#7.3: Exception ==="ex1". Actual: Exception ==='+ er1 );
+}
+if (c7!==2) $ERROR('#7.4: "finally" block must be evaluated');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T2.js
new file mode 100644
index 000000000..aba1d046f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T2.js
@@ -0,0 +1,151 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A7_T2;
+ * @section: 12.14;
+ * @assertion: Evaluating the nested productions TryStatement;
+ * @description: Checking if the production of nested TryStatement statements evaluates correct;
+ */
+
+// CHECK#1
+try{
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex1";
+ }
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#1.2: Exception === "ex1". Actual: Exception ==='+er1 );
+ if (er1==="ex2") $ERROR('#1.3: Exception !== "ex2". Actual: catch previous embedded exception');
+}
+
+// CHECK#2
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#2.1: Exception === "ex1". Actual: Exception ==='+er1 );
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex3";
+ }
+ $ERROR('#2.2: throw "ex1" lead to throwing exception');
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#2.3: Exception === "ex3". Actual: Exception ==='+er1 );
+}
+
+// CHECK#3
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#3.1: Exception === "ex1". Actual: Exception ==='+er1 );
+ }
+ finally{
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex3";
+ }
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#3.2: Exception === "ex3". Actual: Exception ==='+er1 );
+}
+
+// CHECK#4
+var c4=0;
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#4.1: Exception === "ex1". Actual: Exception ==='+er1 );
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex3";
+ }
+ }
+ finally{
+ c4=1;
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#4.2: Exception === "ex3". Actual: Exception ==='+er1 );
+}
+if (c4!==1) $ERROR('#4.3: "finally" block must be evaluated');
+
+// CHECK#5
+var c5=0;
+try{
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex3";
+ }
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#5.1: Exception === "ex3". Actual: Exception ==='+er1 );
+ if (er1==="ex2") $ERROR('#5.2: Exception !== "ex2". Actual: catch previous embedded exception');
+ if (er1==="ex1") $ERROR('#5.3: Exception !=="ex1". Actual: catch previous embedded exception');
+}
+finally{
+ c5=1;
+}
+if (c5!==1) $ERROR('#5.4: "finally" block must be evaluated');
+
+// CHECK#6
+var c6=0;
+try{
+ try{
+ try{
+ throw "ex1";
+ }
+ finally{
+ throw "ex2";
+ }
+ }
+ finally{
+ c6=1;
+ }
+}
+catch(er1){
+ if (er1!=="ex2") $ERROR('#6.1: Exception === "ex2". Actual: Exception ==='+er1 );
+}
+if (c6!==1) $ERROR('#6.2: "finally" block must be evaluated');
+
+// CHECK#7
+var c7=0;
+try{
+ try{
+ throw "ex1";
+ }
+ finally{
+ try{
+ c7=1;
+ throw "ex2";
+ }
+ finally{
+ c7++;
+ throw "ex3";
+ }
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#7.1: Exception === "ex3". Actual: Exception ==='+er1 );
+}
+if (c7!==2) $ERROR('#7.2: Embedded "try/finally" blocks must be evaluated');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T3.js
new file mode 100644
index 000000000..986cddd0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A7_T3.js
@@ -0,0 +1,168 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A7_T3;
+ * @section: 12.14;
+ * @assertion: Evaluating the nested productions TryStatement;
+ * @description: Checking if the production of nested TryStatement statements evaluates correct;
+ */
+
+// CHECK#1
+try{
+ try{
+ throw "ex2";
+ }
+ catch(er2){
+ if (er2!=="ex2") $ERROR('#1.1: Exception === "ex2". Actual: Exception ==='+er2);
+ throw "ex1";
+ }
+ finally{
+ throw "ex3";
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#1.2: Exception === "ex3". Actual: Exception ==='+er1);
+ if (er1==="ex2") $ERROR('#1.3: Exception !=="ex2". Actual: catch previous catched exception');
+ if (er1==="ex1") $ERROR('#1.4: Exception !=="ex1". Actual: catch previous embedded exception');
+}
+
+// CHECK#2
+var c2=0;
+try{
+ throw "ex1";
+}
+catch(er1){
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#2.1: Exception !=="ex1". Actual: catch previous catched exception');
+ if (er1!=="ex2") $ERROR('#2.2: Exception === "ex2". Actual: Exception ==='+er1);
+ }
+ finally{
+ c2=1;
+ }
+ if (er1!=="ex1") $ERROR('#2.3: Exception === "ex1". Actual: Exception ==='+er1);
+ if (er1==="ex2") $ERROR('#2.4: Exception !== "ex2". Actual: catch previous embedded exception');
+}
+if (c2!==1) $ERROR('#2.5: "finally" block must be evaluated');
+
+// CHECK#3
+var c3=0;
+try{
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#3.1: Exception === "ex1". Actual: Exception ==='+er1);
+}
+finally{
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#3.2: Exception !=="ex1". Actual: catch previous catched exception');
+ if (er1!=="ex2") $ERROR('#3.3: Exception === "ex2". Actual: Exception ==='+er1);
+ }
+ finally{
+ c3=1;
+ }
+}
+if (c3!==1) $ERROR('#3.4: "finally" block must be evaluated');
+
+// CHECK#4
+var c4=0;
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#4.1: Exception !=="ex2". Actual: catch previous catched exception');
+ if (er1!=="ex2") $ERROR('#4.2: Exception === "ex2". Actual: Exception ==='+er1);
+ }
+ finally{
+ c4=2;
+ throw "ex3";
+ }
+ if (er1!=="ex1") $ERROR('#4.3: Exception === "ex2". Actual: Exception ==='+er1);
+ if (er1==="ex2") $ERROR('#4.4: Exception !=="ex2". Actual: catch previous catched exception');
+ if (er1==="ex3") $ERROR('#4.5: Exception !=="ex3". Actual: Catch previous embedded exception');
+ }
+ finally{
+ c4*=2;
+ }
+}
+catch(er1){}
+if (c4!==4) $ERROR('#4.6: "finally" block must be evaluated');
+
+// CHECK#5
+var c5=0;
+try{
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1!=="ex2") $ERROR('#5.1: Exception === "ex2". Actual: Exception ==='+er1);
+ }
+ finally{
+ throw "ex3";
+ }
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#5.2: Exception === "ex3". Actual: Exception ==='+er1);
+ if (er1==="ex2") $ERROR('#5.3: Exception !=="ex2". Actual: catch previous catched exception');
+ if (er1==="ex1") $ERROR('#5.4: Exception !=="ex1". Actual: catch previous embedded exception');
+}
+finally{
+ c5=1;
+}
+if (c5!==1) $ERROR('#5.5: "finally" block must be evaluated');
+
+// CHECK#6
+var c6=0;
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#6.1: Exception === "ex1". Actual: Exception ==='+er1);
+ }
+ finally{
+ c6=2;
+ }
+}
+finally{
+ c6*=2;
+}
+if (c6!==4) $ERROR('#6.2: "finally" block must be evaluated');
+
+// CHECK#7
+var c7=0;
+try{
+ try{
+ throw "ex1";
+ }
+ finally{
+ try{
+ c7=1;
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1!=="ex2") $ERROR('#7.1: Exception === "ex2". Actual: Exception ==='+er1);
+ if (er1==="ex1") $ERROR('#7.2: Exception !=="ex2". Actual: catch previous catched exception');
+ c7++;
+ }
+ finally{
+ c7*=2;
+ }
+ }
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#7.3: Exception === "ex1". Actual: Exception ==='+er1);
+}
+if (c7!==4) $ERROR('#7.4: "finally" block must be evaluated');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A8.js
new file mode 100644
index 000000000..70773f9fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A8.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A8;
+ * @section: 12.14;
+ * @assertion: "try" with "catch" or "finally" statement within/without an "if" statement;
+ * @description: Throwing exception within an "if" statement;
+ */
+
+// CHECK#1
+var c1=1;
+try{
+ if(c1===1){
+ throw "ex1";
+ $ERROR('#1.1: throw "ex1" lead to throwing exception');
+ }
+ $ERROR('#1.2: throw "ex1" inside the "if" statement lead to throwing exception');
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#1.3: Exception ==="ex1". Actual: Exception ==='+er1);
+}
+
+// CHECK#2
+var c2=1;
+if(c2===1){
+ try{
+ throw "ex1";
+ $ERROR('#2.1: throw "ex1" lead to throwing exception');
+ }
+ catch(er1){
+ if(er1!="ex1") $ERROR('#2.2: Exception ==="ex1". Actual: Exception ==='+er1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T1.js
new file mode 100644
index 000000000..fdc80da99
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A9_T1;
+ * @section: 12.14;
+ * @assertion: "try" with "catch" or "finally" statement within/without an "do while" statement;
+ * @description: Loop within a "try" Block, from where exception is thrown;
+ */
+
+// CHECK#1
+var i=0;
+try{
+ do{
+ if(i===5) throw i;
+ i++;
+ }
+ while(i<10);
+}
+catch(e){
+ if(e!==5)$ERROR('#1: Exception ===5. Actual: Exception ==='+ e );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T2.js
new file mode 100644
index 000000000..343a24161
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T2.js
@@ -0,0 +1,121 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A9_T2;
+ * @section: 12.14;
+ * @assertion: "try" with "catch" or "finally" statement within/without an "do while" statement;
+ * @description: "try" statement within a loop, the statement contains "continue" statement;
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+do{
+ try{
+ c1+=1;
+ continue;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+}
+while(c1<2);
+if(fin!==1){
+ $ERROR('#1: "finally" block must be evaluated at "try{continue} catch finally" construction');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ continue;
+ }
+ finally{
+ fin2=1;
+ }
+ fin2=-1;
+}
+while(c2<2);
+if(fin2!==1){
+ $ERROR('#2: "finally" block must be evaluated at "try catch{continue} finally" construction');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ continue;
+ }
+ fin3=0;
+}
+while(c3<2);
+if(fin3!==1){
+ $ERROR('#3: "finally" block must be evaluated at "try catch finally{continue}" construction');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+do{
+ try{
+ c4+=1;
+ continue;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+}
+while(c4<2);
+if(fin4!==1){
+ $ERROR('#4: "finally" block must be evaluated at "try{continue} finally" construction');
+}
+
+// CHECK#5
+var c5=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c5+=1;
+ continue;
+ }
+}
+while(c5<2);
+if(c5!==2){
+ $ERROR('#5: "try catch{continue}" must work correctly');
+}
+
+// CHECK#6
+var c6=0,fin6=0;
+do{
+ try{
+ c6+=1;
+ throw "ex1"
+ }
+ finally{
+ fin6=1;
+ continue;
+ }
+ fin6=-1;
+}
+while(c6<2);
+if(fin6!==1){
+ $ERROR('#6.1: "finally" block must be evaluated');
+}
+if(c6!==2){
+ $ERROR('#6.2: "try finally{continue}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T3.js
new file mode 100644
index 000000000..0fdf97307
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T3.js
@@ -0,0 +1,157 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A9_T3;
+ * @section: 12.14;
+ * @assertion: "try" with "catch" or "finally" statement within/without an "do while" statement;
+ * @description: "try" statement within a loop, the statement contains "break" statement;
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+do{
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+ c1+=2;
+}
+while(c1<2);
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==1){
+ $ERROR('#1.2: "try{break}catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ }
+ c2+=2;
+ fin2=-1;
+}
+while(c2<2);
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==1){
+ $ERROR('#2.2: "try catch{break} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ break;
+ }
+ c3+=2;
+ fin3=0;
+}
+while(c3<2);
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==1){
+ $ERROR('#3.2: "try catch finally{break}" must work correctly');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+do{
+ try{
+ c4+=1;
+ break;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+ c4+=2;
+}
+while(c4<2);
+if(fin4!==1){
+ $ERROR('#4.1: "finally" block must be evaluated');
+}
+if(c4!==1){
+ $ERROR('#4.2: "try{break} finally" must work correctly');
+}
+
+// CHECK#5
+var c5=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ break;
+ }
+}
+while(c5<2);
+if(c5!==0){
+ $ERROR('#5: "try catch{break}" must work correctly');
+}
+
+// CHECK#6
+var c6=0;
+do{
+ try{
+ c6+=1;
+ break;
+ }
+ catch(er1){}
+ c6+=2;
+}
+while(c6<2);
+if(c6!==1){
+ $ERROR('#6: "try{break} catch" must work correctly');
+}
+
+// CHECK#7
+var c7=0,fin7=0;
+try{
+ do{
+ try{
+ c7+=1;
+ throw "ex1";
+ }
+ finally{
+ fin7=1;
+ break;
+ }
+ fin7=-1;
+ c7+=2;
+ }
+ while(c7<2);
+}
+catch(ex1){
+ c7=10;
+}
+if(fin7!==1){
+ $ERROR('#7.1: "finally" block must be evaluated');
+}
+if(c7!==1){
+ $ERROR('#7.2: try finally{break} error');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T4.js
new file mode 100644
index 000000000..72fbc4436
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T4.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A9_T4;
+ * @section: 12.14;
+ * @assertion: "try" with "catch" or "finally" statement within/without an "do while" statement;
+ * @description: "try" statement within a loop, the statement contains "continue" and "break" statements;
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+do{
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ continue;
+ }
+ fin=-1;
+ c1+=2;
+}
+while(c1<2);
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==2){
+ $ERROR('#1.2: "try{break} catch finally{continue}" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ continue;
+ }
+ c2+=2;
+ fin2=-1;
+}
+while(c2<2);
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==2){
+ $ERROR('#2.2: "try catch{break} finally{continue}" must work correctly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T5.js
new file mode 100644
index 000000000..1aaa65ad5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A9_T5.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.14_A9_T5;
+ * @section: 12.14;
+ * @assertion: "try" with "catch" or "finally" statement within/without an "do while" statement;
+ * @description: Checking if exceptions are thrown correctly from wherever of loop body;
+ */
+
+
+// CHECK#1
+var c=0, i=0;
+var fin=0;
+do{
+ i+=1;
+ try{
+ if(c===0){
+ throw "ex1";
+ $ERROR('#1.1: throw "ex1" lead to throwing exception');
+ }
+ c+=2;
+ if(c===1){
+ throw "ex2";
+ $ERROR('#1.2: throw "ex2" lead to throwing exception');
+ }
+ }
+ catch(er1){
+ c-=1;
+ continue;
+ $ERROR('#1.3: "try catch{continue} finally" must work correctly');
+ }
+ finally{
+ fin+=1;
+ }
+}
+while(i<10);
+if(fin!==10){
+ $ERROR('#1.4: "finally" block must be evaluated');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A1.js
new file mode 100644
index 000000000..e9f3f79e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.1_A1;
+* @section: 12.1;
+* @assertion: The production Block { } in strict code can't contain
+* function declaration;
+* @description: Trying to declare function at the Block statement;
+* @negative SyntaxError;
+*/
+
+"use strict";
+if (!strict_mode) { throw new SyntaxError('unspecified case'); }
+
+{
+ function __func(){}
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A2.js
new file mode 100644
index 000000000..bfe3e1e37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A2.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.1_A2;
+* @section: 12.1;
+* @assertion: The production StatementList Statement is evaluated as follows
+* 1. Evaluate Statement.
+* 2. If an exception was thrown, return (throw, V, empty) where V is the exception;
+* @description: Throwing exception within a Block;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ x();
+ $ERROR('#1: "x()" lead to throwing exception');
+} catch (e) {
+ $PRINT(e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ throw "catchme";
+ $ERROR('#2: throw "catchme" lead to throwing exception');
+} catch (e) {
+ if (e!=="catchme") {
+ $ERROR('#2.1: Exception === "catchme". Actual: Exception ==='+ e );
+ }
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A4_T1.js
new file mode 100644
index 000000000..40e155826
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A4_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.1_A4_T1;
+* @section: 12.1;
+* @assertion: The production Block can't be inside of expression;
+* @description: Checking if execution of "y={__func}()" fails;
+* @negative;
+*/
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+y={__func}();
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A4_T2.js
new file mode 100644
index 000000000..95bccaf05
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A4_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.1_A4_T2;
+* @section: 12.1;
+* @assertion: The production Block can't be inside of expression;
+* @description: Checking if execution of "y={x}" fails;
+* @negative;
+*/
+
+x=1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+y={x};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A5.js
new file mode 100644
index 000000000..94a236751
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.1_Block/S12.1_A5.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.1_A5;
+* @section: 12.1;
+* @assertion: StatementList: StatementList Statement inside the Block is evaluated from left to right;
+* @description: Throwing exceptions within embedded/sequence Blocks;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ throw 1;
+ throw 2;
+ throw 3;
+ $ERROR('1.1: throw 1 lead to throwing exception');
+} catch (e) {
+ if (e!==1) {
+ $ERROR('#1.2: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ {
+ throw 1;
+ throw 2;
+ }
+ throw 3;
+ $ERROR('#2.1: throw 1 lead to throwing exception');
+} catch (e) {
+ if (e!==1) {
+ $ERROR('#2.2: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ throw 1;
+ {
+ throw 2;
+ throw 3;
+ }
+ $ERROR('#3.1: throw 1 lead to throwing exception');
+} catch (e) {
+ if (e!==1) {
+ $ERROR('#3.2: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+////////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A1.js
new file mode 100644
index 000000000..3dfb7f792
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A1;
+* @section: 12.2;
+* @assertion: Variables are created when the program is entered. Variables are initialised to "undefined"
+* when created. A variable with an Initialiser is assigned the value of its AssignmentExpression when the
+* VariableStatement is executed, not when the variable is created;
+* @description: Creating variables after entering the execution scope;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __x = __x;
+ __y = __x ? "good fellow" : "liar"; // __y assigned to "liar" since __x undefined
+ __z = __z === __x ? 1 : 0; // __z assigned to 1 since both __x and __z are undefined
+} catch (e) {
+ $ERROR('#1: Using declarated variable before it declaration is admitted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ __something__undefined = __something__undefined;
+ $ERROR('#2: "__something__undefined = __something__undefined" lead to throwing exception');
+} catch(e){
+ $PRINT(e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ((__y !== "liar")&(__z !== 1)) {
+ $ERROR('#3: (__y === "liar") and (__z === 1). Actual: __y ==='+__y+' and __z ==='+__z );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __x, __y = true, __z = __y ? "smeagol" : "golum";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (!__y&!(__z = "smeagol")) {
+ $ERROR('#4: A variable with an Initialiser is assigned the value of its AssignmentExpression when the VariableStatement is executed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A10.js
new file mode 100644
index 000000000..85516e7c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A10;
+* @section: 12.2;
+* @assertion: "var" statement within "for" statement is allowed;
+* @description: Declaring variable within a "for" IterationStatement;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __ind=__ind;
+} catch (e) {
+ $ERROR('#1: var inside "for" is admitted '+e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+for (var __ind;;){
+ break;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A11.js
new file mode 100644
index 000000000..a011f166c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A11.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A11;
+* @section: 12.2;
+* @assertion: When using property attributes, {ReadOnly} is not used;
+* @description: Changing variable value using property attributes;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+this['__declared__var'] = "baloon";
+if (this['__declared__var'] !== "baloon") {
+ $ERROR('#1: this[\'__declared__var\'] === "baloon". Actual: this[\'__declared__var\'] ==='+ this['__declared__var'] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__declared__var !== "baloon") {
+ $ERROR('#2: __declared__var === "baloon". Actual: __declared__var ==='+ __declared__var );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __declared__var;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A12.js
new file mode 100644
index 000000000..8f76e5a6d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A12.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A12;
+* @section: 12.2;
+* @assertion: VariableDeclaration within "do-while" loop is allowed;
+* @description: Declaring variable within "do-while" statement;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ x=x;
+} catch (e) {
+ $ERROR('#1: Declaration variable inside "do-while" statement is admitted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+do var x; while (false);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A2.js
new file mode 100644
index 000000000..c51ad25ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A2.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A2;
+* @section: 12.2;
+* @assertion: Variables are defined with global scope (that is, they are created as members of the global object, as described in 10.1.3) using property attributes { DontDelete};
+* @description: Checking if deleting global variables that have the attributes {DontDelete} fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete(__variable)) {
+ $ERROR('#1: delete(__variable)===false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (delete(this["__variable"])) {
+ $ERROR('#2: delete(this["__variable"])===false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+var __variable;
+var __variable = "defined";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (delete(__variable) | delete(this["__variable"])) {
+ $ERROR('#3: (delete(__variable) | delete(this["__variable"]))===false' );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if ((__variable !== "defined")|(this["__variable"] !=="defined")) {
+ $ERROR('#4: __variable === "defined" and this["__variable"] ==="defined"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A3.js
new file mode 100644
index 000000000..5f0e4bfbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A3.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A3;
+* @section: 12.2;
+* @assertion: FunctionDeclaration produces a new scope;
+* @description: Using Global scope and Function scope together;
+*/
+
+var __var = "OUT";
+
+(function(){
+ var __var ="IN";
+ (function(){__var = "INNER_SPACE";})();
+ (function(){var __var = "INNER_SUN";})();
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#1
+ if (__var !== "INNER_SPACE") {
+ $ERROR('#1: __var === "INNER_SPACE". Actual: __var ==='+ __var );
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__var !== "OUT") {
+ $ERROR('#2: __var === "OUT". Actual: __var ==='+ __var );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+(function(){
+ __var ="IN";
+ (function(){__var = "INNERED"})();
+ (function(){var __var = "INNAGER"})();
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#3
+ if (__var!=="INNERED") {
+ $ERROR('#3: __var==="INNERED". Actual: __var==='+ __var );
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__var!=="INNERED") {
+ $ERROR('#4: __var==="INNERED". Actual: __var==='+ __var );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A4.js
new file mode 100644
index 000000000..7a93d7403
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A4;
+* @section: 12.2;
+* @assertion: Unicode characters in variable Identifier are allowed;
+* @description: Create and use unicode characters in variable Identifier;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __var=__var;
+} catch (e) {
+ $ERROR('#1: Unicode characters in variable Identifier allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var \u005f\u005f\u0076\u0061\u0072 = 1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__var !== 1) {
+ $ERROR('#2: __var === 1. Actual: __var ==='+ __var );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A5.js
new file mode 100644
index 000000000..0943ff5bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A5.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A5;
+* @section: 12.2;
+* @assertion: VariableDeclaration within Eval statement is initialized as the program reaches the eval statement;
+* @description: Executing eval("var x");
+*/
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ x=x;
+ $ERROR('#1: "x=x" lead to throwing exception');
+}catch(e){
+ $PRINT(e.message);
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+eval("var x");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ x=x;
+}catch(e){
+ $ERROR('#2: VariableDeclaration inside Eval statement is initialized when program reaches the eval statement '+e.message);
+};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A6_T1.js
new file mode 100644
index 000000000..066e946a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A6_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A6_T1;
+* @section: 12.2;
+* @assertion: VariableDeclaration within "try-catch" statement is allowed;
+* @description: Declaring variable within "try-catch" statement;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ intry__var=intry__var;
+}catch(e){
+ $ERROR('#1: Variable declaration inside "try" block is admitted');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ incatch__var=incatch__var;
+}catch(e){
+ $ERROR('#2: Variable declaration inside "catch" block is admitted');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+try{
+ var intry__var;
+}catch(e){
+ var incatch__var;
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A6_T2.js
new file mode 100644
index 000000000..d0eef8190
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A6_T2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A6_T2;
+* @section: 12.2;
+* @assertion: VariableDeclaration within "try-catch" statement is allowed;
+* @description: Declaring variables within "try-catch" statement;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ intry__intry__var=intry__intry__var;
+ intry__incatch__var=intry__incatch__var;
+ incatch__intry__var=incatch__intry__var;
+ incatch__incatch__var=incatch__incatch__var;
+}catch(e){
+ $ERROR('#1: Variable declaration inside "try-catch" block is admitted');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+try{
+ try {
+ var intry__intry__var;
+ } catch (e) {
+ var intry__incatch__var;
+ }
+}catch(e){
+ try {
+ var incatch__intry__var;
+ } catch (e) {
+ var incatch__incatch__var;
+ }
+
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A7.js
new file mode 100644
index 000000000..5cfa65f78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A7.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A7;
+* @section: 12.2;
+* @assertion: VariableDeclaration within "for" statement is allowed;
+* @description: Declaring variable within "for" statement;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ infor_var = infor_var;
+}catch(e){
+ $ERROR('#1: Variable declaration inside "for" loop is admitted');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+for (;;){
+ break;
+ var infor_var;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T1.js
new file mode 100644
index 000000000..c9990a961
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A8_T1;
+* @section: 12.2;
+* @assertion: Only AssignmentExpression is admitted when variable is initialized;
+* @description: Checking if execution of "var x += 1" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x += 1;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T2.js
new file mode 100644
index 000000000..25a140926
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A8_T2;
+* @section: 12.2;
+* @assertion: Only AssignmentExpression is admitted when variable is initialized;
+* @description: Checking if execution of "var x | true" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x | true;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T3.js
new file mode 100644
index 000000000..1873eacb8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A8_T3;
+* @section: 12.2;
+* @assertion: Only AssignmentExpression is admitted when variable is initialized;
+* @description: Checking if execution of "var x && 1" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x && 1;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T4.js
new file mode 100644
index 000000000..e7a2a5f93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A8_T4;
+* @section: 12.2;
+* @assertion: Only AssignmentExpression is admitted when variable is initialized;
+* @description: Checking if execution of "var x++" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x++;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T5.js
new file mode 100644
index 000000000..b03b1bb28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T5.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A8_T5;
+* @section: 12.2;
+* @assertion: Only AssignmentExpression is admitted when variable is initialized;
+* @description: Checking if execution of "var --x" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var --x;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T6.js
new file mode 100644
index 000000000..7244cab65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A8_T6;
+* @section: 12.2;
+* @assertion: Only AssignmentExpression is admitted when variable is initialized;
+* @description: Checking if execution of "var x*1" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x*1;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T7.js
new file mode 100644
index 000000000..bb579d3b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T7.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A8_T7;
+* @section: 12.2;
+* @assertion: Only AssignmentExpression is admitted when variable is initialized;
+* @description: Checking if execution of "var x>>1" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x>>1;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T8.js
new file mode 100644
index 000000000..f6a468c86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A8_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A8_T8;
+* @section: 12.2;
+* @assertion: Only AssignmentExpression is admitted when variable is initialized;
+* @description: Checking if execution of "var x in __arr" fails;
+* @negative;
+*/
+
+__arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x in __arr;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A9.js
new file mode 100644
index 000000000..2dae7e7ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.2_Variable_Statement/S12.2_A9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.2_A9;
+* @section: 12.2;
+* @assertion: When using property attributes, {DontEnum} is not used;
+* @description: Enumerating property attributes of "this" and then searching for the declared variable;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (__prop in this){
+ if (__prop === "__declared__var")
+ enumed=true;
+}
+if (!(enumed)) {
+ $ERROR('#1: When using property attributes, {DontEnum} not used');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __declared__var;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.3_Empty_Statement/S12.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.3_Empty_Statement/S12.3_A1.js
new file mode 100644
index 000000000..50a307246
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.3_Empty_Statement/S12.3_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.
+
+/**
+* @name: S12.3_A1;
+* @section: 12.3;
+* @assertion: The production EmptyStatement ; is evaluated as follows Return (normal, empty, empty);
+* @description: Using EmptyStatement ;;
+*/
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;; ;;;;;; ;; ;; ;;;;;; ;;;;;;;; ;; ;; ;;;;;
+;;;;; ;; ;;;; ;;;; ;; ;; ;; ;; ;; ;;;;;
+;;;;; ;;;; ;; ;;;; ;; ;;;;;; ;; ;;;; ;;;;;
+;;;;; ;; ;; ;; ;; ;; ;; ;; ;;;;;
+;;;;; ;;;;;; ;; ;; ;; ;; ;; ;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A1.js
new file mode 100644
index 000000000..7d15abbb0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A1.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.
+
+/**
+* @name: S12.4_A1;
+* @section: 12.4;
+* @assertion: An ExpressionStatement can not start with the function keyword because that might make it ambiguous with a FunctionDeclaration;
+* @description: Checking if execution of "function(){}()" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+function(){}();
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A2_T1.js
new file mode 100644
index 000000000..1309c226e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.4_A2_T1;
+* @section: 12.4;
+* @assertion: The production ExpressionStatement : [lookahead \notin {{, function}] Expression; is evaluated as follows:
+* 1. Evaluate Expression.
+* 2. Call GetValue(Result(1)).
+* 3. Return (normal, Result(2), empty);
+* @description: Checking by using eval "(eval("x+1+x==1"))";
+*/
+
+x=1;
+
+__evaluated = eval("x+1+x==1");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== false) {
+ $ERROR('#1: __evaluated === false. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__evaluated = eval("1+1+1==1");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== false) {
+ $ERROR('#2: __evaluated === false. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A2_T2.js
new file mode 100644
index 000000000..0628fe559
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.4_Expression_Statement/S12.4_A2_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.4_A2_T2;
+* @section: 12.4;
+* @assertion: The production ExpressionStatement : [lookahead \notin {{, function}] Expression; is evaluated as follows:
+* 1. Evaluate Expression.
+* 2. Call GetValue(Result(1)).
+* 3. Return (normal, Result(2), empty);
+* @description: Checking by using eval(eval(x), where x is any string);
+*/
+
+x="5+1|0===0";
+
+__evaluated = eval(x);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== 7) {
+ $ERROR('#1: __evaluated === 7. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__evaluated = eval("2*"+x+">-1");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 11) {
+ $ERROR('#2: __evaluated === 11. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.1_T1.js
new file mode 100644
index 000000000..ff85fa84f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.1_T1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A1.1_T1;
+* @section: 12.5;
+* @assertion: 0, null, undefined, false, empty string, NaN in expression is evaluated to false;
+* @description: Using "if" without "else" construction;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+
+if(0)
+ $ERROR('#1: 0 in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(false)
+ $ERROR('#2: false in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(null)
+ $ERROR('#3: null in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(undefined)
+ $ERROR('#4: undefined in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if("")
+ $ERROR('#5: empty string in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if(NaN)
+ $ERROR('#5: NaN in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.1_T2.js
new file mode 100644
index 000000000..0a4207d9d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.1_T2.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A1.1_T2;
+* @section: 12.5;
+* @assertion: 0, null, undefined, false, empty string, NaN in expression is evaluated to false;
+* @description: Using "if/else" construction;
+*/
+
+var c=0;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(0)
+ $ERROR('#1.1: 0 in expression is evaluated to false ');
+else
+ c++;
+if (c!=1) $ERROR('#1.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(false)
+ $ERROR('#2.1: false in expression is evaluated to false ');
+else
+ c++;
+if (c!=2) $ERROR('#2.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(null)
+ $ERROR('#3.1: null in expression is evaluated to false ');
+else
+ c++;
+if (c!=3) $ERROR('#3.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(undefined)
+ $ERROR('#4.1: undefined in expression is evaluated to false ');
+else
+ c++;
+if (c!=4) $ERROR('#4.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if("")
+ $ERROR('#5.1: empty string in expression is evaluated to false ');
+else
+ c++;
+if (c!=5) $ERROR('#5.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if(NaN)
+ $ERROR('#6.1: NaN in expression is evaluated to false ');
+else
+ c++;
+if (c!=6) $ERROR('#6.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.2_T1.js
new file mode 100644
index 000000000..aed99c549
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.2_T1.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A1.2_T1;
+* @section: 12.5;
+* @assertion: 1, true, non-empty string and others in expression is evaluated to true when using operator "new";
+* @description: Using "if" without "else" construction;
+*/
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(new Number(1)))
+ $ERROR('#1: new 1 in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(new Boolean(true)))
+ $ERROR('#2: new true in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!(new String("1")))
+ $ERROR('#3: new "1" in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(!(new String("A")))
+ $ERROR('#4: new "A" in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if(!(new Boolean(false)))
+ $ERROR('#2: new false in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if(!(new Number(NaN)))
+ $ERROR('#6: new NaN in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if(!(new Number(null)))
+ $ERROR('#7: new null in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#8
+if(!(new String(undefined)))
+ $ERROR('#8: new undefined in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#9
+if(!(new String("")))
+ $ERROR('#9: new empty string in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.2_T2.js
new file mode 100644
index 000000000..c7b07179d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1.2_T2.js
@@ -0,0 +1,100 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A1.2_T2;
+* @section: 12.5;
+* @assertion: 1, true, non-empty string and others in expression is evaluated to true when using operator "new";
+* @description: Using "if/else" construction;
+*/
+
+var c=0;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(new Number(1)))
+ $ERROR('#1.1: new 1 in expression is evaluated to true');
+else
+ c++;
+if (c!=1) $ERROR('#1.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(new Boolean(true)))
+ $ERROR('#2.1: new true in expression is evaluated to true');
+else
+ c++;
+if (c!=2) $ERROR('#2.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!(new String("1")))
+ $ERROR('#3.1: new "1" in expression is evaluated to true');
+else
+ c++;
+if (c!=3) $ERROR('#3.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(!(new String("A")))
+ $ERROR('#4.1: new "A" in expression is evaluated to true');
+else
+ c++;
+if (c!=4) $ERROR('#4.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if(!(new Boolean(false)))
+ $ERROR('#5.1: new false in expression is evaluated to true ');
+else
+ c++;
+if (c!=5) $ERROR('#5.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if(!(new Number(NaN)))
+ $ERROR('#6.1: new NaN in expression is evaluated to true ');
+else
+ c++;
+if (c!=6) $ERROR('#6.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if(!(new Number(null)))
+ $ERROR('#7.1: new null in expression is evaluated to true ');
+else
+ c++;
+if (c!=7) $ERROR('#7.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#8
+if(!(new String(undefined)))
+ $ERROR('#8.1: new undefined in expression is evaluated to true ');
+else
+ c++;
+if (c!=8) $ERROR('#8.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#9
+if(!(new String("")))
+ $ERROR('#9.1: new empty string in expression is evaluated to true ');
+else
+ c++;
+if (c!=9) $ERROR('#9.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A10_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A10_T1.js
new file mode 100644
index 000000000..bc714d2f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A10_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A10_T1;
+* @section: 12.5;
+* @assertion: Function expession inside the "if" expression is allowed;
+* @description: Using function expession(function __func(){return 0;}) inside the "if" expression ;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if(function __func(){return 0;}){
+ ;
+}else {
+ $ERROR('#1: Function expession inside the "if" expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A10_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A10_T2.js
new file mode 100644
index 000000000..11e90e851
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A10_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A10_T2;
+* @section: 12.5;
+* @assertion: Function expession inside the "if" expression is allowed;
+* @description: Using function expession "function __func(){return 0;}()" within "if" expression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if(function __func(){return 0;}()){
+ $ERROR('#1: Function expession inside the if expression is allowed');
+}else {
+ ;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A11.js
new file mode 100644
index 000000000..5b537369f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A11.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A11;
+* @section: 12.5;
+* @assertion: {} within the "if" expression is not allowed;
+* @description: Checking if execution of "if({1})" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if({1})
+ {
+ ;
+ }else
+ {
+ ;
+ }
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T1.js
new file mode 100644
index 000000000..f3e5e86a9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A12_T1;
+* @section: 12.5;
+* @assertion: Embedded "if/else" constructions are allowed;
+* @description: Using embedded "if/else" into "if/else" constructions;
+*/
+
+//CHECK# 1
+if(true)
+ if (false)
+ $ERROR('#1.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ ;
+else
+ if (true)
+ $ERROR('#1.2: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#1.3: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 2
+if(true)
+ if (true)
+ ;
+ else
+ $ERROR('#2.1: At embedded "if/else" constructions engine must select right branches');
+else
+ if (true)
+ $ERROR('#2.2: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#2.3: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 3
+if(false)
+ if (true)
+ $ERROR('#3.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#3.2: At embedded "if/else" constructions engine must select right branches');
+else
+ if (true)
+ ;
+ else
+ $ERROR('#3.3: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 4
+if(false)
+ if (true)
+ $ERROR('#4.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#4.2: At embedded "if/else" constructions engine must select right branches');
+else
+ if (false)
+ $ERROR('#4.3: At embedded "if/else" constructions engine must select right branches');
+ else
+ ;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T2.js
new file mode 100644
index 000000000..a4d020030
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A12_T2;
+* @section: 12.5;
+* @assertion: Embedded "if/else" constructions are allowed;
+* @description: Using embedded "if" into "if/else" constructions;
+*/
+
+//CHECK# 1
+if(true){
+ if (false)
+ $ERROR('#1.1: At embedded "if/else" constructions engine must select right branches');
+}
+else{
+ if (true)
+ $ERROR('#1.2: At embedded "if/else" constructions engine must select right branches');
+}
+
+//CHECK# 2
+if(true){
+ if (true)
+ ;
+}
+else{
+ if (true)
+ $ERROR('#2.2: At embedded "if/else" constructions engine must select right branches');
+}
+
+//CHECK# 3
+if(false){
+ if (true)
+ $ERROR('#3.1: At embedded "if/else" constructions engine must select right branches');
+}
+else{
+ if (true)
+ ;
+}
+
+//CHECK# 4
+if(false){
+ if (true)
+ $ERROR('#4.1: At embedded "if/else" constructions engine must select right branches');
+}
+else{
+ if (false)
+ $ERROR('#4.3: At embedded "if/else" constructions engine must select right branches');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T3.js
new file mode 100644
index 000000000..cc91974b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A12_T3;
+* @section: 12.5;
+* @assertion: Embedded "if/else" constructions are allowed;
+* @description: Using embedded "if/else" into "if" without "else" constructions;
+*/
+
+//CHECK# 1
+if(true)
+ if (false)
+ $ERROR('#1.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ ;
+
+//CHECK# 2
+if(true)
+ if (true)
+ ;
+ else
+ $ERROR('#2.1: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 3
+if(false)
+ if (true)
+ $ERROR('#3.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#3.2: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 4
+if(false)
+ if (true)
+ $ERROR('#4.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#4.2: At embedded "if/else" constructions engine must select right branches');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T4.js
new file mode 100644
index 000000000..6880ebaed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A12_T4.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A12_T4;
+* @section: 12.5;
+* @assertion: Embedded "if/else" constructions are allowed;
+* @description: Using embedded "if" into "if" constructions;
+*/
+
+//CHECK# 1
+if(true)
+ if (false)
+ $ERROR('#1.1: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 2
+var c=0;
+if(true)
+ if (true)
+ c=2;
+if (c!==2)
+ $ERROR('#2: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 3
+if(false)
+ if (true)
+ $ERROR('#3.1: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 4
+if(false)
+ if (true)
+ $ERROR('#4.1: At embedded "if/else" constructions engine must select right branches');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1_T1.js
new file mode 100644
index 000000000..1ed297216
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1_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.
+
+/**
+* @name: S12.5_A1_T1;
+* @section: 12.5;
+* @assertion: 1, true, non-empty string in expression is evaluated to true;
+* @description: Using "if" without "else" construction;
+*/
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(1))
+ $ERROR('#1: 1 in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(true))
+ $ERROR('#2: true in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!("1"))
+ $ERROR('#3: "1" in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(!("A"))
+ $ERROR('#4: "A" in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1_T2.js
new file mode 100644
index 000000000..c07c94bf7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A1_T2.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A1_T2;
+* @section: 12.5;
+* @assertion: 1, true, non-empty string in expression is evaluated to true;
+* @description: Using "if/else" construction;
+*/
+
+var c=0;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(1))
+ $ERROR('#1.1: 1 in expression is evaluated to true');
+else
+ c++;
+if (c!=1) $ERROR('#1.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(true))
+ $ERROR('#2.1: true in expression is evaluated to true');
+else
+ c++;
+if (c!=2) $ERROR('#2.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!("1"))
+ $ERROR('#3.1: "1" in expression is evaluated to true');
+else
+ c++;
+if (c!=3) $ERROR('#3.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(!("A"))
+ $ERROR('#4.1: "A" in expression is evaluated to true');
+else
+ c++;
+if (c!=4) $ERROR('#4.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A2.js
new file mode 100644
index 000000000..39cce3eaf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A2.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A2;
+* @section: 12.5;
+* @assertion: In the "if" Statement eval in Expression is admitted;
+* @description: Checking by using eval "eval("true")";
+* @negative;
+*/
+
+if (eval("true")) $FAIL('#1: In the "if" Statement eval as Expression is admitted');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A3.js
new file mode 100644
index 000000000..44f751989
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A3;
+* @section: 12.5;
+* @assertion: When the production "IfStatement: if ( Expression ) Statement else Statement" is evaluated, Expression is evaluated first;
+* @description: The Expression is "(function(){throw 1})()";
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ if ((function(){throw 1})()) abracadabra
+} catch (e) {
+ if (e !== 1) {
+ $ERROR('#1: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ if ((function(){throw 1})()) abracadabra; else blablachat;
+} catch (e) {
+ if (e !== 1) {
+ $ERROR('#2: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A4.js
new file mode 100644
index 000000000..ff3d6c9f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A4;
+* @section: 12.5;
+* @assertion: When the production "IfStatement: if ( Expression ) Statement else Statement" is evaluated, Statement(s) is(are) evaluated second;
+* @description: The first statement is "(function(){throw "instatement"})()";
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ if (true) (function(){throw "instatement"})();
+ $FAIL("#1 failed")
+} catch (e) {
+ if (e !== "instatement") {
+ $ERROR('#1: Exception === "instatement". Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ if (false) (function(){throw "truebranch"})(); (function(){throw "missbranch"})();
+ $FAIL("#2 failed")
+} catch (e) {
+ if (e !== "missbranch") {
+ $ERROR('#2: Exception === "missbranch". Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A5.js
new file mode 100644
index 000000000..9bb131cec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A5.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A5;
+* @section: 12.5;
+* @assertion: FunctionDeclaration inside the "if" Expression is evaluated as true and function will not be declarated;
+* @description: The "if" Expression is "function __func(){throw "FunctionExpression";}";
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __func=__func;
+ $ERROR('#1: "__func=__func" lead to throwing exception');
+} catch (e) {
+ ;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ if(function __func(){throw "FunctionExpression";}) (function(){throw "TrueBranch"})(); else (function(){"MissBranch"})();
+} catch (e) {
+ if (e !== "TrueBranch") {
+ $ERROR('#2: Exception ==="TrueBranch". Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ __func=__func;
+ $ERROR('#3: "__func=__func" lead to throwing exception');
+} catch (e) {
+ ;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A6_T1.js
new file mode 100644
index 000000000..847de9f66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A6_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A6_T1;
+* @section: 12.5;
+* @assertion: In the If statement expression must be enclosed in braces;
+* @description: Checking if execution of "if true" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if true;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A6_T2.js
new file mode 100644
index 000000000..1a96746a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A6_T2.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A6_T2;
+* @section: 12.5;
+* @assertion: In the If statement expression must be enclosed in braces;
+* @description: Checking if execution of "if false" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if false;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A7.js
new file mode 100644
index 000000000..7d213f3c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A7.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A7;
+* @section: 12.5;
+* @assertion: In the "if" statement empty statement is allowed and is evaluated to "undefined";
+* @description: Checking by using eval "eval("if(1);"))";
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var __evaluated = eval("if(1);");
+ if (__evaluated !== undefined) {
+ $ERROR('#1: __evaluated === undefined. Actual: __evaluated ==='+ __evaluated );
+ }
+
+} catch (e) {
+ $ERROR('#1.1: "__evaluated = eval("if(1);")" does not lead to throwing exception');
+
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A8.js
new file mode 100644
index 000000000..9668ca363
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A8.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.
+
+/**
+* @name: S12.5_A8;
+* @section: 12.5;
+* @assertion: In the "if" Statement empty expression is not allowed;
+* @description: Checking if execution of "if()" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if();
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T1.js
new file mode 100644
index 000000000..498bd3578
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A9_T1;
+* @section: 12.5;
+* @assertion: Function declaration within an "if" statement in strict
+* code is not allowed;
+* @description: Declaring function within an "if" statement;
+* @negative SyntaxError;
+*/
+
+"use strict";
+if (!strict_mode) { throw new SyntaxError('unspecified case'); }
+
+if (true) {
+ function __func(){};
+} else {
+ function __func(){};
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T2.js
new file mode 100644
index 000000000..ae979d8f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A9_T2;
+* @section: 12.5;
+* @assertion: Function declaration within an "if" statement in strict
+* code is not allowed;
+* @description: Declaring function within an "if" that is declared
+* within the strict function;
+* @negative SyntaxError;
+*/
+
+(function(){
+"use strict";
+
+if (true) {
+ function __func(){};
+} else {
+ function __func(){};
+}
+
+});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T3.js
new file mode 100644
index 000000000..f6c7aa616
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.5_The_if_Statement/S12.5_A9_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.5_A9_T3;
+* @section: 12.5;
+* @assertion: Function declaration within an "if" statement is not allowed;
+* @description: Declaring function within an "if" statement that is declared within the function declaration;
+* @negative;
+*/
+
+function(){
+
+if (true) {
+ function __func(){};
+} else {
+ function __func(){};
+}
+
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A1.js
new file mode 100644
index 000000000..e0436e37a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A1.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A1;
+* @section: 12.6.1;
+* @assertion: When the production "do Statement while ( Expression )" is evaluated, Statement is evaluated first;
+* @description: Evaluating various Expressions;
+*/
+
+var __in__do;
+
+do __in__do=1; while ( false );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do!==1) {
+ $ERROR('#1: false evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+do __in__do=2; while ( 0 );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__in__do!==2) {
+ $ERROR('#2: 0 evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+do __in__do=3; while ( "" );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__in__do!==3) {
+ $ERROR('#3: "" evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A10.js
new file mode 100644
index 000000000..cfde1eab4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A10.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A10;
+* @section: 12.6.1, 13;
+* @assertion: FunctionExpression within a "do-while" statement is allowed, but no function with the given name will appear in the global context;
+* @description: Also this a test on FunctionExpression;
+*/
+
+var check = 0;
+do {
+ if(typeof(f) === "function"){
+ check = -1;
+ break;
+ } else {
+ check = 1;
+ break;
+ }
+} while(function f(){});
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (check !== 1) {
+ $ERROR('#1: FunctionExpression within a "do-while" statement is allowed, but no function with the given name will appear in the global context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A11.js
new file mode 100644
index 000000000..965524f40
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A11.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A11;
+* @section: 12.6.1;
+* @assertion: Block "{}" in a "do-while" Expression is evaluated to true;
+* @description: Checking if execution of "do {} while({})" passes;
+*/
+
+do {
+ var __in__do=1;
+ if(__in__do)break;
+} while({});
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do !== 1) {
+ $ERROR('#1: "{}" in do-while expression evaluates to true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A12.js
new file mode 100644
index 000000000..c47400ca4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A12.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.
+
+/**
+* @name: S12.6.1_A12;
+* @section: 12.6.1;
+* @assertion: Any statement within "do-while" construction must be a compound;
+* @description: Checking if execution of "do var x=1; var y =2; while (0)" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do var x=1; var y =2; while (0);
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T1.js
new file mode 100644
index 000000000..28e118c87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A13_T1;
+* @section: 12.6.1, 13;
+* @assertion: FunctionDeclaration within a "do-while" Block in strict
+* code is not allowed;
+* @description: Declaring function within a "do-while" loop;
+* @negative SyntaxError;
+*/
+
+"use strict";
+if (!strict_mode) { throw new SyntaxError('unspecified case'); }
+
+do{
+ function __func(){};
+} while(0);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T2.js
new file mode 100644
index 000000000..78cd75881
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A13_T2;
+* @section: 12.6.1, 13;
+* @assertion: FunctionDeclaration within a "do-while" Block in strict
+* code is not allowed;
+* @description: Declaring a function within a "do-while" loop that is
+* within a strict function;
+* @negative SyntaxError;
+*/
+
+(function(){
+"use strict";
+do{
+ function __func(){};
+}while(0);
+
+});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T3.js
new file mode 100644
index 000000000..35c94b10a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A13_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A13_T3;
+* @section: 12.6.1, 13;
+* @assertion: FunctionDeclaration within a "do-while" Block is not allowed;
+* @description: Declaring a function within a "do-while" loop that is within a function declaration itself;
+* @negative;
+*/
+
+function(){
+
+do{
+ function __func(){};
+}while(0);
+
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A14_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A14_T1.js
new file mode 100644
index 000000000..81261187d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A14_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A14_T1;
+* @section: 12.6.1, 13;
+* @assertion: FunctionExpression within a "do-while" Expression is allowed;
+* @description: Using FunctionExpression "function __func(){return 0;}" as an Expression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+do{
+ var __reached = 1;
+ break;
+}while(function __func(){return 0;});
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== 1) {
+ $ERROR('#2: function expession inside of do-while expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A14_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A14_T2.js
new file mode 100644
index 000000000..e02bc250a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A14_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A14_T2;
+* @section: 12.6.1;
+* @assertion: FunctionExpression within a "do-while" Expression is allowed;
+* @description: Using FunctionExpression "function __func(){return 0;}()" as an Expression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+do{
+ var __reached = 1;
+ break;
+}while(function __func(){return 0;}());
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== 1) {
+ $ERROR('#2: function expession inside of do-while expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A15.js
new file mode 100644
index 000000000..4c34d8a1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A15.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A15;
+* @section: 12.6.1;
+* @assertion: Block within a "do-while" Expression is not allowed;
+* @description: Using "{0}" Block as an Expression;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+do{
+ ;
+}while({0});
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A2.js
new file mode 100644
index 000000000..0d15c34b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A2;
+* @section: 12.6.1;
+* @assertion: While evaluating "do Statement while ( Expression )", Statement is evaluated first and only after it is done Expression is checked;
+* @description: Evaluating Statement with error Expression;
+*/
+
+try {
+ do __in__do = "reached"; while (abbracadabra);
+ $ERROR('#1: \'do __in__do = "reached"; while (abbracadabra)\' lead to throwing exception');
+} catch (e) {}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do !== "reached") {
+ $ERROR('#1.1: __in__do === "reached". Actual: __in__do ==='+ __in__do );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A3.js
new file mode 100644
index 000000000..a949f53ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.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.
+
+/**
+* @name: S12.6.1_A3;
+* @section: 12.6.1;
+* @assertion: When the production "do Statement while ( Expression )" is evaluated, then (normal, V, empty) is returned;
+* @description: Using eval "eval("do __in__do=1; while (false)")";
+*/
+
+__evaluated = eval("do __in__do=1; while (false)");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__in__do !== 1) {
+ $ERROR('#1: __in__do === 1. Actual: __in__do ==='+ __in__do );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 1) {
+ $ERROR('#2: __evaluated === 1. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T1.js
new file mode 100644
index 000000000..5f7d4db29
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A4_T1;
+* @section: 12.6.1, 12.8;
+* @assertion: "break" within a "do-while" Statement is allowed and performed as described in 12.8;
+* @description: Using "break" within a "do-while" loop;
+*/
+
+do {
+ __in__do__before__break="reached";
+ break;
+ __in__do__after__break="where am i";
+} while(2===1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do__before__break !== "reached") {
+ $ERROR('#1: __in__do__before__break === "reached". Actual: __in__do__before__break ==='+ __in__do__before__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __in__do__after__break !== "undefined") {
+ $ERROR('#2: typeof __in__do__after__break === "undefined". Actual: typeof __in__do__after__break ==='+ typeof __in__do__after__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T2.js
new file mode 100644
index 000000000..07a25c78d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A4_T2;
+* @section: 12.6.1, 12.8;
+* @assertion: "break" within a "do-while" Statement is allowed and performed as described in 12.8;
+* @description: "break" and VariableDeclaration within a "do-while" statement;
+*/
+
+do_out : do {
+ var __in__do__before__break="black";
+ do_in : do {
+ var __in__do__IN__before__break="hole";
+ break do_in;
+ var __in__do__IN__after__break="sun";
+ } while (0);
+ var __in__do__after__break="won't you come";
+} while(2==1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)) {
+ $ERROR('#1: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)===true. Actual: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)==='+ (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T3.js
new file mode 100644
index 000000000..e80351a70
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A4_T3;
+* @section: 12.6.1, 12.2, 12.8;
+* @assertion: "break" within a "do-while" Statement is allowed and performed as described in 12.8;
+* @description: "break" and VariableDeclaration within a "do-while" statement;
+*/
+
+do_out : do {
+ var __in__do__before__break="once";
+ do_in : do {
+ var __in__do__IN__before__break="in";
+ break do_out;
+ var __in__do__IN__after__break="the";
+ } while (0);
+ var __in__do__after__break="lifetime";
+} while(2===1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break)) {
+ $ERROR('#1: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break)===true. Actual: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break)==='+ (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T4.js
new file mode 100644
index 000000000..ba5cc9503
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T4.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A4_T4;
+* @section: 12.6.1, 12.8;
+* @assertion: "break" within a "do-while" Statement is allowed and performed as described in 12.8;
+* @description: "break" and VariableDeclaration within a "do-while" statement;
+*/
+
+do_out : do {
+ var __in__do__before__break="reached";
+ do_in : do {
+ var __in__do__IN__before__break="reached";
+ break;
+ var __in__do__IN__after__break="where am i";
+ } while (0);
+ var __in__do__after__break="where am i";
+} while(2===1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)) {
+ $ERROR('#1: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)===true. Actual: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)==='+ (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T5.js
new file mode 100644
index 000000000..15b078cd0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A4_T5.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A4_T5;
+* @section: 12.6.1, 12.8;
+* @assertion: "break" within a "do-while" Statement is allowed and performed as described in 12.8;
+* @description: Using labeled "break" in order to continue a loop;
+*/
+
+//CHECK#1
+var i=0;
+woohoo:{
+ do{
+ i++;
+ if ( ! (i < 10) ) {
+ break woohoo;
+ $ERROR('#1.1: "break woohoo" must break loop');
+ }
+ } while ( true );
+ if (i!==10) $ERROR('#1.2: i===10. Actual: i==='+ i );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A5.js
new file mode 100644
index 000000000..a333d9f7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A5.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A5;
+* @section: 12.6.1;
+* @assertion: After "do-while" is broken, (normal, V, empty) is returned;
+* @description: Using eval;
+*/
+
+__evaluated = eval("do {__in__do__before__break=1; break; __in__do__after__break=2;} while(0)");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do__before__break !== 1) {
+ $ERROR('#1: __in__do__before__break === 1. Actual: __in__do__before__break ==='+ __in__do__before__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __in__do__after__break !== "undefined") {
+ $ERROR('#2: typeof __in__do__after__break === "undefined". Actual: typeof __in__do__after__break ==='+ typeof __in__do__after__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__evaluated !== 1) {
+ $ERROR('#3: __evaluated === 1. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T1.js
new file mode 100644
index 000000000..5ec9340a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A6_T1;
+* @section: 12.6.1;
+* @assertion: Expression in "do-while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "do{} while 1" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while 1;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T2.js
new file mode 100644
index 000000000..f385f1a04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A6_T2;
+* @section: 12.6.1;
+* @assertion: Expression in "do-while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "do{} while 0" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while 0;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T3.js
new file mode 100644
index 000000000..d5d136704
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A6_T3;
+* @section: 12.6.1;
+* @assertion: Expression in "do-while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "do{}while true" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while true;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T4.js
new file mode 100644
index 000000000..14add62bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A6_T4;
+* @section: 12.6.1;
+* @assertion: Expression in "do-while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "do{}while false" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while false;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T5.js
new file mode 100644
index 000000000..f2fca45b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T5.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A6_T5;
+* @section: 12.6.1;
+* @assertion: Expression in "do-while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "do{}while ''" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while '';
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T6.js
new file mode 100644
index 000000000..51f58e8db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A6_T6.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A6_T6;
+* @section: 12.6.1;
+* @assertion: Expression in "do-while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "do{}while 'hood'" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while 'hood';
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A7.js
new file mode 100644
index 000000000..2d2276c53
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A7.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A7;
+* @section: 12.6.1;
+* @assertion: The "do-while" Statement is evaluted according to 12.6.1 and returns (normal, V, empty);
+* @description: Using eval;
+*/
+
+var __condition=0
+
+__evaluated = eval("do eval(\"__condition++\"); while (__condition<5)");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__condition !== 5) {
+ $ERROR('#1: The "do-while" statement is evaluted according to the Standard ');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 4) {
+ $ERROR('#2: The "do-while" statement returns (normal, V, empty)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A8.js
new file mode 100644
index 000000000..5378fc43a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A8.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A8;
+* @section: 12.6.1;
+* @assertion: "continue" statement within a "do-while" Statement is allowed;
+* @description: Using eval;
+*/
+
+var __condition = 0, __odds=0;
+
+__evaluated = eval("do { __condition++; if (((''+__condition/2).split('.')).length>1) continue; __odds++;} while(__condition < 10)");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__odds !== 5) {
+ $ERROR('#1: __odds === 5. Actual: __odds ==='+ __odds );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 4) {
+ $ERROR('#2: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A9.js
new file mode 100644
index 000000000..7a9d3692c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.1_The_do_while_Statement/S12.6.1_A9.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.1_A9;
+* @section: 12.6.1;
+* @assertion: "do-while" Statement is evaluated without syntax checks;
+* @description: Throwing system exception whithin a "do-while" loop;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ do {
+ var x = 1;
+ abaracadabara;
+ } while(0);
+ $ERROR('#1: "abbracadabra" lead to throwing exception');
+
+} catch (e) {}
+
+if (x !== 1) {
+ $ERROR('#1.1: x === 1. Actual: x ==='+ x );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A1.js
new file mode 100644
index 000000000..a40bc3546
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A1;
+* @section: 12.6.2;
+* @assertion: Expression from "while" IterationStatement is evaluated first; "false", "0", "null", "undefined" and "empty" strings used as the Expression are evaluated to "false";
+* @description: Evaluating various Expressions;
+*/
+
+var __in__do;
+
+while ( false ) __in__do=1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do !== undefined) {
+ $ERROR('#1: false evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while ( 0 ) __in__do=2;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__in__do !== undefined) {
+ $ERROR('#2: 0 evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while ( "" ) __in__do=3;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__in__do !== undefined) {
+ $ERROR('#3: empty string evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while ( null ) __in__do=4;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__in__do !== undefined) {
+ $ERROR('#4: null evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while ( undefined ) __in__do=35;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__in__do !== undefined) {
+ $ERROR('#5: undefined evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A10.js
new file mode 100644
index 000000000..61b68d29f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A10.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A10;
+* @section: 12.6.2, 13.2;
+* @assertion: FunctionExpression within a "while" IterationStatement is allowed, but no function with the given name will appear in the global context;
+* @description: Testing FunctionExpression too;
+*/
+
+var check=0;
+while(function f(){}){
+ if(typeof(f) === "function") {
+ check = -1;
+ break;
+ } else {
+ check = 1;
+ break;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (check !== 1) {
+ $ERROR('#1: FunctionExpression inside while construction expression allowed but function not declare');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A11.js
new file mode 100644
index 000000000..e7339f535
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A11.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A11;
+* @section: 12.6.2;
+* @assertion: "{}" Block within a "while" Expression is evaluated to true;
+* @description: Checking if execution of "while({}){}" passes;
+*/
+
+while({}){
+ var __in__do=1;
+ if(__in__do)break;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do !== 1) {
+ $ERROR('#1: "{}" in while expression evaluates to true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T1.js
new file mode 100644
index 000000000..450ef8456
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A13_T1;
+* @section: 12.6.2;
+* @assertion: FunctionDeclaration within a "while" Statement is not allowed;
+* @description: Checking if declaring a function within a "while" Statement leads to an exception;
+* @negative;
+*/
+
+while(0){
+ function __func(){};
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T2.js
new file mode 100644
index 000000000..9a33659f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A13_T2;
+* @section: 12.6.2;
+* @assertion: FunctionDeclaration within a "while" Statement is not allowed;
+* @description: Checking if declaring a function within a "while" Statement that is in a function call leads to an exception;
+* @negative;
+*/
+
+(function(){
+
+while(0){
+ function __func(){};
+};
+
+})();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T3.js
new file mode 100644
index 000000000..355c76c44
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A13_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A13_T3;
+* @section: 12.6.2;
+* @assertion: FunctionDeclaration within a "while" Statement is not allowed;
+* @description: Checking if declaring a function within a "while" Statement that is in a function body leads to an exception;
+* @negative;
+*/
+
+function(){
+
+while(0){
+ function __func(){};
+};
+
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A14_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A14_T1.js
new file mode 100644
index 000000000..8f754fd29
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A14_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A14_T1;
+* @section: 12.6.2;
+* @assertion: FunctionExpression within a "while" Expression is allowed;
+* @description: Using "function __func(){return 0;}" as an Expression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+while(function __func(){return 0;}){
+ var __reached = 1;
+ break;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== 1) {
+ $ERROR('#2: function expression inside of while expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A14_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A14_T2.js
new file mode 100644
index 000000000..2dcd72b4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A14_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A14_T2;
+* @section: 12.6.2;
+* @assertion: FunctionExpression within a "while" Expression is allowed;
+* @description: Using function call as an Expression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+while(function __func(){return 1;}()){
+ var __reached = 1;
+ break;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== 1) {
+ $ERROR('#2: function expression inside of while expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A15.js
new file mode 100644
index 000000000..ceb42f28d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A15.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A15;
+* @section: 12.6.2;
+* @assertion: Block within a "while" Expression is not allowed;
+* @description: Expression is "{0}";
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+while({1}){
+ break ;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A2.js
new file mode 100644
index 000000000..d7c60b066
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.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.
+
+/**
+* @name: S12.6.2_A2;
+* @section: 12.6.2;
+* @assertion: While evaluating The production IterationStatement: "while ( Expression ) Statement", Expression is evaluated first;
+* @description: Evaluating Statement with error Expression;
+*/
+
+try {
+ while ((function(){throw 1})()) __in__while = "reached";
+ $ERROR('#1: \'while ((function(){throw 1})()) __in__while = "reached"\' lead to throwing exception');
+} catch (e) {
+ if (e !== 1) {
+ $ERROR('#1: Exception === 1. Actual: Exception ==='+e);
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __in__while !== "undefined") {
+ $ERROR('#1.1: typeof __in__while === "undefined". Actual: typeof __in__while ==='+typeof __in__while);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A3.js
new file mode 100644
index 000000000..50c04cd5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_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.
+
+/**
+* @name: S12.6.2_A3;
+* @section: 12.6.2;
+* @assertion: When "while" IterationStatement is evaluated, (normal, V, empty) is returned;
+* @description: Using eval;
+*/
+
+var __in__do;
+
+__evaluated = eval("while (false) __in__do=1;");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__in__do !== undefined) {
+ $ERROR('#1: __in__do === undefined. Actual: __in__do ==='+ __in__do );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== undefined) {
+ $ERROR('#2: __evaluated === undefined. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T1.js
new file mode 100644
index 000000000..a3c9f473c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A4_T1;
+* @section: 12.6.2, 12.8;
+* @assertion: "break" within a "while" Statement is allowed and performed as described in 12.8;
+* @description: "break" within a "while" Statement;
+*/
+
+while(1===1){
+ __in__do__before__break="reached";
+ break;
+ __in__do__after__break="where am i";
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do__before__break !== "reached") {
+ $ERROR('#1: __in__do__before__break === "reached". Actual: __in__do__before__break ==='+ __in__do__before__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __in__do__after__break !== "undefined") {
+ $ERROR('#2: typeof __in__do__after__break === "undefined". Actual: typeof __in__do__after__break ==='+ typeof __in__do__after__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T2.js
new file mode 100644
index 000000000..05f086b8a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A4_T2;
+* @section: 12.6.2;
+* @assertion: "break" within a "while" Statement is allowed and performed as described in 12.8;
+* @description: "break" and VariableDeclaration within a "while" Statement;
+*/
+
+do_out : while(1===1) {
+ if (__in__do__before__break) break;
+ var __in__do__before__break="black";
+ do_in : while (1) {
+ var __in__do__IN__before__break="hole";
+ break do_in;
+ var __in__do__IN__after__break="sun";
+ } ;
+ var __in__do__after__break="won't you come";
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)) {
+ $ERROR('#1: Break inside do-while is allowed as its described at standard');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T3.js
new file mode 100644
index 000000000..14a480c97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T3.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A4_T3;
+* @section: 12.6.2, 12.2;
+* @assertion: "break" within a "while" Statement is allowed and performed as described in 12.8;
+* @description: "break" and VariableDeclaration within a "while" Statement;
+*/
+
+do_out : while(1===1) {
+ if (__in__do__before__break) break;
+ var __in__do__before__break="once";
+ do_in : while (1) {
+ var __in__do__IN__before__break="in";
+ break do_out;
+ var __in__do__IN__after__break="the";
+ } ;
+ var __in__do__after__break="lifetime";
+} ;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break)) {
+ $ERROR('#1: Break inside do-while is allowed as its described at standard');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T4.js
new file mode 100644
index 000000000..22dc89e43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A4_T4;
+* @section: 12.6.2;
+* @assertion: "break" within a "while" Statement is allowed and performed as described in 12.8;
+* @description: "break" and VariableDeclaration within a "while" Statement;
+*/
+
+do_out : while(1===1) {
+ if(__in__do__before__break)break;
+ var __in__do__before__break="can't";
+ do_in : while (1) {
+ var __in__do__IN__before__break="get";
+ break;
+ var __in__do__IN__after__break="no";
+ } ;
+ var __in__do__after__break="Satisfaction";
+} ;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)) {
+ $ERROR('#1: Break inside do-while is allowed as its described at standard');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T5.js
new file mode 100644
index 000000000..f60561de7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A4_T5.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A4_T5;
+* @section: 12.6.2;
+* @assertion: "break" within a "while" Statement is allowed and performed as described in 12.8;
+* @description: Using labeled "break" in order to continue a "while" loop;
+*/
+
+//CHECK#1
+var i=0;
+woohoo:{
+ while(true){
+ i++;
+ if ( ! (i < 10) ) {
+ break woohoo;
+ $ERROR('#1.1: "break woohoo" must break loop');
+ }
+ }
+ if (i!==10) $ERROR('#1.2: i===10. Actual: i==='+ i );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A5.js
new file mode 100644
index 000000000..32584229f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A5.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A5;
+* @section: 12.6.2;
+* @assertion: While using "while" within an eval statement, source "break" is allowed and (normal, V, empty) is returned;
+* @description: Using eval;
+*/
+
+__evaluated = eval("while(1) {__in__do__before__break=1; break; __in__do__after__break=2;}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do__before__break !== 1) {
+ $ERROR('#1: __in__do__before__break === 1. Actual: __in__do__before__break ==='+ __in__do__before__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __in__do__after__break !== "undefined") {
+ $ERROR('#2: typeof __in__do__after__break === "undefined". Actual: typeof __in__do__after__break ==='+ typeof __in__do__after__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__evaluated !== 1) {
+ $ERROR('#3: __evaluated === 1. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T1.js
new file mode 100644
index 000000000..3745a65c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A6_T1;
+* @section: 12.6.2;
+* @assertion: Expression in "while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "while 1 break" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while 1 break;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T2.js
new file mode 100644
index 000000000..edc09800a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A6_T2;
+* @section: 12.6.2;
+* @assertion: Expression in "while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "while 0 break" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while 0 break;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T3.js
new file mode 100644
index 000000000..291eceb00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A6_T3;
+* @section: 12.6.2;
+* @assertion: Expression in "while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "while true break" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while true break;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T4.js
new file mode 100644
index 000000000..b283fa3a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A6_T4;
+* @section: 12.6.2;
+* @assertion: Expression in "while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "while false break" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while false break;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T5.js
new file mode 100644
index 000000000..3e6609daf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T5.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A6_T5;
+* @section: 12.6.2;
+* @assertion: Expression in "while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "while '' break" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while '' break;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T6.js
new file mode 100644
index 000000000..b3325633f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A6_T6.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A6_T6;
+* @section: 12.6.2;
+* @assertion: Expression in "while" IterationStatement is bracketed with braces;
+* @description: Checking if execution of "while 'hood' break" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while 'hood' break;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A7.js
new file mode 100644
index 000000000..643d34538
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A7.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A7;
+* @section: 12.6.2;
+* @assertion: The "while" Statement is evaluted according to 12.6.2 and returns (normal, V, empty);
+* @description: using eval;
+*/
+
+var __condition=0
+
+__evaluated = eval("while (__condition<5) eval(\"__condition++\");");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__condition !== 5) {
+ $ERROR('#1: The "while" statement is evaluated as described in the Standard');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 4) {
+ $ERROR('#2: The "while" statement returns (normal, V, empty)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A8.js
new file mode 100644
index 000000000..b87ddfce6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A8.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A8;
+* @section: 12.6.2;
+* @assertion: "continue" statement within a "while" Statement is allowed;
+* @description: using eval;
+*/
+
+var __condition = 0, __odds=0;
+
+__evaluated = eval("while(__condition < 10) { __condition++; if (((''+__condition/2).split('.')).length>1) continue; __odds++;}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__odds !== 5) {
+ $ERROR('#1: __odds === 5. Actual: __odds ==='+ __odds );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 4) {
+ $ERROR('#2: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A9.js
new file mode 100644
index 000000000..17ea92f2e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.2_The_while_statement/S12.6.2_A9.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.2_A9;
+* @section: 12.6.2;
+* @assertion: "while" Statement is evaluated without syntax checks;
+* @description: Throwing system exception inside "while" loop;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ while(x!=1) {
+ var x = 1;
+ abaracadabara;
+ };
+ $ERROR('#1: "abbracadabra" lead to throwing exception');
+
+} catch (e) {}
+
+if (x !== 1) {
+ $ERROR('#1.1: while statement evaluates as is, without syntax checks');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A1.js
new file mode 100644
index 000000000..2d75c69c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A1;
+* @section: 12.6.3;
+* @assertion: The "for {;;}" for Statement with empty expressions is allowed and leads to performing an infinite loop;
+* @description: Breaking an infinite loop by throwing exception;
+*/
+var __in__for = 0;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for (;;){
+ //__in__for++;
+ if(++__in__for>100)throw 1;
+}
+} catch (e) {
+ if (e !== 1) {
+ $ERROR('#1: for {;;} is admitted and leads to infinite loop');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__in__for !== 101) {
+ $ERROR('#2: __in__for === 101. Actual: __in__for ==='+ __in__for );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A10.1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A10.1.js
new file mode 100644
index 000000000..b49105566
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A10.1.js
@@ -0,0 +1,110 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A10.1;
+* @section: 12.6.3;
+* @assertion: Nested "var-loops" nine blocks depth is evaluated properly;
+* @description: Checking if executing nested "var-loops" nine blocks depth is evaluated properly;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __in__deepest__loop=__in__deepest__loop;
+} catch (e) {
+ $ERROR('#1: "__in__deepest__loop=__in__deepest__loop" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ index0=index0;
+} catch (e) {
+ $ERROR('#2: "index0=index0" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ index1=index1;
+} catch (e) {
+ $ERROR('#3: "index1=index1" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+try {
+ index4=index4;
+} catch (e) {
+ $ERROR('#4: "index4=index4" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+try {
+ index5=index5;
+} catch (e) {
+ $ERROR('#4: "index5=index5" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+try {
+ index7=index7;
+} catch (e) {
+ $ERROR('#6: "index7=index7" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+try {
+ index8=index8;
+} catch (e) {
+ $ERROR('#7: "index8=index8" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+for( var index0=0; index0<=1; index0++) {
+ for(var index1=0; index1<=index0; index1++) {
+ for( index2=0; index2<=index1; index2++) {
+ for( index3=0; index3<=index2; index3++) {
+ for(var index4=0; index4<=index3; index4++) {
+ for(var index5=0; index5<=index4; index5++) {
+ for( index6=0; index6<=index5; index6++) {
+ for(var index7=0; index7<=index6; index7++) {
+ for(var index8=0; index8<=index1; index8++) {
+ var __in__deepest__loop;
+ __str+=""+index0+index1+index2+index3+index4+index5+index6+index7+index8+'\n';
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str!== "000000000\n100000000\n110000000\n110000001\n111000000\n111000001\n111100000\n111100001\n111110000\n111110001\n111111000\n111111001\n111111100\n111111101\n111111110\n111111111\n") {
+ $ERROR('#2: __str === "000000000\\n100000000\\n110000000\\n110000001\\n111000000\\n111000001\\n111100000\\n111100001\\n111110000\\n111110001\\n111111000\\n111111001\\n111111100\\n111111101\\n111111110\\n111111111\\n". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A10.js
new file mode 100644
index 000000000..2548489ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A10.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A10;
+* @section: 12.6.3;
+* @assertion: Nested "var-loops" nine blocks depth is evaluated properly;
+* @description: Checking if executing nested "var-loops" nine blocks depth is evaluated properly;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ __in__deepest__loop=__in__deepest__loop;
+} catch (e) {
+ $ERROR('#1: "__in__deepest__loop=__in__deepest__loop" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+for( index0=0; index0<=1; index0++) {
+ for( index1=0; index1<=index0; index1++) {
+ for( index2=0; index2<=index1; index2++) {
+ for( index3=0; index3<=index2; index3++) {
+ for( index4=0; index4<=index3; index4++) {
+ for( index5=0; index5<=index4; index5++) {
+ for( index6=0; index6<=index5; index6++) {
+ for( index7=0; index7<=index6; index7++) {
+ for( index8=0; index8<=index1; index8++) {
+ var __in__deepest__loop;
+ __str+=""+index0+index1+index2+index3+index4+index5+index6+index7+index8+'\n';
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str!== "000000000\n100000000\n110000000\n110000001\n111000000\n111000001\n111100000\n111100001\n111110000\n111110001\n111111000\n111111001\n111111100\n111111101\n111111110\n111111111\n") {
+ $ERROR('#2: __str === "000000000\\n100000000\\n110000000\\n110000001\\n111000000\\n111000001\\n111100000\\n111100001\\n111110000\\n111110001\\n111111000\\n111111001\\n111111100\\n111111101\\n111111110\\n111111111\\n". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T1.js
new file mode 100644
index 000000000..ec4db06db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A11.1_T1;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled "var-loop" breaks;
+* @description: Using "continue" in order to continue a loop;
+*/
+__str=""
+
+for(var index=0; index<10; index+=1) {
+ if (index<5)continue;
+ __str+=index;
+}
+
+if (__str!=="56789") {
+ $ERROR('#1: __str === "56789". Actual: __str ==='+ __str );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T2.js
new file mode 100644
index 000000000..b6654593c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_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.
+
+/**
+* @name: S12.6.3_A11.1_T2;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled "var-loop" breaks;
+* @description: Embedded loops;
+*/
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue nested;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str !== "001011202122303133") {
+ $ERROR('#1: __str === "001011202122303133". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue outer;
+ __str+=""+index+index_n;
+ }
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0010112021223031") {
+ $ERROR('#2: __str === "0010112021223031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue ;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str !== "001011202122303133") {
+ $ERROR('#3: __str === "001011202122303133". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T3.js
new file mode 100644
index 000000000..7b54ec8f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11.1_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A11.1_T3;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled "var-loop" breaks;
+* @description: Trying to continue non-existent label;
+* @negative;
+*/
+
+__str="";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+outer:for(var index=0;index<4;index+=1){
+ nested:for(var index_n=0;index_n<=index;index_n++){
+ if(index*index_n == 6)continue nonexist;
+ __str+=""+index+index_n;
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T1.js
new file mode 100644
index 000000000..dfad4ec90
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A11_T1;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled loop breaks;
+* @description: Simple test of continue loop with using "continue";
+*/
+__str=""
+
+for(index=0; index<10; index+=1) {
+ if (index<5)continue;
+ __str+=index;
+}
+
+if (__str!=="56789") {
+ $ERROR('#1: __str === "56789". Actual: __str ==='+ __str );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T2.js
new file mode 100644
index 000000000..5657f2ed8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_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.
+
+/**
+* @name: S12.6.3_A11_T2;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled loop breaks;
+* @description: Embedded loops;
+*/
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue nested;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str !== "001011202122303133") {
+ $ERROR('#1: __str === "001011202122303133". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue outer;
+ __str+=""+index+index_n;
+ }
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0010112021223031") {
+ $ERROR('#2: __str === "0010112021223031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue ;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str !== "001011202122303133") {
+ $ERROR('#3: __str === "001011202122303133". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T3.js
new file mode 100644
index 000000000..7bfec8231
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A11_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A11_T3;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled loop breaks;
+* @description: Trying to continue non-existent label;
+* @negative;
+*/
+
+__str="";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+outer:for(index=0;index<4;index+=1){
+ nested:for(index_n=0;index_n<=index;index_n++){
+ if(index*index_n == 6)continue nonexist;
+ __str+=""+index+index_n;
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T1.js
new file mode 100644
index 000000000..b65e699a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A12.1_T1;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a "var-loop";
+* @description: Breaking a loop with "break";
+*/
+__str=""
+
+for(var index=0; index<10; index+=1) {
+ if (index>5)break;
+ __str+=index;
+}
+
+if (__str!=="012345") {
+ $ERROR('#1: __str === "012345". Actual: __str ==='+ __str );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T2.js
new file mode 100644
index 000000000..861ad63d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T2.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A12.1_T2;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a "var-loop";
+* @description: Embedded loops;
+*/
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break nested;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str !== "00101120213031") {
+ $ERROR('#1: __str === "00101120213031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break outer;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0010112021") {
+ $ERROR('#2: __str === "0010112021". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break ;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str !== "00101120213031") {
+ $ERROR('#3: __str === "00101120213031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T3.js
new file mode 100644
index 000000000..ce159e5c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A12.1_T3;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a "var-loop";
+* @description: Trying to break non-existent label;
+* @negative;
+*/
+
+__str="";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+outer:for(var index=0;index<4;index+=1){
+ nested:for(var index_n=0;index_n<=index;index_n++){
+ if(index*index_n >= 4)break nonexist;
+ __str+=""+index+index_n;
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T1.js
new file mode 100644
index 000000000..c5933fe19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A12_T1;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a loop;
+* @description: Breaking a loop with "break";
+*/
+__str=""
+
+for(index=0; index<10; index+=1) {
+ if (index>5)break;
+ __str+=index;
+}
+
+if (__str!=="012345") {
+ $ERROR('#1:__str === "012345". Actual: __str ==='+__str );
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T2.js
new file mode 100644
index 000000000..38b79a552
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T2.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A12_T2;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a loop;
+* @description: Embedded loops;
+*/
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break nested;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str !== "00101120213031") {
+ $ERROR('#1: __str === "00101120213031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break outer;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0010112021") {
+ $ERROR('#2: __str === "0010112021". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break ;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str !== "00101120213031") {
+ $ERROR('#3: __str === "00101120213031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T3.js
new file mode 100644
index 000000000..6c5cb096b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A12_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A12_T3;
+* @section: 12.6.3;
+* @assertion: If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a loop;
+* @description: Trying to break non-existent label;
+* @negative;
+*/
+
+__str="";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+outer:for(index=0;index<4;index+=1){
+ nested:for(index_n=0;index_n<=index;index_n++){
+ if(index*index_n >= 4)break nonexist;
+ __str+=""+index+index_n;
+ }
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A13.js
new file mode 100644
index 000000000..c1a29a61f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A13.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A13;
+* @section: 12.6.3;
+* @assertion: VariableDeclaration in "var VariableDeclarationListNoIn" of for IterationStatement is allowed;
+* @description: Declaring variable in "for" ExpressionNoIn;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ index = index;
+} catch (e) {
+ $ERROR('#1: VariableDeclaration in "var VariableDeclarationListNoIn" of for IterationStatement is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+for(var index=0; index<6; index++) {
+ ;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A14.js
new file mode 100644
index 000000000..e7175d1b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A14.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A14;
+* @section: 12.6.3;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationListNoIn; Expression; Expression) Statement";
+* @description: Using +,*,/, as the second Expression;
+*/
+
+//CHECK#1
+for(var i=0;i<10;i++){}
+if (i!==10) $ERROR('#1: i === 10. Actual: i ==='+ i );
+
+//CHECK#2
+var j=0;
+for(var i=1;i<10;i*=2){
+ j++;
+}
+if (i!==16) $ERROR('#2.1: i === 16. Actual: i ==='+ i );
+if (j!==4) $ERROR('#2.2: j === 4. Actual: j ==='+ j );
+
+//CHECK#3
+var j=0;
+for(var i=16;i>1;i=i/2){
+ j++;
+}
+if (i!==1) $ERROR('#3.1: i === 1. Actual: i ==='+ i );
+if (j!==4) $ERROR('#3.2: j === 4. Actual: j ==='+ j );
+
+//CHECK#4
+var j=0;
+for(var i=10;i>1;i--){
+ j++;
+}
+if (i!==1) $ERROR('#4.1: i === 1. Actual: i ==='+ i );
+if (j!==9) $ERROR('#4.2: j === 9. Actual: j ==='+ j );
+
+//CHECK#5
+var j=0;
+for(var i=2;i<10;i*=i){
+ j++;
+}
+if (i!==16) $ERROR('#5.1: i === 16. Actual: i ==='+ i );
+if (j!==2) $ERROR('#5.2: j === 2. Actual: j ==='+ j );
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A15.js
new file mode 100644
index 000000000..dc1f1334a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A15.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A15;
+* @section: 12.6.3;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationListNoIn; Expression; Expression) Statement";
+* @description: Statement must be evaluated before second Expression is evaluated;
+*/
+
+//CHECK#1
+for(var i=0;i<10;i++){
+ i*=2;
+ break;
+}
+if (i!==0) $ERROR('#1: i === 0. Actual: i ==='+ i );
+
+//CHECK#2
+for(var i=0;i<10;i++){
+ i*=2;
+ if (i===3) $ERROR('#2: i !== 3');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.1.js
new file mode 100644
index 000000000..fe918cf41
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A2.1;
+* @section: 12.6.3;
+* @assertion: While evaluating "for (ExpressionNoIn ; ; Expression) Statement", Statement is evaulated first;
+* @description: Using "(function(){throw "NoInExpression"})()" as ExpressionNoIn;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for((function(){throw "NoInExpression"})(); ;(function(){throw "SecondExpression"})()) {
+ throw "Statement";
+ }
+ $ERROR('#1: (function(){throw "NoInExpression"})() lead to throwing exception');
+} catch (e) {
+ if (e !== "NoInExpression") {
+ $ERROR('#2: When for (ExpressionNoIn ; ; Expression) Statement is evaluated NoInExpression evaluates first');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.2.js
new file mode 100644
index 000000000..cb86f7c6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A2.2;
+* @section: 12.6.3;
+* @assertion: While evaluating "for (ExpressionNoIn;;) Statement", Statement is evaulated first;
+* @description: Using "(function(){throw "NoInExpression"})()" as ExpressionNoIn;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for((function(){throw "NoInExpression"})();;) {
+ throw "Statement";
+ }
+ $ERROR('#1: (function(){throw "NoInExpression"})() lead to throwing exception');
+} catch (e) {
+ if (e !== "NoInExpression") {
+ $ERROR('#1: When for (ExpressionNoIn ; ; ) Statement is evaluated NoInExpression evaluates first');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.js
new file mode 100644
index 000000000..4a11b60e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A2;
+* @section: 12.6.3;
+* @assertion: While evaluating "for (ExpressionNoIn; Expression; Expression) Statement", ExpressionNoIn is evaulated first;
+* @description: Using "(function(){throw "NoInExpression"})()" as ExpressionNoIn;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for((function(){throw "NoInExpression";})(); (function(){throw "FirstExpression";})(); (function(){throw "SecondExpression";})()) {
+ var in_for = "reached";
+ }
+ $ERROR('#1: (function(){throw "NoInExpression";})() lead to throwing exception');
+} catch (e) {
+ if (e !== "NoInExpression") {
+ $ERROR('#1: When for (ExpressionNoIn ; Expression ; Expression) Statement is evaluated ExpressionNoIn evaluates first');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (in_for !== undefined) {
+ $ERROR('#2: in_for === undefined. Actual: in_for ==='+ in_for );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A3.js
new file mode 100644
index 000000000..eca306838
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A3;
+* @section: 12.6.3;
+* @assertion: While evaluating "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement", ExpressionNoIn is evaulated first, FirstExpressoin is evaluated second;
+* @description: Using "(function(){throw "FirstExpression"})()" as FirstExpression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for((function(){__in__NotInExpression__ = "checked";__in__NotInExpression__2 = "passed";})(); (function(){throw "FirstExpression"})(); (function(){throw "SecondExpression"})()) {
+ __in__for="reached";
+ }
+ $ERROR('#1: (function(){throw "SecondExpression"} lead to throwing exception');
+} catch (e) {
+ if (e !== "FirstExpression") {
+ $ERROR('#1: When for (ExpressionNoIn ; FirstExpression ; SecondExpression) Statement is evaluated first evaluates ExpressionNoIn then FirstExpression');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((__in__NotInExpression__ !== "checked")&(__in__NotInExpression__2!=="passed")) {
+ $ERROR('#2: (__in__NotInExpression__ === "checked")&(__in__NotInExpression__2==="passed")');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __in__for !== "undefined") {
+ $ERROR('#3: typeof __in__for === "undefined". Actual: typeof __in__for ==='+ typeof __in__for );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4.1.js
new file mode 100644
index 000000000..d58a2c5c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4.1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A4.1;
+* @section: 12.6.3;
+* @assertion: "in"-expression is not allowed as a ExpressionNoIn in "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement" IterationStatement;
+* @description: Checking if execution of "for (var a in arr;1;){}" fails;
+* @negative;
+*/
+
+arr = [1,2,3,4,5];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (var a in arr;1;){
+ break;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4_T1.js
new file mode 100644
index 000000000..5edc7abc4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A4_T1;
+* @section: 12.6.3;
+* @assertion: "in"-expression is not allowed as a ExpressionNoIn in "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement" IterationStatement;
+* @description: Checking if execution of "for (a in arr;1;){}" fails;
+* @negative;
+*/
+
+arr = [1,2,3,4,5];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (a in arr;1;){
+ break;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4_T2.js
new file mode 100644
index 000000000..9efa95ab3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A4_T2;
+* @section: 12.6.3;
+* @assertion: "in"-expression is not allowed as a ExpressionNoIn in "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement" IterationStatement;
+* @description: Checking if execution of "for (1 in arr;1;){}" fails;
+* @negative;
+*/
+
+arr = [1,2,3,4,5];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(1 in arr;1;) {
+ break;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A5.js
new file mode 100644
index 000000000..b83bcd6ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A5.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A5;
+* @section: 12.6.3;
+* @assertion: "in"-expression wrapped into "eval" statement is allowed as a ExpressionNoIn in "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement" IterationStatement;
+* @description: Using eval "for(eval("i in arr");1;)";
+*/
+
+arr = [1,2,3,4,5];
+i = 1;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for(eval("i in arr");1;) {break;};
+} catch (e) {
+ $ERROR('#1.1: for(eval("i in arr");1;) {break;}; does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ for(eval("var i = 1 in arr");1;) {break;};
+} catch (e) {
+ $ERROR('#2.1: for(eval("var i = 1 in arr");1;) {break;}; does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ for(eval("1 in arr");1;) {break;};
+} catch (e) {
+ $ERROR('#3.1: for(eval("1 in arr");1;) {break;}; does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A6.js
new file mode 100644
index 000000000..b3f3b8140
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A6.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A6;
+* @section: 12.6.3;
+* @assertion: While evaluating "for ( ; ; Expression) Statement", Statement is evaluated first and then Expression is evaluated;
+* @description: Using "(function(){throw "SecondExpression";})()" as an Expression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for(;;(function(){throw "SecondExpression";})()){
+ var __in__for = "reached";
+ }
+ $ERROR('#1: (function(){throw "SecondExpression"}() lead to throwing exception');
+} catch (e) {
+ if (e !== "SecondExpression") {
+ $ERROR('#1: When for ( ; ; Expression) Statement is evaluated Statement evaluates first then Expression evaluates');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__in__for !== "reached") {
+ $ERROR('#2: __in__for === "reached". Actual: __in__for ==='+ __in__for );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7.1_T1.js
new file mode 100644
index 000000000..6e16d3751
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7.1_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A7.1_T1;
+* @section: 12.6.3;
+* @assertion: Only three expressions and two semicolons in "for(with var)" braces are allowed.
+* Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError;
+* @description: Checking if execution of "for(var index=0; index<10; index++; index--)" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var index=0; index<10; index++; index--);
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7.1_T2.js
new file mode 100644
index 000000000..99e250cda
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7.1_T2.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A7.1_T2;
+* @section: 12.6.3;
+* @assertion: Only three expressions and two semicolons in "for(with var)" braces are allowed.
+* Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError;
+* @description: Checking if execution of "for(var index=0; index<10; index+=4; index++; index--)" fails ;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var index=0; index<10; index+=4; index++; index--) ;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7_T1.js
new file mode 100644
index 000000000..10773f81c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A7_T1;
+* @section: 12.6.3;
+* @assertion: Only three expressions and two semicolons in "for" braces are allowed.
+* Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError;
+* @description: Checking if execution of "for(index=0; index<10; index++; index--)" fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(index=0; index<10; index++; index--) ;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7_T2.js
new file mode 100644
index 000000000..fe0909232
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A7_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.
+
+/**
+* @name: S12.6.3_A7_T2;
+* @section: 12.6.3;
+* @assertion: Only three expressions and two semicolons in "for" braces are allowed.
+* Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError;
+* @description: Checking if execution of "for(index=0; index<10; index+=4; index++; index--)" fails ;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(index=0; index<10; index+=4; index++; index--) ;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T1.js
new file mode 100644
index 000000000..9f41bbabc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A8.1_T1;
+* @section: 12.6.3;
+* @assertion: Blocks within "for(with var)" braces are not allowed;
+* @description: Checking if execution of "for(var index=0; index<100; {index++; index*2;}) { arr.add(""+index);}" fails;
+* @negative;
+*/
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var index=0; index<100; {index++; index*2;}) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T2.js
new file mode 100644
index 000000000..0a0b3bb75
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A8.1_T2;
+* @section: 12.6.3;
+* @assertion: Blocks within "for(with var)" braces are not allowed;
+* @description: Checking if execution of "for(var index=0; {index++;index<100;}; index*2;) { arr.add(""+index);}" fails;
+* @negative;
+*/
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var index=0; {index++;index<100;}; index*2;) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T3.js
new file mode 100644
index 000000000..1d69bbf1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A8.1_T3;
+* @section: 12.6.3;
+* @assertion: Blocks within "for(with var)" braces are not allowed;
+* @description: Checking if execution of "for({var index=0; index+=1;} index++<=10; index*2;) { arr.add(""+index);}" fails;
+* @negative;
+*/
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for({var index=0; index+=1;} index++<=10; index*2;) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T1.js
new file mode 100644
index 000000000..cf797bc5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A8_T1;
+* @section: 12.6.3;
+* @assertion: Blocks within "for" braces are not allowed;
+* @description: Checking if execution of "for(index=0; index<100; {index++; index*2;}) { arr.add(""+index);}" fails;
+* @negative;
+*/
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(index=0; index<100; {index++; index*2;}) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T2.js
new file mode 100644
index 000000000..48ae1831f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A8_T2;
+* @section: 12.6.3;
+* @assertion: Blocks within "for" braces are not allowed;
+* @description: Checking if execution of "for(index=0; {index++;index<100;}; index*2;) { arr.add(""+index);}" fails;
+* @negative;
+*/
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(index=0; {index++;index<100;}; index*2;) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T3.js
new file mode 100644
index 000000000..0009790e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A8_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A8_T3;
+* @section: 12.6.3;
+* @assertion: Blocks within "for" braces are not allowed;
+* @description: Checking if execution of "for({index=0; index+=1;} index++<=10; index*2;) { arr.add(""+index);}" fails;
+* @negative;
+*/
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for({index=0; index+=1;} index++<=10; index*2;) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.1.js
new file mode 100644
index 000000000..2a9598766
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A9.1;
+* @section: 12.6.3;
+* @assertion: The result of evaluating "for( ExpNoIn;Exp;Exp)" loop is returning (normal, evalValue, empty);
+* @description: Using eval;
+*/
+
+supreme=5;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ var __evaluated = eval("for(count=0;;) {if (count===supreme)break;else count++; }");
+ if (__evaluated !== 4) {
+ $ERROR('#1: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
+ }
+} catch (e) {
+ $ERROR('#1: var __evaluated = eval("for(count=0;;) {if (count===supreme)break;else count++; }"); does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.js
new file mode 100644
index 000000000..6bc4b9149
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.3_A9;
+* @section: 12.6.3;
+* @assertion: The result of evaluating "for(var ExpNoIn;Exp;Exp)" loop is returning (normal, evalValue, empty);
+* @description: Using eval;
+*/
+
+supreme=5;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ var __evaluated = eval("for(var count=0;;) {if (count===supreme)break;else count++; }");
+ if (__evaluated !== 4) {
+ $ERROR('#1: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
+ }
+} catch (e) {
+ $ERROR('#1: var __evaluated = eval("for(var count=0;;) {if (count===supreme)break;else count++; }"); does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A1.js
new file mode 100644
index 000000000..3d4213e94
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_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.
+
+/**
+* @name: S12.6.4_A1;
+* @section: 12.6.4;
+* @assertion: "for(key in undefined)" Statement is allowed;
+* @description: Checking if execution of "for(key in undefined)" passes;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for(__key in undefined){
+ var key=__key;
+ };
+} catch (e) {
+ $ERROR('#1: "for(key in undefined){}" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (key!==undefined) {
+ $ERROR('#2: key === undefined. Actual: key === '+key);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T1.js
new file mode 100644
index 000000000..93dbedc7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A13_T1;
+* @section: 12.6.4;
+* @assertion: FunctionDeclaration within a "for-in" Statement is not allowed;
+* @description: Declaring function within a "for-in" Statement;
+* @negative;
+*/
+
+for(x in this){
+ function __func(){};
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T2.js
new file mode 100644
index 000000000..c18f21a82
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A13_T2;
+* @section: 12.6.4;
+* @assertion: FunctionDeclaration within a "for-in" Statement is not allowed;
+* @description: Declaring function within a "for-in" Statement that is within a function call;
+* @negative;
+*/
+
+(function(){
+
+for(x in this){
+ function __func(){};
+};
+
+})();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T3.js
new file mode 100644
index 000000000..16a0cdcba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A13_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A13_T3;
+* @section: 12.6.4;
+* @assertion: FunctionDeclaration within a "for-in" Statement is not allowed;
+* @description: Declaring function within a "for-in" Statement that is within function declaration;
+* @negative;
+*/
+
+function(){
+
+for(x in this){
+ function __func(){};
+};
+
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A14_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A14_T1.js
new file mode 100644
index 000000000..8d6cbba07
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A14_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A14_T1;
+* @section: 12.6.4;
+* @assertion: FunctionExpession within a "for-in" Expression is allowed;
+* @description: Using "function __func(){return 0;}" as Expession;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+for(x in function __func(){return 0;}){
+ if (x=="prototype")
+ var __reached = 1;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== 1) {
+ $ERROR('#2: function expession inside of for-in expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A14_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A14_T2.js
new file mode 100644
index 000000000..c8770a059
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A14_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A14_T2;
+* @section: 12.6.4;
+* @assertion: FunctionExpession within a "for-in" Expression is allowed;
+* @description: Using "function __func(){return {a:1};}()" as Expession;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+for(x in function __func(){return {a:1};}()){
+ var __reached = x;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== "a") {
+ $ERROR('#2: function expession inside of for-in expression allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A15.js
new file mode 100644
index 000000000..b0fb4431b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A15.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A15;
+* @section: 12.6.4;
+* @assertion: Block within a "for-in" Expression is not allowed;
+* @description: Using block within "for-in" Expression;
+* @negative;
+*/
+var __arr=[1,2,3];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+for(x in {__arr}){
+ break ;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A2.js
new file mode 100644
index 000000000..13981efe8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A2;
+* @section: 12.6.4;
+* @assertion: "for(key in null)" Expression is allowed;
+* @description: Checking if execution of "for(key in null)" passes;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ for(__key in null){
+ var key=__key;
+ };
+} catch (e) {
+ $ERROR('#1: "for(__key in null){}" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (key!==undefined) {
+ $ERROR('#2: key === undefined. Actual: key ==='+key);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A3.1.js
new file mode 100644
index 000000000..01b65dadd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A3.1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A3.1;
+* @section: 12.6.4;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement";
+* @description: Using an array as an Expression is appropriate. Here Expression is an array of numbers;
+*/
+
+__str="";
+
+__evaluated = eval("for(var ind in (arr=[2,1,4,3]))__str+=arr[ind]");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== __str) {
+ $ERROR('#1: __evaluated === __str. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!( (__str.indexOf("2")!==-1)&&(__str.indexOf("1")!==-1)&&(__str.indexOf("4")!==-1)&&(__str.indexOf("3")!==-1) )) {
+ $ERROR('#2: (__str.indexOf("2")!==-1)&&(__str.indexOf("1")!==-1)&&(__str.indexOf("4")!==-1)&&(__str.indexOf("3")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A3.js
new file mode 100644
index 000000000..391ec6b57
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A3;
+* @section: 12.6.4;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement";
+* @description: Using an array as an Expression is appropriate. Here Expression is an array of numbers. Eval is used;
+*/
+
+__str="";
+
+__evaluated = eval("for(ind in (arr=[2,1,4,3]))__str+=arr[ind]");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== __str) {
+ $ERROR('#1: __evaluated === __str. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!( (__str.indexOf("2")!==-1)&&(__str.indexOf("1")!==-1)&&(__str.indexOf("4")!==-1)&&(__str.indexOf("3")!==-1) )) {
+ $ERROR('#2: (__str.indexOf("2")!==-1)&&(__str.indexOf("1")!==-1)&&(__str.indexOf("4")!==-1)&&(__str.indexOf("3")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A4.1.js
new file mode 100644
index 000000000..8466cf1e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A4.1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A4.1;
+* @section: 12.6.4;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement";
+* @description: Using Object as an Expression is appropriate. Eval is used;
+*/
+
+__str="";
+
+__evaluated = eval("for(var ind in (hash={2:'b',1:'a',4:'d',3:'c'}))__str+=hash[ind]");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ( !( (__evaluated.indexOf("a")!==-1)& (__evaluated.indexOf("b")!==-1)& (__evaluated.indexOf("c")!==-1)&(__evaluated.indexOf("d")!==-1) ) ) {
+ $ERROR('#1: (__evaluated.indexOf("a")!==-1)& (__evaluated.indexOf("b")!==-1)& (__evaluated.indexOf("c")!==-1)&(__evaluated.indexOf("d")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== __evaluated) {
+ $ERROR('#2: __str === __evaluated. Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A4.js
new file mode 100644
index 000000000..06b7ce12b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A4.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A4;
+* @section: 12.6.4;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement";
+* @description: Using Object as an Expression is appropriate. Eval is used;
+*/
+
+__str="";
+
+__evaluated = eval("for(ind in (hash={2:'b',1:'a',4:'d',3:'c'}))__str+=hash[ind]");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ( !( (__evaluated.indexOf("a")!==-1)& (__evaluated.indexOf("b")!==-1)& (__evaluated.indexOf("c")!==-1)&(__evaluated.indexOf("d")!==-1) ) ) {
+ $ERROR('#1: (__evaluated.indexOf("a")!==-1)& (__evaluated.indexOf("b")!==-1)& (__evaluated.indexOf("c")!==-1)&(__evaluated.indexOf("d")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== __evaluated) {
+ $ERROR('#2: __str === __evaluated. Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A5.1.js
new file mode 100644
index 000000000..8820bd92a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A5.1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A5.1;
+* @section: 12.6.4;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement";
+* @description: Using hierarchical Object as an Expression is appropriate. The depth is two;
+*/
+
+
+
+__hash__map={a:{aa:1,ab:2,ac:3,ad:4},b:{ba:1,bb:2,bc:3,bd:4},c:{ca:1,cb:2,cc:3,cd:4},d:{da:1,db:2,dc:3,dd:4}};
+
+__arr = "";
+
+for(var __key in __hash__map){
+ for (var __ind in __hash__map[__key]){
+ __arr+=("" + __ind + __hash__map[__key][__ind]);
+ }
+}
+
+if(!(
+(__arr.indexOf("aa1")!==-1)&
+(__arr.indexOf("ab2")!==-1)&
+(__arr.indexOf("ac3")!==-1)&
+(__arr.indexOf("ad4")!==-1)&
+(__arr.indexOf("ba1")!==-1)&
+(__arr.indexOf("bb2")!==-1)&
+(__arr.indexOf("bc3")!==-1)&
+(__arr.indexOf("bd4")!==-1)&
+(__arr.indexOf("ca1")!==-1)&
+(__arr.indexOf("cb2")!==-1)&
+(__arr.indexOf("cc3")!==-1)&
+(__arr.indexOf("cd4")!==-1)&
+(__arr.indexOf("da1")!==-1)&
+(__arr.indexOf("db2")!==-1)&
+(__arr.indexOf("dc3")!==-1)&
+(__arr.indexOf("dd4")!==-1)
+)) $ERROR('#1: The nested for-in Statement applied to hierarchial object works properly as described in the Standard');
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A5.js
new file mode 100644
index 000000000..fc7483caa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A5.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A5;
+* @section: 12.6.4;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement";
+* @description: Using hierarchical Object as an Expression is appropriate. The depth is two;
+*/
+
+
+
+__hash__map={a:{aa:1,ab:2,ac:3,ad:4},b:{ba:1,bb:2,bc:3,bd:4},c:{ca:1,cb:2,cc:3,cd:4},d:{da:1,db:2,dc:3,dd:4}};
+
+__arr = "";
+
+for(__key in __hash__map){
+ for (__ind in __hash__map[__key]){
+ __arr+=("" + __ind + __hash__map[__key][__ind]);
+ }
+}
+
+if(!(
+(__arr.indexOf("aa1")!==-1)&
+(__arr.indexOf("ab2")!==-1)&
+(__arr.indexOf("ac3")!==-1)&
+(__arr.indexOf("ad4")!==-1)&
+(__arr.indexOf("ba1")!==-1)&
+(__arr.indexOf("bb2")!==-1)&
+(__arr.indexOf("bc3")!==-1)&
+(__arr.indexOf("bd4")!==-1)&
+(__arr.indexOf("ca1")!==-1)&
+(__arr.indexOf("cb2")!==-1)&
+(__arr.indexOf("cc3")!==-1)&
+(__arr.indexOf("cd4")!==-1)&
+(__arr.indexOf("da1")!==-1)&
+(__arr.indexOf("db2")!==-1)&
+(__arr.indexOf("dc3")!==-1)&
+(__arr.indexOf("dd4")!==-1)
+)) $ERROR('#1: The nested for-in Statement applied to hierarchial object works properly as described in the Standard');
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A6.1.js
new file mode 100644
index 000000000..66ba609da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A6.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A6.1;
+* @section: 12.6.4;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement";
+* @description: Using Object with custom prototype as an Expression is appropriate. The prototype is "{feat:2,hint:"protohint"}";
+*/
+
+function FACTORY(){this.prop=1;this.hint="hinted"};
+
+FACTORY.prototype = {feat:2,hint:"protohint"};
+
+var __instance = new FACTORY;
+
+__accum="";
+
+for (var key in __instance){
+ __accum+=(key + __instance[key]);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!((__accum.indexOf("prop1")!==-1)&&(__accum.indexOf("feat2")!==-1)&&(__accum.indexOf("hinthinted")!==-1))) {
+ $ERROR('#1: (__accum.indexOf("prop1")!==-1)&&(__accum.indexOf("feat2")!==-1)&&(__accum.indexOf("hinthinted")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__accum.indexOf("hintprotohint")!==-1) {
+ $ERROR('#2: __accum.indexOf("hintprotohint") === -1. Actual: __accum.indexOf("hintprotohint") ==='+ __accum.indexOf("hintprotohint") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A6.js
new file mode 100644
index 000000000..cc5017fcd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A6;
+* @section: 12.6.4;
+* @assertion: The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement";
+* @description: Using Object with custom prototype as an Expression is appropriate. The prototype is "{feat:2,hint:"protohint"}";
+*/
+
+function FACTORY(){this.prop=1;this.hint="hinted"};
+
+FACTORY.prototype = {feat:2,hint:"protohint"};
+
+var __instance = new FACTORY;
+
+__accum="";
+
+for (key in __instance){
+ __accum+=(key + __instance[key]);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!((__accum.indexOf("prop1")!==-1)&&(__accum.indexOf("feat2")!==-1)&&(__accum.indexOf("hinthinted")!==-1))) {
+ $ERROR('#1: (__accum.indexOf("prop1")!==-1)&&(__accum.indexOf("feat2")!==-1)&&(__accum.indexOf("hinthinted")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__accum.indexOf("hintprotohint")!==-1) {
+ $ERROR('#2: __accum.indexOf("hintprotohint") === -1. Actual: __accum.indexOf("hintprotohint") ==='+ __accum.indexOf("hintprotohint") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A7_T1.js
new file mode 100644
index 000000000..85ab69761
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A7_T1.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A7_T1;
+* @section: 12.6.4;
+* @assertion: Properties of the object being enumerated may be deleted during enumeration;
+* @description: Checking "for (LeftHandSideExpression in Expression) Statement" case;
+*/
+
+__obj={aa:1,ba:2,ca:3};
+
+__accum="";
+
+for (__key in __obj){
+
+ erasator_T_1000(__obj,"b");
+
+ __accum+=(__key+__obj[__key]);
+
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!((__accum.indexOf("aa1")!==-1)&&(__accum.indexOf("ca3")!==-1))) {
+ $ERROR('#1: (__accum.indexOf("aa1")!==-1)&&(__accum.indexOf("ca3")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__accum.indexOf("ba2")!==-1) {
+ $ERROR('#2: __accum.indexOf("ba2") === -1. Actual: __accum.indexOf("ba2") ==='+ __accum.indexOf("ba2") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+// erasator is the hash map terminator
+function erasator_T_1000(hash_map, charactr){
+ for (key in hash_map){
+ if (key.indexOf(charactr)===0) {
+ delete hash_map[key];
+ };
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A7_T2.js
new file mode 100644
index 000000000..7a961149d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.6_Iteration_Statements/12.6.4_The_for_in_Statement/S12.6.4_A7_T2.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_A7_T2;
+* @section: 12.6.4;
+* @assertion: Properties of the object being enumerated may be deleted during enumeration;
+* @description: Checking "for (var VariableDeclarationNoIn in Expression) Statement" case;
+*/
+
+__obj={aa:1,ba:2,ca:3};
+
+__accum="";
+
+for (var __key in __obj){
+
+ erasator_T_1000(__obj,"b");
+
+ __accum+=(__key+__obj[__key]);
+
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!((__accum.indexOf("aa1")!==-1)&&(__accum.indexOf("ca3")!==-1))) {
+ $ERROR('#1: (__accum.indexOf("aa1")!==-1)&&(__accum.indexOf("ca3")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__accum.indexOf("ba2")!==-1) {
+ $ERROR('#2: __accum.indexOf("ba2") === -1. Actual: __accum.indexOf("ba2") ==='+ __accum.indexOf("ba2") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+// erasator is the hash map terminator
+function erasator_T_1000(hash_map, charactr){
+ for (key in hash_map){
+ if (key.indexOf(charactr)===0) {
+ delete hash_map[key];
+ };
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T1.js
new file mode 100644
index 000000000..31ffe8f01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A1_T1;
+* @section: 12.7;
+* @assertion: Appearing of continue without an IterationStatement leads to syntax error;
+* @description: Checking if execution of single "continue" without any IterationStatement fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+continue;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T2.js
new file mode 100644
index 000000000..2524f112f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A1_T2;
+* @section: 12.7;
+* @assertion: Appearing of continue without an IterationStatement leads to syntax error;
+* @description: Checking if single "continue" with Label but without any IterationStatement fails;
+* @negative;
+*/
+
+LABEL : x=3.14;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+continue LABEL;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T3.js
new file mode 100644
index 000000000..3ccd9902a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A1_T3;
+* @section: 12.7;
+* @assertion: Appearing of continue without an IterationStatement leads to syntax error;
+* @description: Checking if laballed "continue" with no IterationStatement, placed into a block, fails;
+* @negative;
+*/
+
+LABEL : x=3.14;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ continue LABEL;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T4.js
new file mode 100644
index 000000000..fbde0367c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A1_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A1_T4;
+* @section: 12.7;
+* @assertion: Appearing of continue without an IterationStatement leads to syntax error;
+* @description: Checking if execution of "continue" with no IterationStatement, placed into a block, fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ continue;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A2.js
new file mode 100644
index 000000000..2621bec70
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A2.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A2;
+* @section: 12.7;
+* @assertion: Since LineTerminator between "continue" and Identifier is not allowed, "continue" is evaluated without label;
+* @description: Checking by using eval, inserting LineTerminator between continue and Identifier;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ eval("FOR1 : for(var i=1;i<2;i++){FOR1NESTED : for(var j=1;j<2;j++) { continue\u000AFOR1; } while(0);}");
+ if (j!==2) {
+ $ERROR('#1: Since LineTerminator(U-000A) between continue and Identifier not allowed continue evaluates without label');
+ }
+} catch(e){
+ $ERROR('#1.1: eval("FOR1 : for(var i=1;i<2;i++){FOR1NESTED : for(var j=1;j<2;j++) { continue\\u000AFOR1; } while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ eval("FOR2 : for(var i=1;i<2;i++){FOR2NESTED : for(var j=1;j<2;j++) { continue\u000DFOR2; } while(0);}");
+ if (j!==2) {
+ $ERROR('#2: Since LineTerminator(U-000D) between continue and Identifier not allowed continue evaluates without label');
+ }
+} catch(e){
+ $ERROR('#2.1: eval("FOR2 : for(var i=1;i<2;i++){FOR2NESTED : for(var j=1;j<2;j++) { continue\\u000DFOR2; } while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ eval("FOR3 : for(var i=1;i<2;i++){FOR3NESTED : for(var j=1;j<2;j++) { continue\u2028FOR3; } while(0);}");
+ if (j!==2) {
+ $ERROR('#3: Since LineTerminator(U-2028) between continue and Identifier not allowed continue evaluates without label');
+ }
+} catch(e){
+ $ERROR('#3.1: eval("FOR3 : for(var i=1;i<2;i++){FOR3NESTED : for(var j=1;j<2;j++) { continue\\u2028FOR3; } while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+try{
+ eval("FOR4 : for(var i=1;i<2;i++){FOR4NESTED : for(var j=1;j<2;j++) { continue\u2029FOR4; } while(0);}");
+ if (j!==2) {
+ $ERROR('#4: Since LineTerminator(U-2029) between continue and Identifier not allowed continue evaluates without label');
+ }
+} catch(e){
+ $ERROR('#4.1: eval("FOR4 : for(var i=1;i<2;i++){FOR4NESTED : for(var j=1;j<2;j++) { continue\\u2029FOR4; } while(0);}"); does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A3.js
new file mode 100644
index 000000000..b6c2d45de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A3.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A3;
+* @section: 12.7;
+* @assertion: When "continue Identifier" is evaluated (continue, empty, empty) is returned;
+* @description: Simple using continue without Identifier and labeled loop;
+*/
+
+LABEL_OUT : var x=0, y=0;
+
+LABEL_DO_LOOP : do {
+ LABEL_IN : x=2;
+ continue ;
+ LABEL_IN_2 : var y=2;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==2)&&(y!==0)) {
+ $ERROR('#1: x === 2 and y === 0. Actual: x ==='+x+' and y ==='+ y );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T1.js
new file mode 100644
index 000000000..388b578e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A4_T1;
+* @section: 12.7;
+* @assertion: When "continue Identifier" is evaluated (continue, empty, Identifier) is returned;
+* @description: Simple using continue Identifier construction;
+*/
+
+LABEL_OUT : var x=0, y=0;
+
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)break;
+ continue LABEL_DO_LOOP;
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==1)&&(y!==0)) {
+ $ERROR('#1: x===1 and y === 0. Actual: x==='+x+' and y ==='+y);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T2.js
new file mode 100644
index 000000000..7b5e3c2e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_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.
+
+/**
+* @name: S12.7_A4_T2;
+* @section: 12.7;
+* @assertion: When "continue Identifier" is evaluated (continue, empty, Identifier) is returned;
+* @description: Using embedded and labeled loops, continue to nested loop;
+*/
+
+LABEL_OUT : var x=0, y=0, xx=0, yy=0;
+
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)break;
+ LABEL_NESTED_LOOP : do {
+ LABEL_IN_NESTED : xx++;
+ if(xx===10)break;
+ continue LABEL_NESTED_LOOP;
+ LABEL_IN_NESTED_2 : yy++;
+ } while (0);
+
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==1)&&(y!==1)&&(xx!==1)&(yy!==0)) {
+ $ERROR('#1: (x===1) and (y===1) and (xx===1) and (yy===0). Actual: x==='+x+' and y==='+y+' and xx==='+xx+' and yy==='+yy );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T3.js
new file mode 100644
index 000000000..b10ddd079
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A4_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A4_T3;
+* @section: 12.7;
+* @assertion: When "continue Identifier" is evaluated (continue, empty, Identifier) is returned;
+* @description: Using embedded and labeled loops, continue to outer loop;
+*/
+
+LABEL_OUT : var x=0, y=0, xx=0, yy=0;
+
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)break;
+ LABEL_NESTED_LOOP : do {
+ LABEL_IN_NESTED : xx++;
+ if(xx===10)break;
+ continue LABEL_DO_LOOP;
+ LABEL_IN_NESTED_2 : yy++;
+ } while (0);
+
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==1)&&(y!==0)&&(xx!==1)&(yy!==0)) {
+ $ERROR('#1: (x===1) and (y===0) and (xx===1) and (yy===0). Actual: x==='+x+' and y==='+y+' and xx==='+xx+' and yy==='+yy );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T1.js
new file mode 100644
index 000000000..45788a280
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A5_T1;
+* @section: 12.7;
+* @assertion: When "continue Identifier" is evaluated Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement;
+* @description: Trying to continue another labeled loop;
+* @negative;
+*/
+
+LABEL_OUT : var x=0, y=0;
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)break;
+ continue LABEL_ANOTHER_LOOP;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T2.js
new file mode 100644
index 000000000..a9e5225af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A5_T2;
+* @section: 12.7;
+* @assertion: When "continue Identifier" is evaluated Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement;
+* @description: Identifier is a function name;
+* @negative;
+*/
+
+LABEL_OUT : var x=0, y=0;
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)break;
+ continue IN_DO_FUNC;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T3.js
new file mode 100644
index 000000000..a9052bd83
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A5_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A5_T3;
+* @section: 12.7;
+* @assertion: When "continue Identifier" is evaluated Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement;
+* @description: Identifier is within loop label;
+* @negative;
+*/
+
+LABEL_OUT : var x=0, y=0;
+
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)break;
+ continue LABEL_IN;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A6.js
new file mode 100644
index 000000000..572315869
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A6.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A6;
+* @section: 12.7;
+* @assertion: Appearing of "continue" within a function call that is within an IterationStatement yields SyntaxError;
+* @description: Using labaled "continue Identifier" within a function body;
+* @negative;
+*/
+
+var x=0,y=0;
+
+LABEL1 : do {
+ x++;
+ (function(){continue LABEL1;})();
+ y++;
+} while(0);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A7.js
new file mode 100644
index 000000000..ee74e11b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_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.
+
+/**
+* @name: S12.7_A7;
+* @section: 12.7;
+* @assertion: Appearing of continue within eval statement that is within an IterationStatement yields SyntaxError;
+* @description: Using eval "eval("continue LABEL1")";
+*/
+
+var x=0,y=0;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ LABEL1 : do {
+ x++;
+ eval("continue LABEL1");
+ y++;
+ } while(0);
+ $ERROR('#1: eval("continue LABEL1") does not lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR("1.1: Appearing of continue within eval statement inside of IterationStatement yields SyntaxError");
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_T1.js
new file mode 100644
index 000000000..4432553b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A8_T1;
+* @section: 12.7;
+* @assertion: Appearing of "continue" within a "try/catch" Block yields SyntaxError;
+* @description: Checking if execution of "continue Identifier" within catch Block fails;
+* @negative;
+*/
+
+var x=0,y=0;
+
+try{
+ LABEL1 : do {
+ x++;
+ throw "gonna leave it";
+ y++;
+ } while(0);
+ $ERROR('#1: throw "gonna leave it" lead to throwing exception');
+} catch(e){
+ continue LABEL2;
+ LABEL2 : do {
+ x++;
+ y++;
+ } while(0);
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_T2.js
new file mode 100644
index 000000000..9fc2d1c07
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A8_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.
+
+/**
+* @name: S12.7_A8_T2;
+* @section: 12.7;
+* @assertion: Appearing of "continue" within a "try/catch" Block yields SyntaxError;
+* @description: Checking if execution of "continue" within catch Block fails;
+* @negative;
+*/
+
+var x=0,y=0;
+
+try{
+ LABEL1 : do {
+ x++;
+ throw "gonna leave it";
+ y++;
+ } while(0);
+ $ERROR('#1: throw "gonna leave it" lead to throwing exception');
+} catch(e){
+ continue;
+ LABEL2 : do {
+ x++;
+ y++;
+ } while(0);
+};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A9_T1.js
new file mode 100644
index 000000000..857196ab1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A9_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A9_T1;
+* @section: 12.7;
+* @assertion: Continue inside of try-catch nested in a loop is allowed;
+* @description: Using "continue Identifier" within catch Block that is within a loop;
+*/
+
+var x=0,y=0;
+
+(function(){
+FOR : for(;;){
+ try{
+ x++;
+ if(x===10)return;
+ throw 1;
+ } catch(e){
+ continue FOR;
+ }
+}
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==10) {
+ $ERROR('#1: Continue inside of try-catch nested in loop is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A9_T2.js
new file mode 100644
index 000000000..34dfdf6fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.7_The_continue_Statement/S12.7_A9_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.7_A9_T2;
+* @section: 12.7;
+* @assertion: Continue inside of try-catch nested in a loop is allowed;
+* @description: Using "continue" within catch Block that is within a loop;
+*/
+
+var x=0,y=0;
+
+(function(){
+FOR : for(;;){
+ try{
+ x++;
+ if(x===10)return;
+ throw 1;
+ } catch(e){
+ continue;
+ }
+}
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==10) {
+ $ERROR('#1: Continue inside of try-catch nested in loop is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T1.js
new file mode 100644
index 000000000..2c062fe30
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A1_T1;
+* @section: 12.8;
+* @assertion: Appearing of break without an IterationStatement leads to syntax error;
+* @description: Checking if break statement with no loop fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+break;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T2.js
new file mode 100644
index 000000000..1736e724e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A1_T2;
+* @section: 12.8;
+* @assertion: Appearing of break without an IterationStatement leads to syntax error;
+* @description: Checking if break Identifier with no loop fails;
+* @negative;
+*/
+
+LABEL : x=3.14;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+break LABEL;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T3.js
new file mode 100644
index 000000000..1e9c923bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A1_T3;
+* @section: 12.8;
+* @assertion: Appearing of break without an IterationStatement leads to syntax error;
+* @description: Checking if break statement with no loop, placed into a block, fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ break;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T4.js
new file mode 100644
index 000000000..ed8a5fae3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A1_T4.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A1_T4;
+* @section: 12.8;
+* @assertion: Appearing of break without an IterationStatement leads to syntax error;
+* @description: Checking if break Identifier with no loop, placed into a block, fails;
+* @negative;
+*/
+
+LABEL : x=3.14;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ break LABEL;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A2.js
new file mode 100644
index 000000000..87e21e8a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A2.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A2;
+* @section: 12.8;
+* @assertion: Since LineTerminator between "break" and Identifier is not allowed, "break" is evaluated without label;
+* @description: Checking by using eval, inserting LineTerminator between break and Identifier;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ eval("FOR1 : for(var i=1;i<2;i++){ LABEL1 : do {var x =1;break\u000AFOR1;var y=2;} while(0);}");
+ if (i!==2) {
+ $ERROR('#1: Since LineTerminator(U-000A) between break and Identifier not allowed break evaluates without label');
+ }
+} catch(e){
+ $ERROR('#1.1: eval("FOR1 : for(var i=1;i<2;i++){ LABEL1 : do {var x =1;break\\u000AFOR1;var y=2;} while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ eval("FOR2 : for(var i=1;i<2;i++){ LABEL2 : do {var x =1;break\u000DFOR2;var y=2;} while(0);}");
+ if (i!==2) {
+ $ERROR('#2: Since LineTerminator(U-000D) between break and Identifier not allowed break evaluates without label');
+ }
+} catch(e){
+ $ERROR('#2.1: eval("FOR2 : for(var i=1;i<2;i++){ LABEL2 : do {var x =1;break\\u000DFOR2;var y=2;} while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ eval("FOR3 : for(var i=1;i<2;i++){ LABEL3 : do {var x =1;break\u2028FOR3;var y=2;} while(0);}");
+ if (i!==2) {
+ $ERROR('#3: Since LineTerminator(U-2028) between break and Identifier not allowed break evaluates without label');
+ }
+} catch(e){
+ $ERROR('#3.1: eval("FOR3 : for(var i=1;i<2;i++){ LABEL3 : do {var x =1;break\\u2028FOR3;var y=2;} while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+try{
+ eval("FOR4 : for(var i=1;i<2;i++){ LABEL4 : do {var x =1;break\u2029FOR4;var y=2;} while(0);}");
+ if (i!==2) {
+ $ERROR('#4: Since LineTerminator(U-2029) between break and Identifier not allowed break evaluates without label');
+ }
+} catch(e){
+ $ERROR('#4.1: eval("FOR4 : for(var i=1;i<2;i++){ LABEL4 : do {var x =1;break\\u2029FOR4;var y=2;} while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A3.js
new file mode 100644
index 000000000..0e05eddbe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A3.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A3;
+* @section: 12.8;
+* @assertion: When "break" is evaluated, (break, empty, empty) is returned;
+* @description: Using "break" without Identifier within labeled loop;
+*/
+
+LABEL_OUT : var x=0, y=0;
+
+LABEL_DO_LOOP : do {
+ LABEL_IN : x=2;
+ break ;
+ LABEL_IN_2 : var y=2;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==2)&&(y!==0)) {
+ $ERROR('#1: x === 2 and y === 0. Actual: x ==='+x+' and y ==='+y);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T1.js
new file mode 100644
index 000000000..b5af5dad2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A4_T1;
+* @section: 12.8;
+* @assertion: When "break Identifier" is evaluated, (break, empty, Identifier) is returned;
+* @description: Using "break Identifier" within labaeled loop;
+*/
+
+LABEL_OUT : var x=0, y=0;
+(function(){
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)return;
+ break LABEL_DO_LOOP;
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+})();
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==1)&&(y!==0)) {
+ $ERROR('#1: x === 1 and y === 0. Actual: x === '+x+' and y ==='+ y );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T2.js
new file mode 100644
index 000000000..f44f1588a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_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.
+
+/**
+* @name: S12.8_A4_T2;
+* @section: 12.8;
+* @assertion: When "break Identifier" is evaluated, (break, empty, Identifier) is returned;
+* @description: Using embedded and labeled loops, breaking to nested loop;
+*/
+
+LABEL_OUT : var x=0, y=0, xx=0, yy=0;
+(function(){
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)return;
+ LABEL_NESTED_LOOP : do {
+ LABEL_IN_NESTED : xx++;
+ if(xx===10)return;
+ break LABEL_NESTED_LOOP;
+ LABEL_IN_NESTED_2 : yy++;
+ } while (0);
+
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+})();
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==1)&&(y!==1)&&(xx!==1)&(yy!==0)) {
+ $ERROR('#1: x === 1 and y === 1 and xx === 1 and yy === 0. Actual: x==='+x+' and y==='+y+' and xx==='+xx+' and yy==='+yy );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T3.js
new file mode 100644
index 000000000..1f4d77daa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A4_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A4_T3;
+* @section: 12.8;
+* @assertion: When "break Identifier" is evaluated, (break, empty, Identifier) is returned;
+* @description: Using embedded and labeled loops, breaking to outer loop;
+*/
+
+LABEL_OUT : var x=0, y=0, xx=0, yy=0;
+(function(){
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)return;
+ LABEL_NESTED_LOOP : do {
+ LABEL_IN_NESTED : xx++;
+ if(xx===10)return;
+ break LABEL_DO_LOOP;
+ LABEL_IN_NESTED_2 : yy++;
+ } while (0);
+
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+})();
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==1)&&(y!==0)&&(xx!==1)&(yy!==0)) {
+ $ERROR('#1: x === 1 and y === 0 and xx === 1 and yy === 0. Actual: x==='+x+' and y==='+y+' and xx==='+xx+' and yy==='+yy );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T1.js
new file mode 100644
index 000000000..4fe11a40f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A5_T1;
+* @section: 12.8;
+* @assertion: Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement;
+* @description: Checking if breaking another labeled loop fails;
+* @negative;
+*/
+
+(function(){
+ LABEL_OUT : var x=0, y=0;
+ LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)
+ return;
+ break LABEL_ANOTHER_LOOP;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+ } while(0);
+
+ LABEL_ANOTHER_LOOP : do {
+ ;
+ } while(0);
+
+ function OUT_FUNC(){}
+})();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T2.js
new file mode 100644
index 000000000..0f59c86cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A5_T2;
+* @section: 12.8;
+* @assertion: Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement;
+* @description: Checking if using function name as an Identifier appears to be invalid;
+* @negative;
+*/
+
+(function(){
+ LABEL_OUT : var x=0, y=0;
+ LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)
+ return;
+ break IN_DO_FUNC;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+ } while(0);
+
+ LABEL_ANOTHER_LOOP : do {
+ ;
+ } while(0);
+
+ function OUT_FUNC(){}
+})();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A5_T3.js
new file mode 100644
index 000000000..d3babcfeb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_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.
+
+/**
+* @name: S12.8_A5_T3;
+* @section: 12.8;
+* @assertion: Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement;
+* @description: Checking if using internal loop label as an Identifier appears to be invalid;
+* @negative;
+*/
+
+(function(){
+ LABEL_OUT : var x=0, y=0;
+ LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)
+ return;
+ break LABEL_IN;
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+
+ } while(0);
+
+ LABEL_ANOTHER_LOOP : do {
+ ;
+ } while(0);
+
+ function OUT_FUNC(){}
+
+})();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A6.js
new file mode 100644
index 000000000..8dbc7acb2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A6.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A6;
+* @section: 12.8;
+* @assertion: Appearing of "break" within a function call that is nested in a IterationStatement yields SyntaxError;
+* @description: Checking if using "break Identifier" within a function body appears to be invalid;
+* @negative;
+*/
+
+var x=0,y=0;
+
+LABEL1 : do {
+ x++;
+ (function(){break LABEL1;})();
+ y++;
+} while(0);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A7.js
new file mode 100644
index 000000000..b900e7664
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_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.
+
+/**
+* @name: S12.8_A7;
+* @section: 12.8;
+* @assertion: Appearing of "break" within eval statement that is nested in an IterationStatement yields SyntaxError;
+* @description: Using eval "eval("break LABEL1")";
+*/
+
+var x=0,y=0;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ LABEL1 : do {
+ x++;
+ eval("break LABEL1");
+ y++;
+ } while(0);
+ $ERROR('#1: eval("break LABEL1") does not lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR("1.1: Appearing of break within eval statement inside of IterationStatement yields SyntaxError");
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T1.js
new file mode 100644
index 000000000..7280ee6aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A8_T1;
+* @section: 12.8;
+* @assertion: Appearing of "break" within "try/catch" Block yields SyntaxError;
+* @description: Checking if using "break Identifier" from within catch Block appears to be invalid;
+* @negative;
+*/
+
+var x=0,y=0;
+
+try{
+ LABEL1 : do {
+ x++;
+ throw "gonna leave it";
+ y++;
+ } while(0);
+ $ERROR('#1: throw "gonna leave it" lead to throwing exception');
+} catch(e){
+ break LABEL2;
+ LABEL2 : do {
+ x++;
+ y++;
+ } while(0);
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T2.js
new file mode 100644
index 000000000..13811bc2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A8_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A8_T2;
+* @section: 12.8;
+* @assertion: Appearing of "break" within "try/catch" Block yields SyntaxError;
+* @description: Checking if using "break Identifier" from within catch Block appears to be invalid;
+* @negative;
+*/
+
+var x=0,y=0;
+
+try{
+ LABEL1 : do {
+ x++;
+ throw "gonna leave it";
+ y++;
+ } while(0);
+ $ERROR('#1: throw "gonna leave it" lead to throwing exception');
+} catch(e){
+ break;
+ LABEL2 : do {
+ x++;
+ y++;
+ } while(0);
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A9_T1.js
new file mode 100644
index 000000000..9a18da4f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A9_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A9_T1;
+* @section: 12.8;
+* @assertion: Using "break" within "try/catch" statement that is nested in a loop is allowed;
+* @description: Using "continue Identifier" within "catch" statement;
+*/
+
+var x=0,y=0;
+
+(function(){
+FOR : for(;;){
+ try{
+ x++;
+ if(x===10)return;
+ throw 1;
+ } catch(e){
+ break FOR;
+ }
+}
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==1) {
+ $ERROR('#1: break inside of try-catch nested in loop is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A9_T2.js
new file mode 100644
index 000000000..e0d79817c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.8_The_break_Statement/S12.8_A9_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.8_A9_T2;
+* @section: 12.8;
+* @assertion: Using "break" within "try/catch" statement that is nested in a loop is allowed;
+* @description: Using "continue Identifier" within "catch" statement;
+*/
+
+var x=0,y=0;
+
+(function(){
+FOR : for(;;){
+ try{
+ x++;
+ if(x===10)return;
+ throw 1;
+ } catch(e){
+ break ;
+ }
+}
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==1) {
+ $ERROR('#1: break inside of try-catch nested in loop is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T1.js
new file mode 100644
index 000000000..ddea210f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A1_T1;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return" with no function fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+return;
+var y=2;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T10.js
new file mode 100644
index 000000000..2c98b7520
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T10.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.
+
+/**
+* @name: S12.9_A1_T10;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return (0)" with no function fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+return (0);
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T2.js
new file mode 100644
index 000000000..68a8064ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A1_T2;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return x" with no function fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+return x;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T3.js
new file mode 100644
index 000000000..43b709772
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A1_T3;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return" within "try" statement fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ return 1;
+} catch(e){
+ return 1;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T4.js
new file mode 100644
index 000000000..bb15c5a0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A1_T4;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return" with no function fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+return;
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T5.js
new file mode 100644
index 000000000..6027cf802
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A1_T5;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return" with no function, placed into a Block, fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ return;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T6.js
new file mode 100644
index 000000000..46a697036
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A1_T6;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return" with no function, placed into a loop, fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do {
+ var x=1;
+ return;
+ var y=2;
+} while(0);
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T7.js
new file mode 100644
index 000000000..f77868d01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A1_T7;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return x" with no function, placed inside Block, fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ return x;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T8.js
new file mode 100644
index 000000000..509efa7b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A1_T8;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return x" with no function, placed into a loop, fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do {
+ var x=1;
+ return x;
+ var y=2;
+} while(0);
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T9.js
new file mode 100644
index 000000000..80f9e69de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A1_T9.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A1_T9;
+* @section: 12.9;
+* @assertion: Appearing of "return" without a function body leads to syntax error;
+* @description: Checking if execution of "return", placed into a catch Block, fails;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ throw 1;
+} catch(e){
+ return e;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A2.js
new file mode 100644
index 000000000..9a75efd45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.9_A2;
+ * @section: 12.9;
+ * @assertion: LineTerminator between return and Identifier_opt yields return without Identifier_opt;
+ * @description: Checking by using eval, inserting LineTerminator between return and Variable;
+ */
+
+
+//CHECK#1
+try{
+ if (eval("(function(){var x = 1;return\u000Ax;var y=2;})()") !== undefined) {
+ $ERROR("#1: LineTerminator(U-000A) between return and Identifier_opt yields return without Identifier_opt");
+ }
+} catch(e){
+ $ERROR('#1: eval("(function(){var x = 1;return\\u000Ax;var y=2;})()") does not lead to throwing exception');
+}
+
+
+
+
+//CHECK#2
+try{
+ if (eval("(function(){var x = 1;return\u000Dx;var y=2;})()") !== undefined) {
+ $ERROR("#1: LineTerminator(U-000D) between return and Identifier_opt yields return without Identifier_opt");
+ }
+} catch(e){
+ $ERROR('#2: eval("(function(){var x = 1;return\\u000Dx;var y=2;})()") does not lead to throwing exception');
+}
+
+
+
+
+//CHECK#3
+try{
+ if (eval("(function(){var x = 1;return\u2028x;var y=2;})()") !== undefined) {
+ $ERROR("#1: LineTerminator(U-2028) between return and Identifier_opt yields return without Identifier_opt");
+ }
+} catch(e){
+ $ERROR('#3: eval("(function(){var x = 1;return\\u2028x;var y=2;})()") does not lead to throwing exception');
+}
+
+
+
+
+//CHECK#4
+try{
+ if (eval("(function(){var x =1;return\u2029x;var y=2;})()") !== undefined) {
+ $ERROR("#1: LineTerminator(U-2029) between return and Identifier_opt yields return without Identifier_opt");
+ }
+} catch(e){
+ $ERROR('#4: eval("(function(){var x =1;return\\u2029x;var y=2;})()") does not lead to throwing exception');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A3.js
new file mode 100644
index 000000000..f9c64af58
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_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.
+
+/**
+* @name: S12.9_A3;
+* @section: 12.9;
+* @assertion: If Expression is omitted, the return value is undefined;
+* @description: Return without Expression;
+*/
+
+__evaluated = (function (){return;})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== undefined) {
+ $ERROR('#1: If Expression is omitted, the return value is undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A4.js
new file mode 100644
index 000000000..81f0f8c02
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A4.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A4;
+* @section: 12.9;
+* @assertion: The production ReturnStatement : return Expression; is evaluated as:
+* i) Evaluate Expression.
+* ii) Call GetValue(Result(2)).
+* iii) Return (return, Result(3), empty);
+* @description: Return very sophisticated expression and function;
+*/
+
+
+// second derivative
+function DD_operator(f, delta){return function(x){return (f(x+delta)-2*f(x)+f(x-delta))/(delta*delta)};}
+
+DDsin = DD_operator(Math.sin, 0.00001);
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+// ((sin(x))')' = -sin(x)
+if (DDsin( Math.PI/2 ) + Math.sin( Math.PI/2 ) > 0.00001) {
+ $ERROR('#1: return Expression yields to Return (return, GetValue(Evaluate Expression), empty)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A5.js
new file mode 100644
index 000000000..693582618
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/12_Statement/12.9_The_return_Statement/S12.9_A5.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.9_A5;
+* @section: 12.9;
+* @assertion: Code after ReturnStatement is not evaluated;
+* @description: Using code after Return statement;
+*/
+
+//CHECK#1
+var x1=1;
+function myfunc1(){
+ x1++;
+ return;
+ x1*=2;
+}
+myfunc1();
+if (x1!==2) $ERROR('#1: x1 === 2. Actual: x1 ==='+ x1 );
+
+//CHECK#2
+var x2=1;
+function myfunc2(){
+ x2++;
+ return x2;
+ x2*=2;
+}
+myfunc2();
+if (x2!==2) $ERROR('#2: x2 === 2. Actual: x2 ==='+ x2 );
+
+//CHECK#3
+var x3=1;
+function myfunc3(){
+ x3++;
+ return;
+ return x3;
+ x3*=2;
+}
+if (myfunc3()!==undefined) $ERROR('#3: myfunc3() === undefined. Actual: myfunc3() ==='+ myfunc3() );
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A1_T1.js
new file mode 100644
index 000000000..3ea38a422
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A1_T1.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A1_T1;
+* @section: 13.2.1;
+* @assertion: The depth of nested function calls reaches 32;
+* @description: Creating function calls 32 elements depth;
+*/
+
+(function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){})()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+})()
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T1.js
new file mode 100644
index 000000000..36f464543
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A4_T1;
+* @section: 13.2.1;
+* @assertion: Objects as arguments are passed by reference;
+* @description: Adding new number property to a function argument within the function body,
+* where explicit argument is an object defined with "var __obj={}";
+*/
+
+function __func(__arg){
+ __arg.foo=7;
+}
+
+var __obj={};
+
+__func(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.foo !== 7) {
+ $ERROR('#1: __obj.foo === 7. Actual: __obj.foo ==='+__obj.foo);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T2.js
new file mode 100644
index 000000000..c7f68eba3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A4_T2;
+* @section: 13.2.1;
+* @assertion: Objects as arguments are passed by reference;
+* @description: Adding new string property to a function argument within the function body,
+* where explicit argument is an object defined with "__obj={}";
+*/
+
+function __func(__arg){
+ __arg.foo="whiskey gogo";
+}
+
+var __obj={};
+
+ __func(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.foo !== "whiskey gogo") {
+ $ERROR('#1: __obj.foo === "whiskey gogo". Actual: __obj.foo ==='+__obj.foo);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T3.js
new file mode 100644
index 000000000..c12c86b26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A4_T3;
+* @section: 13.2.1;
+* @assertion: Objects as arguments are passed by reference;
+* @description: Adding new number property to a function argument within the function body,
+* where array element "arguments[0]" is an object defined with "__obj={}";
+*/
+
+function __func(){
+ arguments[0]["PI"]=3.14;
+}
+
+var __obj={};
+
+__func(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.PI !== 3.14) {
+ $ERROR('#1: __obj.PI === 3.14. Actual: __obj.PI ==='+__obj.PI);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T4.js
new file mode 100644
index 000000000..e313f516a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A4_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A4_T4;
+* @section: 13.2.1;
+* @assertion: Objects as arguments are passed by reference;
+* @description: Adding new number property to a function argument within the function body,
+* where array element "arguments[0]" is an object defined with "var __obj={}";
+*/
+
+function __func(){
+ arguments[0]["E"]=2.74;
+}
+
+var __obj={};
+
+__func(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.E !== 2.74) {
+ $ERROR('#1: __obj.E === 2.74. Actual: __obj.E ==='+__obj.E);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A5_T1.js
new file mode 100644
index 000000000..7b36af3a9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A5_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A5_T1;
+* @section: 13.2.1;
+* @assertion: Closures are admitted;
+* @description: Sorting with closure;
+*/
+
+var __arr = [4,3,2,1,4,3,2,1,4,3,2,1];
+//Sort uses closure
+//
+__arr.sort(
+ function(x,y) {
+ if (x>y){return -1;}
+ if (x<y){return 1;}
+ if (x==y){return 0;}
+ }
+);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__arr.toString() !== [4,4,4,3,3,3,2,2,2,1,1,1].toString()) {
+ $ERROR('#1: __arr.toString() === [4,4,4,3,3,3,2,2,2,1,1,1].toString(). Actual: __arr.toString() ==='+__arr.toString());
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A5_T2.js
new file mode 100644
index 000000000..85965e28a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A5_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A5_T2;
+* @section: 13.2.1;
+* @assertion: Closures are admitted;
+* @description: Returning a function that approximates the derivative of f
+* using an interval of dx, which should be appropriately small;
+*/
+
+// Return a function that approximates the derivative of f
+// using an interval of dx, which should be appropriately small.
+function derivative(f, dx) {
+ return function(x) {
+ return (f(x + dx) - f(x)) / dx;
+ };
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (Math.abs(derivative(Math.sin, 0.0001)(0) - derivative(Math.sin, 0.0001)(2*Math.PI)) >= 1/65536.0) {
+ $ERROR('#1: Math.abs(derivative(Math.sin, 0.0001)(0) - derivative(Math.sin, 0.0001)(2*Math.PI)) <= 1/65536.0');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A6_T1.js
new file mode 100644
index 000000000..2bb3a254a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A6_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.
+
+/**
+* @name: S13.2.1_A6_T1;
+* @section: 13.2.1;
+* @assertion: Primitive types are passed by value;
+* @description: Declaring a function with "function __func(arg1, arg2)";
+*/
+
+function __func(arg1, arg2){
+ arg1++;
+ arg2+="BA";
+};
+
+var x=1;
+y=2;
+var a="AB"
+b="SAM";
+
+__func(x,a);
+__func(y,b);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==1 || y!==2 || a!=="AB" || b!=="SAM") {
+ $ERROR('#1: x === 1 and y === 2 and a === "AB" and b === "SAM". Actual: x ==='+x+' and y ==='+y+' and a ==='+a+' and b ==='+b);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A6_T2.js
new file mode 100644
index 000000000..1a127f84e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A6_T2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A6_T2;
+* @section: 13.2.1;
+* @assertion: Primitive types are passed by value;
+* @description: Declaring a function with "__func = function(arg1, arg2)";
+*/
+
+__func = function(arg1, arg2){
+ arg1++;
+ arg2+="BA";
+};
+
+var x=1;
+y=2;
+var a="AB"
+b="SAM";
+
+__func(x,a);
+__func(y,b);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==1 || y!==2 || a!=="AB" || b!=="SAM") {
+ $ERROR('#1: x === 1 and y === 2 and a === "AB" and b === "SAM". Actual: x ==='+x+' and y ==='+y+' and a ==='+a+' and b ==='+b);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T1.js
new file mode 100644
index 000000000..123715abc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A7_T1;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object F is called, the following steps are taken:
+* 2. Evaluate F's FunctionBody;
+* if Result.type is returned then Result.value is returned too;
+* @description: Returning null. Declaring a function with "function __func()";
+*/
+
+function __func(){
+ var x = null;
+ return x;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var x=__func();
+} catch(e){
+ $ERROR('#1: var x=__func() does not lead to throwing exception. Actual: exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T2.js
new file mode 100644
index 000000000..19b79bb02
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A7_T2;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object F is called, the following steps are taken:
+* 2. Evaluate F's FunctionBody;
+* if Result.type is returned then Result.value is returned too;
+* @description: Returning null. Declaring a function with "var __func = function ()";
+*/
+
+var __func = function (){
+ var x = null;
+ return x;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var x=__func();
+} catch(e){
+ $ERROR('#1: var x=__func() does not lead to throwing exception. Actual: exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T3.js
new file mode 100644
index 000000000..f39174e3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T3.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A7_T3;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object F is called, the following steps are taken:
+* 2. Evaluate F's FunctionBody;
+* if Result.type is returned then Result.value is returned too;
+* @description: Returning number. Declaring a function with "function __func()";
+*/
+
+function __func(){
+ x = 1;
+ return x;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ x=x;
+ $ERROR('#0: "x=x" lead to throwing exception');
+} catch (e) {}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __x=__func()
+} catch(e){
+ $ERROR('#1: var __x=__func() does not lead to throwing exception. Actual: exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__x !== 1) {
+ $ERROR('#2: __x === 1. Actual: __x ==='+__x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (x !== 1) {
+ $ERROR('#3: x === 1. Actual: x ==='+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T4.js
new file mode 100644
index 000000000..f3d8cb30f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A7_T4.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A7_T4;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object F is called, the following steps are taken:
+* 2. Evaluate F's FunctionBody;
+* if Result.type is returned then Result.value is returned too;
+* @description: Returning boolean. Declaring a function with "function __func()";
+*/
+
+function __func(){
+ var x = true;
+ return x;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ x=x;
+ $ERROR('#0: "x=x" lead to throwing exception');
+} catch (e) {}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __x=__func()
+} catch(e){
+ $ERROR('#1: var __x=__func() does not lead to throwing exception. Actual: exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(__x)) {
+ $ERROR('#2: __x === true. Actual: __x ==='+__x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ x=x;
+ $ERROR('#3: "x=x" lead to throwing exception');
+} catch (e) {}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A8_T1.js
new file mode 100644
index 000000000..b54b56e84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A8_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A8_T1;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object F is called, the following steps are taken:
+* 2. Evaluate F's FunctionBody;
+* if Result.type is thrown then Result.value is thrown too;
+* @description: Throwing an exception within a function body. Declaring function with "function __func()";
+*/
+
+function __func(){
+ var x = 1;
+ throw ("Catch Me If You Can")
+ return x;
+}
+
+try{
+ var x=__func()
+ $ERROR('#0: var x=__func() lead to throwing exception');
+} catch(e){
+ if (e !== "Catch Me If You Can") {
+ $ERROR('#1: Exception === "Catch Me If You Can". Actual: exception ==='+e);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A8_T2.js
new file mode 100644
index 000000000..ce562f24a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A8_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A8_T2;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object F is called, the following steps are taken:
+* 2. Evaluate F's FunctionBody;
+* if Result.type is thrown then Result.value is thrown too;
+* @description: Throwing an exception within a function body. Declaring function with "var __func = function (message)";
+*/
+
+var CATCH_ME_IF_YOU_CAN = true;
+
+var __func = function (message){
+ var x = 1;
+ throw (message)
+ return x;
+}
+
+try{
+ var x=__func(CATCH_ME_IF_YOU_CAN)
+ $ERROR('#0: var x=__func(CATCH_ME_IF_YOU_CAN) lead to throwing exception');
+} catch(e){
+ if (!e) {
+ $ERROR('#1: Exception === true. Actual: exception ==='+e);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9.1_T1.js
new file mode 100644
index 000000000..0411a09ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9.1_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A9.1_T1;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object is called,
+* the body is evaluated and if evaluation result has type "normal", then "undefined" is returned;
+* @description: Declaring a function with "function __func()" and no "return" in the function body;
+*/
+
+var x;
+
+function __func(){
+ x = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== undefined) {
+ $ERROR('#1: __func() === undefined. Actual: __func() ==='+__func());
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!x) {
+ $ERROR('#2: x === true. Actual: x === '+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9.1_T2.js
new file mode 100644
index 000000000..678361b98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9.1_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A9.1_T2;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object is called,
+* the body is evaluated and if evaluation result has type "normal", then "undefined" is returned;
+* @description: Declaring a function with "var __func = function()" and no "return" in the function body;
+*/
+
+var x;
+
+var __func = function(){
+ x = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== undefined) {
+ $ERROR('#1: __func() === undefined. Actual: __func() ==='+__func());
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!x) {
+ $ERROR('#2: x === true. Actual: x === '+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9_T1.js
new file mode 100644
index 000000000..61d48275f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A9_T1;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object is called,
+* the body is evaluated and if evaluation result has type "return" its value is not defined, then "undefined" is returned;
+* @description: Using "return" with no expression. Declaring a function with "function __func()";
+*/
+
+var x;
+
+function __func(){
+ x = 1;
+ return;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== undefined) {
+ $ERROR('#1: __func() === undefined. Actual: __func() ==='+__func());
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (x!==1) {
+ $ERROR('#2: x === 1. Actual: x === '+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9_T2.js
new file mode 100644
index 000000000..a8b719771
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.1_A9_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.1_A9_T2;
+* @section: 13.2.1;
+* @assertion: When the [[Call]] property for a Function object is called,
+* the body is evaluated and if evaluation result has type "return" its value is not defined, then "undefined" is returned;
+* @description: Using "return" with no expression. Declaring a function with "var __func = function()";
+*/
+
+var x;
+
+var __func = function(){
+ x = 1;
+ return;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== undefined) {
+ $ERROR('#1: __func() === undefined. Actual: __func() ==='+__func());
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (x!==1) {
+ $ERROR('#2: x === 1. Actual: x === '+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A10.js
new file mode 100644
index 000000000..dbe9c401b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_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.
+
+/**
+* @name: S13.2.2_A10;
+* @section: 13.2.2;
+* @assertion: Calling a function as a constructor is possible as long as this.any_Function is declared;
+* @description: Calling a function as a constructor after it has been declared;
+*/
+
+function FACTORY(){
+ this.id = 0;
+
+ this.func = function (){
+ return 5;
+ }
+
+ this.id = this.func();
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+} catch (e) {
+ $ERROR('#1: var obj = new FACTORY() does not lead to throwing exception. Actual: Exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (obj.id !== 5) {
+ $ERROR('#2: obj.id === 5. Actual: obj.id ==='+obj.id);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A11.js
new file mode 100644
index 000000000..3ff216c97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A11.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A11;
+* @section: 13.2.2;
+* @assertion: Calling a function as a constructor is possible as long as this.any_Function is declared and called;
+* @description: Calling a function as a constructor after it has been declared with "function func()";
+*/
+
+function FACTORY(){
+ this.id = 0;
+
+ this.id = this.func();
+
+ function func(){
+ return "id_string";
+ }
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+ $ERROR('#1: var obj = new FACTORY() lead to throwing exception');
+} catch (e) {}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A12.js
new file mode 100644
index 000000000..7718f4f8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A12.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A12;
+* @section: 13.2.2;
+* @assertion: Calling a function as a constructor is possible as long as this.any_Function is declared and called;
+* @description: Calling a function as a constructor after it has been declared with "function func()";
+*/
+
+function FACTORY(){
+ this.id = 0;
+
+ this.id = func();
+
+ function func(){
+ return "id_string";
+ }
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+} catch (e) {
+ $ERROR('#1: var obj = new FACTORY() does not lead to throwing exception. Actual: Exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (obj.id !== "id_string") {
+ $ERROR('#2: obj.id === "id_string". Actual: obj.id ==='+obj.id);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A13.js
new file mode 100644
index 000000000..ec2a1b4b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A13.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A13;
+* @section: 13.2.2;
+* @assertion: Calling a function as a constructor is inadmissible as long as this.any_Function is declared by eval and called;
+* @description: Calling a function as a constructor after it has been declared by eval;
+*/
+
+function FACTORY(){
+ this.id = 0;
+
+ this.id = func();
+
+ eval("function func(){return \"id_string\";}");
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+ $ERROR('#1: var obj = new FACTORY() lead to throwing exception');
+} catch (e) {}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A14.js
new file mode 100644
index 000000000..69e150a60
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A14.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A14;
+* @section: 13.2.2;
+* @assertion: Calling a function as a constructor is inadmissible as long as this.any_Function is declared by eval and called;
+* @description: Calling a function as a constructor after it has been declared by eval;
+*/
+
+function FACTORY(){
+ this.id = 0;
+
+ eval("function func(){return \"id_string\";}");
+
+ this.id = func();
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+} catch (e) {
+ $ERROR('#1: var obj = new FACTORY() does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T1.js
new file mode 100644
index 000000000..c03427e91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A15_T1;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called,
+* and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy;
+* @description: Function declared at the end of the program and "obj" property is declared with "var obj = {}";
+*/
+
+var __obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof obj !== "undefined") {
+ $ERROR('#1: typeof obj === "undefined". Actual: typeof obj ==='+typeof obj);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== "A") {
+ $ERROR('#2: __obj.prop === "A". Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.slot.prop !==1) {
+ $ERROR('#3: __obj.slot.prop ===1. Actual: __obj.slot.prop ==='+__obj.slot.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __FACTORY(){
+ this.prop = 1;
+ var obj = {};
+ obj.prop = "A";
+ obj.slot = this;
+ return obj;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T2.js
new file mode 100644
index 000000000..fb7c1e792
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A15_T2;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called,
+* and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy;
+* @description: Function declared at the end of the program and "obj" property is declared with "obj = {}";
+*/
+
+var __obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (obj.prop !== "A") {
+ $ERROR('#1: obj.prop === "A". Actual: obj.prop ==='+obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== "A") {
+ $ERROR('#2: __obj.prop === "A". Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.slot.prop !==1) {
+ $ERROR('#3: __obj.slot.prop === 1. Actual: __obj.slot.prop ==='+__obj.slot.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __FACTORY(){
+ this.prop = 1;
+ obj = {};
+ obj.prop = "A";
+ obj.slot = this;
+ return obj;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T3.js
new file mode 100644
index 000000000..c217e089b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T3.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A15_T3;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called,
+* and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy;
+* @description: Function declared at the end of the program and "obj" property is declared with "var obj = {}";
+*/
+
+__FACTORY = function (){
+ this.prop = 1;
+ var obj = {};
+ obj.prop = "A";
+ obj.slot = this;
+ return obj;
+}
+
+__obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof obj !== "undefined") {
+ $ERROR('#1: typeof obj === "undefined". Actual: typeof obj ==='+typeof obj);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== "A") {
+ $ERROR('#2: __obj.prop === "A". Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.slot.prop !==1) {
+ $ERROR('#3: __obj.slot.prop ===1. Actual: __obj.slot.prop ==='+__obj.slot.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T4.js
new file mode 100644
index 000000000..d300d093c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A15_T4.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A15_T4;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called,
+* and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy;
+* @description: Function declared at the end of the program and "obj" property is declared with "obj = {}";
+*/
+
+__FACTORY = function(){
+ this.prop = 1;
+ obj = {};
+ obj.prop = "A";
+ obj.slot = this;
+ return obj;
+}
+
+__obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (obj.prop !== "A") {
+ $ERROR('#1: obj.prop === "A". Actual: obj.prop ==='+obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== "A") {
+ $ERROR('#2: __obj.prop === "A". Actual: __obj.prop ==='+obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.slot.prop !==1) {
+ $ERROR('#3: __obj.slot.prop ===1. Actual: __obj.slot.prop ==='+obj.slot.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T1.js
new file mode 100644
index 000000000..eae337fac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A16_T1;
+* @section: 13.2.2;
+* @assertion: FunctionExpression within a new statement is admitted;
+* @description: Using "is __obj = new function __func(){this.prop=1;}" as FunctionExpression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "undefined") {
+ $ERROR('#1: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = new function __func(){this.prop=1;};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== 1) {
+ $ERROR('#2: __obj.prop === 1. Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __func !== "undefined") {
+ $ERROR('#5: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T2.js
new file mode 100644
index 000000000..bcd08f83b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A16_T2;
+* @section: 13.2.2;
+* @assertion: FunctionExpression within a new statement is admitted;
+* @description: Using "var __obj = new function __func(arg){this.prop=arg;}(5)" as FunctionExpression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "undefined") {
+ $ERROR('#1: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = new function __func(arg){this.prop=arg;}(5);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== 5) {
+ $ERROR('#2: __obj.prop === 5. Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __func !== "undefined") {
+ $ERROR('#3: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T3.js
new file mode 100644
index 000000000..16fe05d0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A16_T3.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A16_T3;
+* @section: 13.2.2;
+* @assertion: FunctionExpression within a new statement is admitted;
+* @description: Using "is __obj = new function __func(arg){this.prop=arg; return {feat: ++arg}}(5)" as FunctionExpression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "undefined") {
+ $ERROR('#1: typeof __func === "undefined"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = new function __func(arg){this.prop=arg; return {feat: ++arg}}(5);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== undefined) {
+ $ERROR('#2: __obj.prop === undefined. Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.feat !== 6) {
+ $ERROR('#3: __obj.feat === 6. Actual: __obj.feat ==='+__obj.feat);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (typeof __func !== "undefined") {
+ $ERROR('#4: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T1.js
new file mode 100644
index 000000000..88ecf891f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A17_T1;
+* @section: 13.2.2;
+* @assertion: FunctionExpression containing "with" statement is admitted;
+* @description: Using "with" statement within a function body;
+*/
+
+var p1="alert";
+
+var __obj={p1:1,getRight:function(){return "right";}};
+
+this.getRight=function(){return "napravo";};
+
+(function(){
+ with(__obj){
+ p1="w1";
+ function getRight(){return false;}
+ }
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (p1!=="alert") {
+ $ERROR('#1: p1 === "alert". Actual: p1==='+p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (getRight()!=="napravo") {
+ $ERROR('#2: getRight() === "napravo". Actual: getRight() === '+getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.p1!=="w1") {
+ $ERROR('#3: __obj.p1 === "w1". Actual: __obj.p1 ==='+__obj.p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__obj.getRight()!=="right") {
+ $ERROR('#4: __obj.getRight() === "right". Actual: __obj.getRight() ==='+__obj.getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T2.js
new file mode 100644
index 000000000..d0e14cb4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T2.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A17_T2;
+* @section: 13.2.2;
+* @assertion: FunctionExpression containing "with" statement is admitted;
+* @description: Throwing an exception within "with" statement;
+*/
+
+this.p1="alert";
+
+__obj={p1:1,getRight:function(){return "right";}};
+
+getRight=function(){return "napravo";};
+
+try {
+ (function(){
+ with(__obj){
+ p1="w1";
+ getRight=function(){return false;}
+ throw p1;
+ }
+ })();
+} catch (e) {
+ resukt = p1;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (p1!=="alert") {
+ $ERROR('#1: p1 === "alert". Actual: p1==='+p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (getRight()!=="napravo") {
+ $ERROR('#2: getRight() === "napravo". Actual: getRight() === '+getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.p1!=="w1") {
+ $ERROR('#3: __obj.p1 === "w1". Actual: __obj.p1 ==='+__obj.p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__obj.getRight()!==false) {
+ $ERROR('#4: __obj.getRight() === false. Actual: __obj.getRight() === '+__obj.getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (resukt !== "alert") {
+ $ERROR('#5: resukt === "alert". Actual: resukt ==='+resukt);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var resukt;
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T3.js
new file mode 100644
index 000000000..47409b15e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A17_T3.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A17_T3;
+* @section: 13.2.2;
+* @assertion: FunctionExpression containing "with" statement is admitted;
+* @description: In the check 4 we populate field getRight in __obj object since var getRight declaration adds variable to function scope
+* but getRight in statement resolves within with(__obj) scope and searchs getRight in __obj first;
+*/
+
+p1="alert";
+
+this.__obj={p1:1,getRight:function(){return "right";}};
+
+var getRight=function(){return "napravo";};
+
+resukt=(function(){
+ with(__obj){
+ p1="w1";
+ var getRight=function(){return false;};
+ return p1;
+ }
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (p1!=="alert") {
+ $ERROR('#1: p1 === "alert". Actual: p1==='+p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (getRight()!=="napravo") {
+ $ERROR('#2: getRight() === "napravo". Actual: getRight()==='+getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.p1!=="w1") {
+ $ERROR('#3: __obj.p1 === "w1". Actual: __obj.p1 ==='+__obj.p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__obj.getRight()!==false) {
+ $ERROR('#4: __obj.getRight() === false. Actual: __obj.getRight()==='+__obj.getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (resukt !== "w1") {
+ $ERROR('#5: resukt === "w1". Actual: resukt ==='+resukt);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var resukt;
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A18_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A18_T1.js
new file mode 100644
index 000000000..46d3a9ed0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A18_T1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A18_T1;
+* @section: 13.2.2;
+* @assertion: Using arguments object within a "with" Expression that is nested in a function is admitted;
+* @description: Object is declared with "var __obj={callee:"a"}";
+*/
+
+var callee=0, b;
+
+var __obj={callee:"a"};
+
+result=(function(){
+ with (arguments){
+ callee=1;
+ b=true;
+ }
+ return arguments;
+})(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (callee !== 0) {
+ $ERROR('#1: callee === 0. Actual: callee ==='+callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.callee !== "a") {
+ $ERROR('#2: __obj.callee === "a". Actual: __obj.callee==='+__obj.callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (result.callee !== 1) {
+ $ERROR('#3: result.callee === 1. Actual: result.callee ==='+result.callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (!(this.b)) {
+ $ERROR('#4: this.b === true. Actual: this.b ==='+this.b);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A18_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A18_T2.js
new file mode 100644
index 000000000..52accec4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A18_T2.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A18_T2;
+* @section: 13.2.2;
+* @assertion: Using arguments object within a "with" Expression that is nested in a function is admitted;
+* @description: Object is declared with "__obj={callee:"a"}";
+*/
+
+this.callee = 0;
+var b;
+
+__obj={callee:"a"};
+
+function f(){
+ with (arguments){
+ callee=1;
+ b=true;
+ return arguments;
+ }
+};
+
+result=f(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (callee !== 0) {
+ $ERROR('#1: callee === 0. Actual: callee ==='+callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.callee !== "a") {
+ $ERROR('#2: __obj.callee === "a". Actual: __obj.callee ==='+__obj.callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (result.callee !== 1) {
+ $ERROR('#3: result.callee === 1. Actual: result.callee ==='+result.callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (!(this.b)) {
+ $ERROR('#4: this.b === true. Actual: this.b ==='+this.b);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T1.js
new file mode 100644
index 000000000..a21ce40eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A19_T1;
+* @section: 13.2.2;
+* @assertion: Function's scope chain is started when it is declared;
+* @description: Function is declared in the global scope;
+*/
+
+var a = 1;
+
+var __func= function(){return a;};
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ result = __func();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: result === 1. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T2.js
new file mode 100644
index 000000000..2440a2e12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A19_T2;
+* @section: 13.2.2;
+* @assertion: Function's scope chain is started when it is declared;
+* @description: Function is declared in the object scope. Using "with" statement;
+*/
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ result = (function(){return a;})();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 2) {
+ $ERROR('#1: result === 2. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T3.js
new file mode 100644
index 000000000..901e3c830
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T3.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A19_T3;
+* @section: 13.2.2;
+* @assertion: Function's scope chain is started when it is declared;
+* @description: Function is declared in the object scope and then an exception is thrown;
+*/
+
+var a = 1;
+
+var __obj = {a:2};
+
+try {
+ with (__obj)
+ {
+ var __func = function (){return a;};
+ throw 3;
+ }
+} catch (e) {
+ ;
+}
+
+result = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 2) {
+ $ERROR('#1: result === 2. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T4.js
new file mode 100644
index 000000000..10aacbe90
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A19_T4;
+* @section: 13.2.2;
+* @assertion: Function's scope chain is started when it is declared;
+* @description: Function is declared in the hierarchical object scope and then an exception is thrown;
+*/
+
+var a = 1;
+
+var __obj = {a:2,__obj:{a:3}};
+
+try {
+ with (__obj)
+ {
+ with(__obj){
+ var __func = function(){return a;};
+ throw 5;
+ }
+ }
+} catch (e) {
+ ;
+}
+
+result = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 3) {
+ $ERROR('#1: result === 3. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T5.js
new file mode 100644
index 000000000..c0e5a62ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T5.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A19_T5;
+* @section: 13.2.2;
+* @assertion: Function's scope chain is started when it is declared;
+* @description: Function is declared in the object scope, then an exception is thrown and the object is deleted;
+*/
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ try {
+
+ var __func = function()
+ {
+ return a;
+ }
+ throw 3;
+ } catch (e) {
+ ;
+ }
+}
+
+delete __obj;
+
+result = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 2) {
+ $ERROR('#1: result === 2. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T6.js
new file mode 100644
index 000000000..df7b522fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T6.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A19_T6;
+* @section: 13.2.2;
+* @assertion: Function's scope chain is started when it is declared;
+* @description: Function is declared in the "object->do-while" scope, then the object is deleted and another object with the same name is declared;
+*/
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ do {
+ var __func = function()
+ {
+ return a;
+ }
+ } while(0);
+}
+
+delete __obj;
+
+var __obj = {a:3};
+
+with (__obj)
+{
+ result = __func();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 2) {
+ $ERROR('#1: result === 2. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T7.js
new file mode 100644
index 000000000..cfa12338a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T7.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A19_T7;
+* @section: 13.2.2;
+* @assertion: Function's scope chain is started when it is declared;
+* @description: Function is declared in the object scope as a variable;
+*/
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ var __func = function()
+ {
+ return a;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.hasOwnProperty('__func')) {
+ $ERROR('#1: __obj.hasOwnProperty(\'__func\') === false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////// /////////////////////////////////////////
+//CHECK#2
+if (!(this.hasOwnProperty('__func'))) {
+ $ERROR('#2: this.hasOwnProperty(\'__func\') === true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__func in __obj) {
+ $ERROR('#3: (__func in __obj) === false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (this.__func === undefined) {
+ $ERROR('#4: this.__func !== undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T8.js
new file mode 100644
index 000000000..aea475781
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A19_T8.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A19_T8;
+* @section: 13.2.2;
+* @assertion: Function's scope chain is started when it is declared;
+* @description: Function is declared multiply times;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (typeof __func !== "undefined") {
+ $ERROR('#0: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var a = 1, b = "a";
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ while(1){
+ var __func = function()
+ {
+ return a;
+ }
+ break;
+ }
+}
+
+delete __obj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== 2) {
+ $ERROR('#1: __func() === 2. Actual: __func() ==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = {a:3,b:"b"};
+
+with (__obj)
+{
+ var __func = function()
+ {
+ return b;
+ }
+}
+
+delete __obj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func()!=="b") {
+ $ERROR('#2: __func()==="b". Actual: __func()==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+with ({a:99,b:"c"})
+{
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#3
+ if (__func() !== "b") {
+ $ERROR('#3: __func()==="b". Actual: __func()==='+__func());
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A1_T1.js
new file mode 100644
index 000000000..8a319f0a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A1_T1;
+* @section: 13.2.2;
+* @assertion: Since a function is an object, it might be set to [[Prototype]] property of a new created object through [[Construct]] property;
+* @description: Declaring a function with "function __func()";
+*/
+
+var __MONSTER="monster";
+var __PREDATOR="predator";
+
+function __PROTO(){};
+
+try{
+ __PROTO.type=__MONSTER;
+}
+catch(e){
+ $ERROR('#0: __PROTO.type=__MONSTER does not lead to throwing exception')
+}
+
+function __FACTORY(){this.name=__PREDATOR};
+
+__FACTORY.prototype=__PROTO;
+
+var __monster = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__PROTO.isPrototypeOf(__monster))) {
+ $ERROR('#1: __PROTO.isPrototypeOf(__monster) must be true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__monster.type !==__MONSTER) {
+ $ERROR('#2: __monster.type ===__MONSTER. Actual: __monster.type ==='+__monster.type);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A1_T2.js
new file mode 100644
index 000000000..949b8f02c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A1_T2.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A1_T2;
+* @section: 13.2.2;
+* @assertion: Since a function is an object, it might be set to [[Prototype]] property of a new created object through [[Construct]] property;
+* @description: Declaring a function with "var __PROTO = function()";
+*/
+
+var __MONSTER="monster";
+var __PREDATOR="predator";
+
+var __PROTO = function(){};
+
+try{
+ __PROTO.type=__MONSTER;
+}
+catch(e){
+ $FAIL('#0: __PROTO.type=__MONSTER does not lead to throwing exception')
+}
+
+var __FACTORY = function(){this.name=__PREDATOR};
+
+__FACTORY.prototype=__PROTO;
+
+var __monster = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__PROTO.isPrototypeOf(__monster))) {
+ $ERROR('#1: __PROTO.isPrototypeOf(__monster) must be true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__monster.type !==__MONSTER) {
+ $ERROR('#2: __monster.type ===__MONSTER. Actual: __monster.type ==='+__monster.type);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A2.js
new file mode 100644
index 000000000..f09062251
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A2;
+* @section: 13.2.2;
+* @assertion: Since a function is an object, it might be set to [[Prototype]] property of a new created object through [[Construct]] property,
+* but [[call]] property must fail with TypeError error;
+* @description: Trying to [[call]] this function;
+*/
+
+var __PLANT="flower";
+var __ROSE="rose";
+
+function __PROTO(){};
+
+try{
+ __PROTO.type=__PLANT;
+}
+catch(e){
+ $ERROR('#0: __PROTO.type=__PLANT does not lead to throwing exception')
+}
+
+function __FACTORY(){this.name=__ROSE};
+
+__FACTORY.prototype=__PROTO;
+
+var __rose = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ __rose();
+ $ERROR('#1: __rose() lead to throwing exception');
+} catch(e){
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2: Exception Type is TypeError. Actual: exception ==='+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A3_T1.js
new file mode 100644
index 000000000..741540701
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A3_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A3_T1;
+* @section: 13.2.2, 15.2.3.1;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* It gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
+* If PROTO_VAL is not an object, sets the [[Prototype]] property of native ECMAScript object just created
+* to the original Object prototype object as described in 15.2.3.1;
+* @description: Declaring a function with "function __FACTORY()";
+*/
+
+function __FACTORY(){};
+__FACTORY.prototype=1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __FACTORY.prototype !== 'number') {
+ $ERROR('#1: typeof __FACTORY.prototype === \'number\'. Actual: typeof __FACTORY.prototype ==='+(typeof __FACTORY.prototype));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __device = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(Object.prototype.isPrototypeOf(__device))) {
+ $ERROR('#2: Object.prototype.isPrototypeOf(__device) === true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A3_T2.js
new file mode 100644
index 000000000..41bd3fbce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A3_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A3_T2;
+* @section: 13.2.2, 15.2.3.1;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* It gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
+* If PROTO_VAL is not an object, sets the [[Prototype]] property of native ECMAScript object just created
+* to the original Object prototype object as described in 15.2.3.1;
+* @description: Declaring a function with "var __FACTORY = function()";
+*/
+
+var __FACTORY = function(){};
+__FACTORY.prototype=1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __FACTORY.prototype !== 'number') {
+ $ERROR('#1: typeof __FACTORY.prototype === \'number\'. Actual: typeof __FACTORY.prototype ==='+(typeof __FACTORY.prototype));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __device = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(Object.prototype.isPrototypeOf(__device))) {
+ $ERROR('#2: Object.prototype.isPrototypeOf(__device) === true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A4_T1.js
new file mode 100644
index 000000000..4f2fdfe70
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A4_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.
+
+/**
+* @name: S13.2.2_A4_T1;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
+* If PROTO_VAL is an object, sets the [[Prototype]] property of native ECMAScript object just created
+* to the PROTO_VAL;
+* @description: Declaring a function with "function __FACTORY()";
+*/
+
+var __CUBE="cube";
+
+function __FACTORY(){
+};
+__FACTORY.prototype={ shape:__CUBE, printShape:function(){return this.shape;} };
+
+var __device = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__device.printShape === undefined) {
+ $ERROR('#1: __device.printShape !== undefined. Actual: __device.printShape ==='+__device.printShape);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__device.printShape() !== __CUBE) {
+ $ERROR('#2: __device.printShape() === __CUBE. Actual: __device.printShape() ==='+__device.printShape());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A4_T2.js
new file mode 100644
index 000000000..0f09869d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A4_T2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A4_T2;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
+* If PROTO_VAL is an object, sets the [[Prototype]] property of native ECMAScript object just created
+* to the PROTO_VAL;
+* @description: Declaring a function with "__FACTORY = function()";
+*/
+
+__CUBE="cube";
+
+__FACTORY = function(){};
+
+__FACTORY.prototype={ shape:__CUBE, printShape:function(){return this.shape;} };
+
+__device = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__device.printShape === undefined) {
+ $ERROR('#1: __device.printShape !== undefined. Actual: __device.printShape ==='+__device.printShape);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__device.printShape() !== __CUBE) {
+ $ERROR('#2: __device.printShape() === __CUBE. Actual: __device.printShape() ==='+__device.printShape());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A5_T1.js
new file mode 100644
index 000000000..5c68631a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A5_T1.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A5_T1;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Invoke the [[Call]] property of F, providing native ECMAScript object just created as the this value and
+* providing the argument list passed into [[Construct]] as the argument values;
+* @description: Declaring a function with "function __FACTORY(arg1, arg2)";
+*/
+
+__VOLUME=8;
+__RED="red";
+__ID=12342;
+__TOP=1.1;
+__BOTTOM=0.0;
+__LEFT=0.0;
+
+
+function __FACTORY(arg1, arg2){
+ this.volume=__VOLUME;
+ color=__RED;
+ this.id=arg1;
+ top=arg2;
+ this.bottom=arguments[3];
+ left=arguments[4];
+};
+
+__device = new __FACTORY(__ID, __TOP, __BOTTOM, __LEFT);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__device.color !== undefined) {
+ $ERROR('#1: __device.color === undefined. Actual: __device.color ==='+__device.color);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__device.volume !== __VOLUME) {
+ $ERROR('#2: __device.volume === __VOLUME. Actual: __device.volume ==='+__device.volume);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__device.top !== undefined) {
+ $ERROR('#3: __device.top === undefined. Actual: __device.top ==='+__device.top);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__device.id !== __ID) {
+ $ERROR('#4: __device.id === __ID. Actual: __device.id ==='+__device.id);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__device.left !== undefined) {
+ $ERROR('#5: __device.left === undefined. Actual: __device.left ==='+__device.left);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__device.bottom !== __BOTTOM) {
+ $ERROR('#6: __device.bottom === __BOTTOM. Actual: __device.bottom ==='+__device.bottom);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A5_T2.js
new file mode 100644
index 000000000..6ce86db7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A5_T2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A5_T2;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Invoke the [[Call]] property of F, providing native ECMAScript object just created as the this value and
+* providing the argument list passed into [[Construct]] as the argument values;
+* @description: Declaring a function with "__FACTORY = function(arg1, arg2)";
+*/
+
+__VOLUME=8;
+__RED="red";
+__ID=12342;
+__TOP=1.1;
+__BOTTOM=0.0;
+__LEFT=0.0;
+
+
+__FACTORY = function(arg1, arg2){
+ this.volume=__VOLUME;
+ color=__RED;
+ this.id=arg1;
+ top=arg2;
+ this.bottom=arguments[3];
+ left=arguments[4];
+};
+
+__device = new __FACTORY(__ID, __TOP, __BOTTOM, __LEFT);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__device.color !== undefined) {
+ $ERROR('#1: __device.color === undefined. Actual: __device.color ==='+__device.color);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__device.volume !== __VOLUME) {
+ $ERROR('#2: __device.volume === __VOLUME. Actual: __device.volume ==='+__device.volume);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__device.top !== undefined) {
+ $ERROR('#3: __device.top === undefined. Actual: __device.top ==='+__device.top);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__device.id !== __ID) {
+ $ERROR('#4: __device.id === __ID. Actual: __device.id ==='+__device.id);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__device.left !== undefined) {
+ $ERROR('#5: __device.left === undefined. Actual: __device.left ==='+__device.left);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__device.bottom !== __BOTTOM) {
+ $ERROR('#6: __device.bottom === __BOTTOM. Actual: __device.bottom ==='+__device.bottom);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A6_T1.js
new file mode 100644
index 000000000..17b9e3d58
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A6_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A6_T1;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+* list passed into [[Construct]] as the argument values.
+* If Type( [[Call]] returned) is not Object then return passed as this into [[Call]] object;
+* @description: Declaring a function with "__func = function(arg)";
+*/
+
+__FOO="fooValue";
+__BAR="barValue";
+
+__func = function(arg){
+ this.foo=arg;
+ return 0;
+ this.bar=arguments[1];
+};
+
+__obj = new __func(__FOO, __BAR);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.foo!==__FOO) {
+ $ERROR('#1: __obj.foo === __FOO. Actual: __obj.foo==='+__obj.foo);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.bar!==undefined) {
+ $ERROR('#2: __obj.bar === undefined. Actual: __obj.bar==='+__obj.bar);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A6_T2.js
new file mode 100644
index 000000000..1e46f0897
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A6_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.
+
+/**
+* @name: S13.2.2_A6_T2;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+* list passed into [[Construct]] as the argument values.
+* If Type( [[Call]] returned) is not Object then return passed as this into [[Call]] object;
+* @description: Declaring a function with "function __func (arg)";
+*/
+
+var __FOO="fooValue";
+var __BAR="barValue";
+
+function __func (arg){
+ this.foo=arg;
+ return true;
+ this.bar=arguments[1];
+};
+
+var __obj = new __func(__FOO, __BAR);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.foo!==__FOO) {
+ $ERROR('#1: __obj.foo === __FOO. Actual: __obj.foo==='+__obj.foo);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.bar!==undefined) {
+ $ERROR('#2: __obj.bar === undefined. Actual: __obj.bar==='+__obj.bar);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A7_T1.js
new file mode 100644
index 000000000..7895e2085
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A7_T1.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A7_T1;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+* list passed into [[Construct]] as the argument values.
+* If Type( [[Call]] returned) is an Object then return this just as obtained object;
+* @description: Declaring a function with "as __func = function(arg)";
+*/
+
+var __FRST="one";
+var __SCND="two";
+
+function __func (arg1, arg2){
+ this.first=arg1;
+ var __obj={second:arg2};
+ return __obj;
+
+};
+
+var __obj__ = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj__.first !== undefined) {
+ $ERROR('#1: __obj__.first === undefined. Actual: __obj__.first==='+__obj__.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj__.second !== __SCND) {
+ $ERROR('#2: __obj__.second === __SCND. Actual: __obj__.second ==='+__obj__.second);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A7_T2.js
new file mode 100644
index 000000000..221b5a697
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A7_T2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A7_T2;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+* list passed into [[Construct]] as the argument values.
+* If Type( [[Call]] returned) is an Object then return this just as obtained object;
+* @description: Declaring a "function as function __func (arg)";
+*/
+
+__FRST="one";
+__SCND="two";
+
+__func = function(arg1, arg2){
+ this.first=arg1;
+ var __obj={second:arg2};
+ return __obj;
+
+};
+
+__obj__ = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj__.first !== undefined) {
+ $ERROR('#1: __obj__.first === undefined. Actual: __obj__.first==='+__obj__.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj__.second !== __SCND) {
+ $ERROR('#2: __obj__.second === __SCND. Actual: __obj__.second ==='+__obj__.second);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T1.js
new file mode 100644
index 000000000..ab3e2fef5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A8_T1;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+* list passed into [[Construct]] as the argument values.
+* If Type( [[Call]] returned) is an Function then return this just as obtained function;
+* @description: Creating a function whose prototype contains "return" followed by declaration of another function
+*/
+
+var __FRST="one";
+var __SCND="two";
+
+var __func = function(arg1, arg2){
+ this.first=arg1;
+
+ __gunc.prop=arg2;
+ return __gunc;
+ // function declaration
+ function __gunc(arg){return ++arg};
+
+};
+
+var __instance = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.first !== undefined) {
+ $ERROR('#1: __instance.first === undefined. Actual: __instance.first ==='+__instance.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__instance.prop!==__SCND) {
+ $ERROR('#2: __instance.prop === __SCND. Actual: __instance.prop ==='+__instance.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__instance(1)!== 2) {
+ $ERROR('#2: __instance(1)=== 2. Actual: __instance(1) ==='+__instance(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T2.js
new file mode 100644
index 000000000..ab0a8b9e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T2.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A8_T2;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+* list passed into [[Construct]] as the argument values.
+* If Type( [[Call]] returned) is an Function then return this just as obtained function;
+* @description: Creating a function whose prototype contains declaration of another function declared as a variable;
+*/
+
+var __FRST="one";
+var __SCND="two";
+
+var __func = function(arg1, arg2){
+ this.first=arg1;
+ var __gunc = function(arg){return arg+="BA"};
+ __gunc.prop=arg2;
+ return __gunc;
+
+};
+
+var __instance = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.first !== undefined) {
+ $ERROR('#1: __instance.first === undefined. Actual: __instance.first ==='+__instance.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__instance.prop!==__SCND) {
+ $ERROR('#2: __instance.prop === __SCND. Actual: __instance.prop ==='+__instance.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__instance("SAM")!== "SAMBA") {
+ $ERROR('#2: __instance("SAM") === "SAMBA". Actual: __instance("SAM") ==='+__instance("SAM"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T3.js
new file mode 100644
index 000000000..a8c9ded84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A8_T3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A8_T3;
+* @section: 13.2.2;
+* @assertion: When the [[Construct]] property for a Function object F is called:
+* A new native ECMAScript object is created.
+* Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+* list passed into [[Construct]] as the argument values.
+* If Type( [[Call]] returned) is an Function then return this just as obtained function;
+* @description: Creating a function whose prototype contains declaration of another function defined by using Function.call method;
+*/
+
+var __FRST="one";
+var __SCND="two";
+
+var __func = function(arg1, arg2){
+ this.first=arg1;
+ var __gunc = Function.call(this,"arg","return ++arg;");
+ __gunc.prop=arg2;
+ return __gunc;
+
+};
+
+var __instance = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.first !== undefined) {
+ $ERROR('#1: __instance.first === undefined. Actual: __instance.first ==='+__instance.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__instance.prop!==__SCND) {
+ $ERROR('#2: __instance.prop === __SCND. Actual: __instance.prop ==='+__instance.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__instance(1)!== 2) {
+ $ERROR('#2: __instance(1)=== 2. Actual: __instance(1) ==='+__instance(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A9.js
new file mode 100644
index 000000000..bba1a0c0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2.2_A9.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_A9;
+* @section: 13.2.2;
+* @assertion: Calling a function as a constructor is inadmissible as long as this.any_Function is called before it is declared;
+* @description: Calling a function as a constructor
+*/
+
+function FACTORY(){
+ this.id = 0;
+
+ this.id = this.func();
+
+ this.func = function (){
+ return 5;
+ }
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+ $ERROR('#1: var obj = new FACTORY() lead to throwing exception');
+} catch (e) {}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A1_T1.js
new file mode 100644
index 000000000..30bc47e09
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2_A1_T1;
+* @section: 13.2;
+* @assertion: A "prototype" property is automatically created for every function;
+* @description: Using "function __func(){}" as a FunctionDeclaration;
+*/
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func.prototype === undefined) {
+ $ERROR('#1: __func.prototype !== undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A1_T2.js
new file mode 100644
index 000000000..eed54fb2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A1_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2_A1_T2;
+* @section: 13.2;
+* @assertion: A "prototype" property is automatically created for every function;
+* @description: Using "var __func = function(){}" as a FunctionDeclaration;
+*/
+
+var __func = function(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func.prototype === undefined) {
+ $ERROR('#1: __func.prototype !== undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A2_T1.js
new file mode 100644
index 000000000..f98111a3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A2_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2_A2_T1;
+* @section: 13.2;
+* @assertion: Nested function are admitted;
+* @description: Nesting level is two;
+*/
+
+var __JEDI="jedi";
+
+function __FUNC(){
+ function __GUNC(){
+ return arguments[0];
+ };
+
+ return __GUNC;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__FUNC()(__JEDI) !== __JEDI) {
+ $ERROR('#1: __FUNC()(__JEDI) === __JEDI. Actual: __FUNC()(__JEDI) ==='+__FUNC()(__JEDI));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A2_T2.js
new file mode 100644
index 000000000..dbcf99b32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A2_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2_A2_T2;
+* @section: 13.2;
+* @assertion: Nested function are admitted;
+* @description: Nesting level is three;
+*/
+
+var __ROBOT="C3PO";
+
+function __FUNC(){
+ function __GUNC(){
+ return arguments[0];
+ };
+ function __HUNC(){
+ return __GUNC;
+ };
+ return __HUNC;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__FUNC()()(__ROBOT) !== __ROBOT) {
+ $ERROR('#1: __FUNC()()(__ROBOT) === __ROBOT. Actual: __FUNC()()(__ROBOT) ==='+__FUNC()()(__ROBOT));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A3.js
new file mode 100644
index 000000000..71bd35b86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2_A3;
+* @section: 13.2;
+* @assertion: When Function object(F) is constructed the length property of F is set to the number of formal properties specified in FormalParameterList;
+* @description: Creating functions with various FormalParameterList and checking their lengths;
+*/
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func.length !== 0) {
+ $ERROR('#1: __func.length === 0. Actual: __func.length ==='+__func.length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __gunc(a,b,c){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__gunc.length !== 3) {
+ $ERROR('#2: __gunc.length === 3. Actual: __gunc.length ==='+__gunc.length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A4_T1.js
new file mode 100644
index 000000000..a8928f097
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A4_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2_A4_T1;
+* @section: 13.2;
+* @assertion: When Function object(F) is constructed the following steps from 9 to 11 take place
+* 9.Create a new object as would be constructed by the expression new Object().
+* 10. Set the constructor property of Result(9) to F. This property is given attributes { DontEnum }.
+* 11. Set the "prototype" property of F to Result(9).;
+* @description: Checking prototype, prototype.constructor properties and {DontEnum} property of a constructor.
+* Using "function __func(){}" as a FunctionDeclaration;
+*/
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func.prototype !== 'object') {
+ $ERROR('#1: typeof __func.prototype === \'object\'. Actual: typeof __gunc.prototype ==='+typeof __gunc.prototype);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func.prototype.constructor !== __func) {
+ $ERROR('#2: __func.prototype.constructor === __func. Actual: __gunc.prototype.constructor ==='+__gunc.prototype.constructor);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __constructor_was__enumed;
+
+for (__prop in __func.prototype){
+ if (__prop = 'constructor')
+ __constructor_was__enumed = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__constructor_was__enumed) {
+ $ERROR('#3: __constructor_was__enumed === false. Actual: __constructor_was__enumed ==='+__constructor_was__enumed);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A4_T2.js
new file mode 100644
index 000000000..78215214e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A4_T2.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2_A4_T2;
+* @section: 13.2;
+* @assertion: When Function object(F) is constructed the following steps from 9 to 11 take place
+* 9.Create a new object as would be constructed by the expression new Object().
+* 10. Set the constructor property of Result(9) to F. This property is given attributes { DontEnum }.
+* 11. Set the "prototype" property of F to Result(9).;
+* @description: Checking prototype, prototype.constructor properties and {DontEnum} property of a constructor.
+* Using "var __gunc = function(){}" as a FunctionDeclaration;
+*/
+
+var __gunc = function(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __gunc.prototype !== 'object') {
+ $ERROR('#1: typeof __gunc.prototype === \'object\'. Actual: typeof __gunc.prototype ==='+typeof __gunc.prototype);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__gunc.prototype.constructor !== __gunc) {
+ $ERROR('#2: __gunc.prototype.constructor === __gunc. Actual: __gunc.prototype.constructor ==='+__gunc.prototype.constructor);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __constructor_was__enumed;
+
+for (__prop in __gunc.prototype){
+ if (__prop = 'constructor')
+ __constructor_was__enumed = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__constructor_was__enumed) {
+ $ERROR('#3: __constructor_was__enumed === false. Actual: __constructor_was__enumed ==='+__constructor_was__enumed);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A5.js
new file mode 100644
index 000000000..9840c93d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/13.2_Creating_Function_Objects/S13.2_A5.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2_A5;
+* @section: 13.2, 15.3.3.1;
+* @assertion: When Function object(F) is constructed
+* the [[Prototype]] property of F is set to the original Function prototype object as specified in 15.3.3.1;
+* @description: Function.prototype.isPrototypeOf() is used;
+*/
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(Function.prototype.isPrototypeOf(__func))) {
+ $ERROR('#1: Function.prototype.isPrototypeOf(__func)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+var __gunc = function(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(Function.prototype.isPrototypeOf(__gunc))) {
+ $ERROR('#1: Function.prototype.isPrototypeOf(__gunc)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A1.js
new file mode 100644
index 000000000..ffddd8c0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_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.
+
+/**
+* @name: S13_A1;
+* @section: 13;
+* @assertion: "x=function y(){}" statement does not store a reference to the new function in the varaible y(Identifier);
+* @description: Checking the type of y;
+*/
+
+var __func = function __exp__func(){return 0;};
+
+////////////////////////////////////////////////
+// //////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __exp__func !== "undefined"){
+ $ERROR('#2: typeof __exp__func === "undefined". Actual: typeof __exp__func ==='+typeof __exp__func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A10.js
new file mode 100644
index 000000000..a6dad273b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A10.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A10;
+* @section: 13;
+* @assertion: Function is a data;
+* @description: Using function as a property of an object;
+*/
+
+function __ziggy__func(){return "ziggy stardust"}
+
+var __music_box={};
+
+__music_box.ziggy = __ziggy__func;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (typeof __music_box.ziggy !== "function") {
+ $ERROR('#1: typeof __music_box.ziggy === "function". Actual: typeof __music_box.ziggy ==='+typeof __music_box.ziggy);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__music_box.ziggy() !== "ziggy stardust") {
+ $ERROR('#2: __music_box.ziggy() === "ziggy stardust". Actual: __music_box.ziggy() ==='+__music_box.ziggy());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T1.js
new file mode 100644
index 000000000..299bc5552
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A11_T1;
+* @section: 13;
+* @assertion: Since arguments property has attribute { DontDelete }, only its elements can be deleted;
+* @description: Returning result of "delete arguments";
+*/
+
+function __func(){ return delete arguments;}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func("A","B",1,2)) {
+ $ERROR('#1: arguments property has attribute { DontDelete }');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T2.js
new file mode 100644
index 000000000..130d4c899
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A11_T2;
+* @section: 13;
+* @assertion: Since arguments property has attribute { DontDelete }, only its elements can be deleted;
+* @description: Checking if deleting the arguments property fails and then returning it;
+*/
+
+function __func(){
+ delete arguments;
+ return arguments;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func("A","B",1,2) !== "object") {
+ $ERROR('#1: arguments property has attribute { DontDelete }');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T3.js
new file mode 100644
index 000000000..10e879400
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A11_T3;
+* @section: 13;
+* @assertion: Since arguments property has attribute { DontDelete }, only its elements can be deleted;
+* @description: Deleting arguments[i] and returning result of the operation;
+*/
+
+function __func(){
+ was_del=false;
+ for (i=0; i < arguments.length; i++)
+ was_del= was_del || delete arguments[i];
+ return was_del;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!__func("A","B",1,2)) {
+ $ERROR('#1: Since arguments property has attribute { DontDelete } elements of arguments can be deleted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T4.js
new file mode 100644
index 000000000..d446882ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A11_T4.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A11_T4;
+* @section: 13;
+* @assertion: Since arguments property has attribute { DontDelete }, only its elements can be deleted;
+* @description: Deleting arguments[i] and checking the type of arguments[i];
+*/
+
+function __func(){
+ is_undef=true;
+ for (i=0; i < arguments.length; i++)
+ {
+ delete arguments[i];
+ is_undef= is_undef && (typeof arguments[i] === "undefined");
+ };
+ return is_undef;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!__func("A","B",1,2)) {
+ $ERROR('#1: Since arguments property has attribute { DontDelete }, but elements of arguments can be deleted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A12_T1.js
new file mode 100644
index 000000000..82ff29beb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A12_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A12_T1;
+* @section: 13;
+* @assertion: Function declarations in global or function scope are {DontDelete};
+* @description: Checking if deleting a function that is declared in global scope fails;
+*/
+
+ALIVE="Letov is alive"
+
+function __func(){
+ return ALIVE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete __func) {
+ $ERROR('#1: delete __func returning false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== ALIVE) {
+ $ERROR('#2: __func() === ALIVE. Actual: __func() ==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A12_T2.js
new file mode 100644
index 000000000..4467cdc46
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A12_T2.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A12_T2;
+* @section: 13;
+* @assertion: Function declarations in global or function scope are {DontDelete};
+* @description: Checking if deleting a function that is declared in function scope fails;
+*/
+
+ALIVE="Letov is alive"
+
+function __cont(){
+
+ function __func(){
+ return ALIVE;
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#1
+ if (delete __func) {
+ $ERROR('#1: delete __func returning false');
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#2
+ if (__func() !== ALIVE) {
+ $ERROR('#2: __func() === ALIVE. Actual: __func() ==='+__func());
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+};
+
+__cont();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T1.js
new file mode 100644
index 000000000..ad024f20b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A13_T1;
+* @section: 13;
+* @assertion: Deleting arguments[i] leads to breaking the connection to local reference;
+* @description: Deleting arguments[i];
+*/
+
+function __func(__arg){
+ delete arguments[0];
+ if (arguments[0] !== undefined) {
+ $ERROR('#1.1: arguments[0] === undefined');
+ }
+ return __arg;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(1) !== 1) {
+ $ERROR('#1.2: __func(1) === 1. Actual: __func(1) ==='+__func(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T2.js
new file mode 100644
index 000000000..13db07dbb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A13_T2;
+* @section: 13;
+* @assertion: Deleting arguments[i] leads to breaking the connection to local reference;
+* @description: Changing arguments value and then deleting the argument;
+*/
+
+function __func(__arg){
+ __arg = 2;
+ delete arguments[0];
+ if (arguments[0] !== undefined) {
+ $ERROR('#1.1: arguments[0] === undefined');
+ }
+ return __arg;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(1) !== 2) {
+ $ERROR('#1.2: __func(1) === 2. Actual: __func(1) ==='+__func(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T3.js
new file mode 100644
index 000000000..870304d72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A13_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A13_T3;
+* @section: 13;
+* @assertion: Deleting arguments[i] leads to breaking the connection to local reference;
+* @description: Changing argument value, deleting the argument and then defining a new value for arguments[i];
+*/
+
+function __func(__arg){
+ __arg = 2;
+ delete arguments[0];
+ if (arguments[0] !== undefined) {
+ $ERROR('#1.1: arguments[0] === undefined');
+ }
+ arguments[0] = "A";
+ if (arguments[0] !== "A") {
+ $ERROR('#1.2: arguments[0] === "A"');
+ }
+ return __arg;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(1) !== 2) {
+ $ERROR('#1.3: __func(1) === 2. Actual: __func(1) ==='+__func(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A14.js
new file mode 100644
index 000000000..44b8f9f68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A14.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A14;
+* @section: 13;
+* @assertion: Unicode symbols in function name are allowed;
+* @description: Defining function name with unicode symbols;
+*/
+
+eval("function __func\u0041(__arg){return __arg;};");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __funcA !== "function") {
+ $ERROR('#1: unicode symbols in function name are allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T1.js
new file mode 100644
index 000000000..e9f6a8514
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A15_T1;
+* @section: 13;
+* @assertion: ''arguments'' variable overrides ActivationObject.arguments;
+* @description: Declaring a function with "__func(arguments)";
+*/
+
+function __func(arguments){
+ return arguments;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(42) !== 42) {
+ $ERROR('#1: "arguments" variable overrides ActivationObject.arguments');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T2.js
new file mode 100644
index 000000000..b86409a57
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A15_T2;
+* @section: 13;
+* @assertion: ''arguments'' variable overrides ActivationObject.arguments;
+* @description: Overriding arguments within functions body;
+*/
+
+THE_ANSWER="Answer to Life, the Universe, and Everything";
+
+function __func(){
+ var arguments = THE_ANSWER;
+ return arguments;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(42,42,42) !== THE_ANSWER) {
+ $ERROR('#1: "arguments" variable overrides ActivationObject.arguments');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T3.js
new file mode 100644
index 000000000..502dc1c94
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A15_T3;
+* @section: 13;
+* @assertion: ''arguments'' variable overrides ActivationObject.arguments;
+* @description: Declaring a variable named with "arguments" without a function;
+*/
+
+THE_ANSWER="Answer to Life, the Universe, and Everything";
+
+var arguments = THE_ANSWER;
+
+function __func(arguments){
+ return arguments;
+
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func() !== "undefined") {
+ $ERROR('#1: typeof __func() === "undefined". Actual: typeof __func() ==='+typeof __func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func("The Ultimate Question") !== "The Ultimate Question") {
+ $ERROR('#2: __func("The Ultimate Question") === "The Ultimate Question". Actual: __func("The Ultimate Question")==='+__func("The Ultimate Question"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T4.js
new file mode 100644
index 000000000..47a7045ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T4.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A15_T4;
+* @section: 13;
+* @assertion: ''arguments'' variable overrides ActivationObject.arguments;
+* @description: Declaring a variable named with "arguments" and following a "return" statement within a function body;
+*/
+
+THE_ANSWER="Answer to Life, the Universe, and Everything";
+
+function __func(){
+ return typeof arguments;
+ var arguments = THE_ANSWER;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(42,42,42) !== "object") {
+ $ERROR('#1: __func(42,42,42) === "object". Actual: __func(42,42,42)==='+__func(42,42,42));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T5.js
new file mode 100644
index 000000000..636e3833a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A15_T5.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A15_T5;
+* @section: 13;
+* @assertion: ''arguments'' variable overrides ActivationObject.arguments;
+* @description: Creating a variable named with "arguments" without a function;
+*/
+
+THE_ANSWER="Answer to Life, the Universe, and Everything";
+
+var arguments = THE_ANSWER;
+
+function __func(){
+ return arguments;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ( __func() === THE_ANSWER) {
+ $ERROR('#1: __func() !== THE_ANSWER');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func("The Ultimate Question") === "The Ultimate Question") {
+ $ERROR('#2: __func("The Ultimate Question") !== "The Ultimate Question"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A16.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A16.js
new file mode 100644
index 000000000..2c4da1b75
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A16.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A16;
+* @section: 13;
+* @assertion: Any separators are admitted between declaration chunks;
+* @description: Inserting separators between declaration chunks;
+*/
+
+function
+x
+(
+)
+{
+}
+;
+
+x();
+
+function y ( ) {};
+
+y();
+
+function
+
+z
+
+(
+
+)
+
+{
+
+}
+
+;
+
+z();
+
+eval("function\u0009\u2029w(\u000C)\u00A0{\u000D};");
+
+w();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A17_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A17_T1.js
new file mode 100644
index 000000000..ab4287e3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A17_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A17_T1;
+* @section: 13;
+* @assertion: Function call cannot appear in the program before the FunctionExpression appears;
+* @description: Trying to call a function before the FunctionExpression appears;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __result = __func();
+ $FAIL("#1.1: var __result = __func() lead to throwing exception");
+} catch(e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: func should throw a TypeError Actual: ' + (e));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __func = function (){return "ONE";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+var __result = __func();
+if (__result !== "ONE") {
+ $ERROR('#2: __result === "ONE". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__func = function (){return "TWO";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+var __result = __func();
+if (__result !== "TWO") {
+ $ERROR('#3: __result === "TWO". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A17_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A17_T2.js
new file mode 100644
index 000000000..61d2e837e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A17_T2.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A17_T2;
+* @section: 13;
+* @assertion: Function call cannot appear in the program before the FunctionExpression appears;
+* @description: Trying to call a function before the FunctionExpression appears and then using the FunctionExpression one more time;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __result = __func();
+ $ERROR("#1: var __result = __func() lead to throwing exception");
+} catch(e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: func should throw a TypeError Actual: ' + (e));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+// now we reach the __func overwriting by new expression
+var __func = function __func(){return "ONE";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+var __result = __func();
+if (__result !== "ONE") {
+ $ERROR('#2: __result === "ONE". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__func = function __func(){return "TWO";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+var __result = __func();
+if (__result !== "TWO") {
+ $ERROR('#3: __result === "TWO". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A18.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A18.js
new file mode 100644
index 000000000..d16252c92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A18.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A18;
+* @section: 13;
+* @assertion: Closures are admitted;
+* @description: Using a function declaration as a function parameter;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof sinx !== 'undefined') {
+ $ERROR('#1: typeof sinx === \'undefined\'. Actual: typeof sinx ==='+typeof sinx);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __val = function derivative(f, dx) {
+ return function(x) {
+ return (f(x + dx) - f(x)) / dx;
+ };
+}(function sinx(x){return Math.sin(x);},.0001)(0.5);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof sinx !== 'undefined') {
+ $ERROR('#2: typeof sinx === \'undefined\'. Actual: typeof sinx ==='+typeof sinx);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A19_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A19_T1.js
new file mode 100644
index 000000000..b686b19e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A19_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A19_T1;
+* @section: 13,13.2;
+* @assertion: "var" does not override function declaration;
+* @description: Creating a function and a variable with identical Identifiers in global scope;
+*/
+
+// since "var" does not override function declaration __decl is set to function
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __decl !== "function") {
+ $ERROR('#1: typeof __decl === "function". Actual: typeof __decl ==='+typeof __decl);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __decl = 1;
+
+//since statement was evaluted __decl turns to 1 from function
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__decl !== 1) {
+ $ERROR('#2: __decl === 1. Actual: __decl ==='+__decl);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __decl(){return 1;}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A19_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A19_T2.js
new file mode 100644
index 000000000..b3f8d3be3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A19_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A19_T2;
+* @section: 13,13.2;
+* @assertion: "var" does not override function declaration;
+* @description: Creating a function and a variable with identical Identifiers within function scope;
+*/
+
+(function (){
+
+ // since "var" does not override function declaration __decl is set to function
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#1
+ if (typeof __decl !== "function") {
+ $ERROR('#1: typeof __decl === "function". Actual: typeof __decl ==='+typeof __decl);
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+
+ var __decl = 1;
+
+ //since statement was evaluted __decl turns to 1 from function
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#2
+ if (__decl !== 1) {
+ $ERROR('#2: __decl === 1. Actual: __decl ==='+__decl);
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+
+ function __decl(){return 1;}
+})();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T1.js
new file mode 100644
index 000000000..bb00e6be4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A2_T1;
+* @section: 13;
+* @assertion: function must be evaluated inside the expression;
+* @description: Defining function body with "return arg";
+*/
+
+var x = (function __func(arg){return arg})(1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x !== 1) {
+ $ERROR('#1: x === 1. Actual: x ==='+x);
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __func !== 'undefined') {
+ $ERROR('#2: typeof __func === \'undefined\'. Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T2.js
new file mode 100644
index 000000000..1d929c9c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_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.
+
+/**
+* @name: S13_A2_T2;
+* @section: 13;
+* @assertion: function must be evaluated inside the expression;
+* @description: Defining function body with "return arg + arguments[1]";
+*/
+
+var x = (function __func(arg){return arg + arguments[1]})(1,"1");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x !== "11") {
+ $ERROR('#1: x === "11". Actual: x ==='+x);
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __func !== 'undefined') {
+ $ERROR('#2: typeof __func === \'undefined\'. Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T3.js
new file mode 100644
index 000000000..dd9c3379a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A2_T3.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A2_T3;
+* @section: 13;
+* @assertion: function must be evaluated inside the expression;
+* @description: Defining function body with "return arguments[0] +"-"+ arguments[1]";
+*/
+
+var x = (function __func(){return arguments[0] +"-"+ arguments[1]})("Obi","Wan");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x !== "Obi-Wan") {
+ $ERROR('#1: x === "Obi-Wan". Actual: x ==='+x);
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __func !== 'undefined') {
+ $ERROR('#2: typeof __func === \'undefined\'. Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T1.js
new file mode 100644
index 000000000..2865a6a4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A3_T1;
+* @section: 13;
+* @assertion: The Identifier in a FunctionExpression can be referenced from inside the FunctionExpression's FunctionBody to allow the function calling itself recursively;
+* @description: Creating a recursive function that calculates factorial, as a variable.
+* Function call itself by it`s name;
+*/
+
+var __func = function __exp__func(arg){
+ if (arg === 1) {
+ return arg;
+ } else {
+ return __exp__func(arg-1)*arg;
+ }
+};
+
+var fact_of_3 = __func(3);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (fact_of_3 !== 6) {
+ $ERROR("#1: fact_of_3 === 6. Actual: fact_of_3 ==="+fact_of_3);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T2.js
new file mode 100644
index 000000000..fa97513bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_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.
+
+/**
+* @name: S13_A3_T2;
+* @section: 13;
+* @assertion: The Identifier in a FunctionExpression can be referenced from inside the FunctionExpression's FunctionBody to allow the function calling itself recursively;
+* @description: Creating a recursive function that calculates factorial, as a variable.
+* Function calls itself by the name of the variable;
+*/
+
+var __func = function (arg){
+ if (arg === 1) {
+ return arg;
+ } else {
+ return __func(arg-1)*arg;
+ }
+};
+
+var fact_of_3 = __func(3);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (fact_of_3 !== 6) {
+ $ERROR("#1: fact_of_3 === 6. Actual: fact_of_3 ==="+fact_of_3);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T3.js
new file mode 100644
index 000000000..0f9b72eac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A3_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A3_T3;
+* @section: 13;
+* @assertion: The Identifier in a FunctionExpression can be referenced from inside the FunctionExpression's FunctionBody to allow the function calling itself recursively;
+* @description: Creating simple recursive function that calculates factorial;
+*/
+
+function __func(arg){
+ if (arg === 1) {
+ return arg;
+ } else {
+ return __func(arg-1)*arg;
+ }
+};
+
+var fact_of_3 = __func(3);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (fact_of_3 !== 6) {
+ $ERROR("#1: fact_of_3 === 6. Actual: fact_of_3 ==="+fact_of_3);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T1.js
new file mode 100644
index 000000000..332c26855
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A4_T1;
+* @section: 13;
+* @assertion: The production FunctionDeclaration: "function Identifier ( FormalParameterList_opt ) { FunctionBody }" is processed by function declarations;
+* @description: Declaring a function that returns string;
+*/
+
+function __func(){return "zig-zig-sputnik";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== "zig-zig-sputnik") {
+ $ERROR('#2: __func() === "zig-zig-sputnik". Actual: __func() ==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T2.js
new file mode 100644
index 000000000..ce4678332
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A4_T2;
+* @section: 13;
+* @assertion: The production FunctionDeclaration: "function Identifier ( FormalParameterList_opt ) { FunctionBody }" is processed by function declarations;
+* @description: Declaring a function that uses prefix increment operator within its "return" Expression;
+*/
+
+function __func(arg){return ++arg;};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func(1) !== 2) {
+ $ERROR('#2: __func(1) === 2. Actual: __func(1) ==='+__func(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T3.js
new file mode 100644
index 000000000..8f6240227
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A4_T3;
+* @section: 13;
+* @assertion: The production FunctionDeclaration: "function Identifier ( FormalParameterList_opt ) { FunctionBody }" is processed by function declarations;
+* @description: Declaring a function that uses arithmetical operators within its "return" Expression;
+*/
+
+function __func(arg1, arg2, arg3){return arg1+=(arg2+=arg3);};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func(10, 20, 30) !== 60) {
+ $ERROR('#2: __func(10, 20, 30) === 60. Actual: __func(10,20,30) ==='+__func(10,20,30));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T4.js
new file mode 100644
index 000000000..7609bba96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A4_T4.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A4_T4;
+* @section: 13;
+* @assertion: The production FunctionDeclaration: "function Identifier ( FormalParameterList_opt ) { FunctionBody }" is processed by function declarations;
+* @description: Declaring a function that uses strings concatenaion opeator within its "return" Expression;
+*/
+
+function __func(){return arguments[0].name + " " + arguments[0].surname;};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func({name:'fox', surname:'malder'}) !== "fox malder") {
+ $ERROR('#2: __func({name:\'fox\', surname:\'malder\'}) === "fox malder". Actual: __func({name:\'fox\', surname:\'malder\'}) ==='+__func({name:'fox', surname:'malder'}));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function func__(arg){return arg.name + " " + arg.surname;};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof func__ !== "function") {
+ $ERROR('#3: typeof func__ === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (func__({name:'john', surname:'lennon'}) !== "john lennon") {
+ $ERROR('#4: func__({name:\'john\', surname:\'lennon\'}) === "john lennon". Actual: __func({name:\'john\', surname:\'lennon\'}) ==='+__func({name:'john', surname:'lennon'}));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A5.js
new file mode 100644
index 000000000..34ce13e00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A5.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A5;
+* @section: 13, 10.1.2;
+* @assertion: Only FormalParameterList as arguments list is allowed;
+* @description: Trying to use [arg1, arg2, arg3], (arg1, arg2, arg3), etc. as a FormalParameterList;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ eval("function __func([arg1, arg2, arg3]){return arguments.length;}");
+ $ERROR('#1: eval("function __func([arg1, arg2, arg3]){return arguments.length;}") lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR('#1.1: eval("function __func([arg1, arg2, arg3]){return arguments.length;}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ eval("function __func((arg1, arg2, arg3)){return arguments.length;}");
+ $ERROR('#2: eval("function __func((arg1, arg2, arg3)){return arguments.length;}") lead to throwing exception')
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR('#2.1: eval("function __func((arg1, arg2, arg3)){return arguments.length;}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ eval("function __func(arg1, arg2, arg3,){return arguments.length;}");
+ $ERROR('#3: eval("function __func(arg1, arg2, arg3,){return arguments.length;}") lead to throwing exception')
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR('#3.1: eval("function __func(arg1, arg2, arg3,){return arguments.length;}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A6_T1.js
new file mode 100644
index 000000000..4da1f1e6b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A6_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A6_T1;
+* @section: 13;
+* @assertion: FunctionDeclaration can be overrided by other FunctionDeclaration with the same Identifier;
+* @description: Duplicating function declaration;
+*/
+
+function __func(){return 1};
+
+var __store__func = __func;
+
+var __1 = __func();
+
+ function __func(){return 'A'};
+
+var __A = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__store__func !== __func) {
+ $ERROR('#1: __store__func === __func. Actual: __store__func ==='+__store__func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__1 !== __A) {
+ $ERROR('#2: __1 === __A. Actual: __1 ==='+__1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A6_T2.js
new file mode 100644
index 000000000..fd2fcb83d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A6_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A6_T2;
+* @section: 13;
+* @assertion: FunctionDeclaration can be overrided by other FunctionDeclaration with the same Identifier;
+* @description: Calling a function before it is declared one more time;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __result = __func();
+} catch(e) {
+ $FAIL("#1: Function call can appears in the program before the FunctionDeclaration appears");
+}
+if (__result !== "SECOND") {
+ $ERROR('#1.1: __result === "SECOND". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){return "FIRST";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+__result = __func();
+if (__result !== "SECOND") {
+ $ERROR('#2: __result === "SECOND". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){return "SECOND";};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T1.js
new file mode 100644
index 000000000..df5614109
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T1.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A7_T1;
+* @section: 13;
+* @assertion: The FunctionBody must be SourceElements;
+* @description: Using only SourceElements within the FunctionBody;
+*/
+
+function __func(){'ground control to major tom'};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__2(){b};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __func__2 !== "function") {
+ $ERROR('#2: typeof __func__2 === "function". Actual: typeof __func__2 ==='+typeof __func__2);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__3(){1};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __func__3 !== "function") {
+ $ERROR('#3: typeof __func__3 === "function". Actual: typeof __func__3 ==='+typeof __func__3);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__4(){1+c};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (typeof __func__4 !== "function") {
+ $ERROR('#4: typeof __func__4 === "function". Actual: typeof __func__4 ==='+typeof __func__4);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__5(){inc(d)};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __func__5 !== "function") {
+ $ERROR('#5: typeof __func__5 === "function". Actual: typeof __func__5 ==='+typeof __func__5);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__6(){var \u0042 = 1;};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (typeof __func__6 !== "function") {
+ $ERROR('#6: typeof __func__6 === "function". Actual: typeof __func__6 ==='+typeof __func__6);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//function __func__7(){var \u003d = 1;};
+////////////////////////////////////////////////////////////////////////////////
+////CHECK#7
+//if (typeof __func__7 !== "function") {
+// $ERROR('#7: The FunctionBody must be SourceElements');
+//}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T2.js
new file mode 100644
index 000000000..54d006747
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T2.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A7_T2;
+* @section: 13;
+* @assertion: The FunctionBody must be SourceElements;
+* @description: Inserting elements that is different from SourceElements into the FunctionBody;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ eval("function __func(){/ ABC}");
+ $ERROR('#1: eval("function __func(){/ ABC}") lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR('#1.1: eval("function __func(){/ ABC}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ eval("function __func(){&1}");
+ $ERROR('#3: eval("function __func(){&1}") lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR('#3.1: eval("function __func(){&1}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+try{
+ eval("function __func(){# ABC}");
+ $ERROR('#4: eval("function __func(){# ABC}") lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR('#4.1: eval("function __func(){# ABC}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T3.js
new file mode 100644
index 000000000..1fef1dff8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A7_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A7_T3;
+* @section: 13;
+* @assertion: The FunctionBody must be SourceElements;
+* @description: Checking if execution of "function __func(){\A\B\C}" fails;
+* @negative;
+*/
+
+function __func(){\A\B\C};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A8_T1.js
new file mode 100644
index 000000000..941035b32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A8_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A8_T1;
+* @section: 13;
+* @assertion: Arguments property of activation object contains real params to be passed;
+* @description: Creating a function declared with "function __func(param1, param2, param3)" and using arguments.length property in order to perform the test;
+*/
+
+ function __func(param1, param2, param3) {
+ return arguments.length;
+ }
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func('A') !== 1) {
+ $ERROR('#1: __func(\'A\') === 1. Actual: __func(\'A\') ==='+__func('A'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func('A', 'B', 1, 2,__func) !== 5) {
+ $ERROR('#2: __func(\'A\', \'B\', 1, 2,__func) === 5. Actual: __func(\'A\', \'B\', 1, 2,__func) ==='+__func('A', 'B', 1, 2,__func));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A8_T2.js
new file mode 100644
index 000000000..3de62a732
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A8_T2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A8_T2;
+* @section: 13;
+* @assertion: Arguments property of activation object contains real params to be passed;
+* @description: Creating a function with no parameters and using arguments.length property in order to perform the test;
+*/
+
+ function __func() {
+ return arguments.length;
+ }
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func('A') !== 1) {
+ $ERROR('#1: __func(\'A\') === 1. Actual: __func(\'A\') ==='+__func('A'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func('A', 'B', 1, 2,__func) !== 5) {
+ $ERROR('#2: __func(\'A\', \'B\', 1, 2,__func) === 5. Actual: __func(\'A\', \'B\', 1, 2,__func) ==='+__func('A', 'B', 1, 2,__func));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__func() !== 0) {
+ $ERROR('#3: __func() === 0. Actual: __func() ==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A9.js
new file mode 100644
index 000000000..9e8d73218
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/13_Function_Definition/S13_A9.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_A9;
+* @section: 13;
+* @assertion: Function can be passed as argument;
+* @description: Using function as argument of another function;
+*/
+
+function __func__INC(arg){return arg + 1;};
+function __func__MULT(incrementator, arg, mult){ return incrementator(arg)*mult; };
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func__MULT(__func__INC, 2, 2) !== 6) {
+ $ERROR('#1: function can be passed as argument');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A1.js
new file mode 100644
index 000000000..b3011f33a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S14_A1;
+* @section: 14;
+* @assertion: FunctionExpression must be localed in a reacheable fragment of the program;
+* @description: Declaring a function within an "if" Expression;
+*/
+
+var THERE = "I'm there";
+var HERE = "I'm here";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ( __func !== undefined) {
+ $ERROR('#1: __func === undefined. Actual: __func ==='+ __func );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+if (true){
+ var __func = function(){return HERE;};
+} else {
+ var __func = function (){return THERE;};
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== HERE) {
+ $ERROR('#2: __func() === HERE. Actual: __func() ==='+ __func() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A2.js
new file mode 100644
index 000000000..a459567ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S14_A2;
+* @section: 14;
+* @assertion: FunctionDeclaration cannot be localed inside an Expression;
+* @description: Declaring a function within an "if" Expression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof f !== 'undefined') {
+ $ERROR('#1: typeof f === \'undefined\'. Actual: typeof f ==='+ typeof f );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (function f(arg){
+ if (arg===0)
+ return 1;
+ else
+ return f(arg-1)*arg;
+}(3)!==6) {
+ $ERROR('#2: FunctionDeclaration cannot be localed inside an Expression');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A3.js
new file mode 100644
index 000000000..65a49db9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_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.
+
+/**
+* @name: S14_A3;
+* @section: 14;
+* @assertion: Global FunctionDeclaration cannot be defined within the body of another FunctionDeclaration;
+* @description: Declaring a function within the body of another function;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+ typeof __func );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __gunc !== "undefined") {
+ $ERROR('#2: typeof __gunc === "undefined". Actual: typeof __gunc ==='+ typeof __gunc );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){
+ function __gunc(){return true};
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A5_T1.js
new file mode 100644
index 000000000..da4a1fbeb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A5_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S14_A5_T1;
+* @section: 14;
+* @assertion: The Identifer within a FunctionDeclaration can be written in both letters and unicode;
+* @description: Declaring a function with "function __\u0066\u0075\u006e\u0063(){return "both"}";
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== "both") {
+ $ERROR('#1: __func() === "both". Actual: __func() ==='+ __func() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){return "ascii"};
+function \u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"};//__func in unicode
+function __\u0066\u0075\u006e\u0063(){return "both"};//__func in unicode
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A5_T2.js
new file mode 100644
index 000000000..2bbe0c9c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/14_Program/S14_A5_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S14_A5_T2;
+* @section: 14;
+* @assertion: The Identifer within a FunctionDeclaration can be written in both letters and unicode;
+* @description: Declaring a function with "function \u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"}";
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== "unicode") {
+ $ERROR('#1: __func() === "unicode". Actual: __func() ==='+ __func() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){return "ascii"};
+function \u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"};//__func in unicode
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T1.js
new file mode 100644
index 000000000..dcb07dec9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T1;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "a**";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("a**") throw SyntaxError. Actual: ' + (new RegExp("a**")));
+} catch (e) {
+ if ((e instanceof SyntaxError !== true)) {
+ $ERROR('#1.2: new RegExp("a**") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T10.js
new file mode 100644
index 000000000..a4d4fae97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T10.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T10;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "++a";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("++a") throw SyntaxError. Actual: ' + (new RegExp("++a")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("++a") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T11.js
new file mode 100644
index 000000000..4e7f58b9d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T11.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T11;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "?a";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("?a") throw SyntaxError. Actual: ' + (new RegExp("?a")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("?a") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T12.js
new file mode 100644
index 000000000..b8e819908
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T12.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T12;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "??a";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("??a") throw SyntaxError. Actual: ' + (new RegExp("??a")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("??a") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T13.js
new file mode 100644
index 000000000..37d8aeeef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T13.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T13;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "x{1}{1,}";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("x{1}{1,}") throw SyntaxError. Actual: ' + (new RegExp("x{1}{1,}")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("x{1}{1,}") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T14.js
new file mode 100644
index 000000000..3d7340c61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T14.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T14;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "x{1,2}{1}";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("x{1,2}{1}") throw SyntaxError. Actual: ' + (new RegExp("x{1,2}{1}")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("x{1,2}{1}") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T15.js
new file mode 100644
index 000000000..6018b7137
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T15.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T15;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "x{1,}{1}";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("x{1,}{1}") throw SyntaxError. Actual: ' + (new RegExp("x{1,}{1}")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("x{1,}{1}") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T16.js
new file mode 100644
index 000000000..2253bc812
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T16.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T16;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "x{0,1}{1,}";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("x{0,1}{1,}") throw SyntaxError. Actual: ' + (new RegExp("x{0,1}{1,}")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("x{0,1}{1,}") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T2.js
new file mode 100644
index 000000000..a54720be0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T2;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "a***";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("a***") throw SyntaxError. Actual: ' + (new RegExp("a***")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("a***") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T3.js
new file mode 100644
index 000000000..46bbbb66c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T3;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "a++";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("a++") throw SyntaxError. Actual: ' + (new RegExp("a++")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("a++") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T4.js
new file mode 100644
index 000000000..e58e37685
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T4;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "a+++";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("a+++") throw SyntaxError. Actual: ' + (new RegExp("a+++")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("a+++") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T5.js
new file mode 100644
index 000000000..c85af15e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T5;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "a???";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("a???") throw SyntaxError. Actual: ' + (new RegExp("a???")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("a???") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T6.js
new file mode 100644
index 000000000..358d5c6c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T6;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "a????";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("a????") throw SyntaxError. Actual: ' + (new RegExp("a????")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("a????") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T7.js
new file mode 100644
index 000000000..0042c1ac0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T7;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "*a";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("*a") throw SyntaxError. Actual: ' + (new RegExp("*a")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("*a") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T8.js
new file mode 100644
index 000000000..84ca2c015
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T8;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "**a";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("**a") throw SyntaxError. Actual: ' + (new RegExp("**a")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("**a") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T9.js
new file mode 100644
index 000000000..12da5da26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.1_Patterns/S15.10.1_A1_T9.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.1_A1_T9;
+* @section: 15.10.1;
+* @assertion: RegExp syntax errors must be caught when matcher(s) compiles;
+* @description: Tested RegExp is "+a";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("+a") throw SyntaxError. Actual: ' + (new RegExp("+a")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("+a") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.1_T1.js
new file mode 100644
index 000000000..903ec1c11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.1_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A1.1_T1;
+* @section: 15.10.2.10;
+* @assertion: The production CharacterEscape :: t evaluates by returning
+* the character \u0009;
+* @description: Use \t in RegExp and \u0009 in tested string;
+*/
+
+//CHECK#1
+var arr = /\t/.exec("\u0009");
+if ((arr === null) || (arr[0] !== "\u0009")) {
+ $ERROR('#1: var arr = /\\t/.exec("\\u0009"); arr[0] === "\\u0009". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\t\t/.exec("a\u0009\u0009b");
+if ((arr === null) || (arr[0] !== "\u0009\u0009")) {
+ $ERROR('#2: var arr = /\\t\\t/.exec("a\\u0009\\u0009b"); arr[0] === "\\u0009\\u0009". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.2_T1.js
new file mode 100644
index 000000000..1e36e3b3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.2_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A1.2_T1;
+* @section: 15.10.2.10;
+* @assertion: The production CharacterEscape :: n evaluates by returning
+* the character \u000A;
+* @description: Use \n in RegExp and \u000A in tested string;
+*/
+
+//CHECK#1
+var arr = /\n/.exec("\u000A");
+if ((arr === null) || (arr[0] !== "\u000A")) {
+ $ERROR('#1: var arr = /\\n/.exec("\\u000A"); arr[0] === "\\u000A". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\n\n/.exec("a\u000A\u000Ab");
+if ((arr === null) || (arr[0] !== "\u000A\u000A")) {
+ $ERROR('#2: var arr = /\\n\\n/.exec("a\\u000A\\u000Ab"); arr[0] === "\\u000A\\u000A". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.3_T1.js
new file mode 100644
index 000000000..d9c3bfac7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.3_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A1.3_T1;
+* @section: 15.10.2.10;
+* @assertion: The production CharacterEscape :: v evaluates by returning
+* the character \u000B;
+* @description: Use \v in RegExp and \u000B in tested string;
+*/
+
+//CHECK#1
+var arr = /\v/.exec("\u000B");
+if ((arr === null) || (arr[0] !== "\u000B")) {
+ $ERROR('#1: var arr = /\\v/.exec("\\u000B"); arr[0] === "\\u000B". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\v\v/.exec("a\u000B\u000Bb");
+if ((arr === null) || (arr[0] !== "\u000B\u000B")) {
+ $ERROR('#2: var arr = /\\v\\v/.exec("a\\u000B\\u000Bb"); arr[0] === "\\u000B\\u000B". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.4_T1.js
new file mode 100644
index 000000000..7650dfaec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A1.4_T1;
+* @section: 15.10.2.10;
+* @assertion: The production CharacterEscape :: f evaluates by returning
+* the character \u000C;
+* @description: Use \f in RegExp and \u000C in tested string;
+*/
+
+//CHECK#1
+var arr = /\f/.exec("\u000C");
+if ((arr === null) || (arr[0] !== "\u000C")) {
+ $ERROR('#1: var arr = /\\f/.exec("\\u000C"); arr[0] === "\\u000C". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\f\f/.exec("a\u000C\u000Cb");
+if ((arr === null) || (arr[0] !== "\u000C\u000C")) {
+ $ERROR('#2: var arr = /\\f\\f/.exec("a\\u000C\\u000Cb"); arr[0] === "\\u000C\\u000C". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.5_T1.js
new file mode 100644
index 000000000..143da247c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A1.5_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A1.5_T1;
+* @section: 15.10.2.10;
+* @assertion: The production CharacterEscape :: r evaluates by returning
+* the character \u000D;
+* @description: Use \r in RegExp and \u000D in tested string;
+*/
+
+//CHECK#1
+var arr = /\r/.exec("\u000D");
+if ((arr === null) || (arr[0] !== "\u000D")) {
+ $ERROR('#1: var arr = /\\r/.exec("\\u000D"); arr[0] === "\\u000D". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\r\r/.exec("a\u000D\u000Db");
+if ((arr === null) || (arr[0] !== "\u000D\u000D")) {
+ $ERROR('#2: var arr = /\\r\\r/.exec("a\\u000D\\u000Db"); arr[0] === "\\u000D\\u000D". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T1.js
new file mode 100644
index 000000000..1e971b925
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A2.1_T1;
+* @section: 15.10.2.10;
+* @assertion: CharacterEscape :: c ControlLetter;
+* @description: ControlLetter :: A - Z;
+*/
+
+//CHECK#0041-005A
+var result = true;
+for (alpha = 0x0041; alpha <= 0x005A; alpha++) {
+ str = String.fromCharCode(alpha % 32);
+ arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: CharacterEscape :: c A - Z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T2.js
new file mode 100644
index 000000000..a76782d9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A2.1_T2;
+* @section: 15.10.2.10;
+* @assertion: CharacterEscape :: c ControlLetter;
+* @description: ControlLetter :: a - z;
+*/
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ str = String.fromCharCode(alpha % 32);
+ arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: CharacterEscape :: c a - z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T3.js
new file mode 100644
index 000000000..99cdd5b0c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A2.1_T3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A2.1_T3;
+* @section: 15.10.2.10;
+* @assertion: CharacterEscape :: c ControlLetter;
+* @description: ControlLetter :: RUSSIAN ALPHABET is incorrect;
+*/
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ str = String.fromCharCode(alpha % 32);
+ arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str);
+ if (arr !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET is incorrect');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ str = String.fromCharCode(alpha % 32);
+ arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str);
+ if (arr !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet is incorrect');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A3.1_T1.js
new file mode 100644
index 000000000..b948aaa60
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A3.1_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A3.1_T1;
+* @section: 15.10.2.10;
+* @assertion: CharacterEscape :: HexEscapeSequence :: x HexDigit HexDigit;
+* @description: Tested string include equal unicode symbols;
+*/
+
+//CHECK#0
+var arr = /\x00/.exec("\u0000");
+if ((arr === null) || (arr[0] !== "\u0000")) {
+ $ERROR('#0: var arr = /\\x00/.exec(\\u0000); arr[0] === "\\u0000". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#1
+var arr = /\x01/.exec("\u0001");
+if ((arr === null) || (arr[0] !== "\u0001")) {
+ $ERROR('#1: var arr = /\\x01/.exec(\\u0001); arr[0] === "\\u0001". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\x0A/.exec("\u000A");
+if ((arr === null) || (arr[0] !== "\u000A")) {
+ $ERROR('#2: var arr = /\\x0A/.exec(\\u000A); arr[0] === "\\u000A". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#3
+var arr = /\xFF/.exec("\u00FF");
+if ((arr === null) || (arr[0] !== "\u00FF")) {
+ $ERROR('#3: var arr = /\\xFF/.exec(\\u00FF); arr[0] === "\\u00FF". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A3.1_T2.js
new file mode 100644
index 000000000..dd56e464b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A3.1_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A3.1_T2;
+* @section: 15.10.2.10;
+* @assertion: CharacterEscape :: HexEscapeSequence :: x HexDigit HexDigit;
+* @description: Checking ENGLISH CAPITAL ALPHABET and english small alphabet;
+*/
+
+//CHECK#41-5A
+hex = ["\\x41", "\\x42", "\\x43", "\\x44", "\\x45", "\\x46", "\\x47", "\\x48", "\\x49", "\\x4A", "\\x4B", "\\x4C", "\\x4D", "\\x4E", "\\x4F", "\\x50", "\\x51", "\\x52", "\\x53", "\\x54", "\\x55", "\\x56", "\\x57", "\\x58", "\\x59", "\\x5A"];
+character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+var result = true;
+for (index = 0; index < hex.length; index++) {
+ arr = (new RegExp(hex[index])).exec(character[index]);
+ if ((arr === null) || (arr[0] !== character[index])) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#61-7A
+hex = ["\\x61", "\\x62", "\\x63", "\\x64", "\\x65", "\\x66", "\\x67", "\\x68", "\\x69", "\\x6A", "\\x6B", "\\x6C", "\\x6D", "\\x6E", "\\x6F", "\\x70", "\\x71", "\\x72", "\\x73", "\\x74", "\\x75", "\\x76", "\\x77", "\\x78", "\\x79", "\\x7A"];
+character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+var result = true;
+for (index = 0; index < hex.length; index++) {
+ arr = (new RegExp(hex[index])).exec(character[index]);
+ if ((arr === null) || (arr[0] !== character[index])) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T1.js
new file mode 100644
index 000000000..02b2de83f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A4.1_T1;
+* @section: 15.10.2.10;
+* @assertion: CharacterEscape :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit;
+* @description: RegExp and tested string include uncode symbols;
+*/
+
+//CHECK#0
+var arr = /\u0000/.exec("\u0000");
+if ((arr === null) || (arr[0] !== "\u0000")) {
+ $ERROR('#0: var arr = /\\u0000/.exec(\\u0000); arr[0] === "\\u0000". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#1
+var arr = /\u0001/.exec("\u0001");
+if ((arr === null) || (arr[0] !== "\u0001")) {
+ $ERROR('#1: var arr = /\\u0001/.exec(\\u0001); arr[0] === "\\u0001". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\u000A/.exec("\u000A");
+if ((arr === null) || (arr[0] !== "\u000A")) {
+ $ERROR('#2: var arr = /\\u000A/.exec(\\u000A); arr[0] === "\\u000A". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#3
+var arr = /\u00FF/.exec("\u00FF");
+if ((arr === null) || (arr[0] !== "\u00FF")) {
+ $ERROR('#3: var arr = /\\u00FF/.exec(\\u00FF); arr[0] === "\\u00FF". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#4
+var arr = /\u0FFF/.exec("\u0FFF");
+if ((arr === null) || (arr[0] !== "\u0FFF")) {
+ $ERROR('#4: var arr = /\\u0FFF/.exec(\\u0FFF); arr[0] === "\\u0FFF". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#5
+var arr = /\uFFFF/.exec("\uFFFF");
+if ((arr === null) || (arr[0] !== "\uFFFF")) {
+ $ERROR('#5: var arr = /\\uFFFF/.exec(\\uFFFF); arr[0] === "\\uFFFF". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T2.js
new file mode 100644
index 000000000..b0260a7dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A4.1_T2;
+* @section: 15.10.2.10;
+* @assertion: CharacterEscape :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit;
+* @description: Tested string include ENGLISH CAPITAL ALPHABET and english small alphabet;
+*/
+
+//CHECK#41-5A
+hex = ["\\u0041", "\\u0042", "\\u0043", "\\u0044", "\\u0045", "\\u0046", "\\u0047", "\\u0048", "\\u0049", "\\u004A", "\\u004B", "\\u004C", "\\u004D", "\\u004E", "\\u004F", "\\u0050", "\\u0051", "\\u0052", "\\u0053", "\\u0054", "\\u0055", "\\u0056", "\\u0057", "\\u0058", "\\u0059", "\\u005A"];
+character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+var result = true;
+for (index = 0; index < hex.length; index++) {
+ arr = (new RegExp(hex[index])).exec(character[index]);
+ if ((arr === null) || (arr[0] !== character[index])) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#61-7A
+hex = ["\\u0061", "\\u0062", "\\u0063", "\\u0064", "\\u0065", "\\u0066", "\\u0067", "\\u0068", "\\u0069", "\\u006A", "\\u006B", "\\u006C", "\\u006D", "\\u006E", "\\u006F", "\\u0070", "\\u0071", "\\u0072", "\\u0073", "\\u0074", "\\u0075", "\\u0076", "\\u0077", "\\u0078", "\\u0079", "\\u007A"];
+character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+var result = true;
+for (index = 0; index < hex.length; index++) {
+ arr = (new RegExp(hex[index])).exec(character[index]);
+ if ((arr === null) || (arr[0] !== character[index])) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T3.js
new file mode 100644
index 000000000..25df0e56c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A4.1_T3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A4.1_T3;
+* @section: 15.10.2.10;
+* @assertion: CharacterEscape :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit;
+* @description: Tested string include RUSSIAN CAPITAL ALPHABET and russian small alphabet in unicode notation;
+*/
+
+//CHECK#0410-042F, 0401
+hex = ["\\u0410", "\\u0411", "\\u0412", "\\u0413", "\\u0414", "\\u0415", "\\u0416", "\\u0417", "\\u0418", "\\u0419", "\\u041A", "\\u041B", "\\u041C", "\\u041D", "\\u041E", "\\u041F", "\\u0420", "\\u0421", "\\u0422", "\\u0423", "\\u0424", "\\u0425", "\\u0426", "\\u0427", "\\u0428", "\\u0429", "\\u042A", "\\u042B", "\\u042C", "\\u042D", "\\u042E", "\\u042F", "\\u0401"];
+character = ["\u0410", "\u0411", "\u0412", "\u0413", "\u0414", "\u0415", "\u0416", "\u0417", "\u0418", "\u0419", "\u041A", "\u041B", "\u041C", "\u041D", "\u041E", "\u041F", "\u0420", "\u0421", "\u0422", "\u0423", "\u0424", "\u0425", "\u0426", "\u0427", "\u0428", "\u0429", "\u042A", "\u042B", "\u042C", "\u042D", "\u042E", "\u042F", "\u0401"];
+var result = true;
+for (index = 0; index < hex.length; index++) {
+ arr = (new RegExp(hex[index])).exec(character[index]);
+ if ((arr === null) || (arr[0] !== character[index])) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F, 0451
+hex = ["\\u0430", "\\u0431", "\\u0432", "\\u0433", "\\u0434", "\\u0435", "\\u0436", "\\u0437", "\\u0438", "\\u0439", "\\u043A", "\\u043B", "\\u043C", "\\u043D", "\\u043E", "\\u043F", "\\u0440", "\\u0441", "\\u0442", "\\u0443", "\\u0444", "\\u0445", "\\u0446", "\\u0447", "\\u0448", "\\u0449", "\\u044A", "\\u044B", "\\u044C", "\\u044D", "\\u044E", "\\u044F", "\\u0451"];
+character = ["\u0430", "\u0431", "\u0432", "\u0433", "\u0434", "\u0435", "\u0436", "\u0437", "\u0438", "\u0439", "\u043A", "\u043B", "\u043C", "\u043D", "\u043E", "\u043F", "\u0440", "\u0441", "\u0442", "\u0443", "\u0444", "\u0445", "\u0446", "\u0447", "\u0448", "\u0449", "\u044A", "\u044B", "\u044C", "\u044D", "\u044E", "\u044F", "\u0451"];
+var result = true;
+for (index = 0; index < hex.length; index++) {
+ arr = (new RegExp(hex[index])).exec(character[index]);
+ if ((arr === null) || (arr[0] !== character[index])) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A5.1_T1.js
new file mode 100644
index 000000000..a0bac1cd0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.10_CharacterEscape/S15.10.2.10_A5.1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.10_A5.1_T1;
+* @section: 15.10.2.10;
+* @assertion: CharacterEscape :: IdentityEscapeSequence :: SourceCharacter but not IdentifierPart;
+* @description: Tested string is "~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+*/
+
+//CHECK#1
+var non_ident = "~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+var k = -1;
+do {
+ k++;
+ arr = new RegExp("\\" + non_ident[k], "g").exec(non_ident);
+} while ((arr !== null) && (arr[0] === non_ident[k]))
+
+if (non_ident.length !== k) {
+ $ERROR('#1: IdentityEscapeSequence :: SourceCharacter but not IdentifierPart');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T1.js
new file mode 100644
index 000000000..1116b48b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.11_A1_T1;
+ * @section: 15.10.2.11;
+ * @assertion: DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit];
+ * @description: DecimalEscape :: 0. If i is zero, return the EscapeValue consisting of a <NUL> character (Unicodevalue0000);
+*/
+
+//CHECK#1
+var arr = /\0/.exec("\u0000");
+if ((arr === null) || (arr[0] !== "\u0000")) {
+ $ERROR('#1: var arr = /\\0/.exec(\\u0000); arr[0] === "\\u0000". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = (new RegExp("\\0")).exec("\u0000");
+if ((arr === null) || (arr[0] !== "\u0000")) {
+ $ERROR('#2: var arr = (new RegExp("\\0")).exec(\\u0000); arr[0] === "\\u0000". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T2.js
new file mode 100644
index 000000000..8584a1979
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.11_A1_T2;
+ * @section: 15.10.2.11;
+ * @assertion: DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit];
+ * @description: It is an error if n is greater than the total number of left capturing parentheses in the entire regular expression;
+ * @negative;
+*/
+
+/\1/.exec("");
+/\2/.exec("");
+/\3/.exec("");
+/\4/.exec("");
+/\5/.exec("");
+/\6/.exec("");
+/\7/.exec("");
+/\8/.exec("");
+/\9/.exec("");
+/\10/.exec("");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T3.js
new file mode 100644
index 000000000..ca4249af0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T3.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.11_A1_T3;
+ * @section: 15.10.2.11;
+ * @assertion: DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit];
+ * @description: It is an error if n is greater than the total number of left capturing parentheses in the entire regular expression;
+ * @negative;
+*/
+
+/(?:A)\2/.exec("AA");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T4.js
new file mode 100644
index 000000000..71265c814
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.11_A1_T4;
+ * @section: 15.10.2.11, 15.10.2.9;
+ * @assertion: DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit];
+ * @description: DecimalIntegerLiteral is not 0;
+*/
+
+var arr = /(A)\1/.exec("AA");
+
+//CHECK#1
+if ((arr === null) || (arr[0] !== "AA")) {
+ $ERROR('#1: var arr = (/(A)\\1/.exec("AA")); arr[0] === "AA". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+if ((arr === null) || (arr[1] !== "A")) {
+ $ERROR('#2: var arr = (/(A)\\1/.exec("AA")); arr[1] === "A". Actual. ' + (arr && arr[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T5.js
new file mode 100644
index 000000000..48571b80e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.11_A1_T5;
+ * @section: 15.10.2.11, 15.10.2.9;
+ * @assertion: DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit];
+ * @description: DecimalIntegerLiteral is not 0;
+*/
+
+var arr = /\1(A)/.exec("AA");
+
+//CHECK#1
+if ((arr === null) || (arr[0] !== "A")) {
+ $ERROR('#1: var arr = (/\\1(A)/.exec("AA")); arr[0] === "A". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+if ((arr === null) || (arr[1] !== "A")) {
+ $ERROR('#2: var arr = (/\\1(A)/.exec("AA")); arr[1] === "A". Actual. ' + (arr && arr[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T6.js
new file mode 100644
index 000000000..4d2b4b48e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T6.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.11_A1_T6;
+ * @section: 15.10.2.11, 15.10.2.9;
+ * @assertion: DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit];
+ * @description: DecimalIntegerLiteral is not 0;
+*/
+
+var arr = /(A)\1(B)\2/.exec("AABB");
+
+//CHECK#1
+if ((arr === null) || (arr[0] !== "AABB")) {
+ $ERROR('#1: var arr = /(A)\\1(B)\\2/.exec("AABB"); arr[0] === "AABB". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+if ((arr === null) || (arr[1] !== "A")) {
+ $ERROR('#2: var arr = /(A)\\1(B)\\2/.exec("AABB"); arr[1] === "A". Actual. ' + (arr && arr[1]));
+}
+
+//CHECK#3
+if ((arr === null) || (arr[2] !== "B")) {
+ $ERROR('#3: var arr = /(A)\\1(B)\\2/.exec("AABB"); arr[2] === "B". Actual. ' + (arr && arr[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T7.js
new file mode 100644
index 000000000..d5d6c6023
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T7.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.11_A1_T7;
+ * @section: 15.10.2.11, 15.10.2.9;
+ * @assertion: DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit];
+ * @description: DecimalIntegerLiteral is not 0;
+*/
+
+var arr = /\1(A)(B)\2/.exec("ABB");
+
+//CHECK#1
+if ((arr === null) || (arr[0] !== "ABB")) {
+ $ERROR('#1: var arr = /\\1(A)(B)\\2/.exec("ABB"); arr[0] === "ABB". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+if ((arr === null) || (arr[1] !== "A")) {
+ $ERROR('#2: var arr = /\\1(A)(B)\\2/.exec("ABB"); arr[1] === "A". Actual. ' + (arr && arr[1]));
+}
+
+//CHECK#3
+if ((arr === null) || (arr[2] !== "B")) {
+ $ERROR('#3: var arr = /\\1(A)(B)\\2/.exec("ABB"); arr[2] === "B". Actual. ' + (arr && arr[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T8.js
new file mode 100644
index 000000000..e97c9ef74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.11_A1_T8;
+ * @section: 15.10.2.11, 15.10.2.9;
+ * @assertion: DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit];
+ * @description: DecimalIntegerLiteral is not 0;
+*/
+
+var arr = /((((((((((A))))))))))\1\2\3\4\5\6\7\8\9\10/.exec("AAAAAAAAAAA");
+
+//CHECK#1
+if ((arr === null) || (arr[0] !== "AAAAAAAAAAA")) {
+ $ERROR('#1: var arr = /((((((((((A))))))))))\\1\\2\\3\\4\\5\\6\\7\\8\\9\\10/.exec("AAAAAAAAAAA"); arr[0] === "AAAAAAAAAAA". Actual. ' + (arr && arr[0]));
+}
+
+for (i = 1; i <= 10; i++) {
+ //CHECK#i
+ if ((arr === null) || (arr[i] !== "A")) {
+ $ERROR('#2: var arr = /((((((((((A))))))))))\\1\\2\\3\\4\\5\\6\\7\\8\\9\\10/.exec("AAAAAAAAAAA"); arr[' + i + '] === "A". Actual. ' + (arr && arr[i]));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T9.js
new file mode 100644
index 000000000..58d68d876
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.11_DecimalEscape/S15.10.2.11_A1_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.11_A1_T9;
+ * @section: 15.10.2.11, 15.10.2.9;
+ * @assertion: DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit];
+ * @description: DecimalIntegerLiteral is not 0;
+*/
+
+var arr = /((((((((((A))))))))))\10\9\8\7\6\5\4\3\2\1/.exec("AAAAAAAAAAA");
+
+//CHECK#1
+if ((arr === null) || (arr[0] !== "AAAAAAAAAAA")) {
+ $ERROR('#1: var arr = /((((((((((A))))))))))\\10\\9\\8\\7\\6\\5\\4\\3\\2\\1/.exec("AAAAAAAAAAA"); arr[0] === "AAAAAAAAAAA". Actual. ' + (arr && arr[0]));
+}
+
+for (i = 1; i <= 10; i++) {
+ //CHECK#i
+ if ((arr === null) || (arr[i] !== "A")) {
+ $ERROR('#2: var arr = /((((((((((A))))))))))\\10\\9\\8\\7\\6\\5\\4\\3\\2\\1/.exec("AAAAAAAAAAA"); arr[' + i + '] === "A". Actual. ' + (arr && arr[i]));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T1.js
new file mode 100644
index 000000000..83b6972ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T1.js
@@ -0,0 +1,522 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T1;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: WhiteSpace
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u0021\u0022\u0023\u0024\u0025\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u005B\u005C\u005D\u005E\u005F\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\u0100\u0101\u0102\u0103\u0104\u0105\u0106\u0107\u0108\u0109\u010A\u010B\u010C\u010D\u010E\u010F\u0110\u0111\u0112\u0113\u0114\u0115\u0116\u0117\u0118\u0119\u011A\u011B\u011C\u011D\u011E\u011F\u0120\u0121\u0122\u0123\u0124\u0125\u0126\u0127\u0128\u0129\u012A\u012B\u012C\u012D\u012E\u012F\u0130\u0131\u0132\u0133\u0134\u0135\u0136\u0137\u0138\u0139\u013A\u013B\u013C\u013D\u013E\u013F\u0140\u0141\u0142\u0143\u0144\u0145\u0146\u0147\u0148\u0149\u014A\u014B\u014C\u014D\u014E\u014F\u0150\u0151\u0152\u0153\u0154\u0155\u0156\u0157\u0158\u0159\u015A\u015B\u015C\u015D\u015E\u015F\u0160\u0161\u0162\u0163\u0164\u0165\u0166\u0167\u0168\u0169\u016A\u016B\u016C\u016D\u016E\u016F\u0170\u0171\u0172\u0173\u0174\u0175\u0176\u0177\u0178\u0179\u017A\u017B\u017C\u017D\u017E\u017F\u0180\u0181\u0182\u0183\u0184\u0185\u0186\u0187\u0188\u0189\u018A\u018B\u018C\u018D\u018E\u018F\u0190\u0191\u0192\u0193\u0194\u0195\u0196\u0197\u0198\u0199\u019A\u019B\u019C\u019D\u019E\u019F\u01A0\u01A1\u01A2\u01A3\u01A4\u01A5\u01A6\u01A7\u01A8\u01A9\u01AA\u01AB\u01AC\u01AD\u01AE\u01AF\u01B0\u01B1\u01B2\u01B3\u01B4\u01B5\u01B6\u01B7\u01B8\u01B9\u01BA\u01BB\u01BC\u01BD\u01BE\u01BF\u01C0\u01C1\u01C2\u01C3\u01C4\u01C5\u01C6\u01C7\u01C8\u01C9\u01CA\u01CB\u01CC\u01CD\u01CE\u01CF\u01D0\u01D1\u01D2\u01D3\u01D4\u01D5\u01D6\u01D7\u01D8\u01D9\u01DA\u01DB\u01DC\u01DD\u01DE\u01DF\u01E0\u01E1\u01E2\u01E3\u01E4\u01E5\u01E6\u01E7\u01E8\u01E9\u01EA\u01EB\u01EC\u01ED\u01EE\u01EF\u01F0\u01F1\u01F2\u01F3\u01F4\u01F5\u01F6\u01F7\u01F8\u01F9\u01FA\u01FB\u01FC\u01FD\u01FE\u01FF\u0200\u0201\u0202\u0203\u0204\u0205\u0206\u0207\u0208\u0209\u020A\u020B\u020C\u020D\u020E\u020F\u0210\u0211\u0212\u0213\u0214\u0215\u0216\u0217\u0218\u0219\u021A\u021B\u021C\u021D\u021E\u021F\u0220\u0221\u0222\u0223\u0224\u0225\u0226\u0227\u0228\u0229\u022A\u022B\u022C\u022D\u022E\u022F\u0230\u0231\u0232\u0233\u0234\u0235\u0236\u0237\u0238\u0239\u023A\u023B\u023C\u023D\u023E\u023F\u0240\u0241\u0242\u0243\u0244\u0245\u0246\u0247\u0248\u0249\u024A\u024B\u024C\u024D\u024E\u024F\u0250\u0251\u0252\u0253\u0254\u0255\u0256\u0257\u0258\u0259\u025A\u025B\u025C\u025D\u025E\u025F\u0260\u0261\u0262\u0263\u0264\u0265\u0266\u0267\u0268\u0269\u026A\u026B\u026C\u026D\u026E\u026F\u0270\u0271\u0272\u0273\u0274\u0275\u0276\u0277\u0278\u0279\u027A\u027B\u027C\u027D\u027E\u027F\u0280\u0281\u0282\u0283\u0284\u0285\u0286\u0287\u0288\u0289\u028A\u028B\u028C\u028D\u028E\u028F\u0290\u0291\u0292\u0293\u0294\u0295\u0296\u0297\u0298\u0299\u029A\u029B\u029C\u029D\u029E\u029F\u02A0\u02A1\u02A2\u02A3\u02A4\u02A5\u02A6\u02A7\u02A8\u02A9\u02AA\u02AB\u02AC\u02AD\u02AE\u02AF\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6\u02B7\u02B8\u02B9\u02BA\u02BB\u02BC\u02BD\u02BE\u02BF\u02C0\u02C1\u02C2\u02C3\u02C4\u02C5\u02C6\u02C7\u02C8\u02C9\u02CA\u02CB\u02CC\u02CD\u02CE\u02CF\u02D0\u02D1\u02D2\u02D3\u02D4\u02D5\u02D6\u02D7\u02D8\u02D9\u02DA\u02DB\u02DC\u02DD\u02DE\u02DF\u02E0\u02E1\u02E2\u02E3\u02E4\u02E5\u02E6\u02E7\u02E8\u02E9\u02EA\u02EB\u02EC\u02ED\u02EE\u02EF\u02F0\u02F1\u02F2\u02F3\u02F4\u02F5\u02F6\u02F7\u02F8\u02F9\u02FA\u02FB\u02FC\u02FD\u02FE\u02FF\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030A\u030B\u030C\u030D\u030E\u030F\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031A\u031B\u031C\u031D\u031E\u031F\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032A\u032B\u032C\u032D\u032E\u032F\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033A\u033B\u033C\u033D\u033E\u033F\u0340\u0341\u0342\u0343\u0344\u0345\u0346\u0347\u0348\u0349\u034A\u034B\u034C\u034D\u034E\u034F\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035A\u035B\u035C\u035D\u035E\u035F\u0360\u0361\u0362\u0363\u0364\u0365\u0366\u0367\u0368\u0369\u036A\u036B\u036C\u036D\u036E\u036F\u0370\u0371\u0372\u0373\u0374\u0375\u0376\u0377\u0378\u0379\u037A\u037B\u037C\u037D\u037E\u037F\u0380\u0381\u0382\u0383\u0384\u0385\u0386\u0387\u0388\u0389\u038A\u038B\u038C\u038D\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A2\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\u03CF\u03D0\u03D1\u03D2\u03D3\u03D4\u03D5\u03D6\u03D7\u03D8\u03D9\u03DA\u03DB\u03DC\u03DD\u03DE\u03DF\u03E0\u03E1\u03E2\u03E3\u03E4\u03E5\u03E6\u03E7\u03E8\u03E9\u03EA\u03EB\u03EC\u03ED\u03EE\u03EF\u03F0\u03F1\u03F2\u03F3\u03F4\u03F5\u03F6\u03F7\u03F8\u03F9\u03FA\u03FB\u03FC\u03FD\u03FE\u03FF";
+if (i0.replace(/\s+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \s between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = i1;
+if (i1.replace(/\s+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \s between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = i2;
+if (i2.replace(/\s+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \s between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = i3;
+if (i3.replace(/\s+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \s between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = i4;
+if (i4.replace(/\s+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \s between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = "\u1400\u1401\u1402\u1403\u1404\u1405\u1406\u1407\u1408\u1409\u140A\u140B\u140C\u140D\u140E\u140F\u1410\u1411\u1412\u1413\u1414\u1415\u1416\u1417\u1418\u1419\u141A\u141B\u141C\u141D\u141E\u141F\u1420\u1421\u1422\u1423\u1424\u1425\u1426\u1427\u1428\u1429\u142A\u142B\u142C\u142D\u142E\u142F\u1430\u1431\u1432\u1433\u1434\u1435\u1436\u1437\u1438\u1439\u143A\u143B\u143C\u143D\u143E\u143F\u1440\u1441\u1442\u1443\u1444\u1445\u1446\u1447\u1448\u1449\u144A\u144B\u144C\u144D\u144E\u144F\u1450\u1451\u1452\u1453\u1454\u1455\u1456\u1457\u1458\u1459\u145A\u145B\u145C\u145D\u145E\u145F\u1460\u1461\u1462\u1463\u1464\u1465\u1466\u1467\u1468\u1469\u146A\u146B\u146C\u146D\u146E\u146F\u1470\u1471\u1472\u1473\u1474\u1475\u1476\u1477\u1478\u1479\u147A\u147B\u147C\u147D\u147E\u147F\u1480\u1481\u1482\u1483\u1484\u1485\u1486\u1487\u1488\u1489\u148A\u148B\u148C\u148D\u148E\u148F\u1490\u1491\u1492\u1493\u1494\u1495\u1496\u1497\u1498\u1499\u149A\u149B\u149C\u149D\u149E\u149F\u14A0\u14A1\u14A2\u14A3\u14A4\u14A5\u14A6\u14A7\u14A8\u14A9\u14AA\u14AB\u14AC\u14AD\u14AE\u14AF\u14B0\u14B1\u14B2\u14B3\u14B4\u14B5\u14B6\u14B7\u14B8\u14B9\u14BA\u14BB\u14BC\u14BD\u14BE\u14BF\u14C0\u14C1\u14C2\u14C3\u14C4\u14C5\u14C6\u14C7\u14C8\u14C9\u14CA\u14CB\u14CC\u14CD\u14CE\u14CF\u14D0\u14D1\u14D2\u14D3\u14D4\u14D5\u14D6\u14D7\u14D8\u14D9\u14DA\u14DB\u14DC\u14DD\u14DE\u14DF\u14E0\u14E1\u14E2\u14E3\u14E4\u14E5\u14E6\u14E7\u14E8\u14E9\u14EA\u14EB\u14EC\u14ED\u14EE\u14EF\u14F0\u14F1\u14F2\u14F3\u14F4\u14F5\u14F6\u14F7\u14F8\u14F9\u14FA\u14FB\u14FC\u14FD\u14FE\u14FF\u1500\u1501\u1502\u1503\u1504\u1505\u1506\u1507\u1508\u1509\u150A\u150B\u150C\u150D\u150E\u150F\u1510\u1511\u1512\u1513\u1514\u1515\u1516\u1517\u1518\u1519\u151A\u151B\u151C\u151D\u151E\u151F\u1520\u1521\u1522\u1523\u1524\u1525\u1526\u1527\u1528\u1529\u152A\u152B\u152C\u152D\u152E\u152F\u1530\u1531\u1532\u1533\u1534\u1535\u1536\u1537\u1538\u1539\u153A\u153B\u153C\u153D\u153E\u153F\u1540\u1541\u1542\u1543\u1544\u1545\u1546\u1547\u1548\u1549\u154A\u154B\u154C\u154D\u154E\u154F\u1550\u1551\u1552\u1553\u1554\u1555\u1556\u1557\u1558\u1559\u155A\u155B\u155C\u155D\u155E\u155F\u1560\u1561\u1562\u1563\u1564\u1565\u1566\u1567\u1568\u1569\u156A\u156B\u156C\u156D\u156E\u156F\u1570\u1571\u1572\u1573\u1574\u1575\u1576\u1577\u1578\u1579\u157A\u157B\u157C\u157D\u157E\u157F\u1580\u1581\u1582\u1583\u1584\u1585\u1586\u1587\u1588\u1589\u158A\u158B\u158C\u158D\u158E\u158F\u1590\u1591\u1592\u1593\u1594\u1595\u1596\u1597\u1598\u1599\u159A\u159B\u159C\u159D\u159E\u159F\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5\u15A6\u15A7\u15A8\u15A9\u15AA\u15AB\u15AC\u15AD\u15AE\u15AF\u15B0\u15B1\u15B2\u15B3\u15B4\u15B5\u15B6\u15B7\u15B8\u15B9\u15BA\u15BB\u15BC\u15BD\u15BE\u15BF\u15C0\u15C1\u15C2\u15C3\u15C4\u15C5\u15C6\u15C7\u15C8\u15C9\u15CA\u15CB\u15CC\u15CD\u15CE\u15CF\u15D0\u15D1\u15D2\u15D3\u15D4\u15D5\u15D6\u15D7\u15D8\u15D9\u15DA\u15DB\u15DC\u15DD\u15DE\u15DF\u15E0\u15E1\u15E2\u15E3\u15E4\u15E5\u15E6\u15E7\u15E8\u15E9\u15EA\u15EB\u15EC\u15ED\u15EE\u15EF\u15F0\u15F1\u15F2\u15F3\u15F4\u15F5\u15F6\u15F7\u15F8\u15F9\u15FA\u15FB\u15FC\u15FD\u15FE\u15FF\u1600\u1601\u1602\u1603\u1604\u1605\u1606\u1607\u1608\u1609\u160A\u160B\u160C\u160D\u160E\u160F\u1610\u1611\u1612\u1613\u1614\u1615\u1616\u1617\u1618\u1619\u161A\u161B\u161C\u161D\u161E\u161F\u1620\u1621\u1622\u1623\u1624\u1625\u1626\u1627\u1628\u1629\u162A\u162B\u162C\u162D\u162E\u162F\u1630\u1631\u1632\u1633\u1634\u1635\u1636\u1637\u1638\u1639\u163A\u163B\u163C\u163D\u163E\u163F\u1640\u1641\u1642\u1643\u1644\u1645\u1646\u1647\u1648\u1649\u164A\u164B\u164C\u164D\u164E\u164F\u1650\u1651\u1652\u1653\u1654\u1655\u1656\u1657\u1658\u1659\u165A\u165B\u165C\u165D\u165E\u165F\u1660\u1661\u1662\u1663\u1664\u1665\u1666\u1667\u1668\u1669\u166A\u166B\u166C\u166D\u166E\u166F\u1670\u1671\u1672\u1673\u1674\u1675\u1676\u1677\u1678\u1679\u167A\u167B\u167C\u167D\u167E\u167F\u1681\u1682\u1683\u1684\u1685\u1686\u1687\u1688\u1689\u168A\u168B\u168C\u168D\u168E\u168F\u1690\u1691\u1692\u1693\u1694\u1695\u1696\u1697\u1698\u1699\u169A\u169B\u169C\u169D\u169E\u169F\u16A0\u16A1\u16A2\u16A3\u16A4\u16A5\u16A6\u16A7\u16A8\u16A9\u16AA\u16AB\u16AC\u16AD\u16AE\u16AF\u16B0\u16B1\u16B2\u16B3\u16B4\u16B5\u16B6\u16B7\u16B8\u16B9\u16BA\u16BB\u16BC\u16BD\u16BE\u16BF\u16C0\u16C1\u16C2\u16C3\u16C4\u16C5\u16C6\u16C7\u16C8\u16C9\u16CA\u16CB\u16CC\u16CD\u16CE\u16CF\u16D0\u16D1\u16D2\u16D3\u16D4\u16D5\u16D6\u16D7\u16D8\u16D9\u16DA\u16DB\u16DC\u16DD\u16DE\u16DF\u16E0\u16E1\u16E2\u16E3\u16E4\u16E5\u16E6\u16E7\u16E8\u16E9\u16EA\u16EB\u16EC\u16ED\u16EE\u16EF\u16F0\u16F1\u16F2\u16F3\u16F4\u16F5\u16F6\u16F7\u16F8\u16F9\u16FA\u16FB\u16FC\u16FD\u16FE\u16FF\u1700\u1701\u1702\u1703\u1704\u1705\u1706\u1707\u1708\u1709\u170A\u170B\u170C\u170D\u170E\u170F\u1710\u1711\u1712\u1713\u1714\u1715\u1716\u1717\u1718\u1719\u171A\u171B\u171C\u171D\u171E\u171F\u1720\u1721\u1722\u1723\u1724\u1725\u1726\u1727\u1728\u1729\u172A\u172B\u172C\u172D\u172E\u172F\u1730\u1731\u1732\u1733\u1734\u1735\u1736\u1737\u1738\u1739\u173A\u173B\u173C\u173D\u173E\u173F\u1740\u1741\u1742\u1743\u1744\u1745\u1746\u1747\u1748\u1749\u174A\u174B\u174C\u174D\u174E\u174F\u1750\u1751\u1752\u1753\u1754\u1755\u1756\u1757\u1758\u1759\u175A\u175B\u175C\u175D\u175E\u175F\u1760\u1761\u1762\u1763\u1764\u1765\u1766\u1767\u1768\u1769\u176A\u176B\u176C\u176D\u176E\u176F\u1770\u1771\u1772\u1773\u1774\u1775\u1776\u1777\u1778\u1779\u177A\u177B\u177C\u177D\u177E\u177F\u1780\u1781\u1782\u1783\u1784\u1785\u1786\u1787\u1788\u1789\u178A\u178B\u178C\u178D\u178E\u178F\u1790\u1791\u1792\u1793\u1794\u1795\u1796\u1797\u1798\u1799\u179A\u179B\u179C\u179D\u179E\u179F\u17A0\u17A1\u17A2\u17A3\u17A4\u17A5\u17A6\u17A7\u17A8\u17A9\u17AA\u17AB\u17AC\u17AD\u17AE\u17AF\u17B0\u17B1\u17B2\u17B3\u17B4\u17B5\u17B6\u17B7\u17B8\u17B9\u17BA\u17BB\u17BC\u17BD\u17BE\u17BF\u17C0\u17C1\u17C2\u17C3\u17C4\u17C5\u17C6\u17C7\u17C8\u17C9\u17CA\u17CB\u17CC\u17CD\u17CE\u17CF\u17D0\u17D1\u17D2\u17D3\u17D4\u17D5\u17D6\u17D7\u17D8\u17D9\u17DA\u17DB\u17DC\u17DD\u17DE\u17DF\u17E0\u17E1\u17E2\u17E3\u17E4\u17E5\u17E6\u17E7\u17E8\u17E9\u17EA\u17EB\u17EC\u17ED\u17EE\u17EF\u17F0\u17F1\u17F2\u17F3\u17F4\u17F5\u17F6\u17F7\u17F8\u17F9\u17FA\u17FB\u17FC\u17FD\u17FE\u17FF";
+if (i5.replace(/\s+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \s between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = "\u1800\u1801\u1802\u1803\u1804\u1805\u1806\u1807\u1808\u1809\u180A\u180B\u180C\u180D\u180F\u1810\u1811\u1812\u1813\u1814\u1815\u1816\u1817\u1818\u1819\u181A\u181B\u181C\u181D\u181E\u181F\u1820\u1821\u1822\u1823\u1824\u1825\u1826\u1827\u1828\u1829\u182A\u182B\u182C\u182D\u182E\u182F\u1830\u1831\u1832\u1833\u1834\u1835\u1836\u1837\u1838\u1839\u183A\u183B\u183C\u183D\u183E\u183F\u1840\u1841\u1842\u1843\u1844\u1845\u1846\u1847\u1848\u1849\u184A\u184B\u184C\u184D\u184E\u184F\u1850\u1851\u1852\u1853\u1854\u1855\u1856\u1857\u1858\u1859\u185A\u185B\u185C\u185D\u185E\u185F\u1860\u1861\u1862\u1863\u1864\u1865\u1866\u1867\u1868\u1869\u186A\u186B\u186C\u186D\u186E\u186F\u1870\u1871\u1872\u1873\u1874\u1875\u1876\u1877\u1878\u1879\u187A\u187B\u187C\u187D\u187E\u187F\u1880\u1881\u1882\u1883\u1884\u1885\u1886\u1887\u1888\u1889\u188A\u188B\u188C\u188D\u188E\u188F\u1890\u1891\u1892\u1893\u1894\u1895\u1896\u1897\u1898\u1899\u189A\u189B\u189C\u189D\u189E\u189F\u18A0\u18A1\u18A2\u18A3\u18A4\u18A5\u18A6\u18A7\u18A8\u18A9\u18AA\u18AB\u18AC\u18AD\u18AE\u18AF\u18B0\u18B1\u18B2\u18B3\u18B4\u18B5\u18B6\u18B7\u18B8\u18B9\u18BA\u18BB\u18BC\u18BD\u18BE\u18BF\u18C0\u18C1\u18C2\u18C3\u18C4\u18C5\u18C6\u18C7\u18C8\u18C9\u18CA\u18CB\u18CC\u18CD\u18CE\u18CF\u18D0\u18D1\u18D2\u18D3\u18D4\u18D5\u18D6\u18D7\u18D8\u18D9\u18DA\u18DB\u18DC\u18DD\u18DE\u18DF\u18E0\u18E1\u18E2\u18E3\u18E4\u18E5\u18E6\u18E7\u18E8\u18E9\u18EA\u18EB\u18EC\u18ED\u18EE\u18EF\u18F0\u18F1\u18F2\u18F3\u18F4\u18F5\u18F6\u18F7\u18F8\u18F9\u18FA\u18FB\u18FC\u18FD\u18FE\u18FF\u1900\u1901\u1902\u1903\u1904\u1905\u1906\u1907\u1908\u1909\u190A\u190B\u190C\u190D\u190E\u190F\u1910\u1911\u1912\u1913\u1914\u1915\u1916\u1917\u1918\u1919\u191A\u191B\u191C\u191D\u191E\u191F\u1920\u1921\u1922\u1923\u1924\u1925\u1926\u1927\u1928\u1929\u192A\u192B\u192C\u192D\u192E\u192F\u1930\u1931\u1932\u1933\u1934\u1935\u1936\u1937\u1938\u1939\u193A\u193B\u193C\u193D\u193E\u193F\u1940\u1941\u1942\u1943\u1944\u1945\u1946\u1947\u1948\u1949\u194A\u194B\u194C\u194D\u194E\u194F\u1950\u1951\u1952\u1953\u1954\u1955\u1956\u1957\u1958\u1959\u195A\u195B\u195C\u195D\u195E\u195F\u1960\u1961\u1962\u1963\u1964\u1965\u1966\u1967\u1968\u1969\u196A\u196B\u196C\u196D\u196E\u196F\u1970\u1971\u1972\u1973\u1974\u1975\u1976\u1977\u1978\u1979\u197A\u197B\u197C\u197D\u197E\u197F\u1980\u1981\u1982\u1983\u1984\u1985\u1986\u1987\u1988\u1989\u198A\u198B\u198C\u198D\u198E\u198F\u1990\u1991\u1992\u1993\u1994\u1995\u1996\u1997\u1998\u1999\u199A\u199B\u199C\u199D\u199E\u199F\u19A0\u19A1\u19A2\u19A3\u19A4\u19A5\u19A6\u19A7\u19A8\u19A9\u19AA\u19AB\u19AC\u19AD\u19AE\u19AF\u19B0\u19B1\u19B2\u19B3\u19B4\u19B5\u19B6\u19B7\u19B8\u19B9\u19BA\u19BB\u19BC\u19BD\u19BE\u19BF\u19C0\u19C1\u19C2\u19C3\u19C4\u19C5\u19C6\u19C7\u19C8\u19C9\u19CA\u19CB\u19CC\u19CD\u19CE\u19CF\u19D0\u19D1\u19D2\u19D3\u19D4\u19D5\u19D6\u19D7\u19D8\u19D9\u19DA\u19DB\u19DC\u19DD\u19DE\u19DF\u19E0\u19E1\u19E2\u19E3\u19E4\u19E5\u19E6\u19E7\u19E8\u19E9\u19EA\u19EB\u19EC\u19ED\u19EE\u19EF\u19F0\u19F1\u19F2\u19F3\u19F4\u19F5\u19F6\u19F7\u19F8\u19F9\u19FA\u19FB\u19FC\u19FD\u19FE\u19FF\u1A00\u1A01\u1A02\u1A03\u1A04\u1A05\u1A06\u1A07\u1A08\u1A09\u1A0A\u1A0B\u1A0C\u1A0D\u1A0E\u1A0F\u1A10\u1A11\u1A12\u1A13\u1A14\u1A15\u1A16\u1A17\u1A18\u1A19\u1A1A\u1A1B\u1A1C\u1A1D\u1A1E\u1A1F\u1A20\u1A21\u1A22\u1A23\u1A24\u1A25\u1A26\u1A27\u1A28\u1A29\u1A2A\u1A2B\u1A2C\u1A2D\u1A2E\u1A2F\u1A30\u1A31\u1A32\u1A33\u1A34\u1A35\u1A36\u1A37\u1A38\u1A39\u1A3A\u1A3B\u1A3C\u1A3D\u1A3E\u1A3F\u1A40\u1A41\u1A42\u1A43\u1A44\u1A45\u1A46\u1A47\u1A48\u1A49\u1A4A\u1A4B\u1A4C\u1A4D\u1A4E\u1A4F\u1A50\u1A51\u1A52\u1A53\u1A54\u1A55\u1A56\u1A57\u1A58\u1A59\u1A5A\u1A5B\u1A5C\u1A5D\u1A5E\u1A5F\u1A60\u1A61\u1A62\u1A63\u1A64\u1A65\u1A66\u1A67\u1A68\u1A69\u1A6A\u1A6B\u1A6C\u1A6D\u1A6E\u1A6F\u1A70\u1A71\u1A72\u1A73\u1A74\u1A75\u1A76\u1A77\u1A78\u1A79\u1A7A\u1A7B\u1A7C\u1A7D\u1A7E\u1A7F\u1A80\u1A81\u1A82\u1A83\u1A84\u1A85\u1A86\u1A87\u1A88\u1A89\u1A8A\u1A8B\u1A8C\u1A8D\u1A8E\u1A8F\u1A90\u1A91\u1A92\u1A93\u1A94\u1A95\u1A96\u1A97\u1A98\u1A99\u1A9A\u1A9B\u1A9C\u1A9D\u1A9E\u1A9F\u1AA0\u1AA1\u1AA2\u1AA3\u1AA4\u1AA5\u1AA6\u1AA7\u1AA8\u1AA9\u1AAA\u1AAB\u1AAC\u1AAD\u1AAE\u1AAF\u1AB0\u1AB1\u1AB2\u1AB3\u1AB4\u1AB5\u1AB6\u1AB7\u1AB8\u1AB9\u1ABA\u1ABB\u1ABC\u1ABD\u1ABE\u1ABF\u1AC0\u1AC1\u1AC2\u1AC3\u1AC4\u1AC5\u1AC6\u1AC7\u1AC8\u1AC9\u1ACA\u1ACB\u1ACC\u1ACD\u1ACE\u1ACF\u1AD0\u1AD1\u1AD2\u1AD3\u1AD4\u1AD5\u1AD6\u1AD7\u1AD8\u1AD9\u1ADA\u1ADB\u1ADC\u1ADD\u1ADE\u1ADF\u1AE0\u1AE1\u1AE2\u1AE3\u1AE4\u1AE5\u1AE6\u1AE7\u1AE8\u1AE9\u1AEA\u1AEB\u1AEC\u1AED\u1AEE\u1AEF\u1AF0\u1AF1\u1AF2\u1AF3\u1AF4\u1AF5\u1AF6\u1AF7\u1AF8\u1AF9\u1AFA\u1AFB\u1AFC\u1AFD\u1AFE\u1AFF\u1B00\u1B01\u1B02\u1B03\u1B04\u1B05\u1B06\u1B07\u1B08\u1B09\u1B0A\u1B0B\u1B0C\u1B0D\u1B0E\u1B0F\u1B10\u1B11\u1B12\u1B13\u1B14\u1B15\u1B16\u1B17\u1B18\u1B19\u1B1A\u1B1B\u1B1C\u1B1D\u1B1E\u1B1F\u1B20\u1B21\u1B22\u1B23\u1B24\u1B25\u1B26\u1B27\u1B28\u1B29\u1B2A\u1B2B\u1B2C\u1B2D\u1B2E\u1B2F\u1B30\u1B31\u1B32\u1B33\u1B34\u1B35\u1B36\u1B37\u1B38\u1B39\u1B3A\u1B3B\u1B3C\u1B3D\u1B3E\u1B3F\u1B40\u1B41\u1B42\u1B43\u1B44\u1B45\u1B46\u1B47\u1B48\u1B49\u1B4A\u1B4B\u1B4C\u1B4D\u1B4E\u1B4F\u1B50\u1B51\u1B52\u1B53\u1B54\u1B55\u1B56\u1B57\u1B58\u1B59\u1B5A\u1B5B\u1B5C\u1B5D\u1B5E\u1B5F\u1B60\u1B61\u1B62\u1B63\u1B64\u1B65\u1B66\u1B67\u1B68\u1B69\u1B6A\u1B6B\u1B6C\u1B6D\u1B6E\u1B6F\u1B70\u1B71\u1B72\u1B73\u1B74\u1B75\u1B76\u1B77\u1B78\u1B79\u1B7A\u1B7B\u1B7C\u1B7D\u1B7E\u1B7F\u1B80\u1B81\u1B82\u1B83\u1B84\u1B85\u1B86\u1B87\u1B88\u1B89\u1B8A\u1B8B\u1B8C\u1B8D\u1B8E\u1B8F\u1B90\u1B91\u1B92\u1B93\u1B94\u1B95\u1B96\u1B97\u1B98\u1B99\u1B9A\u1B9B\u1B9C\u1B9D\u1B9E\u1B9F\u1BA0\u1BA1\u1BA2\u1BA3\u1BA4\u1BA5\u1BA6\u1BA7\u1BA8\u1BA9\u1BAA\u1BAB\u1BAC\u1BAD\u1BAE\u1BAF\u1BB0\u1BB1\u1BB2\u1BB3\u1BB4\u1BB5\u1BB6\u1BB7\u1BB8\u1BB9\u1BBA\u1BBB\u1BBC\u1BBD\u1BBE\u1BBF\u1BC0\u1BC1\u1BC2\u1BC3\u1BC4\u1BC5\u1BC6\u1BC7\u1BC8\u1BC9\u1BCA\u1BCB\u1BCC\u1BCD\u1BCE\u1BCF\u1BD0\u1BD1\u1BD2\u1BD3\u1BD4\u1BD5\u1BD6\u1BD7\u1BD8\u1BD9\u1BDA\u1BDB\u1BDC\u1BDD\u1BDE\u1BDF\u1BE0\u1BE1\u1BE2\u1BE3\u1BE4\u1BE5\u1BE6\u1BE7\u1BE8\u1BE9\u1BEA\u1BEB\u1BEC\u1BED\u1BEE\u1BEF\u1BF0\u1BF1\u1BF2\u1BF3\u1BF4\u1BF5\u1BF6\u1BF7\u1BF8\u1BF9\u1BFA\u1BFB\u1BFC\u1BFD\u1BFE\u1BFF";
+if (i6.replace(/\s+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \s between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = i7;
+if (i7.replace(/\s+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \s between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = "\u200B\u200C\u200D\u200E\u200F\u2010\u2011\u2012\u2013\u2014\u2015\u2016\u2017\u2018\u2019\u201A\u201B\u201C\u201D\u201E\u201F\u2020\u2021\u2022\u2023\u2024\u2025\u2026\u2027\u202A\u202B\u202C\u202D\u202E\u2030\u2031\u2032\u2033\u2034\u2035\u2036\u2037\u2038\u2039\u203A\u203B\u203C\u203D\u203E\u203F\u2040\u2041\u2042\u2043\u2044\u2045\u2046\u2047\u2048\u2049\u204A\u204B\u204C\u204D\u204E\u204F\u2050\u2051\u2052\u2053\u2054\u2055\u2056\u2057\u2058\u2059\u205A\u205B\u205C\u205D\u205E\u2060\u2061\u2062\u2063\u2064\u2065\u2066\u2067\u2068\u2069\u206A\u206B\u206C\u206D\u206E\u206F\u2070\u2071\u2072\u2073\u2074\u2075\u2076\u2077\u2078\u2079\u207A\u207B\u207C\u207D\u207E\u207F\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u208A\u208B\u208C\u208D\u208E\u208F\u2090\u2091\u2092\u2093\u2094\u2095\u2096\u2097\u2098\u2099\u209A\u209B\u209C\u209D\u209E\u209F\u20A0\u20A1\u20A2\u20A3\u20A4\u20A5\u20A6\u20A7\u20A8\u20A9\u20AA\u20AB\u20AC\u20AD\u20AE\u20AF\u20B0\u20B1\u20B2\u20B3\u20B4\u20B5\u20B6\u20B7\u20B8\u20B9\u20BA\u20BB\u20BC\u20BD\u20BE\u20BF\u20C0\u20C1\u20C2\u20C3\u20C4\u20C5\u20C6\u20C7\u20C8\u20C9\u20CA\u20CB\u20CC\u20CD\u20CE\u20CF\u20D0\u20D1\u20D2\u20D3\u20D4\u20D5\u20D6\u20D7\u20D8\u20D9\u20DA\u20DB\u20DC\u20DD\u20DE\u20DF\u20E0\u20E1\u20E2\u20E3\u20E4\u20E5\u20E6\u20E7\u20E8\u20E9\u20EA\u20EB\u20EC\u20ED\u20EE\u20EF\u20F0\u20F1\u20F2\u20F3\u20F4\u20F5\u20F6\u20F7\u20F8\u20F9\u20FA\u20FB\u20FC\u20FD\u20FE\u20FF\u2100\u2101\u2102\u2103\u2104\u2105\u2106\u2107\u2108\u2109\u210A\u210B\u210C\u210D\u210E\u210F\u2110\u2111\u2112\u2113\u2114\u2115\u2116\u2117\u2118\u2119\u211A\u211B\u211C\u211D\u211E\u211F\u2120\u2121\u2122\u2123\u2124\u2125\u2126\u2127\u2128\u2129\u212A\u212B\u212C\u212D\u212E\u212F\u2130\u2131\u2132\u2133\u2134\u2135\u2136\u2137\u2138\u2139\u213A\u213B\u213C\u213D\u213E\u213F\u2140\u2141\u2142\u2143\u2144\u2145\u2146\u2147\u2148\u2149\u214A\u214B\u214C\u214D\u214E\u214F\u2150\u2151\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215A\u215B\u215C\u215D\u215E\u215F\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B\u217C\u217D\u217E\u217F\u2180\u2181\u2182\u2183\u2184\u2185\u2186\u2187\u2188\u2189\u218A\u218B\u218C\u218D\u218E\u218F\u2190\u2191\u2192\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219A\u219B\u219C\u219D\u219E\u219F\u21A0\u21A1\u21A2\u21A3\u21A4\u21A5\u21A6\u21A7\u21A8\u21A9\u21AA\u21AB\u21AC\u21AD\u21AE\u21AF\u21B0\u21B1\u21B2\u21B3\u21B4\u21B5\u21B6\u21B7\u21B8\u21B9\u21BA\u21BB\u21BC\u21BD\u21BE\u21BF\u21C0\u21C1\u21C2\u21C3\u21C4\u21C5\u21C6\u21C7\u21C8\u21C9\u21CA\u21CB\u21CC\u21CD\u21CE\u21CF\u21D0\u21D1\u21D2\u21D3\u21D4\u21D5\u21D6\u21D7\u21D8\u21D9\u21DA\u21DB\u21DC\u21DD\u21DE\u21DF\u21E0\u21E1\u21E2\u21E3\u21E4\u21E5\u21E6\u21E7\u21E8\u21E9\u21EA\u21EB\u21EC\u21ED\u21EE\u21EF\u21F0\u21F1\u21F2\u21F3\u21F4\u21F5\u21F6\u21F7\u21F8\u21F9\u21FA\u21FB\u21FC\u21FD\u21FE\u21FF\u2200\u2201\u2202\u2203\u2204\u2205\u2206\u2207\u2208\u2209\u220A\u220B\u220C\u220D\u220E\u220F\u2210\u2211\u2212\u2213\u2214\u2215\u2216\u2217\u2218\u2219\u221A\u221B\u221C\u221D\u221E\u221F\u2220\u2221\u2222\u2223\u2224\u2225\u2226\u2227\u2228\u2229\u222A\u222B\u222C\u222D\u222E\u222F\u2230\u2231\u2232\u2233\u2234\u2235\u2236\u2237\u2238\u2239\u223A\u223B\u223C\u223D\u223E\u223F\u2240\u2241\u2242\u2243\u2244\u2245\u2246\u2247\u2248\u2249\u224A\u224B\u224C\u224D\u224E\u224F\u2250\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225A\u225B\u225C\u225D\u225E\u225F\u2260\u2261\u2262\u2263\u2264\u2265\u2266\u2267\u2268\u2269\u226A\u226B\u226C\u226D\u226E\u226F\u2270\u2271\u2272\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227A\u227B\u227C\u227D\u227E\u227F\u2280\u2281\u2282\u2283\u2284\u2285\u2286\u2287\u2288\u2289\u228A\u228B\u228C\u228D\u228E\u228F\u2290\u2291\u2292\u2293\u2294\u2295\u2296\u2297\u2298\u2299\u229A\u229B\u229C\u229D\u229E\u229F\u22A0\u22A1\u22A2\u22A3\u22A4\u22A5\u22A6\u22A7\u22A8\u22A9\u22AA\u22AB\u22AC\u22AD\u22AE\u22AF\u22B0\u22B1\u22B2\u22B3\u22B4\u22B5\u22B6\u22B7\u22B8\u22B9\u22BA\u22BB\u22BC\u22BD\u22BE\u22BF\u22C0\u22C1\u22C2\u22C3\u22C4\u22C5\u22C6\u22C7\u22C8\u22C9\u22CA\u22CB\u22CC\u22CD\u22CE\u22CF\u22D0\u22D1\u22D2\u22D3\u22D4\u22D5\u22D6\u22D7\u22D8\u22D9\u22DA\u22DB\u22DC\u22DD\u22DE\u22DF\u22E0\u22E1\u22E2\u22E3\u22E4\u22E5\u22E6\u22E7\u22E8\u22E9\u22EA\u22EB\u22EC\u22ED\u22EE\u22EF\u22F0\u22F1\u22F2\u22F3\u22F4\u22F5\u22F6\u22F7\u22F8\u22F9\u22FA\u22FB\u22FC\u22FD\u22FE\u22FF\u2300\u2301\u2302\u2303\u2304\u2305\u2306\u2307\u2308\u2309\u230A\u230B\u230C\u230D\u230E\u230F\u2310\u2311\u2312\u2313\u2314\u2315\u2316\u2317\u2318\u2319\u231A\u231B\u231C\u231D\u231E\u231F\u2320\u2321\u2322\u2323\u2324\u2325\u2326\u2327\u2328\u2329\u232A\u232B\u232C\u232D\u232E\u232F\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337\u2338\u2339\u233A\u233B\u233C\u233D\u233E\u233F\u2340\u2341\u2342\u2343\u2344\u2345\u2346\u2347\u2348\u2349\u234A\u234B\u234C\u234D\u234E\u234F\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357\u2358\u2359\u235A\u235B\u235C\u235D\u235E\u235F\u2360\u2361\u2362\u2363\u2364\u2365\u2366\u2367\u2368\u2369\u236A\u236B\u236C\u236D\u236E\u236F\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377\u2378\u2379\u237A\u237B\u237C\u237D\u237E\u237F\u2380\u2381\u2382\u2383\u2384\u2385\u2386\u2387\u2388\u2389\u238A\u238B\u238C\u238D\u238E\u238F\u2390\u2391\u2392\u2393\u2394\u2395\u2396\u2397\u2398\u2399\u239A\u239B\u239C\u239D\u239E\u239F\u23A0\u23A1\u23A2\u23A3\u23A4\u23A5\u23A6\u23A7\u23A8\u23A9\u23AA\u23AB\u23AC\u23AD\u23AE\u23AF\u23B0\u23B1\u23B2\u23B3\u23B4\u23B5\u23B6\u23B7\u23B8\u23B9\u23BA\u23BB\u23BC\u23BD\u23BE\u23BF\u23C0\u23C1\u23C2\u23C3\u23C4\u23C5\u23C6\u23C7\u23C8\u23C9\u23CA\u23CB\u23CC\u23CD\u23CE\u23CF\u23D0\u23D1\u23D2\u23D3\u23D4\u23D5\u23D6\u23D7\u23D8\u23D9\u23DA\u23DB\u23DC\u23DD\u23DE\u23DF\u23E0\u23E1\u23E2\u23E3\u23E4\u23E5\u23E6\u23E7\u23E8\u23E9\u23EA\u23EB\u23EC\u23ED\u23EE\u23EF\u23F0\u23F1\u23F2\u23F3\u23F4\u23F5\u23F6\u23F7\u23F8\u23F9\u23FA\u23FB\u23FC\u23FD\u23FE\u23FF";
+if (i8.replace(/\s+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \s between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = i9;
+if (i9.replace(/\s+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \s between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = i10;
+if (i10.replace(/\s+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \s between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = i11;
+if (i11.replace(/\s+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \s between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = "\u3001\u3002\u3003\u3004\u3005\u3006\u3007\u3008\u3009\u300A\u300B\u300C\u300D\u300E\u300F\u3010\u3011\u3012\u3013\u3014\u3015\u3016\u3017\u3018\u3019\u301A\u301B\u301C\u301D\u301E\u301F\u3020\u3021\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u302A\u302B\u302C\u302D\u302E\u302F\u3030\u3031\u3032\u3033\u3034\u3035\u3036\u3037\u3038\u3039\u303A\u303B\u303C\u303D\u303E\u303F\u3040\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E\u305F\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A\u306B\u306C\u306D\u306E\u306F\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307A\u307B\u307C\u307D\u307E\u307F\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308A\u308B\u308C\u308D\u308E\u308F\u3090\u3091\u3092\u3093\u3094\u3095\u3096\u3097\u3098\u3099\u309A\u309B\u309C\u309D\u309E\u309F\u30A0\u30A1\u30A2\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3\u30F4\u30F5\u30F6\u30F7\u30F8\u30F9\u30FA\u30FB\u30FC\u30FD\u30FE\u30FF\u3100\u3101\u3102\u3103\u3104\u3105\u3106\u3107\u3108\u3109\u310A\u310B\u310C\u310D\u310E\u310F\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119\u311A\u311B\u311C\u311D\u311E\u311F\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129\u312A\u312B\u312C\u312D\u312E\u312F\u3130\u3131\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139\u313A\u313B\u313C\u313D\u313E\u313F\u3140\u3141\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149\u314A\u314B\u314C\u314D\u314E\u314F\u3150\u3151\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159\u315A\u315B\u315C\u315D\u315E\u315F\u3160\u3161\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169\u316A\u316B\u316C\u316D\u316E\u316F\u3170\u3171\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179\u317A\u317B\u317C\u317D\u317E\u317F\u3180\u3181\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189\u318A\u318B\u318C\u318D\u318E\u318F\u3190\u3191\u3192\u3193\u3194\u3195\u3196\u3197\u3198\u3199\u319A\u319B\u319C\u319D\u319E\u319F\u31A0\u31A1\u31A2\u31A3\u31A4\u31A5\u31A6\u31A7\u31A8\u31A9\u31AA\u31AB\u31AC\u31AD\u31AE\u31AF\u31B0\u31B1\u31B2\u31B3\u31B4\u31B5\u31B6\u31B7\u31B8\u31B9\u31BA\u31BB\u31BC\u31BD\u31BE\u31BF\u31C0\u31C1\u31C2\u31C3\u31C4\u31C5\u31C6\u31C7\u31C8\u31C9\u31CA\u31CB\u31CC\u31CD\u31CE\u31CF\u31D0\u31D1\u31D2\u31D3\u31D4\u31D5\u31D6\u31D7\u31D8\u31D9\u31DA\u31DB\u31DC\u31DD\u31DE\u31DF\u31E0\u31E1\u31E2\u31E3\u31E4\u31E5\u31E6\u31E7\u31E8\u31E9\u31EA\u31EB\u31EC\u31ED\u31EE\u31EF\u31F0\u31F1\u31F2\u31F3\u31F4\u31F5\u31F6\u31F7\u31F8\u31F9\u31FA\u31FB\u31FC\u31FD\u31FE\u31FF\u3200\u3201\u3202\u3203\u3204\u3205\u3206\u3207\u3208\u3209\u320A\u320B\u320C\u320D\u320E\u320F\u3210\u3211\u3212\u3213\u3214\u3215\u3216\u3217\u3218\u3219\u321A\u321B\u321C\u321D\u321E\u321F\u3220\u3221\u3222\u3223\u3224\u3225\u3226\u3227\u3228\u3229\u322A\u322B\u322C\u322D\u322E\u322F\u3230\u3231\u3232\u3233\u3234\u3235\u3236\u3237\u3238\u3239\u323A\u323B\u323C\u323D\u323E\u323F\u3240\u3241\u3242\u3243\u3244\u3245\u3246\u3247\u3248\u3249\u324A\u324B\u324C\u324D\u324E\u324F\u3250\u3251\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259\u325A\u325B\u325C\u325D\u325E\u325F\u3260\u3261\u3262\u3263\u3264\u3265\u3266\u3267\u3268\u3269\u326A\u326B\u326C\u326D\u326E\u326F\u3270\u3271\u3272\u3273\u3274\u3275\u3276\u3277\u3278\u3279\u327A\u327B\u327C\u327D\u327E\u327F\u3280\u3281\u3282\u3283\u3284\u3285\u3286\u3287\u3288\u3289\u328A\u328B\u328C\u328D\u328E\u328F\u3290\u3291\u3292\u3293\u3294\u3295\u3296\u3297\u3298\u3299\u329A\u329B\u329C\u329D\u329E\u329F\u32A0\u32A1\u32A2\u32A3\u32A4\u32A5\u32A6\u32A7\u32A8\u32A9\u32AA\u32AB\u32AC\u32AD\u32AE\u32AF\u32B0\u32B1\u32B2\u32B3\u32B4\u32B5\u32B6\u32B7\u32B8\u32B9\u32BA\u32BB\u32BC\u32BD\u32BE\u32BF\u32C0\u32C1\u32C2\u32C3\u32C4\u32C5\u32C6\u32C7\u32C8\u32C9\u32CA\u32CB\u32CC\u32CD\u32CE\u32CF\u32D0\u32D1\u32D2\u32D3\u32D4\u32D5\u32D6\u32D7\u32D8\u32D9\u32DA\u32DB\u32DC\u32DD\u32DE\u32DF\u32E0\u32E1\u32E2\u32E3\u32E4\u32E5\u32E6\u32E7\u32E8\u32E9\u32EA\u32EB\u32EC\u32ED\u32EE\u32EF\u32F0\u32F1\u32F2\u32F3\u32F4\u32F5\u32F6\u32F7\u32F8\u32F9\u32FA\u32FB\u32FC\u32FD\u32FE\u32FF\u3300\u3301\u3302\u3303\u3304\u3305\u3306\u3307\u3308\u3309\u330A\u330B\u330C\u330D\u330E\u330F\u3310\u3311\u3312\u3313\u3314\u3315\u3316\u3317\u3318\u3319\u331A\u331B\u331C\u331D\u331E\u331F\u3320\u3321\u3322\u3323\u3324\u3325\u3326\u3327\u3328\u3329\u332A\u332B\u332C\u332D\u332E\u332F\u3330\u3331\u3332\u3333\u3334\u3335\u3336\u3337\u3338\u3339\u333A\u333B\u333C\u333D\u333E\u333F\u3340\u3341\u3342\u3343\u3344\u3345\u3346\u3347\u3348\u3349\u334A\u334B\u334C\u334D\u334E\u334F\u3350\u3351\u3352\u3353\u3354\u3355\u3356\u3357\u3358\u3359\u335A\u335B\u335C\u335D\u335E\u335F\u3360\u3361\u3362\u3363\u3364\u3365\u3366\u3367\u3368\u3369\u336A\u336B\u336C\u336D\u336E\u336F\u3370\u3371\u3372\u3373\u3374\u3375\u3376\u3377\u3378\u3379\u337A\u337B\u337C\u337D\u337E\u337F\u3380\u3381\u3382\u3383\u3384\u3385\u3386\u3387\u3388\u3389\u338A\u338B\u338C\u338D\u338E\u338F\u3390\u3391\u3392\u3393\u3394\u3395\u3396\u3397\u3398\u3399\u339A\u339B\u339C\u339D\u339E\u339F\u33A0\u33A1\u33A2\u33A3\u33A4\u33A5\u33A6\u33A7\u33A8\u33A9\u33AA\u33AB\u33AC\u33AD\u33AE\u33AF\u33B0\u33B1\u33B2\u33B3\u33B4\u33B5\u33B6\u33B7\u33B8\u33B9\u33BA\u33BB\u33BC\u33BD\u33BE\u33BF\u33C0\u33C1\u33C2\u33C3\u33C4\u33C5\u33C6\u33C7\u33C8\u33C9\u33CA\u33CB\u33CC\u33CD\u33CE\u33CF\u33D0\u33D1\u33D2\u33D3\u33D4\u33D5\u33D6\u33D7\u33D8\u33D9\u33DA\u33DB\u33DC\u33DD\u33DE\u33DF\u33E0\u33E1\u33E2\u33E3\u33E4\u33E5\u33E6\u33E7\u33E8\u33E9\u33EA\u33EB\u33EC\u33ED\u33EE\u33EF\u33F0\u33F1\u33F2\u33F3\u33F4\u33F5\u33F6\u33F7\u33F8\u33F9\u33FA\u33FB\u33FC\u33FD\u33FE\u33FF";
+if (i12.replace(/\s+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \s between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = i13;
+if (i13.replace(/\s+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \s between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = i14;
+if (i14.replace(/\s+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \s between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = i15;
+if (i15.replace(/\s+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \s between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = i16;
+if (i16.replace(/\s+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \s between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = i17;
+if (i17.replace(/\s+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \s between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = i18;
+if (i18.replace(/\s+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \s between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = i19;
+if (i19.replace(/\s+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \s between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = i20;
+if (i20.replace(/\s+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \s between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = i21;
+if (i21.replace(/\s+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \s between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = i22;
+if (i22.replace(/\s+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \s between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = i23;
+if (i23.replace(/\s+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \s between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = i24;
+if (i24.replace(/\s+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \s between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = i25;
+if (i25.replace(/\s+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \s between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = i26;
+if (i26.replace(/\s+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \s between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = i27;
+if (i27.replace(/\s+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \s between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = i28;
+if (i28.replace(/\s+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \s between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = i29;
+if (i29.replace(/\s+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \s between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = i30;
+if (i30.replace(/\s+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \s between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = i31;
+if (i31.replace(/\s+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \s between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = i32;
+if (i32.replace(/\s+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \s between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = i33;
+if (i33.replace(/\s+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \s between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = i34;
+if (i34.replace(/\s+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \s between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = i35;
+if (i35.replace(/\s+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \s between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = i36;
+if (i36.replace(/\s+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \s between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = i37;
+if (i37.replace(/\s+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \s between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = i38;
+if (i38.replace(/\s+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \s between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = i39;
+if (i39.replace(/\s+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \s between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = i40;
+if (i40.replace(/\s+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \s between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = i41;
+if (i41.replace(/\s+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \s between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = i42;
+if (i42.replace(/\s+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \s between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = i43;
+if (i43.replace(/\s+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \s between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = i44;
+if (i44.replace(/\s+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \s between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = i45;
+if (i45.replace(/\s+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \s between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = i46;
+if (i46.replace(/\s+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \s between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = i47;
+if (i47.replace(/\s+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \s between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = i48;
+if (i48.replace(/\s+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \s between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = i49;
+if (i49.replace(/\s+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \s between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = i50;
+if (i50.replace(/\s+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \s between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = i51;
+if (i51.replace(/\s+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \s between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = i52;
+if (i52.replace(/\s+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \s between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = i53;
+if (i53.replace(/\s+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \s between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = i54;
+if (i54.replace(/\s+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \s between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = i55;
+if (i55.replace(/\s+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \s between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = i56;
+if (i56.replace(/\s+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \s between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = i57;
+if (i57.replace(/\s+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \s between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = i58;
+if (i58.replace(/\s+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \s between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = i59;
+if (i59.replace(/\s+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \s between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = i60;
+if (i60.replace(/\s+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \s between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = i61;
+if (i61.replace(/\s+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \s between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = i62;
+if (i62.replace(/\s+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \s between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = i63;
+if (i63.replace(/\s+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \s between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T2.js
new file mode 100644
index 000000000..84b9828d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T2;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: LineTerminator;
+*/
+
+//CHECK#1
+var arr = /\s/.exec("\u000A");
+if ((arr === null) || (arr[0] !== "\u000A")) {
+ $ERROR('#1: var arr = /\\s/.exec("\\u000A"); arr[0] === "\\u000A". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\s/.exec("\u000D");
+if ((arr === null) || (arr[0] !== "\u000D")) {
+ $ERROR('#2: var arr = /\\s/.exec("\\u000D"); arr[0] === "\\u000D". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#3
+var arr = /\s/.exec("\u2028");
+if ((arr === null) || (arr[0] !== "\u2028")) {
+ $ERROR('#3: var arr = /\\s/.exec("\\u2028"); arr[0] === "\\u2028". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#4
+var arr = /\s/.exec("\u2029");
+if ((arr === null) || (arr[0] !== "\u2029")) {
+ $ERROR('#4: var arr = /\\s/.exec("\\u2029"); arr[0] === "\\u2029". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T3.js
new file mode 100644
index 000000000..68fdac57e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T3.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T3;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: ENGLISH ALPHABET;
+*/
+
+var regexp_s = /\s/;
+
+//CHECK#0041-005A
+var result = true;
+for (alpha = 0x0041; alpha <= 0x005A; alpha++) {
+ if (regexp_s.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ if (regexp_s.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T4.js
new file mode 100644
index 000000000..639d6081c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T4;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_s = /\s/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ if (regexp_s.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ if (regexp_s.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T5.js
new file mode 100644
index 000000000..ce50ca5d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A1_T5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A1_T5;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+* containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+* @description: Tested string is "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+*/
+
+//CHECK#1
+var non_s = "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+if (/\s/.exec(non_s) !== null) {
+ $ERROR('#1: non-s');
+}
+
+//CHECK#2
+var non_S = '\f\n\r\t\v ';
+var regexp_s = /\s/g;
+var k = 0;
+while (regexp_s.exec(non_S) !== null) {
+ k++;
+}
+
+if (non_S.length !== k) {
+ $ERROR('#2: non-S');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T1.js
new file mode 100644
index 000000000..8fe557dee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T1.js
@@ -0,0 +1,523 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T1;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: WhiteSpace
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0009\u000A\u000B\u000C\u000D\u0020\u00A0";
+if (i0.replace(/\S+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \S between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = "";
+if (i1.replace(/\S+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \S between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = "";
+if (i2.replace(/\S+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \S between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = "";
+if (i3.replace(/\S+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \S between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = "";
+if (i4.replace(/\S+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \S between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = "\u1680";
+if (i5.replace(/\S+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \S between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = "\u180E";
+if (i6.replace(/\S+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \S between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = "";
+if (i7.replace(/\S+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \S between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = "\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F";
+if (i8.replace(/\S+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \S between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = "";
+if (i9.replace(/\S+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \S between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = "";
+if (i10.replace(/\S+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \S between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = "";
+if (i11.replace(/\S+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \S between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = "\u3000";
+if (i12.replace(/\S+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \S between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = "";
+if (i13.replace(/\S+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \S between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = "";
+if (i14.replace(/\S+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \S between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = "";
+if (i15.replace(/\S+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \S between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = "";
+if (i16.replace(/\S+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \S between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = "";
+if (i17.replace(/\S+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \S between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = "";
+if (i18.replace(/\S+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \S between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = "";
+if (i19.replace(/\S+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \S between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = "";
+if (i20.replace(/\S+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \S between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = "";
+if (i21.replace(/\S+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \S between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = "";
+if (i22.replace(/\S+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \S between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = "";
+if (i23.replace(/\S+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \S between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = "";
+if (i24.replace(/\S+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \S between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = "";
+if (i25.replace(/\S+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \S between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = "";
+if (i26.replace(/\S+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \S between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = "";
+if (i27.replace(/\S+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \S between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = "";
+if (i28.replace(/\S+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \S between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = "";
+if (i29.replace(/\S+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \S between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = "";
+if (i30.replace(/\S+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \S between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = "";
+if (i31.replace(/\S+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \S between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = "";
+if (i32.replace(/\S+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \S between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = "";
+if (i33.replace(/\S+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \S between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = "";
+if (i34.replace(/\S+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \S between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = "";
+if (i35.replace(/\S+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \S between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = "";
+if (i36.replace(/\S+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \S between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = "";
+if (i37.replace(/\S+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \S between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = "";
+if (i38.replace(/\S+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \S between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = "";
+if (i39.replace(/\S+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \S between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = "";
+if (i40.replace(/\S+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \S between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = "";
+if (i41.replace(/\S+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \S between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = "";
+if (i42.replace(/\S+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \S between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = "";
+if (i43.replace(/\S+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \S between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = "";
+if (i44.replace(/\S+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \S between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = "";
+if (i45.replace(/\S+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \S between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = "";
+if (i46.replace(/\S+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \S between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = "";
+if (i47.replace(/\S+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \S between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = "";
+if (i48.replace(/\S+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \S between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = "";
+if (i49.replace(/\S+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \S between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = "";
+if (i50.replace(/\S+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \S between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = "";
+if (i51.replace(/\S+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \S between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = "";
+if (i52.replace(/\S+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \S between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = "";
+if (i53.replace(/\S+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \S between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = "";
+if (i54.replace(/\S+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \S between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = "";
+if (i55.replace(/\S+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \S between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = "";
+if (i56.replace(/\S+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \S between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = "";
+if (i57.replace(/\S+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \S between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = "";
+if (i58.replace(/\S+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \S between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = "";
+if (i59.replace(/\S+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \S between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = "";
+if (i60.replace(/\S+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \S between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = "";
+if (i61.replace(/\S+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \S between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = "";
+if (i62.replace(/\S+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \S between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = "";
+if (i63.replace(/\S+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \S between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T2.js
new file mode 100644
index 000000000..9bd98b403
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T2;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: LineTerminator;
+*/
+
+//CHECK#1
+var arr = /\S/.exec("\u000A");
+if (arr !== null) {
+ $ERROR('#1: var arr = /\\S/.exec("\\u000A"); arr[0] === "\\u000A". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#2
+var arr = /\S/.exec("\u000D");
+if (arr !== null) {
+ $ERROR('#2: var arr = /\\S/.exec("\\u000D"); arr[0] === "\\u000D". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#3
+var arr = /\S/.exec("\u2028");
+if (arr !== null) {
+ $ERROR('#3: var arr = /\\S/.exec("\\u2028"); arr[0] === "\\u2028". Actual. ' + (arr && arr[0]));
+}
+
+//CHECK#4
+var arr = /\S/.exec("\u2029");
+if (arr !== null) {
+ $ERROR('#4: var arr = /\\S/.exec("\\u2029"); arr[0] === "\\u2029". Actual. ' + (arr && arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T3.js
new file mode 100644
index 000000000..0c3d644df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T3.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T3;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: ENGLISH ALPHABET;
+*/
+
+var regexp_S = /\S/;
+
+//CHECK#0041-005A
+var result = true;
+for (alpha = 0x0041; alpha <= 0x005A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_S.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_S.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T4.js
new file mode 100644
index 000000000..a46442f74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T4.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T4;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_S = /\S/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_S.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_S.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T5.js
new file mode 100644
index 000000000..36fbaedff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A2_T5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A2_T5;
+* @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+* @description: Tested string is "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+*/
+
+//CHECK#1
+var non_s = "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
+var regexp_S = /\S/g;
+var k = 0;
+while (regexp_S.exec(non_s) !== null) {
+ k++;
+}
+
+if (non_s.length !== k) {
+ $ERROR('#1: non-s');
+}
+
+//CHECK#2
+var non_S = '\f\n\r\t\v ';
+if (/\S/.exec(non_S) !== null) {
+ $ERROR('#2: non-S');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T1.js
new file mode 100644
index 000000000..a735cbfa5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T1.js
@@ -0,0 +1,2058 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T1;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: A - Z;
+*/
+
+var i0 = "";
+for (var j = 0; j < 256; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u0009\u000A\u000B\u000C\u000D\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u0020\u0021\u0022\u0023\u0024\u0025\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F\u003A\u003B\u003C\u003D\u003E\u003F\u0040\u005B\u005C\u005D\u005E\u0060\u007B\u007C\u007D\u007E\u007F\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF";
+if (i0.replace(/\w+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \w between character 0 and ff");
+}
+
+var i1 = "";
+for (var j = 256; j < 512; j++)
+ i1 += String.fromCharCode(j);
+var o1 = i1;
+if (i1.replace(/\w+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \w between character 100 and 1ff");
+}
+
+var i2 = "";
+for (var j = 512; j < 768; j++)
+ i2 += String.fromCharCode(j);
+var o2 = i2;
+if (i2.replace(/\w+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \w between character 200 and 2ff");
+}
+
+var i3 = "";
+for (var j = 768; j < 1024; j++)
+ i3 += String.fromCharCode(j);
+var o3 = i3;
+if (i3.replace(/\w+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \w between character 300 and 3ff");
+}
+
+var i4 = "";
+for (var j = 1024; j < 1280; j++)
+ i4 += String.fromCharCode(j);
+var o4 = i4;
+if (i4.replace(/\w+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \w between character 400 and 4ff");
+}
+
+var i5 = "";
+for (var j = 1280; j < 1536; j++)
+ i5 += String.fromCharCode(j);
+var o5 = i5;
+if (i5.replace(/\w+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \w between character 500 and 5ff");
+}
+
+var i6 = "";
+for (var j = 1536; j < 1792; j++)
+ i6 += String.fromCharCode(j);
+var o6 = i6;
+if (i6.replace(/\w+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \w between character 600 and 6ff");
+}
+
+var i7 = "";
+for (var j = 1792; j < 2048; j++)
+ i7 += String.fromCharCode(j);
+var o7 = i7;
+if (i7.replace(/\w+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \w between character 700 and 7ff");
+}
+
+var i8 = "";
+for (var j = 2048; j < 2304; j++)
+ i8 += String.fromCharCode(j);
+var o8 = i8;
+if (i8.replace(/\w+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \w between character 800 and 8ff");
+}
+
+var i9 = "";
+for (var j = 2304; j < 2560; j++)
+ i9 += String.fromCharCode(j);
+var o9 = i9;
+if (i9.replace(/\w+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \w between character 900 and 9ff");
+}
+
+var i10 = "";
+for (var j = 2560; j < 2816; j++)
+ i10 += String.fromCharCode(j);
+var o10 = i10;
+if (i10.replace(/\w+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \w between character a00 and aff");
+}
+
+var i11 = "";
+for (var j = 2816; j < 3072; j++)
+ i11 += String.fromCharCode(j);
+var o11 = i11;
+if (i11.replace(/\w+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \w between character b00 and bff");
+}
+
+var i12 = "";
+for (var j = 3072; j < 3328; j++)
+ i12 += String.fromCharCode(j);
+var o12 = i12;
+if (i12.replace(/\w+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \w between character c00 and cff");
+}
+
+var i13 = "";
+for (var j = 3328; j < 3584; j++)
+ i13 += String.fromCharCode(j);
+var o13 = i13;
+if (i13.replace(/\w+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \w between character d00 and dff");
+}
+
+var i14 = "";
+for (var j = 3584; j < 3840; j++)
+ i14 += String.fromCharCode(j);
+var o14 = i14;
+if (i14.replace(/\w+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \w between character e00 and eff");
+}
+
+var i15 = "";
+for (var j = 3840; j < 4096; j++)
+ i15 += String.fromCharCode(j);
+var o15 = i15;
+if (i15.replace(/\w+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \w between character f00 and fff");
+}
+
+var i16 = "";
+for (var j = 4096; j < 4352; j++)
+ i16 += String.fromCharCode(j);
+var o16 = i16;
+if (i16.replace(/\w+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \w between character 1000 and 10ff");
+}
+
+var i17 = "";
+for (var j = 4352; j < 4608; j++)
+ i17 += String.fromCharCode(j);
+var o17 = i17;
+if (i17.replace(/\w+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \w between character 1100 and 11ff");
+}
+
+var i18 = "";
+for (var j = 4608; j < 4864; j++)
+ i18 += String.fromCharCode(j);
+var o18 = i18;
+if (i18.replace(/\w+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \w between character 1200 and 12ff");
+}
+
+var i19 = "";
+for (var j = 4864; j < 5120; j++)
+ i19 += String.fromCharCode(j);
+var o19 = i19;
+if (i19.replace(/\w+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \w between character 1300 and 13ff");
+}
+
+var i20 = "";
+for (var j = 5120; j < 5376; j++)
+ i20 += String.fromCharCode(j);
+var o20 = i20;
+if (i20.replace(/\w+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \w between character 1400 and 14ff");
+}
+
+var i21 = "";
+for (var j = 5376; j < 5632; j++)
+ i21 += String.fromCharCode(j);
+var o21 = i21;
+if (i21.replace(/\w+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \w between character 1500 and 15ff");
+}
+
+var i22 = "";
+for (var j = 5632; j < 5888; j++)
+ i22 += String.fromCharCode(j);
+var o22 = i22;
+if (i22.replace(/\w+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \w between character 1600 and 16ff");
+}
+
+var i23 = "";
+for (var j = 5888; j < 6144; j++)
+ i23 += String.fromCharCode(j);
+var o23 = i23;
+if (i23.replace(/\w+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \w between character 1700 and 17ff");
+}
+
+var i24 = "";
+for (var j = 6144; j < 6400; j++)
+ i24 += String.fromCharCode(j);
+var o24 = i24;
+if (i24.replace(/\w+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \w between character 1800 and 18ff");
+}
+
+var i25 = "";
+for (var j = 6400; j < 6656; j++)
+ i25 += String.fromCharCode(j);
+var o25 = i25;
+if (i25.replace(/\w+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \w between character 1900 and 19ff");
+}
+
+var i26 = "";
+for (var j = 6656; j < 6912; j++)
+ i26 += String.fromCharCode(j);
+var o26 = i26;
+if (i26.replace(/\w+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \w between character 1a00 and 1aff");
+}
+
+var i27 = "";
+for (var j = 6912; j < 7168; j++)
+ i27 += String.fromCharCode(j);
+var o27 = i27;
+if (i27.replace(/\w+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \w between character 1b00 and 1bff");
+}
+
+var i28 = "";
+for (var j = 7168; j < 7424; j++)
+ i28 += String.fromCharCode(j);
+var o28 = i28;
+if (i28.replace(/\w+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \w between character 1c00 and 1cff");
+}
+
+var i29 = "";
+for (var j = 7424; j < 7680; j++)
+ i29 += String.fromCharCode(j);
+var o29 = i29;
+if (i29.replace(/\w+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \w between character 1d00 and 1dff");
+}
+
+var i30 = "";
+for (var j = 7680; j < 7936; j++)
+ i30 += String.fromCharCode(j);
+var o30 = i30;
+if (i30.replace(/\w+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \w between character 1e00 and 1eff");
+}
+
+var i31 = "";
+for (var j = 7936; j < 8192; j++)
+ i31 += String.fromCharCode(j);
+var o31 = i31;
+if (i31.replace(/\w+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \w between character 1f00 and 1fff");
+}
+
+var i32 = "";
+for (var j = 8192; j < 8448; j++)
+ i32 += String.fromCharCode(j);
+var o32 = i32;
+if (i32.replace(/\w+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \w between character 2000 and 20ff");
+}
+
+var i33 = "";
+for (var j = 8448; j < 8704; j++)
+ i33 += String.fromCharCode(j);
+var o33 = i33;
+if (i33.replace(/\w+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \w between character 2100 and 21ff");
+}
+
+var i34 = "";
+for (var j = 8704; j < 8960; j++)
+ i34 += String.fromCharCode(j);
+var o34 = i34;
+if (i34.replace(/\w+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \w between character 2200 and 22ff");
+}
+
+var i35 = "";
+for (var j = 8960; j < 9216; j++)
+ i35 += String.fromCharCode(j);
+var o35 = i35;
+if (i35.replace(/\w+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \w between character 2300 and 23ff");
+}
+
+var i36 = "";
+for (var j = 9216; j < 9472; j++)
+ i36 += String.fromCharCode(j);
+var o36 = i36;
+if (i36.replace(/\w+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \w between character 2400 and 24ff");
+}
+
+var i37 = "";
+for (var j = 9472; j < 9728; j++)
+ i37 += String.fromCharCode(j);
+var o37 = i37;
+if (i37.replace(/\w+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \w between character 2500 and 25ff");
+}
+
+var i38 = "";
+for (var j = 9728; j < 9984; j++)
+ i38 += String.fromCharCode(j);
+var o38 = i38;
+if (i38.replace(/\w+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \w between character 2600 and 26ff");
+}
+
+var i39 = "";
+for (var j = 9984; j < 10240; j++)
+ i39 += String.fromCharCode(j);
+var o39 = i39;
+if (i39.replace(/\w+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \w between character 2700 and 27ff");
+}
+
+var i40 = "";
+for (var j = 10240; j < 10496; j++)
+ i40 += String.fromCharCode(j);
+var o40 = i40;
+if (i40.replace(/\w+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \w between character 2800 and 28ff");
+}
+
+var i41 = "";
+for (var j = 10496; j < 10752; j++)
+ i41 += String.fromCharCode(j);
+var o41 = i41;
+if (i41.replace(/\w+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \w between character 2900 and 29ff");
+}
+
+var i42 = "";
+for (var j = 10752; j < 11008; j++)
+ i42 += String.fromCharCode(j);
+var o42 = i42;
+if (i42.replace(/\w+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \w between character 2a00 and 2aff");
+}
+
+var i43 = "";
+for (var j = 11008; j < 11264; j++)
+ i43 += String.fromCharCode(j);
+var o43 = i43;
+if (i43.replace(/\w+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \w between character 2b00 and 2bff");
+}
+
+var i44 = "";
+for (var j = 11264; j < 11520; j++)
+ i44 += String.fromCharCode(j);
+var o44 = i44;
+if (i44.replace(/\w+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \w between character 2c00 and 2cff");
+}
+
+var i45 = "";
+for (var j = 11520; j < 11776; j++)
+ i45 += String.fromCharCode(j);
+var o45 = i45;
+if (i45.replace(/\w+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \w between character 2d00 and 2dff");
+}
+
+var i46 = "";
+for (var j = 11776; j < 12032; j++)
+ i46 += String.fromCharCode(j);
+var o46 = i46;
+if (i46.replace(/\w+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \w between character 2e00 and 2eff");
+}
+
+var i47 = "";
+for (var j = 12032; j < 12288; j++)
+ i47 += String.fromCharCode(j);
+var o47 = i47;
+if (i47.replace(/\w+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \w between character 2f00 and 2fff");
+}
+
+var i48 = "";
+for (var j = 12288; j < 12544; j++)
+ i48 += String.fromCharCode(j);
+var o48 = i48;
+if (i48.replace(/\w+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \w between character 3000 and 30ff");
+}
+
+var i49 = "";
+for (var j = 12544; j < 12800; j++)
+ i49 += String.fromCharCode(j);
+var o49 = i49;
+if (i49.replace(/\w+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \w between character 3100 and 31ff");
+}
+
+var i50 = "";
+for (var j = 12800; j < 13056; j++)
+ i50 += String.fromCharCode(j);
+var o50 = i50;
+if (i50.replace(/\w+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \w between character 3200 and 32ff");
+}
+
+var i51 = "";
+for (var j = 13056; j < 13312; j++)
+ i51 += String.fromCharCode(j);
+var o51 = i51;
+if (i51.replace(/\w+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \w between character 3300 and 33ff");
+}
+
+var i52 = "";
+for (var j = 13312; j < 13568; j++)
+ i52 += String.fromCharCode(j);
+var o52 = i52;
+if (i52.replace(/\w+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \w between character 3400 and 34ff");
+}
+
+var i53 = "";
+for (var j = 13568; j < 13824; j++)
+ i53 += String.fromCharCode(j);
+var o53 = i53;
+if (i53.replace(/\w+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \w between character 3500 and 35ff");
+}
+
+var i54 = "";
+for (var j = 13824; j < 14080; j++)
+ i54 += String.fromCharCode(j);
+var o54 = i54;
+if (i54.replace(/\w+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \w between character 3600 and 36ff");
+}
+
+var i55 = "";
+for (var j = 14080; j < 14336; j++)
+ i55 += String.fromCharCode(j);
+var o55 = i55;
+if (i55.replace(/\w+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \w between character 3700 and 37ff");
+}
+
+var i56 = "";
+for (var j = 14336; j < 14592; j++)
+ i56 += String.fromCharCode(j);
+var o56 = i56;
+if (i56.replace(/\w+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \w between character 3800 and 38ff");
+}
+
+var i57 = "";
+for (var j = 14592; j < 14848; j++)
+ i57 += String.fromCharCode(j);
+var o57 = i57;
+if (i57.replace(/\w+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \w between character 3900 and 39ff");
+}
+
+var i58 = "";
+for (var j = 14848; j < 15104; j++)
+ i58 += String.fromCharCode(j);
+var o58 = i58;
+if (i58.replace(/\w+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \w between character 3a00 and 3aff");
+}
+
+var i59 = "";
+for (var j = 15104; j < 15360; j++)
+ i59 += String.fromCharCode(j);
+var o59 = i59;
+if (i59.replace(/\w+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \w between character 3b00 and 3bff");
+}
+
+var i60 = "";
+for (var j = 15360; j < 15616; j++)
+ i60 += String.fromCharCode(j);
+var o60 = i60;
+if (i60.replace(/\w+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \w between character 3c00 and 3cff");
+}
+
+var i61 = "";
+for (var j = 15616; j < 15872; j++)
+ i61 += String.fromCharCode(j);
+var o61 = i61;
+if (i61.replace(/\w+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \w between character 3d00 and 3dff");
+}
+
+var i62 = "";
+for (var j = 15872; j < 16128; j++)
+ i62 += String.fromCharCode(j);
+var o62 = i62;
+if (i62.replace(/\w+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \w between character 3e00 and 3eff");
+}
+
+var i63 = "";
+for (var j = 16128; j < 16384; j++)
+ i63 += String.fromCharCode(j);
+var o63 = i63;
+if (i63.replace(/\w+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \w between character 3f00 and 3fff");
+}
+
+var i64 = "";
+for (var j = 16384; j < 16640; j++)
+ i64 += String.fromCharCode(j);
+var o64 = i64;
+if (i64.replace(/\w+/g, "") !== o64) {
+ $ERROR("#64: Error matching character class \w between character 4000 and 40ff");
+}
+
+var i65 = "";
+for (var j = 16640; j < 16896; j++)
+ i65 += String.fromCharCode(j);
+var o65 = i65;
+if (i65.replace(/\w+/g, "") !== o65) {
+ $ERROR("#65: Error matching character class \w between character 4100 and 41ff");
+}
+
+var i66 = "";
+for (var j = 16896; j < 17152; j++)
+ i66 += String.fromCharCode(j);
+var o66 = i66;
+if (i66.replace(/\w+/g, "") !== o66) {
+ $ERROR("#66: Error matching character class \w between character 4200 and 42ff");
+}
+
+var i67 = "";
+for (var j = 17152; j < 17408; j++)
+ i67 += String.fromCharCode(j);
+var o67 = i67;
+if (i67.replace(/\w+/g, "") !== o67) {
+ $ERROR("#67: Error matching character class \w between character 4300 and 43ff");
+}
+
+var i68 = "";
+for (var j = 17408; j < 17664; j++)
+ i68 += String.fromCharCode(j);
+var o68 = i68;
+if (i68.replace(/\w+/g, "") !== o68) {
+ $ERROR("#68: Error matching character class \w between character 4400 and 44ff");
+}
+
+var i69 = "";
+for (var j = 17664; j < 17920; j++)
+ i69 += String.fromCharCode(j);
+var o69 = i69;
+if (i69.replace(/\w+/g, "") !== o69) {
+ $ERROR("#69: Error matching character class \w between character 4500 and 45ff");
+}
+
+var i70 = "";
+for (var j = 17920; j < 18176; j++)
+ i70 += String.fromCharCode(j);
+var o70 = i70;
+if (i70.replace(/\w+/g, "") !== o70) {
+ $ERROR("#70: Error matching character class \w between character 4600 and 46ff");
+}
+
+var i71 = "";
+for (var j = 18176; j < 18432; j++)
+ i71 += String.fromCharCode(j);
+var o71 = i71;
+if (i71.replace(/\w+/g, "") !== o71) {
+ $ERROR("#71: Error matching character class \w between character 4700 and 47ff");
+}
+
+var i72 = "";
+for (var j = 18432; j < 18688; j++)
+ i72 += String.fromCharCode(j);
+var o72 = i72;
+if (i72.replace(/\w+/g, "") !== o72) {
+ $ERROR("#72: Error matching character class \w between character 4800 and 48ff");
+}
+
+var i73 = "";
+for (var j = 18688; j < 18944; j++)
+ i73 += String.fromCharCode(j);
+var o73 = i73;
+if (i73.replace(/\w+/g, "") !== o73) {
+ $ERROR("#73: Error matching character class \w between character 4900 and 49ff");
+}
+
+var i74 = "";
+for (var j = 18944; j < 19200; j++)
+ i74 += String.fromCharCode(j);
+var o74 = i74;
+if (i74.replace(/\w+/g, "") !== o74) {
+ $ERROR("#74: Error matching character class \w between character 4a00 and 4aff");
+}
+
+var i75 = "";
+for (var j = 19200; j < 19456; j++)
+ i75 += String.fromCharCode(j);
+var o75 = i75;
+if (i75.replace(/\w+/g, "") !== o75) {
+ $ERROR("#75: Error matching character class \w between character 4b00 and 4bff");
+}
+
+var i76 = "";
+for (var j = 19456; j < 19712; j++)
+ i76 += String.fromCharCode(j);
+var o76 = i76;
+if (i76.replace(/\w+/g, "") !== o76) {
+ $ERROR("#76: Error matching character class \w between character 4c00 and 4cff");
+}
+
+var i77 = "";
+for (var j = 19712; j < 19968; j++)
+ i77 += String.fromCharCode(j);
+var o77 = i77;
+if (i77.replace(/\w+/g, "") !== o77) {
+ $ERROR("#77: Error matching character class \w between character 4d00 and 4dff");
+}
+
+var i78 = "";
+for (var j = 19968; j < 20224; j++)
+ i78 += String.fromCharCode(j);
+var o78 = i78;
+if (i78.replace(/\w+/g, "") !== o78) {
+ $ERROR("#78: Error matching character class \w between character 4e00 and 4eff");
+}
+
+var i79 = "";
+for (var j = 20224; j < 20480; j++)
+ i79 += String.fromCharCode(j);
+var o79 = i79;
+if (i79.replace(/\w+/g, "") !== o79) {
+ $ERROR("#79: Error matching character class \w between character 4f00 and 4fff");
+}
+
+var i80 = "";
+for (var j = 20480; j < 20736; j++)
+ i80 += String.fromCharCode(j);
+var o80 = i80;
+if (i80.replace(/\w+/g, "") !== o80) {
+ $ERROR("#80: Error matching character class \w between character 5000 and 50ff");
+}
+
+var i81 = "";
+for (var j = 20736; j < 20992; j++)
+ i81 += String.fromCharCode(j);
+var o81 = i81;
+if (i81.replace(/\w+/g, "") !== o81) {
+ $ERROR("#81: Error matching character class \w between character 5100 and 51ff");
+}
+
+var i82 = "";
+for (var j = 20992; j < 21248; j++)
+ i82 += String.fromCharCode(j);
+var o82 = i82;
+if (i82.replace(/\w+/g, "") !== o82) {
+ $ERROR("#82: Error matching character class \w between character 5200 and 52ff");
+}
+
+var i83 = "";
+for (var j = 21248; j < 21504; j++)
+ i83 += String.fromCharCode(j);
+var o83 = i83;
+if (i83.replace(/\w+/g, "") !== o83) {
+ $ERROR("#83: Error matching character class \w between character 5300 and 53ff");
+}
+
+var i84 = "";
+for (var j = 21504; j < 21760; j++)
+ i84 += String.fromCharCode(j);
+var o84 = i84;
+if (i84.replace(/\w+/g, "") !== o84) {
+ $ERROR("#84: Error matching character class \w between character 5400 and 54ff");
+}
+
+var i85 = "";
+for (var j = 21760; j < 22016; j++)
+ i85 += String.fromCharCode(j);
+var o85 = i85;
+if (i85.replace(/\w+/g, "") !== o85) {
+ $ERROR("#85: Error matching character class \w between character 5500 and 55ff");
+}
+
+var i86 = "";
+for (var j = 22016; j < 22272; j++)
+ i86 += String.fromCharCode(j);
+var o86 = i86;
+if (i86.replace(/\w+/g, "") !== o86) {
+ $ERROR("#86: Error matching character class \w between character 5600 and 56ff");
+}
+
+var i87 = "";
+for (var j = 22272; j < 22528; j++)
+ i87 += String.fromCharCode(j);
+var o87 = i87;
+if (i87.replace(/\w+/g, "") !== o87) {
+ $ERROR("#87: Error matching character class \w between character 5700 and 57ff");
+}
+
+var i88 = "";
+for (var j = 22528; j < 22784; j++)
+ i88 += String.fromCharCode(j);
+var o88 = i88;
+if (i88.replace(/\w+/g, "") !== o88) {
+ $ERROR("#88: Error matching character class \w between character 5800 and 58ff");
+}
+
+var i89 = "";
+for (var j = 22784; j < 23040; j++)
+ i89 += String.fromCharCode(j);
+var o89 = i89;
+if (i89.replace(/\w+/g, "") !== o89) {
+ $ERROR("#89: Error matching character class \w between character 5900 and 59ff");
+}
+
+var i90 = "";
+for (var j = 23040; j < 23296; j++)
+ i90 += String.fromCharCode(j);
+var o90 = i90;
+if (i90.replace(/\w+/g, "") !== o90) {
+ $ERROR("#90: Error matching character class \w between character 5a00 and 5aff");
+}
+
+var i91 = "";
+for (var j = 23296; j < 23552; j++)
+ i91 += String.fromCharCode(j);
+var o91 = i91;
+if (i91.replace(/\w+/g, "") !== o91) {
+ $ERROR("#91: Error matching character class \w between character 5b00 and 5bff");
+}
+
+var i92 = "";
+for (var j = 23552; j < 23808; j++)
+ i92 += String.fromCharCode(j);
+var o92 = i92;
+if (i92.replace(/\w+/g, "") !== o92) {
+ $ERROR("#92: Error matching character class \w between character 5c00 and 5cff");
+}
+
+var i93 = "";
+for (var j = 23808; j < 24064; j++)
+ i93 += String.fromCharCode(j);
+var o93 = i93;
+if (i93.replace(/\w+/g, "") !== o93) {
+ $ERROR("#93: Error matching character class \w between character 5d00 and 5dff");
+}
+
+var i94 = "";
+for (var j = 24064; j < 24320; j++)
+ i94 += String.fromCharCode(j);
+var o94 = i94;
+if (i94.replace(/\w+/g, "") !== o94) {
+ $ERROR("#94: Error matching character class \w between character 5e00 and 5eff");
+}
+
+var i95 = "";
+for (var j = 24320; j < 24576; j++)
+ i95 += String.fromCharCode(j);
+var o95 = i95;
+if (i95.replace(/\w+/g, "") !== o95) {
+ $ERROR("#95: Error matching character class \w between character 5f00 and 5fff");
+}
+
+var i96 = "";
+for (var j = 24576; j < 24832; j++)
+ i96 += String.fromCharCode(j);
+var o96 = i96;
+if (i96.replace(/\w+/g, "") !== o96) {
+ $ERROR("#96: Error matching character class \w between character 6000 and 60ff");
+}
+
+var i97 = "";
+for (var j = 24832; j < 25088; j++)
+ i97 += String.fromCharCode(j);
+var o97 = i97;
+if (i97.replace(/\w+/g, "") !== o97) {
+ $ERROR("#97: Error matching character class \w between character 6100 and 61ff");
+}
+
+var i98 = "";
+for (var j = 25088; j < 25344; j++)
+ i98 += String.fromCharCode(j);
+var o98 = i98;
+if (i98.replace(/\w+/g, "") !== o98) {
+ $ERROR("#98: Error matching character class \w between character 6200 and 62ff");
+}
+
+var i99 = "";
+for (var j = 25344; j < 25600; j++)
+ i99 += String.fromCharCode(j);
+var o99 = i99;
+if (i99.replace(/\w+/g, "") !== o99) {
+ $ERROR("#99: Error matching character class \w between character 6300 and 63ff");
+}
+
+var i100 = "";
+for (var j = 25600; j < 25856; j++)
+ i100 += String.fromCharCode(j);
+var o100 = i100;
+if (i100.replace(/\w+/g, "") !== o100) {
+ $ERROR("#100: Error matching character class \w between character 6400 and 64ff");
+}
+
+var i101 = "";
+for (var j = 25856; j < 26112; j++)
+ i101 += String.fromCharCode(j);
+var o101 = i101;
+if (i101.replace(/\w+/g, "") !== o101) {
+ $ERROR("#101: Error matching character class \w between character 6500 and 65ff");
+}
+
+var i102 = "";
+for (var j = 26112; j < 26368; j++)
+ i102 += String.fromCharCode(j);
+var o102 = i102;
+if (i102.replace(/\w+/g, "") !== o102) {
+ $ERROR("#102: Error matching character class \w between character 6600 and 66ff");
+}
+
+var i103 = "";
+for (var j = 26368; j < 26624; j++)
+ i103 += String.fromCharCode(j);
+var o103 = i103;
+if (i103.replace(/\w+/g, "") !== o103) {
+ $ERROR("#103: Error matching character class \w between character 6700 and 67ff");
+}
+
+var i104 = "";
+for (var j = 26624; j < 26880; j++)
+ i104 += String.fromCharCode(j);
+var o104 = i104;
+if (i104.replace(/\w+/g, "") !== o104) {
+ $ERROR("#104: Error matching character class \w between character 6800 and 68ff");
+}
+
+var i105 = "";
+for (var j = 26880; j < 27136; j++)
+ i105 += String.fromCharCode(j);
+var o105 = i105;
+if (i105.replace(/\w+/g, "") !== o105) {
+ $ERROR("#105: Error matching character class \w between character 6900 and 69ff");
+}
+
+var i106 = "";
+for (var j = 27136; j < 27392; j++)
+ i106 += String.fromCharCode(j);
+var o106 = i106;
+if (i106.replace(/\w+/g, "") !== o106) {
+ $ERROR("#106: Error matching character class \w between character 6a00 and 6aff");
+}
+
+var i107 = "";
+for (var j = 27392; j < 27648; j++)
+ i107 += String.fromCharCode(j);
+var o107 = i107;
+if (i107.replace(/\w+/g, "") !== o107) {
+ $ERROR("#107: Error matching character class \w between character 6b00 and 6bff");
+}
+
+var i108 = "";
+for (var j = 27648; j < 27904; j++)
+ i108 += String.fromCharCode(j);
+var o108 = i108;
+if (i108.replace(/\w+/g, "") !== o108) {
+ $ERROR("#108: Error matching character class \w between character 6c00 and 6cff");
+}
+
+var i109 = "";
+for (var j = 27904; j < 28160; j++)
+ i109 += String.fromCharCode(j);
+var o109 = i109;
+if (i109.replace(/\w+/g, "") !== o109) {
+ $ERROR("#109: Error matching character class \w between character 6d00 and 6dff");
+}
+
+var i110 = "";
+for (var j = 28160; j < 28416; j++)
+ i110 += String.fromCharCode(j);
+var o110 = i110;
+if (i110.replace(/\w+/g, "") !== o110) {
+ $ERROR("#110: Error matching character class \w between character 6e00 and 6eff");
+}
+
+var i111 = "";
+for (var j = 28416; j < 28672; j++)
+ i111 += String.fromCharCode(j);
+var o111 = i111;
+if (i111.replace(/\w+/g, "") !== o111) {
+ $ERROR("#111: Error matching character class \w between character 6f00 and 6fff");
+}
+
+var i112 = "";
+for (var j = 28672; j < 28928; j++)
+ i112 += String.fromCharCode(j);
+var o112 = i112;
+if (i112.replace(/\w+/g, "") !== o112) {
+ $ERROR("#112: Error matching character class \w between character 7000 and 70ff");
+}
+
+var i113 = "";
+for (var j = 28928; j < 29184; j++)
+ i113 += String.fromCharCode(j);
+var o113 = i113;
+if (i113.replace(/\w+/g, "") !== o113) {
+ $ERROR("#113: Error matching character class \w between character 7100 and 71ff");
+}
+
+var i114 = "";
+for (var j = 29184; j < 29440; j++)
+ i114 += String.fromCharCode(j);
+var o114 = i114;
+if (i114.replace(/\w+/g, "") !== o114) {
+ $ERROR("#114: Error matching character class \w between character 7200 and 72ff");
+}
+
+var i115 = "";
+for (var j = 29440; j < 29696; j++)
+ i115 += String.fromCharCode(j);
+var o115 = i115;
+if (i115.replace(/\w+/g, "") !== o115) {
+ $ERROR("#115: Error matching character class \w between character 7300 and 73ff");
+}
+
+var i116 = "";
+for (var j = 29696; j < 29952; j++)
+ i116 += String.fromCharCode(j);
+var o116 = i116;
+if (i116.replace(/\w+/g, "") !== o116) {
+ $ERROR("#116: Error matching character class \w between character 7400 and 74ff");
+}
+
+var i117 = "";
+for (var j = 29952; j < 30208; j++)
+ i117 += String.fromCharCode(j);
+var o117 = i117;
+if (i117.replace(/\w+/g, "") !== o117) {
+ $ERROR("#117: Error matching character class \w between character 7500 and 75ff");
+}
+
+var i118 = "";
+for (var j = 30208; j < 30464; j++)
+ i118 += String.fromCharCode(j);
+var o118 = i118;
+if (i118.replace(/\w+/g, "") !== o118) {
+ $ERROR("#118: Error matching character class \w between character 7600 and 76ff");
+}
+
+var i119 = "";
+for (var j = 30464; j < 30720; j++)
+ i119 += String.fromCharCode(j);
+var o119 = i119;
+if (i119.replace(/\w+/g, "") !== o119) {
+ $ERROR("#119: Error matching character class \w between character 7700 and 77ff");
+}
+
+var i120 = "";
+for (var j = 30720; j < 30976; j++)
+ i120 += String.fromCharCode(j);
+var o120 = i120;
+if (i120.replace(/\w+/g, "") !== o120) {
+ $ERROR("#120: Error matching character class \w between character 7800 and 78ff");
+}
+
+var i121 = "";
+for (var j = 30976; j < 31232; j++)
+ i121 += String.fromCharCode(j);
+var o121 = i121;
+if (i121.replace(/\w+/g, "") !== o121) {
+ $ERROR("#121: Error matching character class \w between character 7900 and 79ff");
+}
+
+var i122 = "";
+for (var j = 31232; j < 31488; j++)
+ i122 += String.fromCharCode(j);
+var o122 = i122;
+if (i122.replace(/\w+/g, "") !== o122) {
+ $ERROR("#122: Error matching character class \w between character 7a00 and 7aff");
+}
+
+var i123 = "";
+for (var j = 31488; j < 31744; j++)
+ i123 += String.fromCharCode(j);
+var o123 = i123;
+if (i123.replace(/\w+/g, "") !== o123) {
+ $ERROR("#123: Error matching character class \w between character 7b00 and 7bff");
+}
+
+var i124 = "";
+for (var j = 31744; j < 32000; j++)
+ i124 += String.fromCharCode(j);
+var o124 = i124;
+if (i124.replace(/\w+/g, "") !== o124) {
+ $ERROR("#124: Error matching character class \w between character 7c00 and 7cff");
+}
+
+var i125 = "";
+for (var j = 32000; j < 32256; j++)
+ i125 += String.fromCharCode(j);
+var o125 = i125;
+if (i125.replace(/\w+/g, "") !== o125) {
+ $ERROR("#125: Error matching character class \w between character 7d00 and 7dff");
+}
+
+var i126 = "";
+for (var j = 32256; j < 32512; j++)
+ i126 += String.fromCharCode(j);
+var o126 = i126;
+if (i126.replace(/\w+/g, "") !== o126) {
+ $ERROR("#126: Error matching character class \w between character 7e00 and 7eff");
+}
+
+var i127 = "";
+for (var j = 32512; j < 32768; j++)
+ i127 += String.fromCharCode(j);
+var o127 = i127;
+if (i127.replace(/\w+/g, "") !== o127) {
+ $ERROR("#127: Error matching character class \w between character 7f00 and 7fff");
+}
+
+var i128 = "";
+for (var j = 32768; j < 33024; j++)
+ i128 += String.fromCharCode(j);
+var o128 = i128;
+if (i128.replace(/\w+/g, "") !== o128) {
+ $ERROR("#128: Error matching character class \w between character 8000 and 80ff");
+}
+
+var i129 = "";
+for (var j = 33024; j < 33280; j++)
+ i129 += String.fromCharCode(j);
+var o129 = i129;
+if (i129.replace(/\w+/g, "") !== o129) {
+ $ERROR("#129: Error matching character class \w between character 8100 and 81ff");
+}
+
+var i130 = "";
+for (var j = 33280; j < 33536; j++)
+ i130 += String.fromCharCode(j);
+var o130 = i130;
+if (i130.replace(/\w+/g, "") !== o130) {
+ $ERROR("#130: Error matching character class \w between character 8200 and 82ff");
+}
+
+var i131 = "";
+for (var j = 33536; j < 33792; j++)
+ i131 += String.fromCharCode(j);
+var o131 = i131;
+if (i131.replace(/\w+/g, "") !== o131) {
+ $ERROR("#131: Error matching character class \w between character 8300 and 83ff");
+}
+
+var i132 = "";
+for (var j = 33792; j < 34048; j++)
+ i132 += String.fromCharCode(j);
+var o132 = i132;
+if (i132.replace(/\w+/g, "") !== o132) {
+ $ERROR("#132: Error matching character class \w between character 8400 and 84ff");
+}
+
+var i133 = "";
+for (var j = 34048; j < 34304; j++)
+ i133 += String.fromCharCode(j);
+var o133 = i133;
+if (i133.replace(/\w+/g, "") !== o133) {
+ $ERROR("#133: Error matching character class \w between character 8500 and 85ff");
+}
+
+var i134 = "";
+for (var j = 34304; j < 34560; j++)
+ i134 += String.fromCharCode(j);
+var o134 = i134;
+if (i134.replace(/\w+/g, "") !== o134) {
+ $ERROR("#134: Error matching character class \w between character 8600 and 86ff");
+}
+
+var i135 = "";
+for (var j = 34560; j < 34816; j++)
+ i135 += String.fromCharCode(j);
+var o135 = i135;
+if (i135.replace(/\w+/g, "") !== o135) {
+ $ERROR("#135: Error matching character class \w between character 8700 and 87ff");
+}
+
+var i136 = "";
+for (var j = 34816; j < 35072; j++)
+ i136 += String.fromCharCode(j);
+var o136 = i136;
+if (i136.replace(/\w+/g, "") !== o136) {
+ $ERROR("#136: Error matching character class \w between character 8800 and 88ff");
+}
+
+var i137 = "";
+for (var j = 35072; j < 35328; j++)
+ i137 += String.fromCharCode(j);
+var o137 = i137;
+if (i137.replace(/\w+/g, "") !== o137) {
+ $ERROR("#137: Error matching character class \w between character 8900 and 89ff");
+}
+
+var i138 = "";
+for (var j = 35328; j < 35584; j++)
+ i138 += String.fromCharCode(j);
+var o138 = i138;
+if (i138.replace(/\w+/g, "") !== o138) {
+ $ERROR("#138: Error matching character class \w between character 8a00 and 8aff");
+}
+
+var i139 = "";
+for (var j = 35584; j < 35840; j++)
+ i139 += String.fromCharCode(j);
+var o139 = i139;
+if (i139.replace(/\w+/g, "") !== o139) {
+ $ERROR("#139: Error matching character class \w between character 8b00 and 8bff");
+}
+
+var i140 = "";
+for (var j = 35840; j < 36096; j++)
+ i140 += String.fromCharCode(j);
+var o140 = i140;
+if (i140.replace(/\w+/g, "") !== o140) {
+ $ERROR("#140: Error matching character class \w between character 8c00 and 8cff");
+}
+
+var i141 = "";
+for (var j = 36096; j < 36352; j++)
+ i141 += String.fromCharCode(j);
+var o141 = i141;
+if (i141.replace(/\w+/g, "") !== o141) {
+ $ERROR("#141: Error matching character class \w between character 8d00 and 8dff");
+}
+
+var i142 = "";
+for (var j = 36352; j < 36608; j++)
+ i142 += String.fromCharCode(j);
+var o142 = i142;
+if (i142.replace(/\w+/g, "") !== o142) {
+ $ERROR("#142: Error matching character class \w between character 8e00 and 8eff");
+}
+
+var i143 = "";
+for (var j = 36608; j < 36864; j++)
+ i143 += String.fromCharCode(j);
+var o143 = i143;
+if (i143.replace(/\w+/g, "") !== o143) {
+ $ERROR("#143: Error matching character class \w between character 8f00 and 8fff");
+}
+
+var i144 = "";
+for (var j = 36864; j < 37120; j++)
+ i144 += String.fromCharCode(j);
+var o144 = i144;
+if (i144.replace(/\w+/g, "") !== o144) {
+ $ERROR("#144: Error matching character class \w between character 9000 and 90ff");
+}
+
+var i145 = "";
+for (var j = 37120; j < 37376; j++)
+ i145 += String.fromCharCode(j);
+var o145 = i145;
+if (i145.replace(/\w+/g, "") !== o145) {
+ $ERROR("#145: Error matching character class \w between character 9100 and 91ff");
+}
+
+var i146 = "";
+for (var j = 37376; j < 37632; j++)
+ i146 += String.fromCharCode(j);
+var o146 = i146;
+if (i146.replace(/\w+/g, "") !== o146) {
+ $ERROR("#146: Error matching character class \w between character 9200 and 92ff");
+}
+
+var i147 = "";
+for (var j = 37632; j < 37888; j++)
+ i147 += String.fromCharCode(j);
+var o147 = i147;
+if (i147.replace(/\w+/g, "") !== o147) {
+ $ERROR("#147: Error matching character class \w between character 9300 and 93ff");
+}
+
+var i148 = "";
+for (var j = 37888; j < 38144; j++)
+ i148 += String.fromCharCode(j);
+var o148 = i148;
+if (i148.replace(/\w+/g, "") !== o148) {
+ $ERROR("#148: Error matching character class \w between character 9400 and 94ff");
+}
+
+var i149 = "";
+for (var j = 38144; j < 38400; j++)
+ i149 += String.fromCharCode(j);
+var o149 = i149;
+if (i149.replace(/\w+/g, "") !== o149) {
+ $ERROR("#149: Error matching character class \w between character 9500 and 95ff");
+}
+
+var i150 = "";
+for (var j = 38400; j < 38656; j++)
+ i150 += String.fromCharCode(j);
+var o150 = i150;
+if (i150.replace(/\w+/g, "") !== o150) {
+ $ERROR("#150: Error matching character class \w between character 9600 and 96ff");
+}
+
+var i151 = "";
+for (var j = 38656; j < 38912; j++)
+ i151 += String.fromCharCode(j);
+var o151 = i151;
+if (i151.replace(/\w+/g, "") !== o151) {
+ $ERROR("#151: Error matching character class \w between character 9700 and 97ff");
+}
+
+var i152 = "";
+for (var j = 38912; j < 39168; j++)
+ i152 += String.fromCharCode(j);
+var o152 = i152;
+if (i152.replace(/\w+/g, "") !== o152) {
+ $ERROR("#152: Error matching character class \w between character 9800 and 98ff");
+}
+
+var i153 = "";
+for (var j = 39168; j < 39424; j++)
+ i153 += String.fromCharCode(j);
+var o153 = i153;
+if (i153.replace(/\w+/g, "") !== o153) {
+ $ERROR("#153: Error matching character class \w between character 9900 and 99ff");
+}
+
+var i154 = "";
+for (var j = 39424; j < 39680; j++)
+ i154 += String.fromCharCode(j);
+var o154 = i154;
+if (i154.replace(/\w+/g, "") !== o154) {
+ $ERROR("#154: Error matching character class \w between character 9a00 and 9aff");
+}
+
+var i155 = "";
+for (var j = 39680; j < 39936; j++)
+ i155 += String.fromCharCode(j);
+var o155 = i155;
+if (i155.replace(/\w+/g, "") !== o155) {
+ $ERROR("#155: Error matching character class \w between character 9b00 and 9bff");
+}
+
+var i156 = "";
+for (var j = 39936; j < 40192; j++)
+ i156 += String.fromCharCode(j);
+var o156 = i156;
+if (i156.replace(/\w+/g, "") !== o156) {
+ $ERROR("#156: Error matching character class \w between character 9c00 and 9cff");
+}
+
+var i157 = "";
+for (var j = 40192; j < 40448; j++)
+ i157 += String.fromCharCode(j);
+var o157 = i157;
+if (i157.replace(/\w+/g, "") !== o157) {
+ $ERROR("#157: Error matching character class \w between character 9d00 and 9dff");
+}
+
+var i158 = "";
+for (var j = 40448; j < 40704; j++)
+ i158 += String.fromCharCode(j);
+var o158 = i158;
+if (i158.replace(/\w+/g, "") !== o158) {
+ $ERROR("#158: Error matching character class \w between character 9e00 and 9eff");
+}
+
+var i159 = "";
+for (var j = 40704; j < 40960; j++)
+ i159 += String.fromCharCode(j);
+var o159 = i159;
+if (i159.replace(/\w+/g, "") !== o159) {
+ $ERROR("#159: Error matching character class \w between character 9f00 and 9fff");
+}
+
+var i160 = "";
+for (var j = 40960; j < 41216; j++)
+ i160 += String.fromCharCode(j);
+var o160 = i160;
+if (i160.replace(/\w+/g, "") !== o160) {
+ $ERROR("#160: Error matching character class \w between character a000 and a0ff");
+}
+
+var i161 = "";
+for (var j = 41216; j < 41472; j++)
+ i161 += String.fromCharCode(j);
+var o161 = i161;
+if (i161.replace(/\w+/g, "") !== o161) {
+ $ERROR("#161: Error matching character class \w between character a100 and a1ff");
+}
+
+var i162 = "";
+for (var j = 41472; j < 41728; j++)
+ i162 += String.fromCharCode(j);
+var o162 = i162;
+if (i162.replace(/\w+/g, "") !== o162) {
+ $ERROR("#162: Error matching character class \w between character a200 and a2ff");
+}
+
+var i163 = "";
+for (var j = 41728; j < 41984; j++)
+ i163 += String.fromCharCode(j);
+var o163 = i163;
+if (i163.replace(/\w+/g, "") !== o163) {
+ $ERROR("#163: Error matching character class \w between character a300 and a3ff");
+}
+
+var i164 = "";
+for (var j = 41984; j < 42240; j++)
+ i164 += String.fromCharCode(j);
+var o164 = i164;
+if (i164.replace(/\w+/g, "") !== o164) {
+ $ERROR("#164: Error matching character class \w between character a400 and a4ff");
+}
+
+var i165 = "";
+for (var j = 42240; j < 42496; j++)
+ i165 += String.fromCharCode(j);
+var o165 = i165;
+if (i165.replace(/\w+/g, "") !== o165) {
+ $ERROR("#165: Error matching character class \w between character a500 and a5ff");
+}
+
+var i166 = "";
+for (var j = 42496; j < 42752; j++)
+ i166 += String.fromCharCode(j);
+var o166 = i166;
+if (i166.replace(/\w+/g, "") !== o166) {
+ $ERROR("#166: Error matching character class \w between character a600 and a6ff");
+}
+
+var i167 = "";
+for (var j = 42752; j < 43008; j++)
+ i167 += String.fromCharCode(j);
+var o167 = i167;
+if (i167.replace(/\w+/g, "") !== o167) {
+ $ERROR("#167: Error matching character class \w between character a700 and a7ff");
+}
+
+var i168 = "";
+for (var j = 43008; j < 43264; j++)
+ i168 += String.fromCharCode(j);
+var o168 = i168;
+if (i168.replace(/\w+/g, "") !== o168) {
+ $ERROR("#168: Error matching character class \w between character a800 and a8ff");
+}
+
+var i169 = "";
+for (var j = 43264; j < 43520; j++)
+ i169 += String.fromCharCode(j);
+var o169 = i169;
+if (i169.replace(/\w+/g, "") !== o169) {
+ $ERROR("#169: Error matching character class \w between character a900 and a9ff");
+}
+
+var i170 = "";
+for (var j = 43520; j < 43776; j++)
+ i170 += String.fromCharCode(j);
+var o170 = i170;
+if (i170.replace(/\w+/g, "") !== o170) {
+ $ERROR("#170: Error matching character class \w between character aa00 and aaff");
+}
+
+var i171 = "";
+for (var j = 43776; j < 44032; j++)
+ i171 += String.fromCharCode(j);
+var o171 = i171;
+if (i171.replace(/\w+/g, "") !== o171) {
+ $ERROR("#171: Error matching character class \w between character ab00 and abff");
+}
+
+var i172 = "";
+for (var j = 44032; j < 44288; j++)
+ i172 += String.fromCharCode(j);
+var o172 = i172;
+if (i172.replace(/\w+/g, "") !== o172) {
+ $ERROR("#172: Error matching character class \w between character ac00 and acff");
+}
+
+var i173 = "";
+for (var j = 44288; j < 44544; j++)
+ i173 += String.fromCharCode(j);
+var o173 = i173;
+if (i173.replace(/\w+/g, "") !== o173) {
+ $ERROR("#173: Error matching character class \w between character ad00 and adff");
+}
+
+var i174 = "";
+for (var j = 44544; j < 44800; j++)
+ i174 += String.fromCharCode(j);
+var o174 = i174;
+if (i174.replace(/\w+/g, "") !== o174) {
+ $ERROR("#174: Error matching character class \w between character ae00 and aeff");
+}
+
+var i175 = "";
+for (var j = 44800; j < 45056; j++)
+ i175 += String.fromCharCode(j);
+var o175 = i175;
+if (i175.replace(/\w+/g, "") !== o175) {
+ $ERROR("#175: Error matching character class \w between character af00 and afff");
+}
+
+var i176 = "";
+for (var j = 45056; j < 45312; j++)
+ i176 += String.fromCharCode(j);
+var o176 = i176;
+if (i176.replace(/\w+/g, "") !== o176) {
+ $ERROR("#176: Error matching character class \w between character b000 and b0ff");
+}
+
+var i177 = "";
+for (var j = 45312; j < 45568; j++)
+ i177 += String.fromCharCode(j);
+var o177 = i177;
+if (i177.replace(/\w+/g, "") !== o177) {
+ $ERROR("#177: Error matching character class \w between character b100 and b1ff");
+}
+
+var i178 = "";
+for (var j = 45568; j < 45824; j++)
+ i178 += String.fromCharCode(j);
+var o178 = i178;
+if (i178.replace(/\w+/g, "") !== o178) {
+ $ERROR("#178: Error matching character class \w between character b200 and b2ff");
+}
+
+var i179 = "";
+for (var j = 45824; j < 46080; j++)
+ i179 += String.fromCharCode(j);
+var o179 = i179;
+if (i179.replace(/\w+/g, "") !== o179) {
+ $ERROR("#179: Error matching character class \w between character b300 and b3ff");
+}
+
+var i180 = "";
+for (var j = 46080; j < 46336; j++)
+ i180 += String.fromCharCode(j);
+var o180 = i180;
+if (i180.replace(/\w+/g, "") !== o180) {
+ $ERROR("#180: Error matching character class \w between character b400 and b4ff");
+}
+
+var i181 = "";
+for (var j = 46336; j < 46592; j++)
+ i181 += String.fromCharCode(j);
+var o181 = i181;
+if (i181.replace(/\w+/g, "") !== o181) {
+ $ERROR("#181: Error matching character class \w between character b500 and b5ff");
+}
+
+var i182 = "";
+for (var j = 46592; j < 46848; j++)
+ i182 += String.fromCharCode(j);
+var o182 = i182;
+if (i182.replace(/\w+/g, "") !== o182) {
+ $ERROR("#182: Error matching character class \w between character b600 and b6ff");
+}
+
+var i183 = "";
+for (var j = 46848; j < 47104; j++)
+ i183 += String.fromCharCode(j);
+var o183 = i183;
+if (i183.replace(/\w+/g, "") !== o183) {
+ $ERROR("#183: Error matching character class \w between character b700 and b7ff");
+}
+
+var i184 = "";
+for (var j = 47104; j < 47360; j++)
+ i184 += String.fromCharCode(j);
+var o184 = i184;
+if (i184.replace(/\w+/g, "") !== o184) {
+ $ERROR("#184: Error matching character class \w between character b800 and b8ff");
+}
+
+var i185 = "";
+for (var j = 47360; j < 47616; j++)
+ i185 += String.fromCharCode(j);
+var o185 = i185;
+if (i185.replace(/\w+/g, "") !== o185) {
+ $ERROR("#185: Error matching character class \w between character b900 and b9ff");
+}
+
+var i186 = "";
+for (var j = 47616; j < 47872; j++)
+ i186 += String.fromCharCode(j);
+var o186 = i186;
+if (i186.replace(/\w+/g, "") !== o186) {
+ $ERROR("#186: Error matching character class \w between character ba00 and baff");
+}
+
+var i187 = "";
+for (var j = 47872; j < 48128; j++)
+ i187 += String.fromCharCode(j);
+var o187 = i187;
+if (i187.replace(/\w+/g, "") !== o187) {
+ $ERROR("#187: Error matching character class \w between character bb00 and bbff");
+}
+
+var i188 = "";
+for (var j = 48128; j < 48384; j++)
+ i188 += String.fromCharCode(j);
+var o188 = i188;
+if (i188.replace(/\w+/g, "") !== o188) {
+ $ERROR("#188: Error matching character class \w between character bc00 and bcff");
+}
+
+var i189 = "";
+for (var j = 48384; j < 48640; j++)
+ i189 += String.fromCharCode(j);
+var o189 = i189;
+if (i189.replace(/\w+/g, "") !== o189) {
+ $ERROR("#189: Error matching character class \w between character bd00 and bdff");
+}
+
+var i190 = "";
+for (var j = 48640; j < 48896; j++)
+ i190 += String.fromCharCode(j);
+var o190 = i190;
+if (i190.replace(/\w+/g, "") !== o190) {
+ $ERROR("#190: Error matching character class \w between character be00 and beff");
+}
+
+var i191 = "";
+for (var j = 48896; j < 49152; j++)
+ i191 += String.fromCharCode(j);
+var o191 = i191;
+if (i191.replace(/\w+/g, "") !== o191) {
+ $ERROR("#191: Error matching character class \w between character bf00 and bfff");
+}
+
+var i192 = "";
+for (var j = 49152; j < 49408; j++)
+ i192 += String.fromCharCode(j);
+var o192 = i192;
+if (i192.replace(/\w+/g, "") !== o192) {
+ $ERROR("#192: Error matching character class \w between character c000 and c0ff");
+}
+
+var i193 = "";
+for (var j = 49408; j < 49664; j++)
+ i193 += String.fromCharCode(j);
+var o193 = i193;
+if (i193.replace(/\w+/g, "") !== o193) {
+ $ERROR("#193: Error matching character class \w between character c100 and c1ff");
+}
+
+var i194 = "";
+for (var j = 49664; j < 49920; j++)
+ i194 += String.fromCharCode(j);
+var o194 = i194;
+if (i194.replace(/\w+/g, "") !== o194) {
+ $ERROR("#194: Error matching character class \w between character c200 and c2ff");
+}
+
+var i195 = "";
+for (var j = 49920; j < 50176; j++)
+ i195 += String.fromCharCode(j);
+var o195 = i195;
+if (i195.replace(/\w+/g, "") !== o195) {
+ $ERROR("#195: Error matching character class \w between character c300 and c3ff");
+}
+
+var i196 = "";
+for (var j = 50176; j < 50432; j++)
+ i196 += String.fromCharCode(j);
+var o196 = i196;
+if (i196.replace(/\w+/g, "") !== o196) {
+ $ERROR("#196: Error matching character class \w between character c400 and c4ff");
+}
+
+var i197 = "";
+for (var j = 50432; j < 50688; j++)
+ i197 += String.fromCharCode(j);
+var o197 = i197;
+if (i197.replace(/\w+/g, "") !== o197) {
+ $ERROR("#197: Error matching character class \w between character c500 and c5ff");
+}
+
+var i198 = "";
+for (var j = 50688; j < 50944; j++)
+ i198 += String.fromCharCode(j);
+var o198 = i198;
+if (i198.replace(/\w+/g, "") !== o198) {
+ $ERROR("#198: Error matching character class \w between character c600 and c6ff");
+}
+
+var i199 = "";
+for (var j = 50944; j < 51200; j++)
+ i199 += String.fromCharCode(j);
+var o199 = i199;
+if (i199.replace(/\w+/g, "") !== o199) {
+ $ERROR("#199: Error matching character class \w between character c700 and c7ff");
+}
+
+var i200 = "";
+for (var j = 51200; j < 51456; j++)
+ i200 += String.fromCharCode(j);
+var o200 = i200;
+if (i200.replace(/\w+/g, "") !== o200) {
+ $ERROR("#200: Error matching character class \w between character c800 and c8ff");
+}
+
+var i201 = "";
+for (var j = 51456; j < 51712; j++)
+ i201 += String.fromCharCode(j);
+var o201 = i201;
+if (i201.replace(/\w+/g, "") !== o201) {
+ $ERROR("#201: Error matching character class \w between character c900 and c9ff");
+}
+
+var i202 = "";
+for (var j = 51712; j < 51968; j++)
+ i202 += String.fromCharCode(j);
+var o202 = i202;
+if (i202.replace(/\w+/g, "") !== o202) {
+ $ERROR("#202: Error matching character class \w between character ca00 and caff");
+}
+
+var i203 = "";
+for (var j = 51968; j < 52224; j++)
+ i203 += String.fromCharCode(j);
+var o203 = i203;
+if (i203.replace(/\w+/g, "") !== o203) {
+ $ERROR("#203: Error matching character class \w between character cb00 and cbff");
+}
+
+var i204 = "";
+for (var j = 52224; j < 52480; j++)
+ i204 += String.fromCharCode(j);
+var o204 = i204;
+if (i204.replace(/\w+/g, "") !== o204) {
+ $ERROR("#204: Error matching character class \w between character cc00 and ccff");
+}
+
+var i205 = "";
+for (var j = 52480; j < 52736; j++)
+ i205 += String.fromCharCode(j);
+var o205 = i205;
+if (i205.replace(/\w+/g, "") !== o205) {
+ $ERROR("#205: Error matching character class \w between character cd00 and cdff");
+}
+
+var i206 = "";
+for (var j = 52736; j < 52992; j++)
+ i206 += String.fromCharCode(j);
+var o206 = i206;
+if (i206.replace(/\w+/g, "") !== o206) {
+ $ERROR("#206: Error matching character class \w between character ce00 and ceff");
+}
+
+var i207 = "";
+for (var j = 52992; j < 53248; j++)
+ i207 += String.fromCharCode(j);
+var o207 = i207;
+if (i207.replace(/\w+/g, "") !== o207) {
+ $ERROR("#207: Error matching character class \w between character cf00 and cfff");
+}
+
+var i208 = "";
+for (var j = 53248; j < 53504; j++)
+ i208 += String.fromCharCode(j);
+var o208 = i208;
+if (i208.replace(/\w+/g, "") !== o208) {
+ $ERROR("#208: Error matching character class \w between character d000 and d0ff");
+}
+
+var i209 = "";
+for (var j = 53504; j < 53760; j++)
+ i209 += String.fromCharCode(j);
+var o209 = i209;
+if (i209.replace(/\w+/g, "") !== o209) {
+ $ERROR("#209: Error matching character class \w between character d100 and d1ff");
+}
+
+var i210 = "";
+for (var j = 53760; j < 54016; j++)
+ i210 += String.fromCharCode(j);
+var o210 = i210;
+if (i210.replace(/\w+/g, "") !== o210) {
+ $ERROR("#210: Error matching character class \w between character d200 and d2ff");
+}
+
+var i211 = "";
+for (var j = 54016; j < 54272; j++)
+ i211 += String.fromCharCode(j);
+var o211 = i211;
+if (i211.replace(/\w+/g, "") !== o211) {
+ $ERROR("#211: Error matching character class \w between character d300 and d3ff");
+}
+
+var i212 = "";
+for (var j = 54272; j < 54528; j++)
+ i212 += String.fromCharCode(j);
+var o212 = i212;
+if (i212.replace(/\w+/g, "") !== o212) {
+ $ERROR("#212: Error matching character class \w between character d400 and d4ff");
+}
+
+var i213 = "";
+for (var j = 54528; j < 54784; j++)
+ i213 += String.fromCharCode(j);
+var o213 = i213;
+if (i213.replace(/\w+/g, "") !== o213) {
+ $ERROR("#213: Error matching character class \w between character d500 and d5ff");
+}
+
+var i214 = "";
+for (var j = 54784; j < 55040; j++)
+ i214 += String.fromCharCode(j);
+var o214 = i214;
+if (i214.replace(/\w+/g, "") !== o214) {
+ $ERROR("#214: Error matching character class \w between character d600 and d6ff");
+}
+
+var i215 = "";
+for (var j = 55040; j < 55296; j++)
+ i215 += String.fromCharCode(j);
+var o215 = i215;
+if (i215.replace(/\w+/g, "") !== o215) {
+ $ERROR("#215: Error matching character class \w between character d700 and d7ff");
+}
+
+var i216 = "";
+for (var j = 55296; j < 55552; j++)
+ i216 += String.fromCharCode(j);
+var o216 = i216;
+if (i216.replace(/\w+/g, "") !== o216) {
+ $ERROR("#216: Error matching character class \w between character d800 and d8ff");
+}
+
+var i217 = "";
+for (var j = 55552; j < 55808; j++)
+ i217 += String.fromCharCode(j);
+var o217 = i217;
+if (i217.replace(/\w+/g, "") !== o217) {
+ $ERROR("#217: Error matching character class \w between character d900 and d9ff");
+}
+
+var i218 = "";
+for (var j = 55808; j < 56064; j++)
+ i218 += String.fromCharCode(j);
+var o218 = i218;
+if (i218.replace(/\w+/g, "") !== o218) {
+ $ERROR("#218: Error matching character class \w between character da00 and daff");
+}
+
+var i219 = "";
+for (var j = 56064; j < 56320; j++)
+ i219 += String.fromCharCode(j);
+var o219 = i219;
+if (i219.replace(/\w+/g, "") !== o219) {
+ $ERROR("#219: Error matching character class \w between character db00 and dbff");
+}
+
+var i220 = "";
+for (var j = 56320; j < 56576; j++)
+ i220 += String.fromCharCode(j);
+var o220 = i220;
+if (i220.replace(/\w+/g, "") !== o220) {
+ $ERROR("#220: Error matching character class \w between character dc00 and dcff");
+}
+
+var i221 = "";
+for (var j = 56576; j < 56832; j++)
+ i221 += String.fromCharCode(j);
+var o221 = i221;
+if (i221.replace(/\w+/g, "") !== o221) {
+ $ERROR("#221: Error matching character class \w between character dd00 and ddff");
+}
+
+var i222 = "";
+for (var j = 56832; j < 57088; j++)
+ i222 += String.fromCharCode(j);
+var o222 = i222;
+if (i222.replace(/\w+/g, "") !== o222) {
+ $ERROR("#222: Error matching character class \w between character de00 and deff");
+}
+
+var i223 = "";
+for (var j = 57088; j < 57344; j++)
+ i223 += String.fromCharCode(j);
+var o223 = i223;
+if (i223.replace(/\w+/g, "") !== o223) {
+ $ERROR("#223: Error matching character class \w between character df00 and dfff");
+}
+
+var i224 = "";
+for (var j = 57344; j < 57600; j++)
+ i224 += String.fromCharCode(j);
+var o224 = i224;
+if (i224.replace(/\w+/g, "") !== o224) {
+ $ERROR("#224: Error matching character class \w between character e000 and e0ff");
+}
+
+var i225 = "";
+for (var j = 57600; j < 57856; j++)
+ i225 += String.fromCharCode(j);
+var o225 = i225;
+if (i225.replace(/\w+/g, "") !== o225) {
+ $ERROR("#225: Error matching character class \w between character e100 and e1ff");
+}
+
+var i226 = "";
+for (var j = 57856; j < 58112; j++)
+ i226 += String.fromCharCode(j);
+var o226 = i226;
+if (i226.replace(/\w+/g, "") !== o226) {
+ $ERROR("#226: Error matching character class \w between character e200 and e2ff");
+}
+
+var i227 = "";
+for (var j = 58112; j < 58368; j++)
+ i227 += String.fromCharCode(j);
+var o227 = i227;
+if (i227.replace(/\w+/g, "") !== o227) {
+ $ERROR("#227: Error matching character class \w between character e300 and e3ff");
+}
+
+var i228 = "";
+for (var j = 58368; j < 58624; j++)
+ i228 += String.fromCharCode(j);
+var o228 = i228;
+if (i228.replace(/\w+/g, "") !== o228) {
+ $ERROR("#228: Error matching character class \w between character e400 and e4ff");
+}
+
+var i229 = "";
+for (var j = 58624; j < 58880; j++)
+ i229 += String.fromCharCode(j);
+var o229 = i229;
+if (i229.replace(/\w+/g, "") !== o229) {
+ $ERROR("#229: Error matching character class \w between character e500 and e5ff");
+}
+
+var i230 = "";
+for (var j = 58880; j < 59136; j++)
+ i230 += String.fromCharCode(j);
+var o230 = i230;
+if (i230.replace(/\w+/g, "") !== o230) {
+ $ERROR("#230: Error matching character class \w between character e600 and e6ff");
+}
+
+var i231 = "";
+for (var j = 59136; j < 59392; j++)
+ i231 += String.fromCharCode(j);
+var o231 = i231;
+if (i231.replace(/\w+/g, "") !== o231) {
+ $ERROR("#231: Error matching character class \w between character e700 and e7ff");
+}
+
+var i232 = "";
+for (var j = 59392; j < 59648; j++)
+ i232 += String.fromCharCode(j);
+var o232 = i232;
+if (i232.replace(/\w+/g, "") !== o232) {
+ $ERROR("#232: Error matching character class \w between character e800 and e8ff");
+}
+
+var i233 = "";
+for (var j = 59648; j < 59904; j++)
+ i233 += String.fromCharCode(j);
+var o233 = i233;
+if (i233.replace(/\w+/g, "") !== o233) {
+ $ERROR("#233: Error matching character class \w between character e900 and e9ff");
+}
+
+var i234 = "";
+for (var j = 59904; j < 60160; j++)
+ i234 += String.fromCharCode(j);
+var o234 = i234;
+if (i234.replace(/\w+/g, "") !== o234) {
+ $ERROR("#234: Error matching character class \w between character ea00 and eaff");
+}
+
+var i235 = "";
+for (var j = 60160; j < 60416; j++)
+ i235 += String.fromCharCode(j);
+var o235 = i235;
+if (i235.replace(/\w+/g, "") !== o235) {
+ $ERROR("#235: Error matching character class \w between character eb00 and ebff");
+}
+
+var i236 = "";
+for (var j = 60416; j < 60672; j++)
+ i236 += String.fromCharCode(j);
+var o236 = i236;
+if (i236.replace(/\w+/g, "") !== o236) {
+ $ERROR("#236: Error matching character class \w between character ec00 and ecff");
+}
+
+var i237 = "";
+for (var j = 60672; j < 60928; j++)
+ i237 += String.fromCharCode(j);
+var o237 = i237;
+if (i237.replace(/\w+/g, "") !== o237) {
+ $ERROR("#237: Error matching character class \w between character ed00 and edff");
+}
+
+var i238 = "";
+for (var j = 60928; j < 61184; j++)
+ i238 += String.fromCharCode(j);
+var o238 = i238;
+if (i238.replace(/\w+/g, "") !== o238) {
+ $ERROR("#238: Error matching character class \w between character ee00 and eeff");
+}
+
+var i239 = "";
+for (var j = 61184; j < 61440; j++)
+ i239 += String.fromCharCode(j);
+var o239 = i239;
+if (i239.replace(/\w+/g, "") !== o239) {
+ $ERROR("#239: Error matching character class \w between character ef00 and efff");
+}
+
+var i240 = "";
+for (var j = 61440; j < 61696; j++)
+ i240 += String.fromCharCode(j);
+var o240 = i240;
+if (i240.replace(/\w+/g, "") !== o240) {
+ $ERROR("#240: Error matching character class \w between character f000 and f0ff");
+}
+
+var i241 = "";
+for (var j = 61696; j < 61952; j++)
+ i241 += String.fromCharCode(j);
+var o241 = i241;
+if (i241.replace(/\w+/g, "") !== o241) {
+ $ERROR("#241: Error matching character class \w between character f100 and f1ff");
+}
+
+var i242 = "";
+for (var j = 61952; j < 62208; j++)
+ i242 += String.fromCharCode(j);
+var o242 = i242;
+if (i242.replace(/\w+/g, "") !== o242) {
+ $ERROR("#242: Error matching character class \w between character f200 and f2ff");
+}
+
+var i243 = "";
+for (var j = 62208; j < 62464; j++)
+ i243 += String.fromCharCode(j);
+var o243 = i243;
+if (i243.replace(/\w+/g, "") !== o243) {
+ $ERROR("#243: Error matching character class \w between character f300 and f3ff");
+}
+
+var i244 = "";
+for (var j = 62464; j < 62720; j++)
+ i244 += String.fromCharCode(j);
+var o244 = i244;
+if (i244.replace(/\w+/g, "") !== o244) {
+ $ERROR("#244: Error matching character class \w between character f400 and f4ff");
+}
+
+var i245 = "";
+for (var j = 62720; j < 62976; j++)
+ i245 += String.fromCharCode(j);
+var o245 = i245;
+if (i245.replace(/\w+/g, "") !== o245) {
+ $ERROR("#245: Error matching character class \w between character f500 and f5ff");
+}
+
+var i246 = "";
+for (var j = 62976; j < 63232; j++)
+ i246 += String.fromCharCode(j);
+var o246 = i246;
+if (i246.replace(/\w+/g, "") !== o246) {
+ $ERROR("#246: Error matching character class \w between character f600 and f6ff");
+}
+
+var i247 = "";
+for (var j = 63232; j < 63488; j++)
+ i247 += String.fromCharCode(j);
+var o247 = i247;
+if (i247.replace(/\w+/g, "") !== o247) {
+ $ERROR("#247: Error matching character class \w between character f700 and f7ff");
+}
+
+var i248 = "";
+for (var j = 63488; j < 63744; j++)
+ i248 += String.fromCharCode(j);
+var o248 = i248;
+if (i248.replace(/\w+/g, "") !== o248) {
+ $ERROR("#248: Error matching character class \w between character f800 and f8ff");
+}
+
+var i249 = "";
+for (var j = 63744; j < 64000; j++)
+ i249 += String.fromCharCode(j);
+var o249 = i249;
+if (i249.replace(/\w+/g, "") !== o249) {
+ $ERROR("#249: Error matching character class \w between character f900 and f9ff");
+}
+
+var i250 = "";
+for (var j = 64000; j < 64256; j++)
+ i250 += String.fromCharCode(j);
+var o250 = i250;
+if (i250.replace(/\w+/g, "") !== o250) {
+ $ERROR("#250: Error matching character class \w between character fa00 and faff");
+}
+
+var i251 = "";
+for (var j = 64256; j < 64512; j++)
+ i251 += String.fromCharCode(j);
+var o251 = i251;
+if (i251.replace(/\w+/g, "") !== o251) {
+ $ERROR("#251: Error matching character class \w between character fb00 and fbff");
+}
+
+var i252 = "";
+for (var j = 64512; j < 64768; j++)
+ i252 += String.fromCharCode(j);
+var o252 = i252;
+if (i252.replace(/\w+/g, "") !== o252) {
+ $ERROR("#252: Error matching character class \w between character fc00 and fcff");
+}
+
+var i253 = "";
+for (var j = 64768; j < 65024; j++)
+ i253 += String.fromCharCode(j);
+var o253 = i253;
+if (i253.replace(/\w+/g, "") !== o253) {
+ $ERROR("#253: Error matching character class \w between character fd00 and fdff");
+}
+
+var i254 = "";
+for (var j = 65024; j < 65280; j++)
+ i254 += String.fromCharCode(j);
+var o254 = i254;
+if (i254.replace(/\w+/g, "") !== o254) {
+ $ERROR("#254: Error matching character class \w between character fe00 and feff");
+}
+
+var i255 = "";
+for (var j = 65280; j < 65536; j++)
+ i255 += String.fromCharCode(j);
+var o255 = i255;
+if (i255.replace(/\w+/g, "") !== o255) {
+ $ERROR("#255: Error matching character class \w between character ff00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T2.js
new file mode 100644
index 000000000..4d2066236
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T2;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: a - z;
+*/
+
+var regexp_w = /\w/;
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_w.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: a - z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T3.js
new file mode 100644
index 000000000..b463c3635
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T3;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: 0 - 9, _;
+*/
+
+var regexp_w = /\w/;
+
+//CHECK#0030-0039
+var result = true;
+for (alpha = 0x0030; alpha <= 0x0039; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_w.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: 0 - 9');
+}
+
+//CHECK#005F
+var arr = regexp_w.exec("_");
+if ((arr === null) || (arr[0] !== "\u005F")) {
+ $ERROR('#2: _');
+}
+
+//CHECK#0020
+if (regexp_w.exec(" ") !== null) {
+ $ERROR('#3: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T4.js
new file mode 100644
index 000000000..9273abdde
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T4;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_w = /\w/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ if (regexp_w.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ if (regexp_w.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T5.js
new file mode 100644
index 000000000..9724c0143
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A3_T5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A3_T5;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters:
+* a - z, A - Z, 0 - 9, _;
+* @description: non-w;
+*/
+
+//CHECK#1
+var non_w = "\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"';
+if (/\w/.exec(non_w) !== null) {
+ $ERROR('#1: non-w');
+}
+
+//CHECK#2
+var non_W = "_0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+var regexp_w = /\w/g;
+var k = 0;
+while (regexp_w.exec(non_W) !== null) {
+ k++;
+}
+
+if (non_W.length !== k) {
+ $ERROR('#2: non-W');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T1.js
new file mode 100644
index 000000000..e6d564ab9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T1.js
@@ -0,0 +1,522 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T1;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: A - Z;
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037\u0038\u0039\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u005F\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077\u0078\u0079\u007A";
+if (i0.replace(/\W+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \W between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = "";
+if (i1.replace(/\W+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \W between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = "";
+if (i2.replace(/\W+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \W between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = "";
+if (i3.replace(/\W+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \W between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = "";
+if (i4.replace(/\W+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \W between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = "";
+if (i5.replace(/\W+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \W between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = "";
+if (i6.replace(/\W+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \W between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = "";
+if (i7.replace(/\W+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \W between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = "";
+if (i8.replace(/\W+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \W between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = "";
+if (i9.replace(/\W+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \W between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = "";
+if (i10.replace(/\W+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \W between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = "";
+if (i11.replace(/\W+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \W between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = "";
+if (i12.replace(/\W+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \W between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = "";
+if (i13.replace(/\W+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \W between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = "";
+if (i14.replace(/\W+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \W between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = "";
+if (i15.replace(/\W+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \W between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = "";
+if (i16.replace(/\W+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \W between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = "";
+if (i17.replace(/\W+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \W between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = "";
+if (i18.replace(/\W+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \W between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = "";
+if (i19.replace(/\W+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \W between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = "";
+if (i20.replace(/\W+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \W between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = "";
+if (i21.replace(/\W+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \W between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = "";
+if (i22.replace(/\W+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \W between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = "";
+if (i23.replace(/\W+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \W between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = "";
+if (i24.replace(/\W+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \W between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = "";
+if (i25.replace(/\W+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \W between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = "";
+if (i26.replace(/\W+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \W between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = "";
+if (i27.replace(/\W+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \W between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = "";
+if (i28.replace(/\W+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \W between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = "";
+if (i29.replace(/\W+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \W between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = "";
+if (i30.replace(/\W+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \W between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = "";
+if (i31.replace(/\W+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \W between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = "";
+if (i32.replace(/\W+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \W between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = "";
+if (i33.replace(/\W+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \W between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = "";
+if (i34.replace(/\W+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \W between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = "";
+if (i35.replace(/\W+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \W between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = "";
+if (i36.replace(/\W+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \W between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = "";
+if (i37.replace(/\W+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \W between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = "";
+if (i38.replace(/\W+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \W between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = "";
+if (i39.replace(/\W+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \W between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = "";
+if (i40.replace(/\W+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \W between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = "";
+if (i41.replace(/\W+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \W between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = "";
+if (i42.replace(/\W+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \W between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = "";
+if (i43.replace(/\W+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \W between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = "";
+if (i44.replace(/\W+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \W between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = "";
+if (i45.replace(/\W+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \W between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = "";
+if (i46.replace(/\W+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \W between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = "";
+if (i47.replace(/\W+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \W between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = "";
+if (i48.replace(/\W+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \W between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = "";
+if (i49.replace(/\W+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \W between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = "";
+if (i50.replace(/\W+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \W between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = "";
+if (i51.replace(/\W+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \W between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = "";
+if (i52.replace(/\W+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \W between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = "";
+if (i53.replace(/\W+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \W between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = "";
+if (i54.replace(/\W+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \W between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = "";
+if (i55.replace(/\W+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \W between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = "";
+if (i56.replace(/\W+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \W between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = "";
+if (i57.replace(/\W+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \W between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = "";
+if (i58.replace(/\W+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \W between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = "";
+if (i59.replace(/\W+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \W between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = "";
+if (i60.replace(/\W+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \W between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = "";
+if (i61.replace(/\W+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \W between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = "";
+if (i62.replace(/\W+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \W between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = "";
+if (i63.replace(/\W+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \W between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T2.js
new file mode 100644
index 000000000..91b630822
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T2;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: a - z;
+*/
+
+var regexp_W = /\W/;
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ if (regexp_W.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: a - z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T3.js
new file mode 100644
index 000000000..b551560db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T3;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: 0 - 9;
+*/
+
+var regexp_W = /\W/;
+
+//CHECK#0030-0039
+var result = true;
+for (alpha = 0x0030; alpha <= 0x0039; alpha++) {
+ if (regexp_W.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: 0 - 9');
+}
+
+//CHECK#005F
+if (regexp_W.exec("_") !== null) {
+ $ERROR('#2: _');
+}
+
+//CHECK#0020
+var arr = regexp_W.exec(" ");
+if ((arr === null) || (arr[0] !== "\u0020")) {
+ $ERROR('#2: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T4.js
new file mode 100644
index 000000000..9427fd65e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T4.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T4;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_W = /\W/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_W.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_W.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T5.js
new file mode 100644
index 000000000..a76e56e6f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A4_T5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A4_T5;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: W evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: w;
+* @description: non-w;
+*/
+
+//CHECK#1
+var non_w = "\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"';
+var regexp_W = /\W/g;
+var k = 0;
+while (regexp_W.exec(non_w) !== null) {
+ k++;
+}
+
+if (non_w.length !== k) {
+ $ERROR('#1: non-w');
+}
+
+//CHECK#2
+var non_W = "_0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+if (/\W/.exec(non_W) !== null) {
+ $ERROR('#2: non-W');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T1.js
new file mode 100644
index 000000000..b2e01cb7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T1.js
@@ -0,0 +1,521 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A5_T1;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: d evaluates by returning the ten-element set of characters containing the characters 0 through 9 inclusive;
+* @description: 0 - 9;
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u0009\u000A\u000B\u000C\u000D\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u0020\u0021\u0022\u0023\u0024\u0025\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F\u003A\u003B\u003C\u003D\u003E\u003F\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u005B\u005C\u005D\u005E\u005F\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\u0100\u0101\u0102\u0103\u0104\u0105\u0106\u0107\u0108\u0109\u010A\u010B\u010C\u010D\u010E\u010F\u0110\u0111\u0112\u0113\u0114\u0115\u0116\u0117\u0118\u0119\u011A\u011B\u011C\u011D\u011E\u011F\u0120\u0121\u0122\u0123\u0124\u0125\u0126\u0127\u0128\u0129\u012A\u012B\u012C\u012D\u012E\u012F\u0130\u0131\u0132\u0133\u0134\u0135\u0136\u0137\u0138\u0139\u013A\u013B\u013C\u013D\u013E\u013F\u0140\u0141\u0142\u0143\u0144\u0145\u0146\u0147\u0148\u0149\u014A\u014B\u014C\u014D\u014E\u014F\u0150\u0151\u0152\u0153\u0154\u0155\u0156\u0157\u0158\u0159\u015A\u015B\u015C\u015D\u015E\u015F\u0160\u0161\u0162\u0163\u0164\u0165\u0166\u0167\u0168\u0169\u016A\u016B\u016C\u016D\u016E\u016F\u0170\u0171\u0172\u0173\u0174\u0175\u0176\u0177\u0178\u0179\u017A\u017B\u017C\u017D\u017E\u017F\u0180\u0181\u0182\u0183\u0184\u0185\u0186\u0187\u0188\u0189\u018A\u018B\u018C\u018D\u018E\u018F\u0190\u0191\u0192\u0193\u0194\u0195\u0196\u0197\u0198\u0199\u019A\u019B\u019C\u019D\u019E\u019F\u01A0\u01A1\u01A2\u01A3\u01A4\u01A5\u01A6\u01A7\u01A8\u01A9\u01AA\u01AB\u01AC\u01AD\u01AE\u01AF\u01B0\u01B1\u01B2\u01B3\u01B4\u01B5\u01B6\u01B7\u01B8\u01B9\u01BA\u01BB\u01BC\u01BD\u01BE\u01BF\u01C0\u01C1\u01C2\u01C3\u01C4\u01C5\u01C6\u01C7\u01C8\u01C9\u01CA\u01CB\u01CC\u01CD\u01CE\u01CF\u01D0\u01D1\u01D2\u01D3\u01D4\u01D5\u01D6\u01D7\u01D8\u01D9\u01DA\u01DB\u01DC\u01DD\u01DE\u01DF\u01E0\u01E1\u01E2\u01E3\u01E4\u01E5\u01E6\u01E7\u01E8\u01E9\u01EA\u01EB\u01EC\u01ED\u01EE\u01EF\u01F0\u01F1\u01F2\u01F3\u01F4\u01F5\u01F6\u01F7\u01F8\u01F9\u01FA\u01FB\u01FC\u01FD\u01FE\u01FF\u0200\u0201\u0202\u0203\u0204\u0205\u0206\u0207\u0208\u0209\u020A\u020B\u020C\u020D\u020E\u020F\u0210\u0211\u0212\u0213\u0214\u0215\u0216\u0217\u0218\u0219\u021A\u021B\u021C\u021D\u021E\u021F\u0220\u0221\u0222\u0223\u0224\u0225\u0226\u0227\u0228\u0229\u022A\u022B\u022C\u022D\u022E\u022F\u0230\u0231\u0232\u0233\u0234\u0235\u0236\u0237\u0238\u0239\u023A\u023B\u023C\u023D\u023E\u023F\u0240\u0241\u0242\u0243\u0244\u0245\u0246\u0247\u0248\u0249\u024A\u024B\u024C\u024D\u024E\u024F\u0250\u0251\u0252\u0253\u0254\u0255\u0256\u0257\u0258\u0259\u025A\u025B\u025C\u025D\u025E\u025F\u0260\u0261\u0262\u0263\u0264\u0265\u0266\u0267\u0268\u0269\u026A\u026B\u026C\u026D\u026E\u026F\u0270\u0271\u0272\u0273\u0274\u0275\u0276\u0277\u0278\u0279\u027A\u027B\u027C\u027D\u027E\u027F\u0280\u0281\u0282\u0283\u0284\u0285\u0286\u0287\u0288\u0289\u028A\u028B\u028C\u028D\u028E\u028F\u0290\u0291\u0292\u0293\u0294\u0295\u0296\u0297\u0298\u0299\u029A\u029B\u029C\u029D\u029E\u029F\u02A0\u02A1\u02A2\u02A3\u02A4\u02A5\u02A6\u02A7\u02A8\u02A9\u02AA\u02AB\u02AC\u02AD\u02AE\u02AF\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6\u02B7\u02B8\u02B9\u02BA\u02BB\u02BC\u02BD\u02BE\u02BF\u02C0\u02C1\u02C2\u02C3\u02C4\u02C5\u02C6\u02C7\u02C8\u02C9\u02CA\u02CB\u02CC\u02CD\u02CE\u02CF\u02D0\u02D1\u02D2\u02D3\u02D4\u02D5\u02D6\u02D7\u02D8\u02D9\u02DA\u02DB\u02DC\u02DD\u02DE\u02DF\u02E0\u02E1\u02E2\u02E3\u02E4\u02E5\u02E6\u02E7\u02E8\u02E9\u02EA\u02EB\u02EC\u02ED\u02EE\u02EF\u02F0\u02F1\u02F2\u02F3\u02F4\u02F5\u02F6\u02F7\u02F8\u02F9\u02FA\u02FB\u02FC\u02FD\u02FE\u02FF\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030A\u030B\u030C\u030D\u030E\u030F\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031A\u031B\u031C\u031D\u031E\u031F\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032A\u032B\u032C\u032D\u032E\u032F\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033A\u033B\u033C\u033D\u033E\u033F\u0340\u0341\u0342\u0343\u0344\u0345\u0346\u0347\u0348\u0349\u034A\u034B\u034C\u034D\u034E\u034F\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035A\u035B\u035C\u035D\u035E\u035F\u0360\u0361\u0362\u0363\u0364\u0365\u0366\u0367\u0368\u0369\u036A\u036B\u036C\u036D\u036E\u036F\u0370\u0371\u0372\u0373\u0374\u0375\u0376\u0377\u0378\u0379\u037A\u037B\u037C\u037D\u037E\u037F\u0380\u0381\u0382\u0383\u0384\u0385\u0386\u0387\u0388\u0389\u038A\u038B\u038C\u038D\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A2\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\u03CF\u03D0\u03D1\u03D2\u03D3\u03D4\u03D5\u03D6\u03D7\u03D8\u03D9\u03DA\u03DB\u03DC\u03DD\u03DE\u03DF\u03E0\u03E1\u03E2\u03E3\u03E4\u03E5\u03E6\u03E7\u03E8\u03E9\u03EA\u03EB\u03EC\u03ED\u03EE\u03EF\u03F0\u03F1\u03F2\u03F3\u03F4\u03F5\u03F6\u03F7\u03F8\u03F9\u03FA\u03FB\u03FC\u03FD\u03FE\u03FF";
+if (i0.replace(/\d+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \d between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = i1;
+if (i1.replace(/\d+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \d between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = i2;
+if (i2.replace(/\d+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \d between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = i3;
+if (i3.replace(/\d+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \d between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = i4;
+if (i4.replace(/\d+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \d between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = i5;
+if (i5.replace(/\d+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \d between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = i6;
+if (i6.replace(/\d+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \d between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = i7;
+if (i7.replace(/\d+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \d between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = i8;
+if (i8.replace(/\d+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \d between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = i9;
+if (i9.replace(/\d+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \d between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = i10;
+if (i10.replace(/\d+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \d between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = i11;
+if (i11.replace(/\d+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \d between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = i12;
+if (i12.replace(/\d+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \d between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = i13;
+if (i13.replace(/\d+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \d between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = i14;
+if (i14.replace(/\d+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \d between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = i15;
+if (i15.replace(/\d+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \d between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = i16;
+if (i16.replace(/\d+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \d between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = i17;
+if (i17.replace(/\d+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \d between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = i18;
+if (i18.replace(/\d+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \d between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = i19;
+if (i19.replace(/\d+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \d between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = i20;
+if (i20.replace(/\d+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \d between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = i21;
+if (i21.replace(/\d+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \d between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = i22;
+if (i22.replace(/\d+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \d between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = i23;
+if (i23.replace(/\d+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \d between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = i24;
+if (i24.replace(/\d+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \d between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = i25;
+if (i25.replace(/\d+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \d between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = i26;
+if (i26.replace(/\d+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \d between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = i27;
+if (i27.replace(/\d+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \d between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = i28;
+if (i28.replace(/\d+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \d between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = i29;
+if (i29.replace(/\d+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \d between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = i30;
+if (i30.replace(/\d+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \d between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = i31;
+if (i31.replace(/\d+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \d between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = i32;
+if (i32.replace(/\d+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \d between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = i33;
+if (i33.replace(/\d+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \d between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = i34;
+if (i34.replace(/\d+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \d between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = i35;
+if (i35.replace(/\d+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \d between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = i36;
+if (i36.replace(/\d+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \d between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = i37;
+if (i37.replace(/\d+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \d between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = i38;
+if (i38.replace(/\d+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \d between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = i39;
+if (i39.replace(/\d+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \d between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = i40;
+if (i40.replace(/\d+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \d between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = i41;
+if (i41.replace(/\d+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \d between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = i42;
+if (i42.replace(/\d+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \d between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = i43;
+if (i43.replace(/\d+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \d between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = i44;
+if (i44.replace(/\d+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \d between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = i45;
+if (i45.replace(/\d+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \d between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = i46;
+if (i46.replace(/\d+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \d between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = i47;
+if (i47.replace(/\d+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \d between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = i48;
+if (i48.replace(/\d+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \d between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = i49;
+if (i49.replace(/\d+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \d between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = i50;
+if (i50.replace(/\d+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \d between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = i51;
+if (i51.replace(/\d+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \d between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = i52;
+if (i52.replace(/\d+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \d between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = i53;
+if (i53.replace(/\d+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \d between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = i54;
+if (i54.replace(/\d+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \d between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = i55;
+if (i55.replace(/\d+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \d between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = i56;
+if (i56.replace(/\d+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \d between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = i57;
+if (i57.replace(/\d+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \d between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = i58;
+if (i58.replace(/\d+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \d between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = i59;
+if (i59.replace(/\d+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \d between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = i60;
+if (i60.replace(/\d+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \d between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = i61;
+if (i61.replace(/\d+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \d between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = i62;
+if (i62.replace(/\d+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \d between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = i63;
+if (i63.replace(/\d+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \d between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T2.js
new file mode 100644
index 000000000..775020100
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A5_T2;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: d evaluates by returning the ten-element set of characters containing the characters 0 through 9 inclusive;
+* @description: ENGLISH ALPHABET;
+*/
+
+var regexp_d = /\d/;
+
+//CHECK#0041-005A
+var result = true;
+for (alpha = 0x0041; alpha <= 0x005A; alpha++) {
+ if (regexp_d.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ if (regexp_d.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T3.js
new file mode 100644
index 000000000..e0cca8d1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A5_T3;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: d evaluates by returning the ten-element set of characters containing the characters 0 through 9 inclusive;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_d = /\d/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ if (regexp_d.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ if (regexp_d.exec(String.fromCharCode(alpha)) !== null) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T4.js
new file mode 100644
index 000000000..3e1a22959
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A5_T4.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A5_T4;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: d evaluates by returning the ten-element set of characters containing the characters 0 through 9 inclusive;
+* @description: non-d;
+*/
+
+//CHECK#1
+var non_d = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"';
+if (/\d/.exec(non_d) !== null) {
+ $ERROR('#1: non-d');
+}
+
+//CHECK#2
+var non_D = '0123456789';
+var regexp_d = /\d/g;
+var k = 0;
+while (regexp_d.exec(non_D) !== null) {
+ k++;
+}
+
+if (non_D.length !== k) {
+ $ERROR('#2: non-D');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T1.js
new file mode 100644
index 000000000..318b40e7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T1.js
@@ -0,0 +1,522 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A6_T1;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: D evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: d;
+* @description: 0 - 9;
+*/
+
+var i0 = "";
+for (var j = 0; j < 1024; j++)
+ i0 += String.fromCharCode(j);
+var o0 = "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037\u0038\u0039";
+if (i0.replace(/\D+/g, "") !== o0) {
+ $ERROR("#0: Error matching character class \D between character 0 and 3ff");
+}
+
+var i1 = "";
+for (var j = 1024; j < 2048; j++)
+ i1 += String.fromCharCode(j);
+var o1 = "";
+if (i1.replace(/\D+/g, "") !== o1) {
+ $ERROR("#1: Error matching character class \D between character 400 and 7ff");
+}
+
+var i2 = "";
+for (var j = 2048; j < 3072; j++)
+ i2 += String.fromCharCode(j);
+var o2 = "";
+if (i2.replace(/\D+/g, "") !== o2) {
+ $ERROR("#2: Error matching character class \D between character 800 and bff");
+}
+
+var i3 = "";
+for (var j = 3072; j < 4096; j++)
+ i3 += String.fromCharCode(j);
+var o3 = "";
+if (i3.replace(/\D+/g, "") !== o3) {
+ $ERROR("#3: Error matching character class \D between character c00 and fff");
+}
+
+var i4 = "";
+for (var j = 4096; j < 5120; j++)
+ i4 += String.fromCharCode(j);
+var o4 = "";
+if (i4.replace(/\D+/g, "") !== o4) {
+ $ERROR("#4: Error matching character class \D between character 1000 and 13ff");
+}
+
+var i5 = "";
+for (var j = 5120; j < 6144; j++)
+ i5 += String.fromCharCode(j);
+var o5 = "";
+if (i5.replace(/\D+/g, "") !== o5) {
+ $ERROR("#5: Error matching character class \D between character 1400 and 17ff");
+}
+
+var i6 = "";
+for (var j = 6144; j < 7168; j++)
+ i6 += String.fromCharCode(j);
+var o6 = "";
+if (i6.replace(/\D+/g, "") !== o6) {
+ $ERROR("#6: Error matching character class \D between character 1800 and 1bff");
+}
+
+var i7 = "";
+for (var j = 7168; j < 8192; j++)
+ i7 += String.fromCharCode(j);
+var o7 = "";
+if (i7.replace(/\D+/g, "") !== o7) {
+ $ERROR("#7: Error matching character class \D between character 1c00 and 1fff");
+}
+
+var i8 = "";
+for (var j = 8192; j < 9216; j++)
+ i8 += String.fromCharCode(j);
+var o8 = "";
+if (i8.replace(/\D+/g, "") !== o8) {
+ $ERROR("#8: Error matching character class \D between character 2000 and 23ff");
+}
+
+var i9 = "";
+for (var j = 9216; j < 10240; j++)
+ i9 += String.fromCharCode(j);
+var o9 = "";
+if (i9.replace(/\D+/g, "") !== o9) {
+ $ERROR("#9: Error matching character class \D between character 2400 and 27ff");
+}
+
+var i10 = "";
+for (var j = 10240; j < 11264; j++)
+ i10 += String.fromCharCode(j);
+var o10 = "";
+if (i10.replace(/\D+/g, "") !== o10) {
+ $ERROR("#10: Error matching character class \D between character 2800 and 2bff");
+}
+
+var i11 = "";
+for (var j = 11264; j < 12288; j++)
+ i11 += String.fromCharCode(j);
+var o11 = "";
+if (i11.replace(/\D+/g, "") !== o11) {
+ $ERROR("#11: Error matching character class \D between character 2c00 and 2fff");
+}
+
+var i12 = "";
+for (var j = 12288; j < 13312; j++)
+ i12 += String.fromCharCode(j);
+var o12 = "";
+if (i12.replace(/\D+/g, "") !== o12) {
+ $ERROR("#12: Error matching character class \D between character 3000 and 33ff");
+}
+
+var i13 = "";
+for (var j = 13312; j < 14336; j++)
+ i13 += String.fromCharCode(j);
+var o13 = "";
+if (i13.replace(/\D+/g, "") !== o13) {
+ $ERROR("#13: Error matching character class \D between character 3400 and 37ff");
+}
+
+var i14 = "";
+for (var j = 14336; j < 15360; j++)
+ i14 += String.fromCharCode(j);
+var o14 = "";
+if (i14.replace(/\D+/g, "") !== o14) {
+ $ERROR("#14: Error matching character class \D between character 3800 and 3bff");
+}
+
+var i15 = "";
+for (var j = 15360; j < 16384; j++)
+ i15 += String.fromCharCode(j);
+var o15 = "";
+if (i15.replace(/\D+/g, "") !== o15) {
+ $ERROR("#15: Error matching character class \D between character 3c00 and 3fff");
+}
+
+var i16 = "";
+for (var j = 16384; j < 17408; j++)
+ i16 += String.fromCharCode(j);
+var o16 = "";
+if (i16.replace(/\D+/g, "") !== o16) {
+ $ERROR("#16: Error matching character class \D between character 4000 and 43ff");
+}
+
+var i17 = "";
+for (var j = 17408; j < 18432; j++)
+ i17 += String.fromCharCode(j);
+var o17 = "";
+if (i17.replace(/\D+/g, "") !== o17) {
+ $ERROR("#17: Error matching character class \D between character 4400 and 47ff");
+}
+
+var i18 = "";
+for (var j = 18432; j < 19456; j++)
+ i18 += String.fromCharCode(j);
+var o18 = "";
+if (i18.replace(/\D+/g, "") !== o18) {
+ $ERROR("#18: Error matching character class \D between character 4800 and 4bff");
+}
+
+var i19 = "";
+for (var j = 19456; j < 20480; j++)
+ i19 += String.fromCharCode(j);
+var o19 = "";
+if (i19.replace(/\D+/g, "") !== o19) {
+ $ERROR("#19: Error matching character class \D between character 4c00 and 4fff");
+}
+
+var i20 = "";
+for (var j = 20480; j < 21504; j++)
+ i20 += String.fromCharCode(j);
+var o20 = "";
+if (i20.replace(/\D+/g, "") !== o20) {
+ $ERROR("#20: Error matching character class \D between character 5000 and 53ff");
+}
+
+var i21 = "";
+for (var j = 21504; j < 22528; j++)
+ i21 += String.fromCharCode(j);
+var o21 = "";
+if (i21.replace(/\D+/g, "") !== o21) {
+ $ERROR("#21: Error matching character class \D between character 5400 and 57ff");
+}
+
+var i22 = "";
+for (var j = 22528; j < 23552; j++)
+ i22 += String.fromCharCode(j);
+var o22 = "";
+if (i22.replace(/\D+/g, "") !== o22) {
+ $ERROR("#22: Error matching character class \D between character 5800 and 5bff");
+}
+
+var i23 = "";
+for (var j = 23552; j < 24576; j++)
+ i23 += String.fromCharCode(j);
+var o23 = "";
+if (i23.replace(/\D+/g, "") !== o23) {
+ $ERROR("#23: Error matching character class \D between character 5c00 and 5fff");
+}
+
+var i24 = "";
+for (var j = 24576; j < 25600; j++)
+ i24 += String.fromCharCode(j);
+var o24 = "";
+if (i24.replace(/\D+/g, "") !== o24) {
+ $ERROR("#24: Error matching character class \D between character 6000 and 63ff");
+}
+
+var i25 = "";
+for (var j = 25600; j < 26624; j++)
+ i25 += String.fromCharCode(j);
+var o25 = "";
+if (i25.replace(/\D+/g, "") !== o25) {
+ $ERROR("#25: Error matching character class \D between character 6400 and 67ff");
+}
+
+var i26 = "";
+for (var j = 26624; j < 27648; j++)
+ i26 += String.fromCharCode(j);
+var o26 = "";
+if (i26.replace(/\D+/g, "") !== o26) {
+ $ERROR("#26: Error matching character class \D between character 6800 and 6bff");
+}
+
+var i27 = "";
+for (var j = 27648; j < 28672; j++)
+ i27 += String.fromCharCode(j);
+var o27 = "";
+if (i27.replace(/\D+/g, "") !== o27) {
+ $ERROR("#27: Error matching character class \D between character 6c00 and 6fff");
+}
+
+var i28 = "";
+for (var j = 28672; j < 29696; j++)
+ i28 += String.fromCharCode(j);
+var o28 = "";
+if (i28.replace(/\D+/g, "") !== o28) {
+ $ERROR("#28: Error matching character class \D between character 7000 and 73ff");
+}
+
+var i29 = "";
+for (var j = 29696; j < 30720; j++)
+ i29 += String.fromCharCode(j);
+var o29 = "";
+if (i29.replace(/\D+/g, "") !== o29) {
+ $ERROR("#29: Error matching character class \D between character 7400 and 77ff");
+}
+
+var i30 = "";
+for (var j = 30720; j < 31744; j++)
+ i30 += String.fromCharCode(j);
+var o30 = "";
+if (i30.replace(/\D+/g, "") !== o30) {
+ $ERROR("#30: Error matching character class \D between character 7800 and 7bff");
+}
+
+var i31 = "";
+for (var j = 31744; j < 32768; j++)
+ i31 += String.fromCharCode(j);
+var o31 = "";
+if (i31.replace(/\D+/g, "") !== o31) {
+ $ERROR("#31: Error matching character class \D between character 7c00 and 7fff");
+}
+
+var i32 = "";
+for (var j = 32768; j < 33792; j++)
+ i32 += String.fromCharCode(j);
+var o32 = "";
+if (i32.replace(/\D+/g, "") !== o32) {
+ $ERROR("#32: Error matching character class \D between character 8000 and 83ff");
+}
+
+var i33 = "";
+for (var j = 33792; j < 34816; j++)
+ i33 += String.fromCharCode(j);
+var o33 = "";
+if (i33.replace(/\D+/g, "") !== o33) {
+ $ERROR("#33: Error matching character class \D between character 8400 and 87ff");
+}
+
+var i34 = "";
+for (var j = 34816; j < 35840; j++)
+ i34 += String.fromCharCode(j);
+var o34 = "";
+if (i34.replace(/\D+/g, "") !== o34) {
+ $ERROR("#34: Error matching character class \D between character 8800 and 8bff");
+}
+
+var i35 = "";
+for (var j = 35840; j < 36864; j++)
+ i35 += String.fromCharCode(j);
+var o35 = "";
+if (i35.replace(/\D+/g, "") !== o35) {
+ $ERROR("#35: Error matching character class \D between character 8c00 and 8fff");
+}
+
+var i36 = "";
+for (var j = 36864; j < 37888; j++)
+ i36 += String.fromCharCode(j);
+var o36 = "";
+if (i36.replace(/\D+/g, "") !== o36) {
+ $ERROR("#36: Error matching character class \D between character 9000 and 93ff");
+}
+
+var i37 = "";
+for (var j = 37888; j < 38912; j++)
+ i37 += String.fromCharCode(j);
+var o37 = "";
+if (i37.replace(/\D+/g, "") !== o37) {
+ $ERROR("#37: Error matching character class \D between character 9400 and 97ff");
+}
+
+var i38 = "";
+for (var j = 38912; j < 39936; j++)
+ i38 += String.fromCharCode(j);
+var o38 = "";
+if (i38.replace(/\D+/g, "") !== o38) {
+ $ERROR("#38: Error matching character class \D between character 9800 and 9bff");
+}
+
+var i39 = "";
+for (var j = 39936; j < 40960; j++)
+ i39 += String.fromCharCode(j);
+var o39 = "";
+if (i39.replace(/\D+/g, "") !== o39) {
+ $ERROR("#39: Error matching character class \D between character 9c00 and 9fff");
+}
+
+var i40 = "";
+for (var j = 40960; j < 41984; j++)
+ i40 += String.fromCharCode(j);
+var o40 = "";
+if (i40.replace(/\D+/g, "") !== o40) {
+ $ERROR("#40: Error matching character class \D between character a000 and a3ff");
+}
+
+var i41 = "";
+for (var j = 41984; j < 43008; j++)
+ i41 += String.fromCharCode(j);
+var o41 = "";
+if (i41.replace(/\D+/g, "") !== o41) {
+ $ERROR("#41: Error matching character class \D between character a400 and a7ff");
+}
+
+var i42 = "";
+for (var j = 43008; j < 44032; j++)
+ i42 += String.fromCharCode(j);
+var o42 = "";
+if (i42.replace(/\D+/g, "") !== o42) {
+ $ERROR("#42: Error matching character class \D between character a800 and abff");
+}
+
+var i43 = "";
+for (var j = 44032; j < 45056; j++)
+ i43 += String.fromCharCode(j);
+var o43 = "";
+if (i43.replace(/\D+/g, "") !== o43) {
+ $ERROR("#43: Error matching character class \D between character ac00 and afff");
+}
+
+var i44 = "";
+for (var j = 45056; j < 46080; j++)
+ i44 += String.fromCharCode(j);
+var o44 = "";
+if (i44.replace(/\D+/g, "") !== o44) {
+ $ERROR("#44: Error matching character class \D between character b000 and b3ff");
+}
+
+var i45 = "";
+for (var j = 46080; j < 47104; j++)
+ i45 += String.fromCharCode(j);
+var o45 = "";
+if (i45.replace(/\D+/g, "") !== o45) {
+ $ERROR("#45: Error matching character class \D between character b400 and b7ff");
+}
+
+var i46 = "";
+for (var j = 47104; j < 48128; j++)
+ i46 += String.fromCharCode(j);
+var o46 = "";
+if (i46.replace(/\D+/g, "") !== o46) {
+ $ERROR("#46: Error matching character class \D between character b800 and bbff");
+}
+
+var i47 = "";
+for (var j = 48128; j < 49152; j++)
+ i47 += String.fromCharCode(j);
+var o47 = "";
+if (i47.replace(/\D+/g, "") !== o47) {
+ $ERROR("#47: Error matching character class \D between character bc00 and bfff");
+}
+
+var i48 = "";
+for (var j = 49152; j < 50176; j++)
+ i48 += String.fromCharCode(j);
+var o48 = "";
+if (i48.replace(/\D+/g, "") !== o48) {
+ $ERROR("#48: Error matching character class \D between character c000 and c3ff");
+}
+
+var i49 = "";
+for (var j = 50176; j < 51200; j++)
+ i49 += String.fromCharCode(j);
+var o49 = "";
+if (i49.replace(/\D+/g, "") !== o49) {
+ $ERROR("#49: Error matching character class \D between character c400 and c7ff");
+}
+
+var i50 = "";
+for (var j = 51200; j < 52224; j++)
+ i50 += String.fromCharCode(j);
+var o50 = "";
+if (i50.replace(/\D+/g, "") !== o50) {
+ $ERROR("#50: Error matching character class \D between character c800 and cbff");
+}
+
+var i51 = "";
+for (var j = 52224; j < 53248; j++)
+ i51 += String.fromCharCode(j);
+var o51 = "";
+if (i51.replace(/\D+/g, "") !== o51) {
+ $ERROR("#51: Error matching character class \D between character cc00 and cfff");
+}
+
+var i52 = "";
+for (var j = 53248; j < 54272; j++)
+ i52 += String.fromCharCode(j);
+var o52 = "";
+if (i52.replace(/\D+/g, "") !== o52) {
+ $ERROR("#52: Error matching character class \D between character d000 and d3ff");
+}
+
+var i53 = "";
+for (var j = 54272; j < 55296; j++)
+ i53 += String.fromCharCode(j);
+var o53 = "";
+if (i53.replace(/\D+/g, "") !== o53) {
+ $ERROR("#53: Error matching character class \D between character d400 and d7ff");
+}
+
+var i54 = "";
+for (var j = 55296; j < 56320; j++)
+ i54 += String.fromCharCode(j);
+var o54 = "";
+if (i54.replace(/\D+/g, "") !== o54) {
+ $ERROR("#54: Error matching character class \D between character d800 and dbff");
+}
+
+var i55 = "";
+for (var j = 56320; j < 57344; j++)
+ i55 += String.fromCharCode(j);
+var o55 = "";
+if (i55.replace(/\D+/g, "") !== o55) {
+ $ERROR("#55: Error matching character class \D between character dc00 and dfff");
+}
+
+var i56 = "";
+for (var j = 57344; j < 58368; j++)
+ i56 += String.fromCharCode(j);
+var o56 = "";
+if (i56.replace(/\D+/g, "") !== o56) {
+ $ERROR("#56: Error matching character class \D between character e000 and e3ff");
+}
+
+var i57 = "";
+for (var j = 58368; j < 59392; j++)
+ i57 += String.fromCharCode(j);
+var o57 = "";
+if (i57.replace(/\D+/g, "") !== o57) {
+ $ERROR("#57: Error matching character class \D between character e400 and e7ff");
+}
+
+var i58 = "";
+for (var j = 59392; j < 60416; j++)
+ i58 += String.fromCharCode(j);
+var o58 = "";
+if (i58.replace(/\D+/g, "") !== o58) {
+ $ERROR("#58: Error matching character class \D between character e800 and ebff");
+}
+
+var i59 = "";
+for (var j = 60416; j < 61440; j++)
+ i59 += String.fromCharCode(j);
+var o59 = "";
+if (i59.replace(/\D+/g, "") !== o59) {
+ $ERROR("#59: Error matching character class \D between character ec00 and efff");
+}
+
+var i60 = "";
+for (var j = 61440; j < 62464; j++)
+ i60 += String.fromCharCode(j);
+var o60 = "";
+if (i60.replace(/\D+/g, "") !== o60) {
+ $ERROR("#60: Error matching character class \D between character f000 and f3ff");
+}
+
+var i61 = "";
+for (var j = 62464; j < 63488; j++)
+ i61 += String.fromCharCode(j);
+var o61 = "";
+if (i61.replace(/\D+/g, "") !== o61) {
+ $ERROR("#61: Error matching character class \D between character f400 and f7ff");
+}
+
+var i62 = "";
+for (var j = 63488; j < 64512; j++)
+ i62 += String.fromCharCode(j);
+var o62 = "";
+if (i62.replace(/\D+/g, "") !== o62) {
+ $ERROR("#62: Error matching character class \D between character f800 and fbff");
+}
+
+var i63 = "";
+for (var j = 64512; j < 65536; j++)
+ i63 += String.fromCharCode(j);
+var o63 = "";
+if (i63.replace(/\D+/g, "") !== o63) {
+ $ERROR("#63: Error matching character class \D between character fc00 and ffff");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T2.js
new file mode 100644
index 000000000..3604bf9c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_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.
+
+/**
+* @name: S15.10.2.12_A6_T2;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: D evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: d;
+* @description: ENGLISH ALPHABET;
+*/
+
+var regexp_D = /\D/;
+
+//CHECK#0041-005A
+var result = true;
+for (alpha = 0x0041; alpha <= 0x005A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_D.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: ENGLISH CAPITAL ALPHABET');
+}
+
+//CHECK#0061-007A
+var result = true;
+for (alpha = 0x0061; alpha <= 0x007A; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_D.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: english small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T3.js
new file mode 100644
index 000000000..a5751f3f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A6_T3;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: D evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: d;
+* @description: RUSSIAN ALPHABET;
+*/
+
+var regexp_D = /\D/;
+
+//CHECK#0410-042F
+var result = true;
+for (alpha = 0x0410; alpha <= 0x042F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_D.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: RUSSIAN CAPITAL ALPHABET');
+}
+
+//CHECK#0430-044F
+var result = true;
+for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+ str = String.fromCharCode(alpha);
+ arr = regexp_D.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: russian small alphabet');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T4.js
new file mode 100644
index 000000000..400f73a91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.12_CharacterClassEscape/S15.10.2.12_A6_T4.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.12_A6_T4;
+* @section: 15.10.2.12;
+* @assertion: The production CharacterClassEscape :: D evaluates by returning the set of all characters not
+* included in the set returned by CharacterClassEscape :: d;
+* @description: RUSSIAN ALPHABET;
+*/
+
+//CHECK#1
+var non_d = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"';
+var regexp_D = /\D/g;
+var k = 0;
+while (regexp_D.exec(non_d) !== null) {
+ k++;
+}
+
+if (non_d.length !== k) {
+ $ERROR('#1: non-d');
+}
+
+//CHECK#2
+var non_d = '0123456789';
+if (/\D/.exec(non_d) !== null) {
+ $ERROR('#2: non-d');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T1.js
new file mode 100644
index 000000000..e09ea1cbc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_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.
+
+/**
+* @name: S15.10.2.13_A1_T1;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /[]a/.test("\0a\0a") and check results;
+*/
+
+__executed = /[]a/.test("\0a\0a");;
+
+//CHECK#1
+ if (__executed) {
+ $ERROR('#1: /[]a/.test("\\0a\\0a") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T10.js
new file mode 100644
index 000000000..2898dba3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T10.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T10;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /[a-c\d]+/.exec("\n\n\abc324234\n") and check results;
+*/
+
+__executed = /[a-c\d]+/.exec("\n\n\abc324234\n");
+
+__expected = ["abc324234"];
+__expected.index = 2;
+__expected.input = "\n\n\abc324234\n";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[a-c\\d]+/.exec("\\n\\n\\abc324234\\n"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[a-c\\d]+/.exec("\\n\\n\\abc324234\\n"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[a-c\\d]+/.exec("\\n\\n\\abc324234\\n"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[a-c\\d]+/.exec("\\n\\n\\abc324234\\n"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T11.js
new file mode 100644
index 000000000..689b2c315
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T11.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T11;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /ab[.]?c/.exec("abc") and check results;
+*/
+
+__executed = /ab[.]?c/.exec("abc");
+
+__expected = ["abc"];
+__expected.index = 0;
+__expected.input = "abc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /ab[.]?c/.exec("abc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /ab[.]?c/.exec("abc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /ab[.]?c/.exec("abc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /ab[.]?c/.exec("abc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T12.js
new file mode 100644
index 000000000..0e58723af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T12.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T12;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /a[b]c/.exec("abc") and check results;
+*/
+
+__executed = /a[b]c/.exec("abc");
+
+__expected = ["abc"];
+__expected.index = 0;
+__expected.input = "abc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a[b]c/.exec("abc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a[b]c/.exec("abc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a[b]c/.exec("abc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a[b]c/.exec("abc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T13.js
new file mode 100644
index 000000000..ea4fc46ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T13.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T13;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /[a-z][^1-9][a-z]/.exec("a1b b2c c3d def f4g") and check results;
+*/
+
+__executed = /[a-z][^1-9][a-z]/.exec("a1b b2c c3d def f4g");
+
+__expected = ["def"];
+__expected.index = 15;
+__expected.input = "a1b b2c c3d def f4g";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[a-z][^1-9][a-z]/.exec("a1b b2c c3d def f4g"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[a-z][^1-9][a-z]/.exec("a1b b2c c3d def f4g"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[a-z][^1-9][a-z]/.exec("a1b b2c c3d def f4g"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[a-z][^1-9][a-z]/.exec("a1b b2c c3d def f4g"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T14.js
new file mode 100644
index 000000000..8b5cf75ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T14.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T14;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /[*&$]{3}/.exec("123*&$abc") and check results;
+*/
+
+__executed = /[*&$]{3}/.exec("123*&$abc");
+
+__expected = ["*&$"];
+__expected.index = 3;
+__expected.input = "123*&$abc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[*&$]{3}/.exec("123*&$abc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[*&$]{3}/.exec("123*&$abc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[*&$]{3}/.exec("123*&$abc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[*&$]{3}/.exec("123*&$abc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T15.js
new file mode 100644
index 000000000..9a62a73ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T15.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T15;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /[\d][\n][^\d]/.exec("line1\nline2") and check results;
+*/
+
+__executed = /[\d][\n][^\d]/.exec("line1\nline2");
+
+__expected = ["1\nl"];
+__expected.index = 4;
+__expected.input = "line1\nline2";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[\\d][\\n][^\\d]/.exec("line1\\nline2"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[\\d][\\n][^\\d]/.exec("line1\\nline2"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[\\d][\\n][^\\d]/.exec("line1\\nline2"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[\\d][\\n][^\\d]/.exec("line1\\nline2"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T16.js
new file mode 100644
index 000000000..5e3fb5aa7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T16.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T16;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /[\d][\12-\14]{1,}[^\d]/.exec("line1\n\n\n\n\nline2") and check results;
+*/
+
+__executed = /[\d][\12-\14]{1,}[^\d]/.exec("line1\n\n\n\n\nline2");
+
+__expected = ["1\n\n\n\n\nl"];
+__expected.index = 4;
+__expected.input = "line1\n\n\n\n\nline2";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[\\d][\\12-\\14]{1,}[^\\d]/.exec("line1\\n\\n\\n\\n\\nline2"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[\\d][\\12-\\14]{1,}[^\\d]/.exec("line1\\n\\n\\n\\n\\nline2"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[\\d][\\12-\\14]{1,}[^\\d]/.exec("line1\\n\\n\\n\\n\\nline2"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[\\d][\\12-\\14]{1,}[^\\d]/.exec("line1\\n\\n\\n\\n\\nline2"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T17.js
new file mode 100644
index 000000000..b9d758657
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T17.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T17;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /[]/.exec("a[b\n[]\tc]d") and check results;
+*/
+
+__executed = /[]/.exec("a[b\n[]\tc]d");
+
+//CHECK#1
+if (__executed !== null) {
+ $ERROR('#1: /[]/.exec("a[b\\n[]\\tc]d") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T2.js
new file mode 100644
index 000000000..6e7a955bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_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.
+
+/**
+* @name: S15.10.2.13_A1_T2;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /a[]/.test("\0a\0a") and check results;
+*/
+
+__executed = /a[]/.test("\0a\0a");;
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /a[]/.test("\\0a\\0a") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T3.js
new file mode 100644
index 000000000..9805c6175
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T3;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /q[ax-zb](?=\s+)/.exec("qYqy ") and check results;
+*/
+
+__executed = /q[ax-zb](?=\s+)/.exec("qYqy ");
+
+__expected = ["qy"];
+__expected.index = 2;
+__expected.input = "qYqy ";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /q[ax-zb](?=\\s+)/.exec("qYqy "); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /q[ax-zb](?=\\s+)/.exec("qYqy "); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /q[ax-zb](?=\\s+)/.exec("qYqy "); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /q[ax-zb](?=\\s+)/.exec("qYqy "); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T4.js
new file mode 100644
index 000000000..8ebc4a714
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T4;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /q[ax-zb](?=\s+)/.exec("tqaqy ") and check results;
+*/
+
+__executed = /q[ax-zb](?=\s+)/.exec("tqaqy ");
+
+__expected = ["qy"];
+__expected.index = 3;
+__expected.input = "tqaqy ";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /q[ax-zb](?=\\s+)/.exec("tqaqy "); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /q[ax-zb](?=\\s+)/.exec("tqaqy "); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /q[ax-zb](?=\\s+)/.exec("tqaqy "); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /q[ax-zb](?=\\s+)/.exec("tqaqy "); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T5.js
new file mode 100644
index 000000000..f6ad29198
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T5;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /q[ax-zb](?=\s+)/.exec("tqa\t qy ") and check results;
+*/
+
+__executed = /q[ax-zb](?=\s+)/.exec("tqa\t qy ");
+
+__expected = ["qa"];
+__expected.index = 1;
+__expected.input = "tqa\t qy ";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /q[ax-zb](?=\\s+)/.exec("tqa\\t qy "); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /q[ax-zb](?=\\s+)/.exec("tqa\\t qy "); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /q[ax-zb](?=\\s+)/.exec("tqa\\t qy "); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /q[ax-zb](?=\\s+)/.exec("tqa\\t qy "); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T6.js
new file mode 100644
index 000000000..9b8adf409
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T6.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T6;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /ab[ercst]de/.exec("abcde") and check results;
+*/
+
+__executed = /ab[ercst]de/.exec("abcde");
+
+__expected = ["abcde"];
+__expected.index = 0;
+__expected.input = "abcde";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /ab[ercst]de/.exec("abcde"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /ab[ercst]de/.exec("abcde"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /ab[ercst]de/.exec("abcde"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /ab[ercst]de/.exec("abcde"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T7.js
new file mode 100644
index 000000000..2b39b9938
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T7.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T7;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /ab[erst]de/.test("abcde") and check results;
+*/
+
+__executed = /ab[erst]de/.test("abcde");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /ab[erst]de/.test("abcde") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T8.js
new file mode 100644
index 000000000..3ebc41419
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T8.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T8;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /[d-h]+/.exec("abcdefghijkl") and check results;
+*/
+
+__executed = /[d-h]+/.exec("abcdefghijkl");
+
+__expected = ["defgh"];
+__expected.index = 3;
+__expected.input = "abcdefghijkl";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[d-h]+/.exec("abcdefghijkl"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[d-h]+/.exec("abcdefghijkl"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[d-h]+/.exec("abcdefghijkl"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[d-h]+/.exec("abcdefghijkl"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T9.js
new file mode 100644
index 000000000..3248bff85
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A1_T9.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A1_T9;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean false;
+* @description: Execute /[1234567].{2}/.exec("abc6defghijkl") and check results;
+*/
+
+__executed = /[1234567].{2}/.exec("abc6defghijkl");
+
+__expected = ["6de"];
+__expected.index = 3;
+__expected.input = "abc6defghijkl";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[1234567].{2}/.exec("abc6defghijkl"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[1234567].{2}/.exec("abc6defghijkl"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[1234567].{2}/.exec("abc6defghijkl"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[1234567].{2}/.exec("abc6defghijkl"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T1.js
new file mode 100644
index 000000000..3bfb3ee6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A2_T1;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ ^ ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean true;
+* @description: Execute /[^]a/m.exec("a\naba") and check results;
+*/
+
+__executed = /[^]a/m.exec("a\naba");
+
+__expected = ["\na"];
+__expected.index = 1;
+__expected.input = "a\naba";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^]a/m.exec("a\\naba"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^]a/m.exec("a\\naba"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^]a/m.exec("a\\naba"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^]a/m.exec("a\\naba"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T2.js
new file mode 100644
index 000000000..18c0559d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_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.
+
+/**
+* @name: S15.10.2.13_A2_T2;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ ^ ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean true;
+* @description: Execute /a[^]/.exec(" a\t\n") and check results;
+*/
+
+__executed = /a[^]/.exec(" a\t\n");
+
+__expected = ["a\t"];
+__expected.index = 3;
+__expected.input = " a\t\n";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a[^]/.exec(" a\\t\\n"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a[^]/.exec(" a\\t\\n"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a[^]/.exec(" a\\t\\n"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a[^]/.exec(" a\\t\\n"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T3.js
new file mode 100644
index 000000000..b6aa9a0a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A2_T3;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ ^ ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean true;
+* @description: Execute /a[^b-z]\s+/.exec("ab an az aY n") and check results;
+*/
+
+__executed = /a[^b-z]\s+/.exec("ab an az aY n");
+
+__expected = ["aY "];
+__expected.index = 9;
+__expected.input = "ab an az aY n";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a[^b-z]\\s+/.exec("ab an az aY n"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a[^b-z]\\s+/.exec("ab an az aY n"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a[^b-z]\\s+/.exec("ab an az aY n"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a[^b-z]\\s+/.exec("ab an az aY n"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T4.js
new file mode 100644
index 000000000..7393546a1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A2_T4;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ ^ ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean true;
+* @description: Execute /[^\b]+/g.exec("easy\bto\u0008ride") and check results;
+*/
+
+__executed = /[^\b]+/g.exec("easy\bto\u0008ride");
+
+__expected = ["easy"];
+__expected.index = 0;
+__expected.input = "easy\bto\u0008ride";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^\\b]+/g.exec("easy\\bto\\u0008ride"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^\\b]+/g.exec("easy\\bto\\u0008ride"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^\\b]+/g.exec("easy\\bto\\u0008ride"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^\\b]+/g.exec("easy\\bto\\u0008ride"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T5.js
new file mode 100644
index 000000000..054d1ead5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A2_T5;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ ^ ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean true;
+* @description: Execute /a[^1-9]c/.exec("abc") and check results;
+*/
+
+__executed = /a[^1-9]c/.exec("abc");
+
+__expected = ["abc"];
+__expected.index = 0;
+__expected.input = "abc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a[^1-9]c/.exec("abc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a[^1-9]c/.exec("abc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a[^1-9]c/.exec("abc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a[^1-9]c/.exec("abc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T6.js
new file mode 100644
index 000000000..51a5818fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A2_T6;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ ^ ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean true;
+* @description: Execute /a[^b]c/.test("abc") and check results;
+*/
+
+__executed = /a[^b]c/.test("abc");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /a[^b]c/.test("abc") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T7.js
new file mode 100644
index 000000000..f6986e21a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T7.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A2_T7;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ ^ ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean true;
+* @description: Execute /[^a-z]{4}/.exec("abc#$%def%&*@ghi") and check results;
+*/
+
+__executed = /[^a-z]{4}/.exec("abc#$%def%&*@ghi");
+
+__expected = ["%&*@"];
+__expected.index = 9;
+__expected.input = "abc#$%def%&*@ghi";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^a-z]{4}/.exec("abc#$%def%&*@ghi"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^a-z]{4}/.exec("abc#$%def%&*@ghi"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^a-z]{4}/.exec("abc#$%def%&*@ghi"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^a-z]{4}/.exec("abc#$%def%&*@ghi"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T8.js
new file mode 100644
index 000000000..98aa93951
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A2_T8.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A2_T8;
+* @section: 15.10.2.13;
+* @assertion: The production CharacterClass :: [ ^ ClassRanges ] evaluates by evaluating ClassRanges to obtain a CharSet and returning that CharSet and the boolean true;
+* @description: Execute /[^]/.exec("abc#$%def%&*@ghi") and check results;
+*/
+
+__executed = /[^]/.exec("abc#$%def%&*@ghi");
+
+__expected = ["a"];
+__expected.index = 0;
+__expected.input = "abc#$%def%&*@ghi";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^]/.exec("abc#$%def%&*@ghi"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^]/.exec("abc#$%def%&*@ghi"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^]/.exec("abc#$%def%&*@ghi"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^]/.exec("abc#$%def%&*@ghi"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T1.js
new file mode 100644
index 000000000..07f36fe0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A3_T1;
+* @section: 15.10.2.13;
+* @assertion: Inside a CharacterClass, \b means the backspace character;
+* @description: Execute /.[\b]./.exec("abc\bdef") and check results;
+*/
+
+__executed = /.[\b]./.exec("abc\bdef");
+
+__expected = ["c\bd"];
+__expected.index = 2;
+__expected.input = "abc\bdef";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /.[\\b]./.exec("abc\\bdef"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /.[\\b]./.exec("abc\\bdef"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /.[\\b]./.exec("abc\\bdef"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /.[\\b]./.exec("abc\\bdef"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T2.js
new file mode 100644
index 000000000..b980fe930
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_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.
+
+/**
+* @name: S15.10.2.13_A3_T2;
+* @section: 15.10.2.13;
+* @assertion: Inside a CharacterClass, \b means the backspace character;
+* @description: Execute /c[\b]{3}d/.exec("abc\b\b\bdef") and check results;
+*/
+
+__executed = /c[\b]{3}d/.exec("abc\b\b\bdef");
+
+__expected = ["c\b\b\bd"];
+__expected.index = 2;
+__expected.input = "abc\b\b\bdef";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /c[\\b]{3}d/.exec("abc\\b\\b\\bdef"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /c[\\b]{3}d/.exec("abc\\b\\b\\bdef"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /c[\\b]{3}d/.exec("abc\\b\\b\\bdef"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /c[\\b]{3}d/.exec("abc\\b\\b\\bdef"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T3.js
new file mode 100644
index 000000000..cd1823985
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A3_T3;
+* @section: 15.10.2.13;
+* @assertion: Inside a CharacterClass, \b means the backspace character;
+* @description: Execute /[^\[\b\]]+/.exec("abc\bdef") and check results;
+*/
+
+__executed = /[^\[\b\]]+/.exec("abc\bdef");
+
+__expected = ["abc"];
+__expected.index = 0;
+__expected.input = "abc\bdef";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^\\[\\b\\]]+/.exec("abc\\bdef"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^\\[\\b\\]]+/.exec("abc\\bdef"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^\\[\\b\\]]+/.exec("abc\\bdef"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^\\[\\b\\]]+/.exec("abc\\bdef"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T4.js
new file mode 100644
index 000000000..e78b355c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.13_CharacterClass/S15.10.2.13_A3_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.13_A3_T4;
+* @section: 15.10.2.13;
+* @assertion: Inside a CharacterClass, \b means the backspace character;
+* @description: Execute /[^\[\b\]]+/.exec("abcdef") and check results;
+*/
+
+__executed = /[^\[\b\]]+/.exec("abcdef");
+
+__expected = ["abcdef"];
+__expected.index = 0;
+__expected.input = "abcdef";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^\\[\\b\\]]+/.exec("abcdef"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^\\[\\b\\]]+/.exec("abcdef"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^\\[\\b\\]]+/.exec("abcdef"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^\\[\\b\\]]+/.exec("abcdef"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T1.js
new file mode 100644
index 000000000..1fb530867
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T1;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[b-ac-e]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[b-ac-e]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-ac-e]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[b-ac-e]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T10.js
new file mode 100644
index 000000000..1834c95c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T10.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T10;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\10b-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\10b-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\10b-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\10b-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T11.js
new file mode 100644
index 000000000..24c69d8be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T11.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T11;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\bd-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\bd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\bd-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\bd-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T12.js
new file mode 100644
index 000000000..706954793
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T12.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T12;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\Bd-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\Bd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\Bd-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\Bd-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T13.js
new file mode 100644
index 000000000..f07bffb5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T13.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T13;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\td-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\td-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\td-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\td-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T14.js
new file mode 100644
index 000000000..6ce4e4545
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T14.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T14;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\nd-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\nd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\nd-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\nd-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T15.js
new file mode 100644
index 000000000..d755e1a87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T15.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T15;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\vd-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\vd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\vd-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\vd-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T16.js
new file mode 100644
index 000000000..1576d29bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T16.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T16;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\fd-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\fd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\fd-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\fd-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T17.js
new file mode 100644
index 000000000..7a1268e06
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T17.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T17;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\rd-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\rd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\rd-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\rd-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T18.js
new file mode 100644
index 000000000..d36870370
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T18.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T18;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\c0001d-G]/.exec("1")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\c0001d-G]/.exec("1") throw SyntaxError. Actual: ' + (new RegExp("[\\c0001d-G]").exec("1")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\c0001d-G]/.exec("1") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T19.js
new file mode 100644
index 000000000..a1529a6cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T19.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T19;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\x0061d-G]/.exec("1")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\x0061d-G]/.exec("1") throw SyntaxError. Actual: ' + (new RegExp("[\\x0061d-G]").exec("1")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\x0061d-G]/.exec("1") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T2.js
new file mode 100644
index 000000000..81e03f6b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T2;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[a-dc-b]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[a-dc-b]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[a-dc-b]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[a-dc-b]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T20.js
new file mode 100644
index 000000000..fd77d2200
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T20.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T20;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\u0061d-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\u0061d-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\u0061d-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\u0061d-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T21.js
new file mode 100644
index 000000000..f4880a6d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T21.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T21;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\ad-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\ad-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\ad-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\ad-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T22.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T22.js
new file mode 100644
index 000000000..86263d90d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T22.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T22;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[c-eb-a]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[c-eb-a]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[c-eb-a]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[c-eb-a]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T23.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T23.js
new file mode 100644
index 000000000..51aee13ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T23.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T23;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[b-G\d]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[b-G\\d]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\d]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[b-G\\d]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T24.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T24.js
new file mode 100644
index 000000000..f202976d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T24.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T24;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[b-G\D]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[b-G\\D]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\D]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[b-G\\D]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T25.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T25.js
new file mode 100644
index 000000000..b98aa2804
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T25.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T25;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[b-G\s]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[b-G\\s]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\s]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[b-G\\s]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T26.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T26.js
new file mode 100644
index 000000000..14c7d87ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T26.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T26;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[b-G\S]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[b-G\\S]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\S]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[b-G\\S]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T27.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T27.js
new file mode 100644
index 000000000..0f9bfd0c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T27.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T27;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[b-G\w]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[b-G\\w]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\w]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[b-G\\w]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T28.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T28.js
new file mode 100644
index 000000000..8ae4f8b4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T28.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T28;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[b-G\W]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[b-G\\W]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\W]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[b-G\\W]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T29.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T29.js
new file mode 100644
index 000000000..7f925ec35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T29.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T29;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[b-G\0]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[b-G\\0]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\0]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[b-G\\0]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T3.js
new file mode 100644
index 000000000..b28be76b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T3;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\db-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\db-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\db-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\db-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T30.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T30.js
new file mode 100644
index 000000000..63e6d96a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T30.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T30;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[b-G\10]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[b-G\\10]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\10]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[b-G\\10]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T31.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T31.js
new file mode 100644
index 000000000..a095c4a57
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T31.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T31;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\b]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\b]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\b]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\b]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T32.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T32.js
new file mode 100644
index 000000000..aef882ec5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T32.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T32;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\B]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\B]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\B]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\B]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T33.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T33.js
new file mode 100644
index 000000000..243c0a60b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T33.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T33;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\t]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\t]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\t]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\t]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T34.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T34.js
new file mode 100644
index 000000000..725a78209
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T34.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T34;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\n]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\n]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\n]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\n]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T35.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T35.js
new file mode 100644
index 000000000..790c60eec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T35.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T35;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\v]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\v]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\v]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\v]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T36.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T36.js
new file mode 100644
index 000000000..2e15b0b8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T36.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T36;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\f]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\f]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\f]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\f]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T37.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T37.js
new file mode 100644
index 000000000..9f782fdee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T37.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T37;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\r]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\r]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\r]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\r]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T38.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T38.js
new file mode 100644
index 000000000..2ab7a00ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T38.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T38;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\c0001]/.exec("1")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\c0001]/.exec("1") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\c0001]").exec("1")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\c0001]/.exec("1") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T39.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T39.js
new file mode 100644
index 000000000..dd523e7b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T39.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T39;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\x0061]/.exec("1")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\x0061]/.exec("1") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\x0061]").exec("1")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\x0061]/.exec("1") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T4.js
new file mode 100644
index 000000000..4e28db4a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T4;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\Db-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\Db-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\Db-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\Db-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T40.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T40.js
new file mode 100644
index 000000000..e9a988254
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T40.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T40;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\u0061]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\u0061]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\u0061]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\u0061]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T41.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T41.js
new file mode 100644
index 000000000..35cbe7590
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T41.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T41;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[d-G\a]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[d-G\\a]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\a]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[d-G\\a]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T5.js
new file mode 100644
index 000000000..024e35c6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T5;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\sb-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\sb-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\sb-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\sb-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T6.js
new file mode 100644
index 000000000..90213c33c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T6;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\Sb-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\Sb-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\Sb-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\Sb-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T7.js
new file mode 100644
index 000000000..c06068a6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T7;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\wb-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\wb-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\wb-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\wb-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T8.js
new file mode 100644
index 000000000..099770c28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T8.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T8;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\Wb-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\Wb-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\Wb-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\Wb-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T9.js
new file mode 100644
index 000000000..efaf38e1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.15_NonemptyClassRanges/S15.10.2.15_A1_T9.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.15_A1_T9;
+* @section: 15.10.2.15;
+* @assertion: The internal helper function CharacterRange takes two CharSet parameters A and B and performs the
+* following:
+* If A does not contain exactly one character or B does not contain exactly one character then throw
+* a SyntaxError exception;
+* @description: Checking if execution of "/[\0b-G]/.exec("a")" leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[\\0b-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\0b-G]").exec("a")));
+} catch (e) {
+ if((e instanceof SyntaxError) !== true){
+ $ERROR('#1.2: /[\\0b-G]/.exec("a") throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T1.js
new file mode 100644
index 000000000..9958ba7be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T1;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /a|ab/.exec("abc") and check results;
+*/
+
+__executed = /a|ab/.exec("abc");
+
+__expected = ["a"];
+__expected.index = 0;
+__expected.input = "abc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a|ab/.exec("abc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a|ab/.exec("abc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a|ab/.exec("abc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a|ab/.exec("abc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T10.js
new file mode 100644
index 000000000..217fb9622
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T10.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T10;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /(?:ab|cd)+|ef/i.exec("AEKeFCDab") and check results;
+*/
+
+__executed = /(?:ab|cd)+|ef/i.exec("AEKeFCDab");
+
+__expected = ["eF"];
+__expected.index = 3;
+__expected.input = "AEKeFCDab";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(?:ab|cd)+|ef/i.exec("AEKeFCDab"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(?:ab|cd)+|ef/i.exec("AEKeFCDab"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(?:ab|cd)+|ef/i.exec("AEKeFCDab"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(?:ab|cd)+|ef/i.exec("AEKeFCDab"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T11.js
new file mode 100644
index 000000000..2fda5a87f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T11.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T11;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /11111|111/.exec("1111111111111111") and check results;
+*/
+
+__executed = /11111|111/.exec("1111111111111111");
+
+__expected = ["11111"];
+__expected.index = 0;
+__expected.input = "1111111111111111";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /11111|111/.exec("1111111111111111"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /11111|111/.exec("1111111111111111"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /11111|111/.exec("1111111111111111"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /11111|111/.exec("1111111111111111"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T12.js
new file mode 100644
index 000000000..9157f6fec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T12.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T12;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /xyz|.../.exec("abc") and check results;
+*/
+
+__executed = /xyz|.../.exec("abc");
+
+__expected = ["abc"];
+__expected.index = 0;
+__expected.input = "abc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /xyz|.../.exec("abc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /xyz|.../.exec("abc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /xyz|.../.exec("abc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /xyz|.../.exec("abc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T13.js
new file mode 100644
index 000000000..ad40d42bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T13.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T13;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /(.)..|abc/.exec("abc") and check results;
+*/
+
+__executed = /(.)..|abc/.exec("abc");
+
+__expected = ["abc","a"];
+__expected.index = 0;
+__expected.input = "abc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(.)..|abc/.exec("abc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(.)..|abc/.exec("abc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(.)..|abc/.exec("abc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(.)..|abc/.exec("abc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T14.js
new file mode 100644
index 000000000..a2f6e3144
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T14.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T14;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /.+: gr(a|e)y/.exec("color: grey") and check results;
+*/
+
+__executed = /.+: gr(a|e)y/.exec("color: grey");
+
+__expected = ["color: grey","e"];
+__expected.index = 0;
+__expected.input = "color: grey";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /.+: gr(a|e)y/.exec("color: grey"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /.+: gr(a|e)y/.exec("color: grey"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /.+: gr(a|e)y/.exec("color: grey"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /.+: gr(a|e)y/.exec("color: grey"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T15.js
new file mode 100644
index 000000000..0485674e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T15.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T15;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /(Rob)|(Bob)|(Robert)|(Bobby)/.exec("Hi Bob") and check results;
+*/
+
+__executed = /(Rob)|(Bob)|(Robert)|(Bobby)/.exec("Hi Bob");
+
+__expected = ["Bob",undefined,"Bob", undefined, undefined];
+__expected.index = 3;
+__expected.input = "Hi Bob";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(Rob)|(Bob)|(Robert)|(Bobby)/.exec("Hi Bob"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(Rob)|(Bob)|(Robert)|(Bobby)/.exec("Hi Bob"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(Rob)|(Bob)|(Robert)|(Bobby)/.exec("Hi Bob"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(Rob)|(Bob)|(Robert)|(Bobby)/.exec("Hi Bob"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T16.js
new file mode 100644
index 000000000..90781571d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T16.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T16;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /()|/.exec("") and check results;
+*/
+
+__executed = /()|/.exec("");
+
+__expected = ["",""];
+__expected.index = 0;
+__expected.input = "";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /()|/.exec(""); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /()|/.exec(""); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /()|/.exec(""); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /()|/.exec(""); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T17.js
new file mode 100644
index 000000000..679d2ec01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T17.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T17;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /|()/.exec("") and check results;
+*/
+
+__executed = /|()/.exec("");
+
+__expected = ["",undefined];
+__expected.index = 0;
+__expected.input = "";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /|()/.exec(""); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /|()/.exec(""); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /|()/.exec(""); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /|()/.exec(""); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T2.js
new file mode 100644
index 000000000..f28905376
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_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.
+
+/**
+* @name: S15.10.2.3_A1_T2;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /((a)|(ab))((c)|(bc))/.exec("abc") and check results;
+*/
+
+__executed = /((a)|(ab))((c)|(bc))/.exec("abc");
+
+__expected = ["abc", "a", "a", undefined, "bc", undefined, "bc"];
+__expected.index = 0;
+__expected.input = "abc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /((a)|(ab))((c)|(bc))/.exec("abc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /((a)|(ab))((c)|(bc))/.exec("abc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /((a)|(ab))((c)|(bc))/.exec("abc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /((a)|(ab))((c)|(bc))/.exec("abc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T3.js
new file mode 100644
index 000000000..66be46922
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T3;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /\d{3}|[a-z]{4}/.exec("2, 12 and of course repeat 12") and check results;
+*/
+
+__executed = /\d{3}|[a-z]{4}/.exec("2, 12 and of course repeat 12");
+
+__expected = ["cour"];
+__expected.index = 13;
+__expected.input = "2, 12 and of course repeat 12";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\d{3}|[a-z]{4}/.exec("2, 12 and of course repeat 12"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\d{3}|[a-z]{4}/.exec("2, 12 and of course repeat 12"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\d{3}|[a-z]{4}/.exec("2, 12 and of course repeat 12"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\d{3}|[a-z]{4}/.exec("2, 12 and of course repeat 12"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T4.js
new file mode 100644
index 000000000..96364f3cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T4.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T4;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /\d{3}|[a-z]{4}/.exec("2, 12 and 234 AND of course repeat 12") and check results;
+*/
+
+__executed = /\d{3}|[a-z]{4}/.exec("2, 12 and 234 AND of course repeat 12");
+
+__expected = ["234"];
+__expected.index = 10;
+__expected.input = "2, 12 and 234 AND of course repeat 12";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\d{3}|[a-z]{4}/.exec("2, 12 and 234 AND of course repeat 12"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\d{3}|[a-z]{4}/.exec("2, 12 and 234 AND of course repeat 12"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\d{3}|[a-z]{4}/.exec("2, 12 and 234 AND of course repeat 12"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\d{3}|[a-z]{4}/.exec("2, 12 and 234 AND of course repeat 12"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T5.js
new file mode 100644
index 000000000..7abbfa926
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T5;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /\d{3}|[a-z]{4}/.test("2, 12 and 23 AND 0.00.1") and check results;
+*/
+
+__executed = /\d{3}|[a-z]{4}/.test("2, 12 and 23 AND 0.00.1");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /\\d{3}|[a-z]{4}/.test("2, 12 and 23 AND 0.00.1") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T6.js
new file mode 100644
index 000000000..bc4b39f58
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T6;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /ab|cd|ef/i.exec("AEKFCD") and check results;
+*/
+
+__executed = /ab|cd|ef/i.exec("AEKFCD");
+
+__expected = ["CD"];
+__expected.index = 4;
+__expected.input = "AEKFCD";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /ab|cd|ef/i.exec("AEKFCD"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /ab|cd|ef/i.exec("AEKFCD"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /ab|cd|ef/i.exec("AEKFCD"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /ab|cd|ef/i.exec("AEKFCD"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T7.js
new file mode 100644
index 000000000..d621962c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T7;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /ab|cd|ef/.test("AEKFCD") and check results;
+*/
+
+__executed = /ab|cd|ef/.test("AEKFCD");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /ab|cd|ef/.test("AEKFCD") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T8.js
new file mode 100644
index 000000000..cd3244826
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T8;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /(?:ab|cd)+|ef/i.exec("AEKFCD") and check results;
+*/
+
+__executed = /(?:ab|cd)+|ef/i.exec("AEKFCD");
+
+__expected = ["CD"];
+__expected.index = 4;
+__expected.input = "AEKFCD";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(?:ab|cd)+|ef/i.exec("AEKFCD"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(?:ab|cd)+|ef/i.exec("AEKFCD"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(?:ab|cd)+|ef/i.exec("AEKFCD"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(?:ab|cd)+|ef/i.exec("AEKFCD"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T9.js
new file mode 100644
index 000000000..6b639e6a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.3_Disjunction/S15.10.2.3_A1_T9.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.3_A1_T9;
+* @section: 15.10.2.3;
+* @assertion: The | regular expression operator separates two alternatives.
+* The pattern first tries to match the left Alternative (followed by the sequel of the regular expression).
+* If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression);
+* @description: Execute /(?:ab|cd)+|ef/i.exec("AEKFCDab") and check results;
+*/
+
+__executed = /(?:ab|cd)+|ef/i.exec("AEKFCDab");
+
+__expected = ["CDab"];
+__expected.index = 4;
+__expected.input = "AEKFCDab";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(?:ab|cd)+|ef/i.exec("AEKFCDab"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(?:ab|cd)+|ef/i.exec("AEKFCDab"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(?:ab|cd)+|ef/i.exec("AEKFCDab"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(?:ab|cd)+|ef/i.exec("AEKFCDab"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T1.js
new file mode 100644
index 000000000..a96a4582d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.5_A1_T1;
+* @section: 15.10.2.5;
+* @assertion: An Atom followed by a Quantifier is repeated the number of times specified by the Quantifier;
+* @description: Execute /a[a-z]{2,4}/.exec("abcdefghi") and check results;
+*/
+
+__executed = /a[a-z]{2,4}/.exec("abcdefghi");
+
+__expected = ["abcde"];
+__expected.index = 0;
+__expected.input = "abcdefghi";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a[a-z]{2,4}/.exec("abcdefghi"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a[a-z]{2,4}/.exec("abcdefghi"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a[a-z]{2,4}/.exec("abcdefghi"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a[a-z]{2,4}/.exec("abcdefghi"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T2.js
new file mode 100644
index 000000000..b763ee9eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_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.
+
+/**
+* @name: S15.10.2.5_A1_T2;
+* @section: 15.10.2.5;
+* @assertion: An Atom followed by a Quantifier is repeated the number of times specified by the Quantifier;
+* @description: Execute /a[a-z]{2,4}?/.exec("abcdefghi") and check results;
+*/
+
+__executed = /a[a-z]{2,4}?/.exec("abcdefghi");
+
+__expected = ["abc"];
+__expected.index = 0;
+__expected.input = "abcdefghi";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a[a-z]{2,4}?/.exec("abcdefghi"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a[a-z]{2,4}?/.exec("abcdefghi"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a[a-z]{2,4}?/.exec("abcdefghi"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a[a-z]{2,4}?/.exec("abcdefghi"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T3.js
new file mode 100644
index 000000000..d4d6fa5c7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.5_A1_T3;
+* @section: 15.10.2.5;
+* @assertion: An Atom followed by a Quantifier is repeated the number of times specified by the Quantifier;
+* @description: Execute /(aa|aabaac|ba|b|c)* /.exec("aabaac") and check results;
+*/
+
+__executed = /(aa|aabaac|ba|b|c)*/.exec("aabaac");
+
+__expected = ["aaba", "ba"];
+__expected.index = 0;
+__expected.input = "aabaac";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(aa|aabaac|ba|b|c)*/.exec("aabaac"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(aa|aabaac|ba|b|c)*/.exec("aabaac"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(aa|aabaac|ba|b|c)*/.exec("aabaac"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(aa|aabaac|ba|b|c)*/.exec("aabaac"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T4.js
new file mode 100644
index 000000000..f6170e245
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.5_A1_T4;
+* @section: 15.10.2.5;
+* @assertion: An Atom followed by a Quantifier is repeated the number of times specified by the Quantifier;
+* @description: Execute /(z)((a+)?(b+)?(c))* /.exec("zaacbbbcac") and check results;
+*/
+
+__executed = /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac");
+
+__expected = ["zaacbbbcac", "z", "ac", "a", undefined, "c"];
+__expected.index = 0;
+__expected.input = "zaacbbbcac";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T5.js
new file mode 100644
index 000000000..5e4b7cf0f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.5_Term/S15.10.2.5_A1_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.5_A1_T5;
+* @section: 15.10.2.5;
+* @assertion: An Atom followed by a Quantifier is repeated the number of times specified by the Quantifier;
+* @description: Execute /(a*)b\1+/.exec("baaaac") and check results;
+*/
+
+__executed = /(a*)b\1+/.exec("baaaac");
+
+__expected = ["b", ""];
+__expected.index = 0;
+__expected.input = "baaaac";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(a*)b\\1+/.exec("baaaac"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(a*)b\\1+/.exec("baaaac"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(a*)b\\1+/.exec("baaaac"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(a*)b\\1+/.exec("baaaac"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T1.js
new file mode 100644
index 000000000..d344788e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_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.
+
+/**
+* @name: S15.10.2.6_A1_T1;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: $ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /s$/.test("pairs\nmakes\tdouble") and check results;
+*/
+
+__executed = /s$/.test("pairs\nmakes\tdouble");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /s$/.test("pairs\\nmakes\\tdouble") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T2.js
new file mode 100644
index 000000000..e0cff98b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_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.
+
+/**
+* @name: S15.10.2.6_A1_T2;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: $ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /e$/.exec("pairs\nmakes\tdouble") and check results;
+*/
+
+__executed = /e$/.exec("pairs\nmakes\tdouble");
+
+__expected = ["e"];
+__expected.index = 17;
+__expected.input = "pairs\nmakes\tdouble";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /e$/.exec("pairs\\nmakes\\tdouble"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /e$/.exec("pairs\\nmakes\\tdouble"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /e$/.exec("pairs\\nmakes\\tdouble"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /e$/.exec("pairs\\nmakes\\tdouble"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T3.js
new file mode 100644
index 000000000..a68d4543a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A1_T3;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: $ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /s$/m.exec("pairs\nmakes\tdouble") and check results;
+*/
+
+__executed = /s$/m.exec("pairs\nmakes\tdouble");
+
+__expected = ["s"];
+__expected.index = 4;
+__expected.input = "pairs\nmakes\tdouble";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /s$/m.exec("pairs\\nmakes\\tdouble"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /s$/m.exec("pairs\\nmakes\\tdouble"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /s$/m.exec("pairs\\nmakes\\tdouble"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /s$/m.exec("pairs\\nmakes\\tdouble"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T4.js
new file mode 100644
index 000000000..0205eb103
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A1_T4;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: $ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /[^e]$/mg.exec("pairs\nmakes\tdouble") and check results;
+*/
+
+__executed = /[^e]$/mg.exec("pairs\nmakes\tdouble");
+
+__expected = ["s"];
+__expected.index = 4;
+__expected.input = "pairs\nmakes\tdouble";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^e]$/mg.exec("pairs\\nmakes\\tdouble"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^e]$/mg.exec("pairs\\nmakes\\tdouble"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^e]$/mg.exec("pairs\\nmakes\\tdouble"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^e]$/mg.exec("pairs\\nmakes\\tdouble"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T5.js
new file mode 100644
index 000000000..3f08ac0b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A1_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A1_T5;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: $ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /es$/mg.exec("pairs\nmakes\tdoubl\u0065s") and check results;
+*/
+
+__executed = /es$/mg.exec("pairs\nmakes\tdoubl\u0065s");
+
+__expected = ["es"];
+__expected.index = 17;
+__expected.input = "pairs\nmakes\tdoubles";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /es$/mg.exec("pairs\\nmakes\\tdoubl\\u0065s"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /es$/mg.exec("pairs\\nmakes\\tdoubl\\u0065s"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /es$/mg.exec("pairs\\nmakes\\tdoubl\\u0065s"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /es$/mg.exec("pairs\\nmakes\\tdoubl\\u0065s"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T1.js
new file mode 100644
index 000000000..b0723d09f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A2_T1;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^m/.test("pairs\nmakes\tdouble") and check results;
+*/
+
+__executed = /^m/.test("pairs\nmakes\tdouble");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /^m/.test("pairs\\nmakes\\tdouble") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T10.js
new file mode 100644
index 000000000..9332dc3da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T10.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A2_T10;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^\d+/m.exec("abc\n123xyz") and check results;
+*/
+
+__executed = /^\d+/m.exec("abc\n123xyz");
+
+__expected = ["123"];
+__expected.index = 4;
+__expected.input = "abc\n123xyz";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^\\d+/m.exec("abc\\n123xyz"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^\\d+/m.exec("abc\\n123xyz"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^\\d+/m.exec("abc\\n123xyz"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^\\d+/m.exec("abc\\n123xyz"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T2.js
new file mode 100644
index 000000000..56af0022b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_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.
+
+/**
+* @name: S15.10.2.6_A2_T2;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^m/m.exec("pairs\nmakes\tdouble") and check results;
+*/
+
+__executed = /^m/m.exec("pairs\nmakes\tdouble");
+
+__expected = ["m"];
+__expected.index = 6;
+__expected.input = "pairs\nmakes\tdouble";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^m/m.exec("pairs\\nmakes\\tdouble"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^m/m.exec("pairs\\nmakes\\tdouble"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^m/m.exec("pairs\\nmakes\\tdouble"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^m/m.exec("pairs\\nmakes\\tdouble"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T3.js
new file mode 100644
index 000000000..4e4a0e8a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A2_T3;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^p[a-z]/.exec("pairs\nmakes\tdouble\npesos") and check results;
+*/
+
+__executed = /^p[a-z]/.exec("pairs\nmakes\tdouble\npesos");
+
+__expected = ["pa"];
+__expected.index = 0;
+__expected.input = "pairs\nmakes\tdouble\npesos";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^p[a-z]/.exec("pairs\\nmakes\\tdouble\\npesos"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^p[a-z]/.exec("pairs\\nmakes\\tdouble\\npesos"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^p[a-z]/.exec("pairs\\nmakes\\tdouble\\npesos"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^p[a-z]/.exec("pairs\\nmakes\\tdouble\\npesos"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T4.js
new file mode 100644
index 000000000..3a83a4fc9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A2_T4;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^p[a-z]/m.exec("pairs\nmakes\tdouble\npesos") and check results;
+*/
+
+__executed = /^p[b-z]/m.exec("pairs\nmakes\tdouble\npesos");
+
+__expected = ["pe"];
+__expected.index = 19;
+__expected.input = "pairs\nmakes\tdouble\npesos";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^p[b-z]/m.exec("pairs\\nmakes\\tdouble\\npesos"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^p[b-z]/m.exec("pairs\\nmakes\\tdouble\\npesos"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^p[b-z]/m.exec("pairs\\nmakes\\tdouble\\npesos"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^p[b-z]/m.exec("pairs\\nmakes\\tdouble\\npesos"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T5.js
new file mode 100644
index 000000000..89ca4c888
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A2_T5;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^[^p]/m.exec("pairs\nmakes\tdouble\npesos") and check results;
+*/
+
+__executed = /^[^p]/m.exec("pairs\nmakes\tdouble\npesos");
+
+__expected = ["m"];
+__expected.index = 6;
+__expected.input = "pairs\nmakes\tdouble\npesos";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^[^p]/m.exec("pairs\\nmakes\\tdouble\\npesos"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^[^p]/m.exec("pairs\\nmakes\\tdouble\\npesos"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^[^p]/m.exec("pairs\\nmakes\\tdouble\\npesos"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^[^p]/m.exec("pairs\\nmakes\\tdouble\\npesos"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T6.js
new file mode 100644
index 000000000..146a52a53
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T6.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A2_T6;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^ab/.exec("abcde") and check results;
+*/
+
+__executed = /^ab/.exec("abcde");
+
+__expected = ["ab"];
+__expected.index = 0;
+__expected.input = "abcde";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^ab/.exec("abcde"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^ab/.exec("abcde"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^ab/.exec("abcde"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^ab/.exec("abcde"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T7.js
new file mode 100644
index 000000000..e3ac16117
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T7.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A2_T7;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^..^e/.test("ab\ncde") and check results;
+*/
+
+__executed = /^..^e/.test("ab\ncde");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /^..^e/.test("ab\\ncde") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T8.js
new file mode 100644
index 000000000..d7dbaa82a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T8.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A2_T8;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^xxx/.test("yyyyy") and check results;
+*/
+
+__executed = /^xxx/.test("yyyyy");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /^xxx/.test("yyyyy") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T9.js
new file mode 100644
index 000000000..9e5e519da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A2_T9.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A2_T9;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: ^ evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /^\^+/.exec("^^^x") and check results;
+*/
+
+__executed = /^\^+/.exec("^^^x");
+
+__expected = ["^^^"];
+__expected.index = 0;
+__expected.input = "^^^x";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^\\^+/.exec("^^^x"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^\\^+/.exec("^^^x"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^\\^+/.exec("^^^x"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^\\^+/.exec("^^^x"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T1.js
new file mode 100644
index 000000000..d029543af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T1;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\bp/.exec("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /\bp/.exec("pilot\nsoviet robot\topenoffice");
+
+__expected = ["p"];
+__expected.index = 0;
+__expected.input = "pilot\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\bp/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\bp/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\bp/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\bp/.exec("pilot\\nsoviet robot\\topenoffice"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T10.js
new file mode 100644
index 000000000..e6cf00385
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T10.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T10;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\brobot\b/.exec("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /\brobot\b/.exec("pilot\nsoviet robot\topenoffice");
+
+__expected = ["robot"];
+__expected.index = 13;
+__expected.input = "pilot\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\brobot\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\brobot\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\brobot\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\brobot\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T11.js
new file mode 100644
index 000000000..a49e67093
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T11.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T11;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\b\w{5}\b/.exec("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /\b\w{5}\b/.exec("pilot\nsoviet robot\topenoffice");
+
+__expected = ["pilot"];
+__expected.index = 0;
+__expected.input = "pilot\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\b\\w{5}\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\b\\w{5}\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\b\\w{5}\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\b\\w{5}\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T12.js
new file mode 100644
index 000000000..c6881ce3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T12.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T12;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\bop/.exec("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /\bop/.exec("pilot\nsoviet robot\topenoffice");
+
+__expected = ["op"];
+__expected.index = 19;
+__expected.input = "pilot\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\bop/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\bop/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\bop/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\bop/.exec("pilot\\nsoviet robot\\topenoffice"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T13.js
new file mode 100644
index 000000000..f61a65845
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T13.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T13;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /op\b/.test("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /op\b/.test("pilot\nsoviet robot\topenoffice");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /op\\b/.test("pilot\\nsoviet robot\\topenoffice") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T14.js
new file mode 100644
index 000000000..b01ab8092
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T14.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T14;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /e\b/.exec("pilot\nsoviet robot\topenoffic\u0065") and check results;
+*/
+
+__executed = /e\b/.exec("pilot\nsoviet robot\topenoffic\u0065");
+
+__expected = ["e"];
+__expected.index = 28;
+__expected.input = "pilot\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /e\\b/.exec("pilot\\nsoviet robot\\topenoffic\\u0065"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /e\\b/.exec("pilot\\nsoviet robot\\topenoffic\\u0065"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /e\\b/.exec("pilot\\nsoviet robot\\topenoffic\\u0065"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /e\\b/.exec("pilot\\nsoviet robot\\topenoffic\\u0065"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T15.js
new file mode 100644
index 000000000..a38463df1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T15.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T15;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\be/.test("pilot\nsoviet robot\topenoffic\u0065") and check results;
+*/
+
+__executed = /\be/.test("pilot\nsoviet robot\topenoffic\u0065");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /\\be/.test("pilot\\nsoviet robot\\topenoffic\\u0065") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T2.js
new file mode 100644
index 000000000..c85d94b04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_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.
+
+/**
+* @name: S15.10.2.6_A3_T2;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /ot\b/.exec("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /ot\b/.exec("pilot\nsoviet robot\topenoffice");
+
+__expected = ["ot"];
+__expected.index = 3;
+__expected.input = "pilot\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /ot\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /ot\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /ot\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /ot\\b/.exec("pilot\\nsoviet robot\\topenoffice"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T3.js
new file mode 100644
index 000000000..245638b0b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T3;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\bot/.test("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /\bot/.test("pilot\nsoviet robot\topenoffice");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /\\bot/.test("pilot\\nsoviet robot\\topenoffice") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T4.js
new file mode 100644
index 000000000..a0f6ca0e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T4;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\bso/.exec("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /\bso/.exec("pilot\nsoviet robot\topenoffice");
+
+__expected = ["so"];
+__expected.index = 6;
+__expected.input = "pilot\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\bso/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\bso/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\bso/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\bso/.exec("pilot\\nsoviet robot\\topenoffice"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T5.js
new file mode 100644
index 000000000..ca5ccf5b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T5.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T5;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /so\b/.test("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /so\b/.test("pilot\nsoviet robot\topenoffice");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /so\\b/.test("pilot\\nsoviet robot\\topenoffice") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T6.js
new file mode 100644
index 000000000..15fe1508c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T6.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T6;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /[^o]t\b/.exec("pilOt\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /[^o]t\b/.exec("pilOt\nsoviet robot\topenoffice");
+
+__expected = ["Ot"];
+__expected.index = 3;
+__expected.input = "pilOt\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^o]t\\b/.exec("pilOt\\nsoviet robot\\topenoffice"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^o]t\\b/.exec("pilOt\\nsoviet robot\\topenoffice"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^o]t\\b/.exec("pilOt\\nsoviet robot\\topenoffice"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^o]t\\b/.exec("pilOt\\nsoviet robot\\topenoffice"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T7.js
new file mode 100644
index 000000000..baec5133d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T7.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T7;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /[^o]t\b/i.exec("pilOt\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /[^o]t\b/i.exec("pilOt\nsoviet robot\topenoffice");
+
+__expected = ["et"];
+__expected.index = 10;
+__expected.input = "pilOt\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^o]t\\b/i.exec("pilOt\\nsoviet robot\\topenoffice"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^o]t\\b/i.exec("pilOt\\nsoviet robot\\topenoffice"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^o]t\\b/i.exec("pilOt\\nsoviet robot\\topenoffice"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^o]t\\b/i.exec("pilOt\\nsoviet robot\\topenoffice"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T8.js
new file mode 100644
index 000000000..3a89708f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T8.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T8;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\bro/.exec("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /\bro/.exec("pilot\nsoviet robot\topenoffice");
+
+__expected = ["ro"];
+__expected.index = 13;
+__expected.input = "pilot\nsoviet robot\topenoffice";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\bro/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\bro/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\bro/.exec("pilot\\nsoviet robot\\topenoffice"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\bro/.exec("pilot\\nsoviet robot\\topenoffice"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T9.js
new file mode 100644
index 000000000..26e11ead8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A3_T9.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A3_T9;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \b evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /r\b/.exec("pilot\nsoviet robot\topenoffice") and check results;
+*/
+
+__executed = /r\b/.test("pilot\nsoviet robot\topenoffice");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /r\\b/.test("pilot\\nsoviet robot\\topenoffice") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T1.js
new file mode 100644
index 000000000..25eca2622
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A4_T1;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \B evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\Bevil\B/.exec("devils arise\tfor\nevil") and check results;
+*/
+
+__executed = /\Bevil\B/.exec("devils arise\tfor\nevil");
+
+__expected = ["evil"];
+__expected.index = 1;
+__expected.input = "devils arise\tfor\nevil";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\Bevil\\B/.exec("devils arise\\tfor\\nevil"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\Bevil\\B/.exec("devils arise\\tfor\\nevil"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\Bevil\\B/.exec("devils arise\\tfor\\nevil"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\Bevil\\B/.exec("devils arise\\tfor\\nevil"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T2.js
new file mode 100644
index 000000000..726bc5bd3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A4_T2;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \B evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /[f-z]e\B/.exec("devils arise\tfor\nevil") and check results;
+*/
+
+__executed = /[f-z]e\B/.exec("devils arise\tfor\nrevil");
+
+__expected = ["re"];
+__expected.index = 17;
+__expected.input = "devils arise\tfor\nrevil";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[f-z]e\\B/.exec("devils arise\\tfor\\nrevil"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[f-z]e\\B/.exec("devils arise\\tfor\\nrevil"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[f-z]e\\B/.exec("devils arise\\tfor\\nrevil"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[f-z]e\\B/.exec("devils arise\\tfor\\nrevil"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T3.js
new file mode 100644
index 000000000..aaf44e8a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A4_T3;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \B evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\Bo\B/.exec("devils arise\tfor\nevil") and check results;
+*/
+
+__executed = /\Bo\B/i.exec("devils arise\tfOr\nrevil");
+
+__expected = ["O"];
+__expected.index = 14;
+__expected.input = "devils arise\tfOr\nrevil";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\Bo\\B/i.exec("devils arise\\tfOr\\nrevil"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\Bo\\B/i.exec("devils arise\\tfOr\\nrevil"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\Bo\\B/i.exec("devils arise\\tfOr\\nrevil"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\Bo\\B/i.exec("devils arise\\tfOr\\nrevil"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T4.js
new file mode 100644
index 000000000..8ed0a2d10
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A4_T4;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \B evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\B\w\B/.exec("devils arise\tfor\nevil") and check results;
+*/
+
+__executed = /\B\w\B/.exec("devils arise\tfor\nrevil");
+
+__expected = ["e"];
+__expected.index = 1;
+__expected.input = "devils arise\tfor\nrevil";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\B\\w\\B/.exec("devils arise\\tfor\\nrevil"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\B\\w\\B/.exec("devils arise\\tfor\\nrevil"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\B\\w\\B/.exec("devils arise\\tfor\\nrevil"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\B\\w\\B/.exec("devils arise\\tfor\\nrevil"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T5.js
new file mode 100644
index 000000000..9604ac15e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A4_T5;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \B evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\w\B/.exec("devils arise\tfor\nevil") and check results;
+*/
+
+__executed = /\w\B/.exec("devils arise\tfor\nrevil");
+
+__expected = ["d"];
+__expected.index = 0;
+__expected.input = "devils arise\tfor\nrevil";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\w\\B/.exec("devils arise\\tfor\\nrevil"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\w\\B/.exec("devils arise\\tfor\\nrevil"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\w\\B/.exec("devils arise\\tfor\\nrevil"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\w\\B/.exec("devils arise\\tfor\\nrevil"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T6.js
new file mode 100644
index 000000000..fbb187d2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T6.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A4_T6;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \B evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\B\w/.exec("devils arise\tfor\nevil") and check results;
+*/
+
+__executed = /\B\w/.exec("devils arise\tfor\nrevil");
+
+__expected = ["e"];
+__expected.index = 1;
+__expected.input = "devils arise\tfor\nrevil";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\B\\w/.exec("devils arise\\tfor\\nrevil"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\B\\w/.exec("devils arise\\tfor\\nrevil"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\B\\w/.exec("devils arise\\tfor\\nrevil"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\B\\w/.exec("devils arise\\tfor\\nrevil"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T7.js
new file mode 100644
index 000000000..331991c0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T7.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A4_T7;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \B evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\B\[^z]{4}\B/.test("devil arise\tforzzx\nevils") and check results;
+*/
+
+__executed = /\B\[^z]{4}\B/.test("devil arise\tforzzx\nevils");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /\\B\\[^z]{4}\\B/.test("devil arise\\tforzzx\\nevils") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T8.js
new file mode 100644
index 000000000..32407b825
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A4_T8.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A4_T8;
+* @section: 15.10.2.6;
+* @assertion: The production Assertion :: \B evaluates by returning an internal AssertionTester closure that takes a State argument x and performs the ...;
+* @description: Execute /\B\w{4}\B/.exec("devil arise\tforzzx\nevils") and check results;
+*/
+
+__executed = /\B\w{4}\B/.exec("devil arise\tforzzx\nevils");
+
+__expected = ["orzz"];
+__expected.index = 13;
+__expected.input = "devil arise\tforzzx\nevils";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\B\\w{4}\\B/.exec("devil arise\\tforzzx\\nevils"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\B\\w{4}\\B/.exec("devil arise\\tforzzx\\nevils"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\B\\w{4}\\B/.exec("devil arise\\tforzzx\\nevils"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\B\\w{4}\\B/.exec("devil arise\\tforzzx\\nevils"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A5_T1.js
new file mode 100644
index 000000000..53c60a4a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A5_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A5_T1;
+* @section: 15.10.2.6;
+* @assertion: Since assertion evaluating do not change endIndex repetition of assertion does the same result;
+* @description: Execute /^^^^^^^robot$$$$/.exec("robot") and check results;
+*/
+
+__executed = /^^^^^^^robot$$$$/.exec("robot");
+
+__expected = ["robot"];
+__expected.index = 0;
+__expected.input = "robot";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^^^^^^^robot$$$$/.exec("robot"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^^^^^^^robot$$$$/.exec("robot"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^^^^^^^robot$$$$/.exec("robot"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^^^^^^^robot$$$$/.exec("robot"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A5_T2.js
new file mode 100644
index 000000000..0dc1d26fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A5_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.
+
+/**
+* @name: S15.10.2.6_A5_T2;
+* @section: 15.10.2.6;
+* @assertion: Since assertion evaluating do not change endIndex repetition of assertion does the same result;
+* @description: Execute /\B\B\B\B\B\Bbot\b\b\b\b\b\b\b/.exec("robot wall-e") and check results;
+*/
+
+__executed = /\B\B\B\B\B\Bbot\b\b\b\b\b\b\b/.exec("robot wall-e");
+
+__expected = ["bot"];
+__expected.index = 2;
+__expected.input = "robot wall-e";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\B\\B\\B\\B\\B\\Bbot\\b\\b\\b\\b\\b\\b\\b/.exec("robot wall-e"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\B\\B\\B\\B\\B\\Bbot\\b\\b\\b\\b\\b\\b\\b/.exec("robot wall-e"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\B\\B\\B\\B\\B\\Bbot\\b\\b\\b\\b\\b\\b\\b/.exec("robot wall-e"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\B\\B\\B\\B\\B\\Bbot\\b\\b\\b\\b\\b\\b\\b/.exec("robot wall-e"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T1.js
new file mode 100644
index 000000000..f9a73acdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A6_T1;
+* @section: 15.10.2.6;
+* @assertion: Assertions in combination;
+* @description: while asterix is non greedy it is run till the end because of dollar assertion;
+*/
+
+__executed = /^.*?$/.exec("Hello World");
+
+__expected = ["Hello World"];
+__expected.index = 0;
+__expected.input = "Hello World";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^.*?$/.exec("Hello World"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^.*?$/.exec("Hello World"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^.*?$/.exec("Hello World"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^.*?$/.exec("Hello World"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T2.js
new file mode 100644
index 000000000..f9a9d90d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A6_T2;
+* @section: 15.10.2.6;
+* @assertion: Assertions in combination;
+* @description: Execute /^.*?/.exec("Hello World") and check results;
+*/
+
+__executed = /^.*?/.exec("Hello World");
+
+__expected = [""];
+__expected.index = 0;
+__expected.input = "Hello World";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^.*?/.exec("Hello World"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^.*?/.exec("Hello World"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^.*?/.exec("Hello World"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^.*?/.exec("Hello World"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T3.js
new file mode 100644
index 000000000..d1a954400
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A6_T3;
+* @section: 15.10.2.6;
+* @assertion: Assertions in combination;
+* @description: while asterix is non greedy it is run till matches end or colon;
+*/
+
+__executed = /^.*?(:|$)/.exec("Hello: World");
+
+__expected = ["Hello:", ":"];
+__expected.index = 0;
+__expected.input = "Hello: World";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^.*?(:|$)/.exec("Hello: World"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^.*?(:|$)/.exec("Hello: World"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^.*?(:|$)/.exec("Hello: World"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^.*?(:|$)/.exec("Hello: World"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T4.js
new file mode 100644
index 000000000..5b7c4bdb7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.6_Assertion/S15.10.2.6_A6_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.6_A6_T4;
+* @section: 15.10.2.6;
+* @assertion: Assertions in combination;
+* @description: Execute /^.*(:|$)/.exec("Hello: World") and check results;
+*/
+
+__executed = /^.*(:|$)/.exec("Hello: World");
+
+__expected = ["Hello: World", ""];
+__expected.index = 0;
+__expected.input = "Hello: World";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^.*(:|$)/.exec("Hello: World"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^.*(:|$)/.exec("Hello: World"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^.*(:|$)/.exec("Hello: World"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^.*(:|$)/.exec("Hello: World"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T1.js
new file mode 100644
index 000000000..177d4cb6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T1;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /\d{2,4}/.exec("the answer is 42") and check results;
+*/
+
+__executed = /\d{2,4}/.exec("the answer is 42");
+
+__expected = ["42"];
+__expected.index = 14;
+__expected.input = "the answer is 42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\d{2,4}/.exec("the answer is 42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\d{2,4}/.exec("the answer is 42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\d{2,4}/.exec("the answer is 42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\d{2,4}/.exec("the answer is 42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T10.js
new file mode 100644
index 000000000..b79c945e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T10.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T10;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /b{0,93}c/.exec("aaabbbbcccddeeeefffff") and check results;
+*/
+
+__executed = /b{0,93}c/.exec("aaabbbbcccddeeeefffff");
+
+__expected = ["bbbbc"];
+__expected.index = 3;
+__expected.input = "aaabbbbcccddeeeefffff";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /b{0,93}c/.exec("aaabbbbcccddeeeefffff"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /b{0,93}c/.exec("aaabbbbcccddeeeefffff"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /b{0,93}c/.exec("aaabbbbcccddeeeefffff"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /b{0,93}c/.exec("aaabbbbcccddeeeefffff"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T11.js
new file mode 100644
index 000000000..49c5543c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T11.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T11;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /bx{0,93}c/.exec("aaabbbbcccddeeeefffff") and check results;
+*/
+
+__executed = /bx{0,93}c/.exec("aaabbbbcccddeeeefffff");
+
+__expected = ["bc"];
+__expected.index = 6;
+__expected.input = "aaabbbbcccddeeeefffff";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /bx{0,93}c/.exec("aaabbbbcccddeeeefffff"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /bx{0,93}c/.exec("aaabbbbcccddeeeefffff"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /bx{0,93}c/.exec("aaabbbbcccddeeeefffff"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /bx{0,93}c/.exec("aaabbbbcccddeeeefffff"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T12.js
new file mode 100644
index 000000000..9e4c23d14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T12.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T12;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /.{0,93}/.exec("weirwerdf") and check results;
+*/
+
+__executed = /.{0,93}/.exec("weirwerdf");
+
+__expected = ["weirwerdf"];
+__expected.index = 0;
+__expected.input = "weirwerdf";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /.{0,93}/.exec("weirwerdf"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /.{0,93}/.exec("weirwerdf"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /.{0,93}/.exec("weirwerdf"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /.{0,93}/.exec("weirwerdf"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T2.js
new file mode 100644
index 000000000..459790b39
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_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.
+
+/**
+* @name: S15.10.2.7_A1_T2;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /\d{2,4}/.test("the 7 movie") and check results;
+*/
+
+__executed = /\d{2,4}/.test("the 7 movie");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /\\d{2,4}/.test("the 7 movie") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T3.js
new file mode 100644
index 000000000..d6653092f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T3;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /\d{2,4}/.exec("the 20000 Leagues Under the Sea book") and check results;
+*/
+
+__executed = /\d{2,4}/.exec("the 20000 Leagues Under the Sea book");
+
+__expected = ["2000"];
+__expected.index = 4;
+__expected.input = "the 20000 Leagues Under the Sea book";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\d{2,4}/.exec("the 20000 Leagues Under the Sea book"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\d{2,4}/.exec("the 20000 Leagues Under the Sea book"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\d{2,4}/.exec("the 20000 Leagues Under the Sea book"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\d{2,4}/.exec("the 20000 Leagues Under the Sea book"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T4.js
new file mode 100644
index 000000000..0c4b19c6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T4;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /\d{2,4}/.exec("the Fahrenheit 451 book") and check results;
+*/
+
+__executed = /\d{2,4}/.exec("the Fahrenheit 451 book");
+
+__expected = ["451"];
+__expected.index = 15;
+__expected.input = "the Fahrenheit 451 book";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\d{2,4}/.exec("the Fahrenheit 451 book"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\d{2,4}/.exec("the Fahrenheit 451 book"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\d{2,4}/.exec("the Fahrenheit 451 book"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\d{2,4}/.exec("the Fahrenheit 451 book"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T5.js
new file mode 100644
index 000000000..25c3f88c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T5;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /\d{2,4}/.exec("the 1984 novel") and check results;
+*/
+
+__executed = /\d{2,4}/.exec("the 1984 novel");
+
+__expected = ["1984"];
+__expected.index = 4;
+__expected.input = "the 1984 novel";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\d{2,4}/.exec("the 1984 novel"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\d{2,4}/.exec("the 1984 novel"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\d{2,4}/.exec("the 1984 novel"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\d{2,4}/.exec("the 1984 novel"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T6.js
new file mode 100644
index 000000000..5cf5bb8f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T6.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T6;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /\d{2,4}/.exec("0a0\u0031\u0031b") and check results;
+*/
+
+__executed = /\d{2,4}/.exec("0a0\u0031\u0031b");
+
+__expected = ["011"];
+__expected.index = 2;
+__expected.input = "0a011b";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\d{2,4}/.exec("0a0\\u0031\\u0031b"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\d{2,4}/.exec("0a0\\u0031\\u0031b"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\d{2,4}/.exec("0a0\\u0031\\u0031b"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\d{2,4}/.exec("0a0\\u0031\\u0031b"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T7.js
new file mode 100644
index 000000000..de50230e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T7.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T7;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /\d{2,4}/.exec("0a0\u0031\u003122b") and check results;
+*/
+
+__executed = /\d{2,4}/.exec("0a0\u0031\u003122b");
+
+__expected = ["0112"];
+__expected.index = 2;
+__expected.input = "0a01122b";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\d{2,4}/.exec("0a0\\u0031\\u003122b"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\d{2,4}/.exec("0a0\\u0031\\u003122b"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\d{2,4}/.exec("0a0\\u0031\\u003122b"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\d{2,4}/.exec("0a0\\u0031\\u003122b"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T8.js
new file mode 100644
index 000000000..7a8152111
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T8.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T8;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /b{2,3}c/.exec("aaabbbbcccddeeeefffff") and check results;
+*/
+
+__executed = /b{2,3}c/.exec("aaabbbbcccddeeeefffff");
+
+__expected = ["bbbc"];
+__expected.index = 4;
+__expected.input = "aaabbbbcccddeeeefffff";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /b{2,3}c/.exec("aaabbbbcccddeeeefffff"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /b{2,3}c/.exec("aaabbbbcccddeeeefffff"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /b{2,3}c/.exec("aaabbbbcccddeeeefffff"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /b{2,3}c/.exec("aaabbbbcccddeeeefffff"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T9.js
new file mode 100644
index 000000000..582d599c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A1_T9.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A1_T9;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } evaluates as ...;
+* @description: Execute /b{42,93}c/.exec("aaabbbbcccddeeeefffff") and check results;
+*/
+
+__executed = /b{42,93}c/.test("aaabbbbcccddeeeefffff");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /b{42,93}c/.test("aaabbbbcccddeeeefffff") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T1.js
new file mode 100644
index 000000000..b1b71ac95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.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.
+
+/**
+* @name: S15.10.2.7_A2_T1;
+* @section: 15.10.2.7;
+* @assertion: i) The production QuantifierPrefix :: { DecimalDigits } evaluates...
+* ii) The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /\w{3}\d?/.exec("CE\uFFFFL\uFFDDbox127") and check results;
+*/
+
+__executed = /\w{3}\d?/.exec("CE\uFFFFL\uFFDDbox127");
+
+__expected = ["box1"];
+__expected.index = 5;
+__expected.input = "CE\uFFFFL\uFFDDbox127";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\w{3}\\d?/.exec("CE\\uFFFFL\\uFFDDbox127"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\w{3}\\d?/.exec("CE\\uFFFFL\\uFFDDbox127"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\w{3}\\d?/.exec("CE\\uFFFFL\\uFFDDbox127"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\w{3}\\d?/.exec("CE\\uFFFFL\\uFFDDbox127"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T2.js
new file mode 100644
index 000000000..34b1a2c75
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A2_T2;
+* @section: 15.10.2.7;
+* @assertion: i) The production QuantifierPrefix :: { DecimalDigits } evaluates...
+* ii) The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /\w{3}\d?/.exec("CELL\uFFDDbox127") and check results;
+*/
+
+__executed = /\w{3}\d?/.exec("CELL\uFFDDbox127");
+
+__expected = ["CEL"];
+__expected.index = 0;
+__expected.input = "CELL\uFFDDbox127";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\w{3}\\d?/.exec("CELL\\uFFDDbox127"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\w{3}\\d?/.exec("CELL\\uFFDDbox127"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\w{3}\\d?/.exec("CELL\\uFFDDbox127"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\w{3}\\d?/.exec("CELL\\uFFDDbox127"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T3.js
new file mode 100644
index 000000000..f30de5267
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A2_T3;
+* @section: 15.10.2.7;
+* @assertion: i) The production QuantifierPrefix :: { DecimalDigits } evaluates...
+* ii) The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /b{2}c/.exec("aaabbbbcccddeeeefffff") and check results;
+*/
+
+__executed = /b{2}c/.exec("aaabbbbcccddeeeefffff");
+
+__expected = ["bbc"];
+__expected.index = 5;
+__expected.input = "aaabbbbcccddeeeefffff";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /b{2}c/.exec("aaabbbbcccddeeeefffff"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /b{2}c/.exec("aaabbbbcccddeeeefffff"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /b{2}c/.exec("aaabbbbcccddeeeefffff"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /b{2}c/.exec("aaabbbbcccddeeeefffff"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T4.js
new file mode 100644
index 000000000..00c18fc16
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A2_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A2_T4;
+* @section: 15.10.2.7;
+* @assertion: i) The production QuantifierPrefix :: { DecimalDigits } evaluates...
+* ii) The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /b{8}c/.test("aaabbbbcccddeeeefffff") and check results;
+*/
+
+__executed = /b{8}/.test("aaabbbbcccddeeeefffff");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /b{8}/.test("aaabbbbcccddeeeefffff") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T1.js
new file mode 100644
index 000000000..3816efa8b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T1;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /\s+java\s+/.exec("language java\n") and check results;
+*/
+
+__executed = /\s+java\s+/.exec("language java\n");
+
+__expected = [" java\n"];
+__expected.index = 8;
+__expected.input = "language java\n";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\s+java\\s+/.exec("language java\\n"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\s+java\\s+/.exec("language java\\n"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\s+java\\s+/.exec("language java\\n"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\s+java\\s+/.exec("language java\\n"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T10.js
new file mode 100644
index 000000000..eee578944
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T10.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T10;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /o+/.test("abcdefg") and check results;
+*/
+
+__executed = /o+/.test("abcdefg");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /o+/.test("abcdefg") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T11.js
new file mode 100644
index 000000000..9f51c59a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T11.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T11;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /d+/.exec("abcdefg") and check results;
+*/
+
+__executed = /d+/.exec("abcdefg");
+
+__expected = ["d"];
+__expected.index = 3;
+__expected.input = "abcdefg";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /d+/.exec("abcdefg"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /d+/.exec("abcdefg"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /d+/.exec("abcdefg"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /d+/.exec("abcdefg"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T12.js
new file mode 100644
index 000000000..4fa113c4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T12.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T12;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /(b+)(b+)(b+)/.exec("abbbbbbbc") and check results;
+*/
+
+__executed = /(b+)(b+)(b+)/.exec("abbbbbbbc");
+
+__expected = ["bbbbbbb","bbbbb","b","b"];
+__expected.index = 1;
+__expected.input = "abbbbbbbc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(b+)(b+)(b+)/.exec("abbbbbbbc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(b+)(b+)(b+)/.exec("abbbbbbbc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(b+)(b+)(b+)/.exec("abbbbbbbc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(b+)(b+)(b+)/.exec("abbbbbbbc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T13.js
new file mode 100644
index 000000000..c186b929c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T13.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T13;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /(b+)(b*)/.exec("abbbbbbbc") and check results;
+*/
+
+__executed = /(b+)(b*)/.exec("abbbbbbbc");
+
+__expected = ["bbbbbbb","bbbbbbb",""];
+__expected.index = 1;
+__expected.input = "abbbbbbbc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(b+)(b*)/.exec("abbbbbbbc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(b+)(b*)/.exec("abbbbbbbc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(b+)(b*)/.exec("abbbbbbbc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(b+)(b*)/.exec("abbbbbbbc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T14.js
new file mode 100644
index 000000000..e35d07cb8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T14.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T14;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /b*b+/.exec("abbbbbbbc") and check results;
+*/
+
+__executed = /b*b+/.exec("abbbbbbbc");
+
+__expected = ["bbbbbbb"];
+__expected.index = 1;
+__expected.input = "abbbbbbbc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /b*b+/.exec("abbbbbbbc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /b*b+/.exec("abbbbbbbc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /b*b+/.exec("abbbbbbbc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /b*b+/.exec("abbbbbbbc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T2.js
new file mode 100644
index 000000000..0ee2fc785
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_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.
+
+/**
+* @name: S15.10.2.7_A3_T2;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /\s+java\s+/.exec("\t java object") and check results;
+*/
+
+__executed = /\s+java\s+/.exec("\t java object");
+
+__expected = ["\t java "];
+__expected.index = 0;
+__expected.input = "\t java object";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\s+java\\s+/.exec("\\t java object"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\s+java\\s+/.exec("\\t java object"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\s+java\\s+/.exec("\\t java object"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\s+java\\s+/.exec("\\t java object"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T3.js
new file mode 100644
index 000000000..eaf49a334
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T3;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /\s+java\s+/.test("\t javax package") and check results;
+*/
+
+__executed = /\s+java\s+/.test("\t javax package");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /\\s+java\\s+/.test("\\t javax package") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T4.js
new file mode 100644
index 000000000..3e34b9a3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T4;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /\s+java\s+/.test("java\n\nobject") and check results;
+*/
+
+__executed = /\s+java\s+/.test("java\n\nobject");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /\\s+java\\s+/.test("java\\n\\nobject") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T5.js
new file mode 100644
index 000000000..bec3470dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T5;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /[a-z]+\d+/.exec("x 2 ff 55 x2 as1 z12 abc12.0") and check results;
+*/
+
+__executed = /[a-z]+\d+/.exec("x 2 ff 55 x2 as1 z12 abc12.0");
+
+__expected = ["x2"];
+__expected.index = 10;
+__expected.input = "x 2 ff 55 x2 as1 z12 abc12.0";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[a-z]+\\d+/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[a-z]+\\d+/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[a-z]+\\d+/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[a-z]+\\d+/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T6.js
new file mode 100644
index 000000000..74f49fd22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T6.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T6;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /[a-z]+\d+/.exec("__abc123.0") and check results;
+*/
+
+__executed = /[a-z]+\d+/.exec("__abc123.0");
+
+__expected = ["abc123"];
+__expected.index = 2;
+__expected.input = "__abc123.0";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[a-z]+\\d+/.exec("__abc123.0"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[a-z]+\\d+/.exec("__abc123.0"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[a-z]+\\d+/.exec("__abc123.0"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[a-z]+\\d+/.exec("__abc123.0"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T7.js
new file mode 100644
index 000000000..37700a892
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T7.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T7;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /[a-z]+(\d+)/.exec("x 2 ff 55 x2 as1 z12 abc12.0") and check results;
+*/
+
+__executed = /[a-z]+(\d+)/.exec("x 2 ff 55 x2 as1 z12 abc12.0");
+
+__expected = ["x2","2"];
+__expected.index = 10;
+__expected.input = "x 2 ff 55 x2 as1 z12 abc12.0";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[a-z]+(\\d+)/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[a-z]+(\\d+)/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[a-z]+(\\d+)/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[a-z]+(\\d+)/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T8.js
new file mode 100644
index 000000000..aca3003b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T8.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T8;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /[a-z]+(\d+)/.exec("__abc123.0") and check results;
+*/
+
+__executed = /[a-z]+(\d+)/.exec("__abc123.0");
+
+__expected = ["abc123","123"];
+__expected.index = 2;
+__expected.input = "__abc123.0";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[a-z]+(\\d+)/.exec("__abc123.0"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[a-z]+(\\d+)/.exec("__abc123.0"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[a-z]+(\\d+)/.exec("__abc123.0"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[a-z]+(\\d+)/.exec("__abc123.0"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T9.js
new file mode 100644
index 000000000..d74018ea9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A3_T9.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A3_T9;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: + evaluates by returning the two results 1 and \infty;
+* @description: Execute /d+/.exec("abcdddddefg") and check results;
+*/
+
+__executed = /d+/.exec("abcdddddefg");
+
+__expected = ["ddddd"];
+__expected.index = 3;
+__expected.input = "abcdddddefg";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /d+/.exec("abcdddddefg"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /d+/.exec("abcdddddefg"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /d+/.exec("abcdddddefg"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /d+/.exec("abcdddddefg"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T1.js
new file mode 100644
index 000000000..38d39f5d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T1;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /[^"]* /.exec('"beast"-nickname') and check results;
+*/
+
+__executed = /[^"]*/.exec('"beast"-nickname');
+
+__expected = [""];
+__expected.index = 0;
+__expected.input = '"beast"-nickname';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^"]*/.exec(\'"beast"-nickname\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^"]*/.exec(\'"beast"-nickname\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^"]*/.exec(\'"beast"-nickname\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^"]*/.exec(\'"beast"-nickname\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T10.js
new file mode 100644
index 000000000..c3caeb3e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T10.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T10;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /d* /.exec('abcddddefg') and check results;
+*/
+
+__executed = /d*/.exec('abcddddefg');
+
+__expected = [""];
+__expected.index = 0;
+__expected.input = 'abcddddefg';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /d*/.exec(\'abcddddefg\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /d*/.exec(\'abcddddefg\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /d*/.exec(\'abcddddefg\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /d*/.exec(\'abcddddefg\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T11.js
new file mode 100644
index 000000000..15179ce34
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T11.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T11;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /cd* /.exec('abcddddefg') and check results;
+*/
+
+__executed = /cd*/.exec('abcddddefg');
+
+__expected = ["cdddd"];
+__expected.index = 2;
+__expected.input = 'abcddddefg';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /cd*/.exec(\'abcddddefg\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /cd*/.exec(\'abcddddefg\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /cd*/.exec(\'abcddddefg\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /cd*/.exec(\'abcddddefg\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T12.js
new file mode 100644
index 000000000..e49b5c1d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T12.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T12;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /cx*d/.exec('abcdefg') and check results;
+*/
+
+__executed = /cx*d/.exec('abcdefg');
+
+__expected = ["cd"];
+__expected.index = 2;
+__expected.input = 'abcdefg';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /cx*d/.exec(\'abcdefg\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /cx*d/.exec(\'abcdefg\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /cx*d/.exec(\'abcdefg\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /cx*d/.exec(\'abcdefg\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T13.js
new file mode 100644
index 000000000..351af1c02
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T13.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T13;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /(x*)(x+)/.exec('xxxxxxx') and check results;
+*/
+
+__executed = /(x*)(x+)/.exec('xxxxxxx');
+
+__expected = ["xxxxxxx","xxxxxx","x"];
+__expected.index = 0;
+__expected.input = 'xxxxxxx';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(x*)(x+)/.exec(\'xxxxxxx\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(x*)(x+)/.exec(\'xxxxxxx\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(x*)(x+)/.exec(\'xxxxxxx\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(x*)(x+)/.exec(\'xxxxxxx\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T14.js
new file mode 100644
index 000000000..1fac163e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T14.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T14;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /(\d*)(\d+)/.exec('1234567890') and check results;
+*/
+
+__executed = /(\d*)(\d+)/.exec('1234567890');
+
+__expected = ["1234567890","123456789","0"];
+__expected.index = 0;
+__expected.input = '1234567890';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(\\d*)(\\d+)/.exec(\'1234567890\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(\\d*)(\\d+)/.exec(\'1234567890\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(\\d*)(\\d+)/.exec(\'1234567890\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(\\d*)(\\d+)/.exec(\'1234567890\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T15.js
new file mode 100644
index 000000000..e620aca09
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T15.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T15;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /(\d*)\d(\d+)/.exec('1234567890') and check results;
+*/
+
+__executed = /(\d*)\d(\d+)/.exec('1234567890');
+
+__expected = ["1234567890","12345678","0"];
+__expected.index = 0;
+__expected.input = '1234567890';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(\\d*)\\d(\\d+)/.exec(\'1234567890\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(\\d*)\\d(\\d+)/.exec(\'1234567890\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(\\d*)\\d(\\d+)/.exec(\'1234567890\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(\\d*)\\d(\\d+)/.exec(\'1234567890\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T16.js
new file mode 100644
index 000000000..650d73cfc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T16.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T16;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /(x+)(x*)/.exec('xxxxxxx') and check results;
+*/
+
+__executed = /(x+)(x*)/.exec('xxxxxxx');
+
+__expected = ["xxxxxxx","xxxxxxx",""];
+__expected.index = 0;
+__expected.input = 'xxxxxxx';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(x+)(x*)/.exec(\'xxxxxxx\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(x+)(x*)/.exec(\'xxxxxxx\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(x+)(x*)/.exec(\'xxxxxxx\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(x+)(x*)/.exec(\'xxxxxxx\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T17.js
new file mode 100644
index 000000000..d0f5d6e62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T17.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T17;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /x*y+$/.exec('xxxxxxyyyyyy') and check results;
+*/
+
+__executed = /x*y+$/.exec('xxxxxxyyyyyy');
+
+__expected = ["xxxxxxyyyyyy"];
+__expected.index = 0;
+__expected.input = 'xxxxxxyyyyyy';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /x*y+$/.exec(\'xxxxxxyyyyyy\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /x*y+$/.exec(\'xxxxxxyyyyyy\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /x*y+$/.exec(\'xxxxxxyyyyyy\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /x*y+$/.exec(\'xxxxxxyyyyyy\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T18.js
new file mode 100644
index 000000000..42f905bce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T18.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T18;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /[\d]*[\s]*bc./.exec('abcdef') and check results;
+*/
+
+__executed = /[\d]*[\s]*bc./.exec('abcdef');
+
+__expected = ["bcd"];
+__expected.index = 1;
+__expected.input = 'abcdef';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[\\d]*[\\s]*bc./.exec(\'abcdef\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[\\d]*[\\s]*bc./.exec(\'abcdef\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[\\d]*[\\s]*bc./.exec(\'abcdef\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[\\d]*[\\s]*bc./.exec(\'abcdef\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T19.js
new file mode 100644
index 000000000..19aedcfe2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T19.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T19;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /bc..[\d]*[\s]* /.exec('abcdef') and check results;
+*/
+
+__executed = /bc..[\d]*[\s]*/.exec('abcdef');
+
+__expected = ["bcde"];
+__expected.index = 1;
+__expected.input = 'abcdef';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /bc..[\\d]*[\\s]*/.exec(\'abcdef\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /bc..[\\d]*[\\s]*/.exec(\'abcdef\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /bc..[\\d]*[\\s]*/.exec(\'abcdef\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /bc..[\\d]*[\\s]*/.exec(\'abcdef\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T2.js
new file mode 100644
index 000000000..45624e194
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T2;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /[^"]* /.exec('alice said: "don\'t"') and check results;
+*/
+
+__executed = /[^"]*/.exec('alice said: "don\'t"');
+
+__expected = ["alice said: "];
+__expected.index = 0;
+__expected.input = 'alice said: "don\'t"';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^"]*/.exec(\'alice said: "don\'t"\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^"]*/.exec(\'alice said: "don\'t"\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^"]*/.exec(\'alice said: "don\'t"\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^"]*/.exec(\'alice said: "don\'t"\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T20.js
new file mode 100644
index 000000000..7fc8b7253
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T20.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T20;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /.* /.exec('a1b2c3') and check results;
+*/
+
+__executed = /.*/.exec('a1b2c3');
+
+__expected = ["a1b2c3"];
+__expected.index = 0;
+__expected.input = 'a1b2c3';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /.*/.exec(\'a1b2c3\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /.*/.exec(\'a1b2c3\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /.*/.exec(\'a1b2c3\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /.*/.exec(\'a1b2c3\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T21.js
new file mode 100644
index 000000000..034896a1f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T21.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T21;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /[xyz]*1/.test('a0.b2.c3') and check results;
+*/
+
+__executed = /[xyz]*1/.test('a0.b2.c3');
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /[xyz]*1/.test(\'a0.b2.c3\') === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T3.js
new file mode 100644
index 000000000..471db3ec6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T3;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /[^"]* /.exec("before\'i\'start") and check results;
+*/
+
+__executed = /[^"]*/.exec("before\'i\'start");
+
+__expected = ["before\'i\'start"];
+__expected.index = 0;
+__expected.input = "before\'i\'start";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^"]*/.exec("before\'i\'start"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^"]*/.exec("before\'i\'start"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^"]*/.exec("before\'i\'start"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^"]*/.exec("before\'i\'start"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T4.js
new file mode 100644
index 000000000..6a698d8d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T4;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /[^"]* /.exec('alice \"sweep\": "don\'t"') and check results;
+*/
+
+__executed = /[^"]*/.exec('alice \"sweep\": "don\'t"');
+
+__expected = ["alice "];
+__expected.index = 0;
+__expected.input = 'alice \"sweep\": "don\'t"';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^"]*/.exec(\'alice \\"sweep\\": "don\'t"\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^"]*/.exec(\'alice \\"sweep\\": "don\'t"\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^"]*/.exec(\'alice \\"sweep\\": "don\'t"\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^"]*/.exec(\'alice \\"sweep\\": "don\'t"\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T5.js
new file mode 100644
index 000000000..96551fe5c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T5;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /[^"]* /.exec('alice \u0022sweep\u0022: "don\'t"') and check results;
+*/
+
+__executed = /[^"]*/.exec('alice \u0022sweep\u0022: "don\'t"');
+
+__expected = ["alice "];
+__expected.index = 0;
+__expected.input = 'alice "sweep": "don\'t"';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[^"]*/.exec(\'alice \\u0022sweep\\u0022: "don\'t"\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[^"]*/.exec(\'alice \\u0022sweep\\u0022: "don\'t"\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[^"]*/.exec(\'alice \\u0022sweep\\u0022: "don\'t"\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[^"]*/.exec(\'alice \\u0022sweep\\u0022: "don\'t"\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T6.js
new file mode 100644
index 000000000..8cc4bec68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T6.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T6;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /["'][^"']*["']/.exec('alice \u0022sweep\u0022: "don\'t"') and check results;
+*/
+
+__executed = /["'][^"']*["']/.exec('alice \u0022sweep\u0022: "don\'t"');
+
+__expected = ["\"sweep\""];
+__expected.index = 6;
+__expected.input = 'alice "sweep": "don\'t"';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /["\'][^"\']*["\']/.exec(\'alice \\u0022sweep\\u0022: "don\'t"\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /["\'][^"\']*["\']/.exec(\'alice \\u0022sweep\\u0022: "don\'t"\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /["\'][^"\']*["\']/.exec(\'alice \\u0022sweep\\u0022: "don\'t"\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /["\'][^"\']*["\']/.exec(\'alice \\u0022sweep\\u0022: "don\'t"\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T7.js
new file mode 100644
index 000000000..e88d1070d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T7.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T7;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /["'][^"']*["']/.exec('alice cries out: \'don\'t\'') and check results;
+*/
+
+__executed = /["'][^"']*["']/.exec('alice cries out: \'don\'t\'');
+
+__expected = ["\'don\'"];
+__expected.index = 17;
+__expected.input = 'alice cries out: \'don\'t\'';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /["\'][^"\']*["\']/.exec(\'alice cries out: \'don\'t\'\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /["\'][^"\']*["\']/.exec(\'alice cries out: \'don\'t\'\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /["\'][^"\']*["\']/.exec(\'alice cries out: \'don\'t\'\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /["\'][^"\']*["\']/.exec(\'alice cries out: \'don\'t\'\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T8.js
new file mode 100644
index 000000000..023e93570
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T8.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T8;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /["'][^"']*["']/.test('alice cries out: don\'t') and check results;
+*/
+
+__executed = /["'][^"']*["']/.test('alice cries out: don\'t');
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /["\'][^"\']*["\']/.test(\'alice cries out: don\'t\') === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T9.js
new file mode 100644
index 000000000..6a42bc727
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A4_T9.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A4_T9;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: * evaluates by returning the two results 0 and \infty;
+* @description: Execute /["'][^"']*["']/.exec('alice cries out:\"\"') and check results;
+*/
+
+__executed = /["'][^"']*["']/.exec('alice cries out:\"\"');
+
+__expected = ['\"\"'];
+__expected.index = 16;
+__expected.input = 'alice cries out:\"\"';
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /["\'][^"\']*["\']/.exec(\'alice cries out:\\"\\"\'); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /["\'][^"\']*["\']/.exec(\'alice cries out:\\"\\"\'); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /["\'][^"\']*["\']/.exec(\'alice cries out:\\"\\"\'); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /["\'][^"\']*["\']/.exec(\'alice cries out:\\"\\"\'); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T1.js
new file mode 100644
index 000000000..51927cd67
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T1;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /java(script)?/.exec("state: javascript is extension of ecma script") and check results;
+*/
+
+__executed = /java(script)?/.exec("state: javascript is extension of ecma script");
+
+__expected = ["javascript", "script"];
+__expected.index = 7;
+__expected.input = "state: javascript is extension of ecma script";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /java(script)?/.exec("state: javascript is extension of ecma script"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /java(script)?/.exec("state: javascript is extension of ecma script"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /java(script)?/.exec("state: javascript is extension of ecma script"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /java(script)?/.exec("state: javascript is extension of ecma script"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T10.js
new file mode 100644
index 000000000..9c928fc61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T10.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T10;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /ab?c?d?x?y?z/.exec("123az789") and check results;
+*/
+
+__executed = /ab?c?d?x?y?z/.exec("123az789");
+
+__expected = ["az"];
+__expected.index = 3;
+__expected.input = "123az789";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /ab?c?d?x?y?z/.exec("123az789"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /ab?c?d?x?y?z/.exec("123az789"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /ab?c?d?x?y?z/.exec("123az789"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /ab?c?d?x?y?z/.exec("123az789"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T11.js
new file mode 100644
index 000000000..c2b46213b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T11.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T11;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /\??\??\??\??\??/.exec("?????") and check results;
+*/
+
+__executed = /\??\??\??\??\??/.exec("?????");
+
+__expected = ["?????"];
+__expected.index = 0;
+__expected.input = "?????";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\??\\??\\??\\??\\??/.exec("?????"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\??\\??\\??\\??\\??/.exec("?????"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\??\\??\\??\\??\\??/.exec("?????"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\??\\??\\??\\??\\??/.exec("?????"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T12.js
new file mode 100644
index 000000000..e580ebba5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T12.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T12;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /.?.?.?.?.?.?.?/.exec("test") and check results;
+*/
+
+__executed = /.?.?.?.?.?.?.?/.exec("test");
+
+__expected = ["test"];
+__expected.index = 0;
+__expected.input = "test";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /.?.?.?.?.?.?.?/.exec("test"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /.?.?.?.?.?.?.?/.exec("test"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /.?.?.?.?.?.?.?/.exec("test"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /.?.?.?.?.?.?.?/.exec("test"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T2.js
new file mode 100644
index 000000000..26f61340c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_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.
+
+/**
+* @name: S15.10.2.7_A5_T2;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /java(script)?/.exec("state: java and javascript are vastly different") and check results;
+*/
+
+__executed = /java(script)?/.exec("state: java and javascript are vastly different");
+
+__expected = ["java", undefined];
+__expected.index = 7;
+__expected.input = "state: java and javascript are vastly different";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /java(script)?/.exec("state: java and javascript are vastly different"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /java(script)?/.exec("state: java and javascript are vastly different"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /java(script)?/.exec("state: java and javascript are vastly different"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /java(script)?/.exec("state: java and javascript are vastly different"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T3.js
new file mode 100644
index 000000000..854d4f369
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T3;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /java(script)?/.test("state: both Java and JavaScript used in web development") and check results;
+*/
+
+__executed = /java(script)?/.test("state: both Java and JavaScript used in web development");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /java(script)?/.test("state: both Java and JavaScript used in web development") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T4.js
new file mode 100644
index 000000000..962063854
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T4;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /cd?e/.exec("abcdef") and check results;
+*/
+
+__executed = /cd?e/.exec("abcdef");
+
+__expected = ["cde"];
+__expected.index = 2;
+__expected.input = "abcdef";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /cd?e/.exec("abcdef"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /cd?e/.exec("abcdef"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /cd?e/.exec("abcdef"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /cd?e/.exec("abcdef"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T5.js
new file mode 100644
index 000000000..7fcf817cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T5;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /cdx?e/.exec("abcdef") and check results;
+*/
+
+__executed = /cdx?e/.exec("abcdef");
+
+__expected = ["cde"];
+__expected.index = 2;
+__expected.input = "abcdef";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /cdx?e/.exec("abcdef"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /cdx?e/.exec("abcdef"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /cdx?e/.exec("abcdef"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /cdx?e/.exec("abcdef"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T6.js
new file mode 100644
index 000000000..dbf41bde4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T6.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T6;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /o?pqrst/.exec("pqrstuvw") and check results;
+*/
+
+__executed = /o?pqrst/.exec("pqrstuvw");
+
+__expected = ["pqrst"];
+__expected.index = 0;
+__expected.input = "pqrstuvw";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /o?pqrst/.exec("pqrstuvw"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /o?pqrst/.exec("pqrstuvw"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /o?pqrst/.exec("pqrstuvw"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /o?pqrst/.exec("pqrstuvw"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T7.js
new file mode 100644
index 000000000..33e387049
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T7.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T7;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /x?y?z?/.exec("abcd") and check results;
+*/
+
+__executed = /x?y?z?/.exec("abcd");
+
+__expected = [""];
+__expected.index = 0;
+__expected.input = "abcd";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /x?y?z?/.exec("abcd"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /x?y?z?/.exec("abcd"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /x?y?z?/.exec("abcd"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /x?y?z?/.exec("abcd"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T8.js
new file mode 100644
index 000000000..46991c2ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T8.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T8;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /x?ay?bz?c/.exec("abcd") and check results;
+*/
+
+__executed = /x?ay?bz?c/.exec("abcd");
+
+__expected = ["abc"];
+__expected.index = 0;
+__expected.input = "abcd";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /x?ay?bz?c/.exec("abcd"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /x?ay?bz?c/.exec("abcd"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /x?ay?bz?c/.exec("abcd"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /x?ay?bz?c/.exec("abcd"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T9.js
new file mode 100644
index 000000000..dce734b45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A5_T9.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A5_T9;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1;
+* @description: Execute /b?b?b?b/.exec("abbbbc") and check results;
+*/
+
+__executed = /b?b?b?b/.exec("abbbbc");
+
+__expected = ["bbbb"];
+__expected.index = 1;
+__expected.input = "abbbbc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /b?b?b?b/.exec("abbbbc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /b?b?b?b/.exec("abbbbc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /b?b?b?b/.exec("abbbbc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /b?b?b?b/.exec("abbbbc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T1.js
new file mode 100644
index 000000000..e40cfc495
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A6_T1;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows:
+* i) Let i be the MV of DecimalDigits
+* ii) Return the two results i and \infty;
+* @description: Execute /b{2,}c/.exec("aaabbbbcccddeeeefffff") and check results;
+*/
+
+__executed = /b{2,}c/.exec("aaabbbbcccddeeeefffff");
+
+__expected = ["bbbbc"];
+__expected.index = 3;
+__expected.input = "aaabbbbcccddeeeefffff";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /b{2,}c/.exec("aaabbbbcccddeeeefffff"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /b{2,}c/.exec("aaabbbbcccddeeeefffff"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /b{2,}c/.exec("aaabbbbcccddeeeefffff"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /b{2,}c/.exec("aaabbbbcccddeeeefffff"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T2.js
new file mode 100644
index 000000000..55a5bd119
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A6_T2;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows:
+* i) Let i be the MV of DecimalDigits
+* ii) Return the two results i and \infty;
+* @description: Execute /b{8,}c/.test("aaabbbbcccddeeeefffff") and check results;
+*/
+
+__executed = /b{8,}c/.test("aaabbbbcccddeeeefffff");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /b{8,}c/.test("aaabbbbcccddeeeefffff") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T3.js
new file mode 100644
index 000000000..b7a6fa1ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A6_T3;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows:
+* i) Let i be the MV of DecimalDigits
+* ii) Return the two results i and \infty;
+* @description: Execute /\d{1,}/.exec("wqe456646dsff") and check results;
+*/
+
+__executed = /\d{1,}/.exec("wqe456646dsff");
+
+__expected = ["456646"];
+__expected.index = 3;
+__expected.input = "wqe456646dsff";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\d{1,}/.exec("wqe456646dsff"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\d{1,}/.exec("wqe456646dsff"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\d{1,}/.exec("wqe456646dsff"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\d{1,}/.exec("wqe456646dsff"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T4.js
new file mode 100644
index 000000000..5dbc330cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T4.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A6_T4;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows:
+* i) Let i be the MV of DecimalDigits
+* ii) Return the two results i and \infty;
+* @description: Execute /(123){1,}/.exec("123123") and check results;
+*/
+
+__executed = /(123){1,}/.exec("123123");
+
+__expected = ["123123","123"];
+__expected.index = 0;
+__expected.input = "123123";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(123){1,}/.exec("123123"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(123){1,}/.exec("123123"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(123){1,}/.exec("123123"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(123){1,}/.exec("123123"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T5.js
new file mode 100644
index 000000000..e75f01f43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A6_T5;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows:
+* i) Let i be the MV of DecimalDigits
+* ii) Return the two results i and \infty;
+* @description: Execute /(123){1,}x\1/.exec("123123x123") and check results;
+*/
+
+__executed = /(123){1,}x\1/.exec("123123x123");
+
+__expected = ["123123x123","123"];
+__expected.index = 0;
+__expected.input = "123123x123";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(123){1,}x\\1/.exec("123123x123"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(123){1,}x\\1/.exec("123123x123"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(123){1,}x\\1\\/.exec("123123x123"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(123){1,}x\\1/.exec("123123x123"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T6.js
new file mode 100644
index 000000000..ebc6391f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.7_Quantifier/S15.10.2.7_A6_T6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.7_A6_T6;
+* @section: 15.10.2.7;
+* @assertion: The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows:
+* i) Let i be the MV of DecimalDigits
+* ii) Return the two results i and \infty;
+* @description: Execute /x{1,2}x{1,}/.exec("xxxxxxx") and check results;
+*/
+
+__executed = /x{1,2}x{1,}/.exec("xxxxxxx");
+
+__expected = ["xxxxxxx"];
+__expected.index = 0;
+__expected.input = "xxxxxxx";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /x{1,2}x{1,}/.exec("xxxxxxx"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /x{1,2}x{1,}/.exec("xxxxxxx"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /x{1,2}x{1,}/.exec("xxxxxxx"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /x{1,2}x{1,}/.exec("xxxxxxx"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T1.js
new file mode 100644
index 000000000..a6c2f68d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A1_T1;
+* @section: 15.10.2.8;
+* @assertion: The form (?= Disjunction ) specifies a zero-width positive lookahead.
+* In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel.
+* If Disjunction can match at the current position in several ways, only the first one is tried;
+* @description: Execute /(?=(a+))/.exec("baaabac") and check results;
+*/
+
+__executed = /(?=(a+))/.exec("baaabac");
+
+__expected = ["", "aaa"];
+__expected.index = 1;
+__expected.input = "baaabac";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(?=(a+))/.exec("baaabac"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(?=(a+))/.exec("baaabac"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(?=(a+))/.exec("baaabac"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(?=(a+))/.exec("baaabac"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T2.js
new file mode 100644
index 000000000..8087a8ecf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_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.
+
+/**
+* @name: S15.10.2.8_A1_T2;
+* @section: 15.10.2.8;
+* @assertion: The form (?= Disjunction ) specifies a zero-width positive lookahead.
+* In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel.
+* If Disjunction can match at the current position in several ways, only the first one is tried;
+* @description: Execute /(?=(a+))a*b\1/.exec("baaabac") and check results;
+*/
+
+__executed = /(?=(a+))a*b\1/.exec("baaabac");
+
+__expected = ["aba", "a"];
+__expected.index = 3;
+__expected.input = "baaabac";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(?=(a+))a*b\\1/.exec("baaabac"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(?=(a+))a*b\\1/.exec("baaabac"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(?=(a+))a*b\\1/.exec("baaabac"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(?=(a+))a*b\\1/.exec("baaabac"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T3.js
new file mode 100644
index 000000000..2441554fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A1_T3;
+* @section: 15.10.2.8;
+* @assertion: The form (?= Disjunction ) specifies a zero-width positive lookahead.
+* In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel.
+* If Disjunction can match at the current position in several ways, only the first one is tried;
+* @description: Execute /[Jj]ava([Ss]cript)?(?=\:)/.exec("just Javascript: the way af jedi") and check results;
+*/
+
+__executed = /[Jj]ava([Ss]cript)?(?=\:)/.exec("just Javascript: the way af jedi");
+
+__expected = ["Javascript", "script"];
+__expected.index = 5;
+__expected.input = "just Javascript: the way af jedi";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[Jj]ava([Ss]cript)?(?=\\:)/.exec("just Javascript: the way af jedi"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[Jj]ava([Ss]cript)?(?=\\:)/.exec("just Javascript: the way af jedi"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[Jj]ava([Ss]cript)?(?=\\:)/.exec("just Javascript: the way af jedi"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[Jj]ava([Ss]cript)?(?=\\:)/.exec("just Javascript: the way af jedi"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T4.js
new file mode 100644
index 000000000..c1fd78ce4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T4.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A1_T4;
+* @section: 15.10.2.8;
+* @assertion: The form (?= Disjunction ) specifies a zero-width positive lookahead.
+* In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel.
+* If Disjunction can match at the current position in several ways, only the first one is tried;
+* @description: Execute /[Jj]ava([Ss]cript)?(?=\:)/.exec("taste of java: the cookbook ") and check results;
+*/
+
+__executed = /[Jj]ava([Ss]cript)?(?=\:)/.exec("taste of java: the cookbook ");
+
+__expected = ["java", undefined];
+__expected.index = 9;
+__expected.input = "taste of java: the cookbook ";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[Jj]ava([Ss]cript)?(?=\\:)/.exec("taste of java: the cookbook "); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[Jj]ava([Ss]cript)?(?=\\:)/.exec("taste of java: the cookbook "); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[Jj]ava([Ss]cript)?(?=\\:)/.exec("taste of java: the cookbook "); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[Jj]ava([Ss]cript)?(?=\\:)/.exec("taste of java: the cookbook "); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T5.js
new file mode 100644
index 000000000..bd970be4f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A1_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A1_T5;
+* @section: 15.10.2.8;
+* @assertion: The form (?= Disjunction ) specifies a zero-width positive lookahead.
+* In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel.
+* If Disjunction can match at the current position in several ways, only the first one is tried;
+* @description: Execute /[Jj]ava([Ss]cript)?(?=\:)/.test("rhino is JavaScript engine") and check results;
+*/
+
+__executed = /[Jj]ava([Ss]cript)?(?=\:)/.test("rhino is JavaScript engine");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /[Jj]ava([Ss]cript)?(?=\\:)/.test("rhino is JavaScript engine") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T1.js
new file mode 100644
index 000000000..e430b8b0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A2_T1;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac") and check results;
+*/
+
+__executed = /(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac");
+
+__expected = ["baaabaac", "ba", undefined, "abaac"];
+__expected.index = 0;
+__expected.input = "baaabaac";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(.*?)a(?!(a+)b\\2c)\\2(.*)/.exec("baaabaac"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(.*?)a(?!(a+)b\\2c)\\2(.*)/.exec("baaabaac"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(.*?)a(?!(a+)b\\2c)\\2(.*)/.exec("baaabaac"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(.*?)a(?!(a+)b\\2c)\\2(.*)/.exec("baaabaac"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T10.js
new file mode 100644
index 000000000..ad8bf5361
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T10.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A2_T10;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /(?!a|b)|c/.exec("bc") and check results;
+*/
+
+__executed = /(?!a|b)|c/.exec("bc");
+
+__expected = [""];
+__expected.index = 1;
+__expected.input = "bc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(?!a|b)|c/.exec("bc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(?!a|b)|c/.exec("bc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(?!a|b)|c/.exec("bc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(?!a|b)|c/.exec("bc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T11.js
new file mode 100644
index 000000000..e2d87b7b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T11.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A2_T11;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /(?!a|b)|c/.exec("d") and check results;
+*/
+
+__executed = /(?!a|b)|c/.exec("d");
+
+__expected = [""];
+__expected.index = 0;
+__expected.input = "d";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(?!a|b)|c/.exec("d"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(?!a|b)|c/.exec("d"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(?!a|b)|c/.exec("d"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(?!a|b)|c/.exec("d"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T2.js
new file mode 100644
index 000000000..810474077
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_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.
+
+/**
+* @name: S15.10.2.8_A2_T2;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /Java(?!Script)([A-Z]\w*)/.exec("using of JavaBeans technology") and check results;
+*/
+
+__executed = /Java(?!Script)([A-Z]\w*)/.exec("using of JavaBeans technology");
+
+__expected = ["JavaBeans", "Beans"];
+__expected.index = 9;
+__expected.input = "using of JavaBeans technology";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /Java(?!Script)([A-Z]\\w*)/.exec("using of JavaBeans technology"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /Java(?!Script)([A-Z]\\w*)/.exec("using of JavaBeans technology"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /Java(?!Script)([A-Z]\\w*)/.exec("using of JavaBeans technology"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /Java(?!Script)([A-Z]\\w*)/.exec("using of JavaBeans technology"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T3.js
new file mode 100644
index 000000000..368c07af9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.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.
+
+/**
+* @name: S15.10.2.8_A2_T3;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /Java(?!Script)([A-Z]\w*)/.test("using of Java language") and check results;
+*/
+
+__executed = /Java(?!Script)([A-Z]\w*)/.test("using of Java language");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /Java(?!Script)([A-Z]\\w*)/.test("using of Java language") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T4.js
new file mode 100644
index 000000000..366389c63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A2_T4;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /Java(?!Script)([A-Z]\w*)/.test("i'm a JavaScripter ") and check results;
+*/
+
+__executed = /Java(?!Script)([A-Z]\w*)/.test("i'm a JavaScripter ");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /Java(?!Script)([A-Z]\\w*)/.test("i\'m a JavaScripter ") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T5.js
new file mode 100644
index 000000000..3aaf8c737
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A2_T5;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /Java(?!Script)([A-Z]\w*)/.exec("JavaScr oops ipt ") and check results;
+*/
+
+__executed = /Java(?!Script)([A-Z]\w*)/.exec("JavaScr oops ipt ");
+
+__expected = ["JavaScr", "Scr"];
+__expected.index = 0;
+__expected.input = "JavaScr oops ipt ";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /Java(?!Script)([A-Z]\\w*)/.exec("JavaScr oops ipt "); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /Java(?!Script)([A-Z]\\w*)/.exec("JavaScr oops ipt "); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /Java(?!Script)([A-Z]\\w*)/.exec("JavaScr oops ipt "); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /Java(?!Script)([A-Z]\\w*)/.exec("JavaScr oops ipt "); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T6.js
new file mode 100644
index 000000000..dbb258b66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A2_T6;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /(\.(?!com|org)|\/)/.exec("ah.info") and check results;
+*/
+
+__executed = /(\.(?!com|org)|\/)/.exec("ah.info");
+
+__expected = ['.', '.'];
+__expected.index = 2;
+__expected.input = "ah.info";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(\\.(?!com|org)|\\/)/.exec("ah.info"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(\\.(?!com|org)|\\/)/.exec("ah.info"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(\\.(?!com|org)|\\/)/.exec("ah.info"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(\\.(?!com|org)|\\/)/.exec("ah.info"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T7.js
new file mode 100644
index 000000000..d7298e99d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T7.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A2_T7;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /(\.(?!com|org)|\/)/.exec("ah/info") and check results;
+*/
+
+__executed = /(\.(?!com|org)|\/)/.exec("ah/info");
+
+__expected = ['/', '/'];
+__expected.index = 2;
+__expected.input = "ah/info";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(\\.(?!com|org)|\\/)/.exec("ah/info"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(\\.(?!com|org)|\\/)/.exec("ah/info"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(\\.(?!com|org)|\\/)/.exec("ah/info"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(\\.(?!com|org)|\\/)/.exec("ah/info"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T8.js
new file mode 100644
index 000000000..d35180ef8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A2_T8;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /(\.(?!com|org)|\/)/.test("ah.com") and check results;
+*/
+
+__executed = /(\.(?!com|org)|\/)/.test("ah.com");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /(\\.(?!com|org)|\\/)/.test("ah.com") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T9.js
new file mode 100644
index 000000000..b02a88aea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A2_T9.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A2_T9;
+* @section: 15.10.2.8;
+* @assertion: The form (?! Disjunction ) specifies a zero-width negative lookahead.
+* In order for it to succeed, the pattern inside Disjunction must fail to match at the current position.
+* The current position is not advanced before matching the sequel;
+* @description: Execute /(?!a|b)|c/.exec("") and check results;
+*/
+
+__executed = /(?!a|b)|c/.exec("");
+
+__expected = [""];
+__expected.index = 0;
+__expected.input = "";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(?!a|b)|c/.exec(""); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(?!a|b)|c/.exec(""); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(?!a|b)|c/.exec(""); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(?!a|b)|c/.exec(""); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T1.js
new file mode 100644
index 000000000..93d875924
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T1.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T1;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.exec("Learning javaScript is funny, really") and check results;
+*/
+
+__executed = /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.exec("Learning javaScript is funny, really");
+
+__expected = ["javaScript is funny","javaScript","Script","funny"];
+__expected.index = 9;
+__expected.input = "Learning javaScript is funny, really";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /([Jj]ava([Ss]cript)?)\\sis\\s(fun\\w*)/.exec("Learning javaScript is funny, really"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /([Jj]ava([Ss]cript)?)\\sis\\s(fun\\w*)/.exec("Learning javaScript is funny, really"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /([Jj]ava([Ss]cript)?)\\sis\\s(fun\\w*)/.exec("Learning javaScript is funny, really"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /([Jj]ava([Ss]cript)?)\\sis\\s(fun\\w*)/.exec("Learning javaScript is funny, really"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T10.js
new file mode 100644
index 000000000..a276df8ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T10.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T10;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(\d{3})(\d{3})\1\2/.exec("123456123456") and check results;
+*/
+
+__executed = /(\d{3})(\d{3})\1\2/.exec("123456123456");
+
+__expected = ["123456123456","123","456"];
+__expected.index = 0;
+__expected.input = "123456123456";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(\\d{3})(\\d{3})\\1\\2/.exec("123456123456"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(\\d{3})(\\d{3})\\1\\2/.exec("123456123456"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(\\d{3})(\\d{3})\\1\\2/.exec("123456123456"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(\\d{3})(\\d{3})\\1\\2/.exec("123456123456"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T11.js
new file mode 100644
index 000000000..e05083469
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T11.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T11;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /a(..(..)..)/.exec("abcdefgh") and check results;
+*/
+
+__executed = /a(..(..)..)/.exec("abcdefgh");
+
+__expected = ["abcdefg","bcdefg","de"];
+__expected.index = 0;
+__expected.input = "abcdefgh";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a(..(..)..)/.exec("abcdefgh"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a(..(..)..)/.exec("abcdefgh"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a(..(..)..)/.exec("abcdefgh"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a(..(..)..)/.exec("abcdefgh"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T12.js
new file mode 100644
index 000000000..3303d55c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T12.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T12;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(a(b(c)))(d(e(f)))/.exec("xabcdefg") and check results;
+*/
+
+__executed = /(a(b(c)))(d(e(f)))/.exec("xabcdefg");
+
+__expected = ["abcdef","abc","bc","c","def","ef","f"];
+__expected.index = 1;
+__expected.input = "xabcdefg";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(a(b(c)))(d(e(f)))/.exec("xabcdefg"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(a(b(c)))(d(e(f)))/.exec("xabcdefg"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(a(b(c)))(d(e(f)))/.exec("xabcdefg"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(a(b(c)))(d(e(f)))/.exec("xabcdefg"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T13.js
new file mode 100644
index 000000000..fd42619fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T13.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T13;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(a(b(c)))(d(e(f)))\2\5/.exec("xabcdefbcefg") and check results;
+*/
+
+__executed = /(a(b(c)))(d(e(f)))\2\5/.exec("xabcdefbcefg");
+
+__expected = ["abcdefbcef","abc","bc","c","def","ef","f"];
+__expected.index = 1;
+__expected.input = "xabcdefbcefg";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(a(b(c)))(d(e(f)))\\2\\5/.exec("xabcdefbcefg"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(a(b(c)))(d(e(f)))\\2\\5/.exec("xabcdefbcefg"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(a(b(c)))(d(e(f)))\\2\\5/.exec("xabcdefbcefg"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(a(b(c)))(d(e(f)))\\2\\5/.exec("xabcdefbcefg"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T14.js
new file mode 100644
index 000000000..750320073
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T14.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T14;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /a(.?)b\1c\1d\1/.exec("abcd") and check results;
+*/
+
+__executed = /a(.?)b\1c\1d\1/.exec("abcd");
+
+__expected = ["abcd",""];
+__expected.index = 0;
+__expected.input = "abcd";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a(.?)b\\1c\\1d\\1/.exec("abcd"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a(.?)b\\1c\\1d\\1/.exec("abcd"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a(.?)b\\1c\\1d\\1/.exec("abcd"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a(.?)b\\1c\\1d\\1/.exec("abcd"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T15.js
new file mode 100644
index 000000000..c7c1766f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T15.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T15;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: see bug http:bugzilla.mozilla.org/show_bug.cgi?id=119909;
+*/
+
+__strOriginal = "hello";
+__openParen = '(';
+__closeParen = ')';
+__pattern = '';
+ numParens = 200;
+
+for (var i=0; i<numParens; i++)
+ __pattern += __openParen;
+
+__pattern += __strOriginal;
+
+for (i=0; i<numParens; i++)
+ __pattern += __closeParen;
+
+__re = new RegExp(__pattern);
+
+__executed = __re.exec(__strOriginal);
+
+__expected = [];
+for (var i=0; i<=numParens; i++)
+ __expected.push(__strOriginal);
+__expected.index = 0;
+__expected.input = __strOriginal;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = new RegExp(__pattern); __executed = __re.exec(__strOriginal); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = new RegExp(__pattern); __executed = __re.exec(__strOriginal); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = new RegExp(__pattern); __executed = __re.exec(__strOriginal); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = new RegExp(__pattern); __executed = __re.exec(__strOriginal); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T16.js
new file mode 100644
index 000000000..87fdf2654
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T16.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T16;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: see bug http:bugzilla.mozilla.org/show_bug.cgi?id=119909;
+*/
+
+__strOriginal = "hello";
+__openParen = '(?:';
+__closeParen = ')';
+__pattern = '';
+ numParens = 200;
+
+for (var i=0; i<numParens; i++)
+ __pattern += __openParen;
+
+__pattern += __strOriginal;
+
+for (i=0; i<numParens; i++)
+ __pattern += __closeParen;
+
+__re = new RegExp(__pattern);
+
+__executed = __re.exec(__strOriginal);
+
+__expected = [__strOriginal];
+__expected.index = 0;
+__expected.input = __strOriginal;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = new RegExp(__pattern); __executed = __re.exec(__strOriginal); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = new RegExp(__pattern); __executed = __re.exec(__strOriginal); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = new RegExp(__pattern); __executed = __re.exec(__strOriginal); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = new RegExp(__pattern); __executed = __re.exec(__strOriginal); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T17.js
new file mode 100644
index 000000000..8d006263b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T17.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T17;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: see bug http:bugzilla.mozilla.org/show_bug.cgi?id=169497;
+*/
+
+__body="";
+__body += '<body onXXX="alert(event.type);">\n';
+__body += '<p>Kibology for all<\/p>\n';
+__body += '<p>All for Kibology<\/p>\n';
+__body += '<\/body>';
+
+__html="";
+__html += '<html>\n';
+__html += __body;
+__html += '\n<\/html>';
+
+__executed = /<body.*>((.*\n?)*?)<\/body>/i.exec(__html);
+
+__expected = [__body, '\n<p>Kibology for all</p>\n<p>All for Kibology</p>\n', '<p>All for Kibology</p>\n'];
+__expected.index = 7;
+__expected.input = __html;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /<body.*>((.*\\n?)*?)<\\/body>/i.exec(__html); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /<body.*>((.*\\n?)*?)<\\/body>/i.exec(__html); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /<body.*>((.*\\n?)*?)<\\/body>/i.exec(__html); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /<body.*>((.*\\n?)*?)<\\/body>/i.exec(__html); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T18.js
new file mode 100644
index 000000000..3de0ee20e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T18.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T18;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: see bug http:bugzilla.mozilla.org/show_bug.cgi?id=169534;
+*/
+
+__replaced = "To sign up click |here|https:www.xxxx.org/subscribe.htm|".replace(/(\|)([\w\x81-\xff ]*)(\|)([\/a-z][\w:\/\.]*\.[a-z]{3,4})(\|)/ig, '<a href="$4">$2</a>');
+
+__expected = 'To sign up click <a href="https:www.xxxx.org/subscribe.htm">here</a>';
+
+//CHECK#1
+if (__replaced !== __expected) {
+ $ERROR('#1: __replaced = "To sign up click |here|https:www.xxxx.org/subscribe.htm|".replace(/(\\|)([\\w\\x81-\\xff ]*)(\\|)([\\/a-z][\\w:\\/\\.]*\\.[a-z]{3,4})(\\|)/ig, \'<a href="$4">$2</a>\'); __replaced === ' + __expected + '. Actual: ' + __replaced);
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T19.js
new file mode 100644
index 000000000..26c4b60df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T19.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T19;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /([\S]+([ \t]+[\S]+)*)[ \t]*=[ \t]*[\S]+/.exec("Course_Creator = Test") and check results;
+*/
+
+__executed = /([\S]+([ \t]+[\S]+)*)[ \t]*=[ \t]*[\S]+/.exec("Course_Creator = Test");
+
+__expected = ["Course_Creator = Test","Course_Creator",undefined];
+__expected.index = 0;
+__expected.input = "Course_Creator = Test";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /([\\S]+([ \\t]+[\\S]+)*)[ \\t]*=[ \\t]*[\\S]+/.exec("Course_Creator = Test"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /([\\S]+([ \\t]+[\\S]+)*)[ \\t]*=[ \\t]*[\\S]+/.exec("Course_Creator = Test"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /([\\S]+([ \\t]+[\\S]+)*)[ \\t]*=[ \\t]*[\\S]+/.exec("Course_Creator = Test"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /([\\S]+([ \\t]+[\\S]+)*)[ \\t]*=[ \\t]*[\\S]+/.exec("Course_Creator = Test"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T2.js
new file mode 100644
index 000000000..b160cde2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T2;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.exec("Developing with Java is fun, try it") and check results;
+*/
+
+__executed = /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.exec("Developing with Java is fun, try it");
+
+__expected = ["Java is fun","Java",undefined,"fun"];
+__expected.index = 16;
+__expected.input = "Developing with Java is fun, try it";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /([Jj]ava([Ss]cript)?)\\sis\\s(fun\\w*)/.exec("Developing with Java is fun, try it"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /([Jj]ava([Ss]cript)?)\\sis\\s(fun\\w*)/.exec("Developing with Java is fun, try it"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /([Jj]ava([Ss]cript)?)\\sis\\s(fun\\w*)/.exec("Developing with Java is fun, try it"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /([Jj]ava([Ss]cript)?)\\sis\\s(fun\\w*)/.exec("Developing with Java is fun, try it"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T20.js
new file mode 100644
index 000000000..b56b3fa7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T20.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T20;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /^(A)?(A.*)$/.exec("AAA") and check results;
+*/
+
+__executed = /^(A)?(A.*)$/.exec("AAA");
+
+__expected = ["AAA","A","AA"];
+__expected.index = 0;
+__expected.input = "AAA";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^(A)?(A.*)$/.exec("AAA"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^(A)?(A.*)$/.exec("AAA"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^(A)?(A.*)$/.exec("AAA"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^(A)?(A.*)$/.exec("AAA"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T21.js
new file mode 100644
index 000000000..d56face32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T21.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T21;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /^(A)?(A.*)$/.exec("AA") and check results;
+*/
+
+__executed = /^(A)?(A.*)$/.exec("AA");
+
+__expected = ["AA","A","A"];
+__expected.index = 0;
+__expected.input = "AA";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^(A)?(A.*)$/.exec("AA"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^(A)?(A.*)$/.exec("AA"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^(A)?(A.*)$/.exec("AA"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^(A)?(A.*)$/.exec("AA"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T22.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T22.js
new file mode 100644
index 000000000..0dde3371a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T22.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T22;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /^(A)?(A.*)$/.exec("A") and check results;
+*/
+
+__executed = /^(A)?(A.*)$/.exec("A");
+
+__expected = ["A",undefined,"A"];
+__expected.index = 0;
+__expected.input = "A";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /^(A)?(A.*)$/.exec("A"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /^(A)?(A.*)$/.exec("A"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /^(A)?(A.*)$/.exec("A"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /^(A)?(A.*)$/.exec("A"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T23.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T23.js
new file mode 100644
index 000000000..e4cdae81c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T23.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T23;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(A)?(A.*)/.exec("zxcasd;fl\\\ ^AAAaaAAaaaf;lrlrzs") and check results;
+*/
+
+__string = "zxcasd;fl\\\ ^AAAaaAAaaaf;lrlrzs";
+
+__executed = /(A)?(A.*)/.exec(__string);
+
+__expected = ["AAAaaAAaaaf;lrlrzs","A","AAaaAAaaaf;lrlrzs"];
+__expected.index = 13;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "zxcasd;fl\\\ ^AAAaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "zxcasd;fl\\\ ^AAAaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "zxcasd;fl\\\ ^AAAaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "zxcasd;fl\\\ ^AAAaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T24.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T24.js
new file mode 100644
index 000000000..0eec3eff1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T24.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T24;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(A)?(A.*)/.exec("zxcasd;fl\\\ ^AAaaAAaaaf;lrlrzs") and check results;
+*/
+
+__string = "zxcasd;fl\\\ ^AAaaAAaaaf;lrlrzs";
+
+__executed = /(A)?(A.*)/.exec(__string);
+
+__expected = ["AAaaAAaaaf;lrlrzs","A","AaaAAaaaf;lrlrzs"];
+__expected.index = 13;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "zxcasd;fl\\\ ^AAaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "zxcasd;fl\\\ ^AAaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "zxcasd;fl\\\ ^AAaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "zxcasd;fl\\\ ^AAaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T25.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T25.js
new file mode 100644
index 000000000..384eda590
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T25.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T25;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(A)?(A.*)/.exec("zxcasd;fl\\\ ^AaaAAaaaf;lrlrzs") and check results;
+*/
+
+__string = "zxcasd;fl\\\ ^AaaAAaaaf;lrlrzs";
+
+__executed = /(A)?(A.*)/.exec(__string);
+
+__expected = ["AaaAAaaaf;lrlrzs",undefined,"AaaAAaaaf;lrlrzs"];
+__expected.index = 13;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "zxcasd;fl\\\ ^AaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "zxcasd;fl\\\ ^AaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "zxcasd;fl\\\ ^AaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "zxcasd;fl\\\ ^AaaAAaaaf;lrlrzs"; __executed = /(A)?(A.*)/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T26.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T26.js
new file mode 100644
index 000000000..051d7dd47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T26.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T26;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(a)?a/.exec("a") and check results;
+*/
+
+__string = "a";
+
+__executed = /(a)?a/.exec(__string);
+
+__expected = ["a",undefined];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "a"; __executed = /(a)?a/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "a"; __executed = /(a)?a/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "a"; __executed = /(a)?a/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "a"; __executed = /(a)?a/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T27.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T27.js
new file mode 100644
index 000000000..f051ad939
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T27.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T27;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /a|(b)/.exec("a") and check results;
+*/
+
+__string = "a";
+
+__executed = /a|(b)/.exec(__string);
+
+__expected = ["a",undefined];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "a"; __executed = /a|(b)/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "a"; __executed = /a|(b)/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "a"; __executed = /a|(b)/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "a"; __executed = /a|(b)/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T28.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T28.js
new file mode 100644
index 000000000..4a785afad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T28.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T28;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(a)?(a)/.exec("a") and check results;
+*/
+
+__string = "a";
+
+__executed = /(a)?(a)/.exec(__string);
+
+__expected = ['a', undefined, 'a'];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "a"; __executed = /(a)?(a)/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "a"; __executed = /(a)?(a)/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "a"; __executed = /(a)?(a)/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "a"; __executed = /(a)?(a)/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T29.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T29.js
new file mode 100644
index 000000000..d316dd43e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T29.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T29;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353;
+*/
+
+__string = "a";
+
+__executed = /^([a-z]+)*[a-z]$/.exec(__string);
+
+__expected = ['a', undefined];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "a"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "a"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "a"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "a"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T3.js
new file mode 100644
index 000000000..be5d9f5b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T3;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.test("Developing with JavaScript is dangerous, do not try it without assistance") and check results;
+*/
+
+__executed = /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.test("Developing with JavaScript is dangerous, do not try it without assistance");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /([Jj]ava([Ss]cript)?)\\sis\\s(fun\\w*)/.test("Developing with JavaScript is dangerous, do not try it without assistance") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T30.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T30.js
new file mode 100644
index 000000000..4a94974a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T30.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T30;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353;
+*/
+
+__string = "ab";
+
+__executed = /^([a-z]+)*[a-z]$/.exec(__string);
+
+__expected = ['ab', "a"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "ab"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "ab"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "ab"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "ab"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T31.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T31.js
new file mode 100644
index 000000000..827f3a036
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T31.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T31;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353;
+*/
+
+__string = "abc";
+
+__executed = /^([a-z]+)*[a-z]$/.exec(__string);
+
+__expected = ['abc', "ab"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "abc"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "abc"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "abc"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "abc"; __executed = /^([a-z]+)*[a-z]$/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T32.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T32.js
new file mode 100644
index 000000000..f6be4b9d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T32.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T32;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353;
+*/
+
+__string = "www.netscape.com";
+
+__executed = /^(([a-z]+)*[a-z]\.)+[a-z]{2,}$/.exec(__string);
+
+__expected = ['www.netscape.com', 'netscape.', 'netscap'];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "www.netscape.com"; __executed = /^(([a-z]+)*[a-z]\\.)+[a-z]{2,}$/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "www.netscape.com"; __executed = /^(([a-z]+)*[a-z]\\.)+[a-z]{2,}$/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "www.netscape.com"; __executed = /^(([a-z]+)*[a-z]\\.)+[a-z]{2,}$/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "www.netscape.com"; __executed = /^(([a-z]+)*[a-z]\\.)+[a-z]{2,}$/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T33.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T33.js
new file mode 100644
index 000000000..01ce303a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T33.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T33;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353;
+*/
+
+__string = "www.netscape.com";
+
+__executed = /^(([a-z]+)*([a-z])\.)+[a-z]{2,}$/.exec(__string);
+
+__expected = ['www.netscape.com', 'netscape.', 'netscap', 'e'];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "www.netscape.com"; __executed = /^(([a-z]+)*([a-z])\\.)+[a-z]{2,}$/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "www.netscape.com"; __executed = /^(([a-z]+)*([a-z])\\.)+[a-z]{2,}$/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "www.netscape.com"; __executed = /^(([a-z]+)*([a-z])\\.)+[a-z]{2,}$/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "www.netscape.com"; __executed = /^(([a-z]+)*([a-z])\\.)+[a-z]{2,}$/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T4.js
new file mode 100644
index 000000000..269581db4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T4.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T4;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(abc)/.exec("abc") and check results;
+*/
+
+__executed = /(abc)/.exec("abc");
+
+__expected = ["abc","abc"];
+__expected.index = 0;
+__expected.input = "abc";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(abc)/.exec("abc"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(abc)/.exec("abc"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(abc)/.exec("abc"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(abc)/.exec("abc"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T5.js
new file mode 100644
index 000000000..949092b7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T5.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T5;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /a(bc)d(ef)g/.exec("abcdefg") and check results;
+*/
+
+__executed = /a(bc)d(ef)g/.exec("abcdefg");
+
+__expected = ["abcdefg","bc","ef"];
+__expected.index = 0;
+__expected.input = "abcdefg";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a(bc)d(ef)g/.exec("abcdefg"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a(bc)d(ef)g/.exec("abcdefg"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a(bc)d(ef)g/.exec("abcdefg"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a(bc)d(ef)g/.exec("abcdefg"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T6.js
new file mode 100644
index 000000000..866a7e1ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T6.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T6;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(.{3})(.{4})/.exec("abcdefgh") and check results;
+*/
+
+__executed = /(.{3})(.{4})/.exec("abcdefgh");
+
+__expected = ["abcdefg","abc","defg"];
+__expected.index = 0;
+__expected.input = "abcdefgh";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(.{3})(.{4})/.exec("abcdefgh"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(.{3})(.{4})/.exec("abcdefgh"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(.{3})(.{4})/.exec("abcdefgh"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(.{3})(.{4})/.exec("abcdefgh"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T7.js
new file mode 100644
index 000000000..09c19918d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T7.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T7;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(aa)bcd\1/.exec("aabcdaabcd") and check results;
+*/
+
+__executed = /(aa)bcd\1/.exec("aabcdaabcd");
+
+__expected = ["aabcdaa","aa"];
+__expected.index = 0;
+__expected.input = "aabcdaabcd";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(aa)bcd\\1/.exec("aabcdaabcd"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(aa)bcd\\1/.exec("aabcdaabcd"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(aa)bcd\\1/.exec("aabcdaabcd"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(aa)bcd\\1/.exec("aabcdaabcd"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T8.js
new file mode 100644
index 000000000..3ec86a6cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T8.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T8;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(aa).+\1/.exec("aabcdaabcd") and check results;
+*/
+
+__executed = /(aa).+\1/.exec("aabcdaabcd");
+
+__expected = ["aabcdaa","aa"];
+__expected.index = 0;
+__expected.input = "aabcdaabcd";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(aa).+\\1/.exec("aabcdaabcd"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(aa).+\\1/.exec("aabcdaabcd"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(aa).+\\1/.exec("aabcdaabcd"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(aa).+\\1/.exec("aabcdaabcd"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T9.js
new file mode 100644
index 000000000..bbf334842
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A3_T9.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A3_T9;
+* @section: 15.10.2.8;
+* @assertion: Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match.
+* The result can be used either in a backreference (\ followed by a nonzero decimal number),
+* referenced in a replace string,
+* or returned as part of an array from the regular expression matching function;
+* @description: Execute /(.{2}).+\1/.exec("aabcdaabcd") and check results;
+*/
+
+__executed = /(.{2}).+\1/.exec("aabcdaabcd");
+
+__expected = ["aabcdaa","aa"];
+__expected.index = 0;
+__expected.input = "aabcdaabcd";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(.{2}).+\\1/.exec("aabcdaabcd"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(.{2}).+\\1/.exec("aabcdaabcd"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(.{2}).+\\1/.exec("aabcdaabcd"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(.{2}).+\\1/.exec("aabcdaabcd"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T1.js
new file mode 100644
index 000000000..897d8a33c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T1.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A4_T1;
+* @section: 15.10.2.8;
+* @assertion: The production Atom :: . evaluates as follows:
+* i) Let A be the set of all characters except the four line terminator characters <LF>, <CR>, <LS>, or <PS>
+* ii) Call CharacterSetMatcher(A, false) and return its Matcher result;
+* @description: Execute /ab.de/.exec("abcde") and check results;
+*/
+
+__string = "abcde";
+__executed = /ab.de/.exec(__string);
+
+__expected = ["abcde"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "abcde"; __executed = /ab.de/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "abcde"; __executed = /ab.de/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "abcde"; __executed = /ab.de/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "abcde"; __executed = /ab.de/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T2.js
new file mode 100644
index 000000000..64aa3e711
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A4_T2;
+* @section: 15.10.2.8;
+* @assertion: The production Atom :: . evaluates as follows:
+* i) Let A be the set of all characters except the four line terminator characters <LF>, <CR>, <LS>, or <PS>
+* ii) Call CharacterSetMatcher(A, false) and return its Matcher result;
+* @description: Execute /.+/.exec("line 1\nline 2") and check results;
+*/
+
+__string = "line 1\nline 2";
+__executed = /.+/.exec(__string);
+
+__expected = ["line 1"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "line 1\nline 2"; __executed = /.+/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "line 1\nline 2"; __executed = /.+/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "line 1\nline 2"; __executed = /.+/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "line 1\nline 2"; __executed = /.+/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T3.js
new file mode 100644
index 000000000..4a7095ffb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T3.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A4_T3;
+* @section: 15.10.2.8;
+* @assertion: The production Atom :: . evaluates as follows:
+* i) Let A be the set of all characters except the four line terminator characters <LF>, <CR>, <LS>, or <PS>
+* ii) Call CharacterSetMatcher(A, false) and return its Matcher result;
+* @description: Execute /.*a.* /.exec("this is a test") and check results;
+*/
+
+__string = "this is a test";
+__executed = /.*a.*/.exec(__string);
+
+__expected = ["this is a test"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "this is a test"; __executed = /.*a.*/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "this is a test"; __executed = /.*a.*/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "this is a test"; __executed = /.*a.*/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "this is a test"; __executed = /.*a.*/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T4.js
new file mode 100644
index 000000000..8c4e1eeb6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T4.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A4_T4;
+* @section: 15.10.2.8;
+* @assertion: The production Atom :: . evaluates as follows:
+* i) Let A be the set of all characters except the four line terminator characters <LF>, <CR>, <LS>, or <PS>
+* ii) Call CharacterSetMatcher(A, false) and return its Matcher result;
+* @description: Execute /.+/.exec("this is a *&^%$# test") and check results;
+*/
+
+__string = "this is a *&^%$# test";
+__executed = /.+/.exec(__string);
+
+__expected = ["this is a *&^%$# test"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "this is a *&^%$# test"; __executed = /.+/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "this is a *&^%$# test"; __executed = /.+/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "this is a *&^%$# test"; __executed = /.+/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "this is a *&^%$# test"; __executed = /.+/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T5.js
new file mode 100644
index 000000000..78bfa4690
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T5.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A4_T5;
+* @section: 15.10.2.8;
+* @assertion: The production Atom :: . evaluates as follows:
+* i) Let A be the set of all characters except the four line terminator characters <LF>, <CR>, <LS>, or <PS>
+* ii) Call CharacterSetMatcher(A, false) and return its Matcher result;
+* @description: Execute /.+/.exec("....") and check results;
+*/
+
+__string = "....";
+__executed = /.+/.exec(__string);
+
+__expected = ["...."];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "...."; __executed = /.+/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "...."; __executed = /.+/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "...."; __executed = /.+/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "...."; __executed = /.+/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T6.js
new file mode 100644
index 000000000..47037a2ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T6.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A4_T6;
+* @section: 15.10.2.8;
+* @assertion: The production Atom :: . evaluates as follows:
+* i) Let A be the set of all characters except the four line terminator characters <LF>, <CR>, <LS>, or <PS>
+* ii) Call CharacterSetMatcher(A, false) and return its Matcher result;
+* @description: Execute /.+/.exec("abcdefghijklmnopqrstuvwxyz") and check results;
+*/
+
+__string = "abcdefghijklmnopqrstuvwxyz";
+__executed = /.+/.exec(__string);
+
+__expected = ["abcdefghijklmnopqrstuvwxyz"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "abcdefghijklmnopqrstuvwxyz"; __executed = /.+/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "abcdefghijklmnopqrstuvwxyz"; __executed = /.+/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "abcdefghijklmnopqrstuvwxyz"; __executed = /.+/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "abcdefghijklmnopqrstuvwxyz"; __executed = /.+/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T7.js
new file mode 100644
index 000000000..a6bb35870
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T7.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A4_T7;
+* @section: 15.10.2.8;
+* @assertion: The production Atom :: . evaluates as follows:
+* i) Let A be the set of all characters except the four line terminator characters <LF>, <CR>, <LS>, or <PS>
+* ii) Call CharacterSetMatcher(A, false) and return its Matcher result;
+* @description: Execute /.+/.exec("ABCDEFGHIJKLMNOPQRSTUVWXYZ") and check results;
+*/
+
+__string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+__executed = /.+/.exec(__string);
+
+__expected = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; __executed = /.+/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; __executed = /.+/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; __executed = /.+/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; __executed = /.+/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T8.js
new file mode 100644
index 000000000..11781ad4f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T8.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A4_T8;
+* @section: 15.10.2.8;
+* @assertion: The production Atom :: . evaluates as follows:
+* i) Let A be the set of all characters except the four line terminator characters <LF>, <CR>, <LS>, or <PS>
+* ii) Call CharacterSetMatcher(A, false) and return its Matcher result;
+* @description: Execute /.+/.exec("`1234567890-=~!@#$%^&*()_+") and check results;
+*/
+
+__string = "`1234567890-=~!@#$%^&*()_+";
+__executed = /.+/.exec(__string);
+
+__expected = ["`1234567890-=~!@#$%^&*()_+"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "`1234567890-=~!@#$%^&*()_+"; __executed = /.+/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "`1234567890-=~!@#$%^&*()_+"; __executed = /.+/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "`1234567890-=~!@#$%^&*()_+"; __executed = /.+/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "`1234567890-=~!@#$%^&*()_+"; __executed = /.+/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T9.js
new file mode 100644
index 000000000..d12241ddd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A4_T9.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A4_T9;
+* @section: 15.10.2.8;
+* @assertion: The production Atom :: . evaluates as follows:
+* i) Let A be the set of all characters except the four line terminator characters <LF>, <CR>, <LS>, or <PS>
+* ii) Call CharacterSetMatcher(A, false) and return its Matcher result;
+* @description: Execute /.+/.exec("|\\[{]};:\"\',<>.?/") and check results;
+*/
+
+__string = "|\\[{]};:\"\',<>.?/";
+__executed = /.+/.exec(__string);
+
+__expected = ["|\\[{]};:\"\',<>.?/"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "|\\[{]};:\"\',<>.?/"; __executed = /.+/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "|\\[{]};:\"\',<>.?/"; __executed = /.+/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "|\\[{]};:\"\',<>.?/"; __executed = /.+/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "|\\[{]};:\"\',<>.?/"; __executed = /.+/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A5_T1.js
new file mode 100644
index 000000000..dc958699b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A5_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A5_T1;
+* @section: 15.10.2.8;
+* @assertion: In case-insignificant matches all characters are implicitly converted to upper case immediately before they are compared;
+* @description: Execute /[a-z]+/ig.exec("ABC def ghi") and check results;
+*/
+
+__string = "ABC def ghi";
+__executed = /[a-z]+/ig.exec(__string);
+
+__expected = ["ABC"];
+__expected.index = 0;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "ABC def ghi"; __executed = /[a-z]+/ig.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "ABC def ghi"; __executed = /[a-z]+/ig.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "ABC def ghi"; __executed = /[a-z]+/ig.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "ABC def ghi"; __executed = /[a-z]+/ig.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A5_T2.js
new file mode 100644
index 000000000..74c41bbd0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.8_Atom/S15.10.2.8_A5_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.8_A5_T2;
+* @section: 15.10.2.8;
+* @assertion: In case-insignificant matches all characters are implicitly converted to upper case immediately before they are compared;
+* @description: Execute /[a-z]+/.exec("ABC def ghi") and check results;
+*/
+
+__string = "ABC def ghi";
+__executed = /[a-z]+/.exec(__string);
+
+__expected = ["def"];
+__expected.index = 4;
+__expected.input = __string;
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __string = "ABC def ghi"; __executed = /[a-z]+/.exec(__string); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __string = "ABC def ghi"; __executed = /[a-z]+/.exec(__string); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __string = "ABC def ghi"; __executed = /[a-z]+/.exec(__string); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __string = "ABC def ghi"; __executed = /[a-z]+/.exec(__string); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T1.js
new file mode 100644
index 000000000..87d6e8785
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.9_A1_T1;
+* @section: 15.10.2.9, 15.10.2.11;
+* @assertion: An escape sequence of the form \ followed by a nonzero decimal number n matches the result of the nth set of capturing parentheses (see 15.10.2.11);
+* @description: Execute /\b(\w+) \1\b/.exec("do you listen the the band") and check results;
+*/
+
+__executed = /\b(\w+) \1\b/.exec("do you listen the the band");
+
+__expected = ["the the", "the"];
+__expected.index = 14;
+__expected.input = "do you listen the the band";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\b(\\w+) \\1\\b/.exec("do you listen the the band"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\b(\\w+) \\1\\b/.exec("do you listen the the band"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\b(\\w+) \\1\\b/.exec("do you listen the the band"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\b(\\w+) \\1\\b/.exec("do you listen the the band"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T2.js
new file mode 100644
index 000000000..615f6323c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_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.
+
+/**
+* @name: S15.10.2.9_A1_T2;
+* @section: 15.10.2.9, 15.10.2.11;
+* @assertion: An escape sequence of the form \ followed by a nonzero decimal number n matches the result of the nth set of capturing parentheses (see 15.10.2.11);
+* @description: Execute /([xu]\d{2}([A-H]{2})?)\1/.exec("x09x12x01x01u00FFu00FFx04x04x23") and check results;
+*/
+
+__executed = /([xu]\d{2}([A-H]{2})?)\1/.exec("x09x12x01x01u00FFu00FFx04x04x23");
+
+__expected = ["x01x01", "x01", undefined];
+__expected.index = 6;
+__expected.input = "x09x12x01x01u00FFu00FFx04x04x23";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /([xu]\\d{2}([A-H]{2})?)\\1/.exec("x09x12x01x01u00FFu00FFx04x04x23"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /([xu]\\d{2}([A-H]{2})?)\\1/.exec("x09x12x01x01u00FFu00FFx04x04x23"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /([xu]\\d{2}([A-H]{2})?)\\1/.exec("x09x12x01x01u00FFu00FFx04x04x23"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /([xu]\\d{2}([A-H]{2})?)\\1/.exec("x09x12x01x01u00FFu00FFx04x04x23"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T3.js
new file mode 100644
index 000000000..3786a33cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.9_A1_T3;
+* @section: 15.10.2.9, 15.10.2.11;
+* @assertion: An escape sequence of the form \ followed by a nonzero decimal number n matches the result of the nth set of capturing parentheses (see 15.10.2.11);
+* @description: Execute /([xu]\d{2}([A-H]{2})?)\1/.exec("x09x12x01x05u00FFu00FFx04x04x23") and check results;
+*/
+
+__executed = /([xu]\d{2}([A-H]{2})?)\1/.exec("x09x12x01x05u00FFu00FFx04x04x23");
+
+__expected = ["u00FFu00FF", "u00FF", "FF"];
+__expected.index = 12;
+__expected.input = "x09x12x01x05u00FFu00FFx04x04x23";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /([xu]\\d{2}([A-H]{2})?)\\1/.exec("x09x12x01x05u00FFu00FFx04x04x23"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /([xu]\\d{2}([A-H]{2})?)\\1/.exec("x09x12x01x05u00FFu00FFx04x04x23"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /([xu]\\d{2}([A-H]{2})?)\\1/.exec("x09x12x01x05u00FFu00FFx04x04x23"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /([xu]\\d{2}([A-H]{2})?)\\1/.exec("x09x12x01x05u00FFu00FFx04x04x23"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T4.js
new file mode 100644
index 000000000..6d412ff2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.9_A1_T4;
+* @section: 15.10.2.9, 15.10.2.11;
+* @assertion: An escape sequence of the form \ followed by a nonzero decimal number n matches the result of the nth set of capturing parentheses (see 15.10.2.11);
+* @description: Execute /\b(\w+) \2\b/.test("do you listen the the band") and check results;
+*/
+__executed = /\b(\w+) \2\b/.test("do you listen the the band");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: /\\b(\\w+) \\2\\b/.test("do you listen the the band") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T5.js
new file mode 100644
index 000000000..943bb6360
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/15.10.2.9_AtomEscape/S15.10.2.9_A1_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2.9_A1_T5;
+* @section: 15.10.2.9, 15.10.2.11;
+* @assertion: An escape sequence of the form \ followed by a nonzero decimal number n matches the result of the nth set of capturing parentheses (see 15.10.2.11);
+* @description: Execute /(a*)b\1+/.exec("baaac") and check results;
+*/
+
+__executed = /(a*)b\1+/.exec("baaac");
+
+__expected = ["b", ""];
+__expected.index = 0;
+__expected.input = "baaac";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(a*)b\\1+/.exec("baaac"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(a*)b\\1+/.exec("baaac"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(a*)b\\1+/.exec("baaac"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(a*)b\\1+/.exec("baaac"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/S15.10.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/S15.10.2_A1_T1.js
new file mode 100644
index 000000000..e49159dbb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.2_Pattern_Semantics/S15.10.2_A1_T1.js
@@ -0,0 +1,88 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.2_A1_T1;
+* @section: 15.10.2;
+* @assertion: XML Shallow Parsing with Regular Expressions;
+* @description: See bug http://bugzilla.mozilla.org/show_bug.cgi?id=103087;
+*/
+
+// REX/Javascript 1.0
+// Robert D. Cameron "REX: XML Shallow Parsing with Regular Expressions",
+// Technical Report TR 1998-17, School of Computing Science, Simon Fraser
+// University, November, 1998.
+// Copyright (c) 1998, Robert D. Cameron.
+// The following code may be freely used and distributed provided that
+// this copyright and citation notice remains intact and that modifications
+// or additions are clearly identified.
+
+TextSE = "[^<]+";
+UntilHyphen = "[^-]*-";
+Until2Hyphens = UntilHyphen + "([^-]" + UntilHyphen + ")*-";
+CommentCE = Until2Hyphens + ">?";
+UntilRSBs = "[^]]*]([^]]+])*]+";
+CDATA_CE = UntilRSBs + "([^]>]" + UntilRSBs + ")*>";
+S = "[ \\n\\t\\r]+";
+NameStrt = "[A-Za-z_:]|[^\\x00-\\x7F]";
+NameChar = "[A-Za-z0-9_:.-]|[^\\x00-\\x7F]";
+Name = "(" + NameStrt + ")(" + NameChar + ")*";
+QuoteSE = '"[^"]' + "*" + '"' + "|'[^']*'";
+DT_IdentSE = S + Name + "(" + S + "(" + Name + "|" + QuoteSE + "))*";
+MarkupDeclCE = "([^]\"'><]+|" + QuoteSE + ")*>";
+S1 = "[\\n\\r\\t ]";
+UntilQMs = "[^?]*\\?+";
+PI_Tail = "\\?>|" + S1 + UntilQMs + "([^>?]" + UntilQMs + ")*>";
+DT_ItemSE = "<(!(--" + Until2Hyphens + ">|[^-]" + MarkupDeclCE + ")|\\?" + Name + "(" + PI_Tail + "))|%" + Name + ";|" + S;
+DocTypeCE = DT_IdentSE + "(" + S + ")?(\\[(" + DT_ItemSE + ")*](" + S + ")?)?>?";
+DeclCE = "--(" + CommentCE + ")?|\\[CDATA\\[(" + CDATA_CE + ")?|DOCTYPE(" + DocTypeCE + ")?";
+PI_CE = Name + "(" + PI_Tail + ")?";
+EndTagCE = Name + "(" + S + ")?>?";
+AttValSE = '"[^<"]' + "*" + '"' + "|'[^<']*'";
+ElemTagCE = Name + "(" + S + Name + "(" + S + ")?=(" + S + ")?(" + AttValSE + "))*(" + S + ")?/?>?";
+MarkupSPE = "<(!(" + DeclCE + ")?|\\?(" + PI_CE + ")?|/(" + EndTagCE + ")?|(" + ElemTagCE + ")?)";
+XML_SPE = TextSE + "|" + MarkupSPE;
+
+///
+////
+/////
+
+__patterns = [TextSE,UntilHyphen,Until2Hyphens,CommentCE,UntilRSBs,CDATA_CE,S,NameStrt, NameChar,
+Name, QuoteSE, DT_IdentSE, MarkupDeclCE, S1,UntilQMs, PI_Tail, DT_ItemSE, DocTypeCE, DeclCE,
+PI_CE, EndTagCE, AttValSE, ElemTagCE, MarkupSPE, XML_SPE];
+
+__html=""+
+'<html xmlns="http://www.w3.org/1999/xhtml"\n' +
+' xmlns:xlink="http://www.w3.org/XML/XLink/0.9">\n' +
+' <head><title>Three Namespaces</title></head>\n' +
+' <body>\n' +
+' <h1 align="center">An Ellipse and a Rectangle</h1>\n' +
+' <svg xmlns="http://www.w3.org/Graphics/SVG/SVG-19991203.dtd"\n' +
+' width="12cm" height="10cm">\n' +
+' <ellipse rx="110" ry="130" />\n' +
+' <rect x="4cm" y="1cm" width="3cm" height="6cm" />\n' +
+' </svg>\n' +
+' <p xlink:type="simple" xlink:href="ellipses.html">\n' +
+' More about ellipses\n' +
+' </p>\n' +
+' <p xlink:type="simple" xlink:href="rectangles.html">\n' +
+' More about rectangles\n' +
+' </p>\n' +
+' <hr/>\n' +
+' <p>Last Modified February 13, 2000</p>\n' +
+' </body>\n' +
+'</html>';
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for(var index=0; index<__patterns.length; index++) {
+ __re = new RegExp(__patterns[index]);
+ __re.test(__html);
+ }
+} catch (e) {
+ $ERROR('#'+index+": XML Shallow Parsing with Regular Expression: "+__patterns[index]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T1.js
new file mode 100644
index 000000000..b8d75f114
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.3.1_A1_T1;
+* @section: 15.10.3.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then return R unchanged;
+* @description: R is /x/i and instance is RegExp(R);
+*/
+
+__re = /x/i;
+__instance = RegExp(__re);
+__re.indicator = 1;
+
+//CHECK#1
+if (__instance.indicator !== 1) {
+ $ERROR('#1: __re = /x/i; __instance = RegExp(__re); __re.indicator = 1; __instance.indicator === 1. Actual: ' + (__instance.indicator));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T2.js
new file mode 100644
index 000000000..632a1e65d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.3.1_A1_T2;
+* @section: 15.10.3.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then return R unchanged;
+* @description: R is new RegExp and instance is RegExp(R, function(){}());
+*/
+
+__re = new RegExp;
+__instance = RegExp(__re, function(){}());
+__re.indicator = 1;
+
+//CHECK#1
+if (__instance.indicator !== 1) {
+ $ERROR('#1: __re = new RegExp; __instance = RegExp(__re, function(){}()); __re.indicator = 1; __instance.indicator === 1. Actual: ' + (__instance.indicator));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T3.js
new file mode 100644
index 000000000..683f9c0fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.3.1_A1_T3;
+* @section: 15.10.3.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then return R unchanged;
+* @description: R is new RegExp() and instance is RegExp(R, x), where x is undefined variable;
+*/
+
+__re = new RegExp();
+__instance = RegExp(__re, x);
+__re.indicator = 1;
+
+//CHECK#1
+if (__instance.indicator !== 1) {
+ $ERROR('#1: __re = new RegExp(); __instance = RegExp(__re, x); __re.indicator = 1; __instance.indicator === 1. Actual: ' + (__instance.indicator));
+}
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T4.js
new file mode 100644
index 000000000..c7d9a9928
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.3.1_A1_T4;
+* @section: 15.10.3.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then return R unchanged;
+* @description: R is new RegExp() and instance is RegExp(R, void 0);
+*/
+
+__re = RegExp();
+__instance = RegExp(__re, void 0);
+__re.indicator = 1;
+
+//CHECK#1
+if (__instance.indicator !== 1) {
+ $ERROR('#1: __re = RegExp(); __instance = RegExp(__re, void 0); __re.indicator = 1; __instance.indicator === 1. Actual: ' + (__instance.indicator));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T5.js
new file mode 100644
index 000000000..a86584caf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A1_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.3.1_A1_T5;
+* @section: 15.10.3.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then return R unchanged;
+* @description: R is /\b/m and instance is RegExp(R, undefined);
+*/
+
+__re = /\b/m;
+__instance = RegExp(__re, undefined);
+__re.indicator = 1;
+
+//CHECK#1
+if (__instance.indicator !== 1) {
+ $ERROR('#1: __re = /\\b/m; __instance = RegExp(__re, undefined); __re.indicator = 1; __instance.indicator === 1. Actual: ' + (__instance.indicator));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A2_T1.js
new file mode 100644
index 000000000..c458b942d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A2_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.3.1_A2_T1;
+* @section: 15.10.3.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is defined, then
+* call the RegExp constructor (15.10.4.1), passing it the pattern and flags arguments and return the object constructed by that constructor;
+* @description: Checking if using "1" as flags leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: RegExp(new RegExp("\\d"), "1")) throw TypeError. Actual: ' + (RegExp(new RegExp("\d"), "1")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: RegExp(new RegExp("\\d"), "1")) throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A2_T2.js
new file mode 100644
index 000000000..08daea033
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A2_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.3.1_A2_T2;
+* @section: 15.10.3.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is defined, then
+* call the RegExp constructor (15.10.4.1), passing it the pattern and flags arguments and return the object constructed by that constructor;
+* @description: Checking if using dafined variable "x = 1" as flags leads to throwing the correct exception;
+*/
+
+var x = 1;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: var x = 1; RegExp(/[a-b]?/, x) throw TypeError. Actual: ' + (RegExp(/[a-b]?/, x)));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: var x = 1; RegExp(/[a-b]?/, x) throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A3_T1.js
new file mode 100644
index 000000000..814a0b6dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A3_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.3.1_A3_T1;
+* @section: 15.10.3.1;
+* @assertion: If pattern and flags are defined, then
+* call the RegExp constructor (15.10.4.1), passing it the pattern and flags arguments and return the object constructed by that constructor;
+* @description: R is "d+" and instance is RegExp(R,"i");
+*/
+
+__re = "d+";
+__instance = RegExp(__re, "i");
+
+//CHECK#1
+if (__instance.constructor !== RegExp) {
+ $ERROR('#1: __re = "d+"; __instance = RegExp(__re, "i"); __instance.constructor === RegExp. Actual: ' + (__instance.constructor));
+}
+
+//CHECK#2
+if (__instance.source !== __re) {
+ $ERROR('#2: __re = "d+"; __instance = RegExp(__re, "i"); __instance.source === __re. Actual: '+ (__instance.source));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A3_T2.js
new file mode 100644
index 000000000..e5506619e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.3_The_RegExp_Constructor_Called_as_a_Function/S15.10.3.1_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.3.1_A3_T2;
+* @section: 15.10.3.1;
+* @assertion: If pattern and flags are defined, then
+* call the RegExp constructor (15.10.4.1), passing it the pattern and flags arguments and return the object constructed by that constructor;
+* @description: R is {toString:function(){return "[a-c]*";}} and instance is RegExp(R,"gm");
+*/
+
+__instance = RegExp({toString:function(){return "[a-c]*";}}, "gm");
+
+//CHECK#1
+if (__instance.constructor !== RegExp) {
+ $ERROR('#1: __instance = RegExp({toString:function(){return "[a-c]*";}}, "gm"); __instance.constructor === RegExp. Actual: ' + (__instance.constructor));
+}
+
+//CHECK#2
+if (__instance.source !== "[a-c]*") {
+ $ERROR('#2: __instance = RegExp({toString:function(){return "[a-c]*";}}, "gm"); __instance.source === "[a-c]*". Actual: '+ (__instance.source));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T1.js
new file mode 100644
index 000000000..fbf49ae5a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A1_T1;
+* @section: 15.10.4.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be
+* the pattern used to construct R and let F be the flags used to construct R;
+* @description: Pattern is /./i and RegExp is new RegExp(pattern);
+*/
+
+__pattern = /./i;
+__re = new RegExp(__pattern);
+
+//CHECK#1
+if (__re.source !== __pattern.source) {
+ $ERROR('#1: __pattern = /./i; __re = new RegExp(__pattern); __re.source === __pattern.source. Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== __pattern.multiline) {
+ $ERROR('#2: __pattern = /./i; __re = new RegExp(__pattern); __re.multiline === __pattern.multiline. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== __pattern.global) {
+ $ERROR('#3: __pattern = /./i; __re = new RegExp(__pattern); __re.global === __pattern.global. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== __pattern.ignoreCase) {
+ $ERROR('#4: __pattern = /./i; __re = new RegExp(__pattern); __re.ignoreCase === __pattern.ignoreCase. Actual: ' + (__re.ignoreCase));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T2.js
new file mode 100644
index 000000000..ac897fd09
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A1_T2;
+* @section: 15.10.4.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be
+* the pattern used to construct R and let F be the flags used to construct R;
+* @description: Pattern is /\t/m and RegExp is new RegExp(pattern,x), where x is undefined variable;
+*/
+
+__pattern = /\t/m;
+__re = new RegExp(__pattern, x);
+
+//CHECK#1
+if (__re.source !== __pattern.source) {
+ $ERROR('#1: __pattern = /\\t/m; _re = new RegExp(__pattern, x); var x; __re.source === __pattern.source. Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== __pattern.multiline) {
+ $ERROR('#2: __pattern = /\\t/m; _re = new RegExp(__pattern, x); var x; __re.multiline === __pattern.multiline. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== __pattern.global) {
+ $ERROR('#3: __pattern = /\\t/m; _re = new RegExp(__pattern, x); var x; __re.global === __pattern.global. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== __pattern.ignoreCase) {
+ $ERROR('#4: __pattern = /\\t/m; _re = new RegExp(__pattern, x); var x; __re.ignoreCase === __pattern.ignoreCase. Actual: ' + (__re.ignoreCase));
+}
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T3.js
new file mode 100644
index 000000000..fad9028e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A1_T3;
+* @section: 15.10.4.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be
+* the pattern used to construct R and let F be the flags used to construct R;
+* @description: Pattern is /[a-b]/g and RegExp is new RegExp(pattern,void 0);
+*/
+
+__pattern = /[a-b]/g;
+__re = new RegExp(__pattern, void 0);
+
+//CHECK#1
+if (__re.source !== __pattern.source) {
+ $ERROR('#1: __pattern = /[a-b]/g; __re = new RegExp(__pattern, void 0); __re.source === __pattern.source. Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== __pattern.multiline) {
+ $ERROR('#2: __pattern = /[a-b]/g; __re = new RegExp(__pattern, void 0); __re.multiline === __pattern.multiline. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== __pattern.global) {
+ $ERROR('#3: __pattern = /[a-b]/g; __re = new RegExp(__pattern, void 0); __re.global === __pattern.global. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== __pattern.ignoreCase) {
+ $ERROR('#4: __pattern = /[a-b]/g; __re = new RegExp(__pattern, void 0); __re.ignoreCase === __pattern.ignoreCase. Actual: ' + (__re.ignoreCase));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T4.js
new file mode 100644
index 000000000..b4a224045
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T4.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A1_T4;
+* @section: 15.10.4.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be
+* the pattern used to construct R and let F be the flags used to construct R;
+* @description: Pattern is new RegExp and RegExp is new RegExp(pattern,undefined);
+*/
+
+__pattern = new RegExp;
+__re = new RegExp(__pattern, undefined);
+
+//CHECK#1
+if (__re.source !== __pattern.source) {
+ $ERROR('#1: __pattern = new RegExp; __re = new RegExp(__pattern, undefined); __re.source === __pattern.source. Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== __pattern.multiline) {
+ $ERROR('#2: __pattern = new RegExp; __re = new RegExp(__pattern, undefined); __re.multiline === __pattern.multiline. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== __pattern.global) {
+ $ERROR('#3: __pattern = new RegExp; __re = new RegExp(__pattern, undefined); __re.global === __pattern.global. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== __pattern.ignoreCase) {
+ $ERROR('#4: __pattern = new RegExp; __re = new RegExp(__pattern, undefined); __re.ignoreCase === __pattern.ignoreCase. Actual: ' + (__re.ignoreCase));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T5.js
new file mode 100644
index 000000000..4492eb51e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A1_T5.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A1_T5;
+* @section: 15.10.4.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be
+* the pattern used to construct R and let F be the flags used to construct R;
+* @description: Pattern is RegExp("1?","mig") and RegExp is new RegExp(pattern,(function(){})());
+*/
+
+__pattern = RegExp("1?","mig");
+__re = new RegExp(__pattern, (function(){})());
+
+//CHECK#1
+if (__re.source !== __pattern.source) {
+ $ERROR('#1: __pattern = RegExp("1?","mig"); __re = new RegExp(__pattern, (function(){})()); __re.source === __pattern.source. Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== __pattern.multiline) {
+ $ERROR('#2: __pattern = RegExp("1?","mig"); __re = new RegExp(__pattern, (function(){})()); __re.multiline === __pattern.multiline. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== __pattern.global) {
+ $ERROR('#3: __pattern = RegExp("1?","mig"); __re = new RegExp(__pattern, (function(){})()); __re.global === __pattern.global. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== __pattern.ignoreCase) {
+ $ERROR('#4: __pattern = RegExp("1?","mig"); __re = new RegExp(__pattern, (function(){})()); __re.ignoreCase === __pattern.ignoreCase. Actual: ' + (__re.ignoreCase));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A2_T1.js
new file mode 100644
index 000000000..760cccd31
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_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.
+
+/**
+* @name: S15.10.4.1_A2_T1;
+* @section: 15.10.4.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is not undefined, then throw a TypeError exception;
+* @description: Checking if execution of "new RegExp(pattern, "i")", where the pattern is "/\u0042/i", fails;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp(/\\u0042/i, "i") throw TypeError. Actual: ' + (new RegExp(/\u0042/i, "i")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new RegExp(/\\u0042/i, "i") throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A2_T2.js
new file mode 100644
index 000000000..b88e2cfce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_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.
+
+/**
+* @name: S15.10.4.1_A2_T2;
+* @section: 15.10.4.1;
+* @assertion: If pattern is an object R whose [[Class]] property is "RegExp" and flags is not undefined, then throw a TypeError exception;
+* @description: Checking if execution of "new RegExp(pattern, {})", where the pattern is "/1?1/mig", fails;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp(/1?1/mig, {}) throw TypeError. Actual: ' + (new RegExp(/1?1/mig, {})));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new RegExp(/1?1/mig, {}) throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T1.js
new file mode 100644
index 000000000..d14987a42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A3_T1;
+* @section: 15.10.4.1;
+* @assertion: let P be the empty string if pattern is undefined;
+* @description: RegExp is new RegExp;
+*/
+
+__re = new RegExp;
+
+//CHECK#1
+if (__re.source !== "") {
+ $ERROR('#1: __re = new RegExp; __re.source === "". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp; __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp; __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp; __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T2.js
new file mode 100644
index 000000000..6d9d3d9ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A3_T2;
+* @section: 15.10.4.1;
+* @assertion: let P be the empty string if pattern is undefined;
+* @description: RegExp is new RegExp(void 0);
+*/
+
+__re = new RegExp(void 0);
+
+//CHECK#1
+if (__re.source !== "") {
+ $ERROR('#1: __re = new RegExp(void 0); __re.source === "". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(void 0); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp(void 0); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp(void 0); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T3.js
new file mode 100644
index 000000000..ae41bd834
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A3_T3;
+* @section: 15.10.4.1;
+* @assertion: let P be the empty string if pattern is undefined;
+* @description: RegExp is new RegExp(x), where x is undefined variable;
+*/
+
+__re = new RegExp(x);
+
+//CHECK#1
+if (__re.source !== "") {
+ $ERROR('#1: __re = new RegExp(x); var x; __re.source === "". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(x); var x; __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp(x); var x; __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp(x); var x; __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
+var x;
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T4.js
new file mode 100644
index 000000000..5b8825f32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T4.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A3_T4;
+* @section: 15.10.4.1;
+* @assertion: let P be the empty string if pattern is undefined;
+* @description: RegExp is new RegExp(undefined);
+*/
+
+__re = new RegExp(undefined);
+
+//CHECK#1
+if (__re.source !== "") {
+ $ERROR('#1: __re = new RegExp(undefined); __re.source === "". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(undefined); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp(undefined); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp(undefined); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T5.js
new file mode 100644
index 000000000..e26522b4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A3_T5.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A3_T5;
+* @section: 15.10.4.1;
+* @assertion: let P be the empty string if pattern is undefined;
+* @description: RegExp is new RegExp((function(){})());
+*/
+
+__re = new RegExp((function(){})());
+
+//CHECK#1
+if (__re.source !== "") {
+ $ERROR('#1: __re = new RegExp((function(){})()); __re.source === "". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp((function(){})()); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp((function(){})()); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp((function(){})()); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T1.js
new file mode 100644
index 000000000..4a83fbaca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A4_T1;
+* @section: 15.10.4.1;
+* @assertion: let F be the empty string if flags is undefined;
+* @description: RegExp is new RegExp(undefined);
+*/
+
+__re = new RegExp(null, void 0);
+
+//CHECK#1
+if (__re.source !== "null") {
+ $ERROR('#1: __re = new RegExp(null, void 0); __re.source === "null". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(null, void 0); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp(null, void 0); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp(null, void 0); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T2.js
new file mode 100644
index 000000000..01c5f0589
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A4_T2;
+* @section: 15.10.4.1;
+* @assertion: let F be the empty string if flags is undefined;
+* @description: RegExp is new RegExp(undefined,undefined);
+*/
+
+__re = new RegExp(undefined, undefined);
+
+//CHECK#1
+if (__re.source !== "") {
+ $ERROR('#1: __re = new RegExp(undefined, undefined); __re.source === "". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(undefined, undefined); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp(undefined, undefined); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp(undefined, undefined); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T3.js
new file mode 100644
index 000000000..cb6e9b4fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A4_T3;
+* @section: 15.10.4.1;
+* @assertion: let F be the empty string if flags is undefined;
+* @description: Use undefined properties of object as flags of RegExp;
+*/
+
+__re = new RegExp({}.p, {}.q);
+
+//CHECK#1
+if (__re.source !== "") {
+ $ERROR('#1: __re = new RegExp({}.p, {}.q); __re.source === "". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp({}.p, {}.q); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp({}.p, {}.q); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp({}.p, {}.q); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T4.js
new file mode 100644
index 000000000..48e66421d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T4.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A4_T4;
+* @section: 15.10.4.1;
+* @assertion: let F be the empty string if flags is undefined;
+* @description: RegExp is new RegExp(null,void 0);
+*/
+
+__re = new RegExp(null, void 0);
+
+//CHECK#1
+if (__re.source !== "null") {
+ $ERROR('#1: __re = new RegExp(null, void 0); __re.source === "null". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(null, void 0); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp(null, void 0); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp(null, void 0); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T5.js
new file mode 100644
index 000000000..e2f4bbf42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A4_T5.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A4_T5;
+* @section: 15.10.4.1;
+* @assertion: let F be the empty string if flags is undefined;
+* @description: RegExp is new RegExp("",(function(){})());
+*/
+
+__re = new RegExp("", (function(){})());
+
+//CHECK#1
+if (__re.source !== "") {
+ $ERROR('#1: __re = new RegExp("", (function(){})()); __re.source === "". Actual: '+ (__re.source));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp("", (function(){})()); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp("", (function(){})()); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.ignoreCase !== false) {
+ $ERROR('#4: __re = new RegExp("", (function(){})()); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T1.js
new file mode 100644
index 000000000..e9eed97d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A5_T1;
+* @section: 15.10.4.1;
+* @assertion: If F contains any character other than 'g', 'i', or 'm', or if it contains the same one more than once, then throw a SyntaxError exception;
+* @description: Checking if using "ii" as F leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp(undefined,"ii") throw SyntaxError. Actual: ' + (new RegExp(undefined,"ii")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp(undefined,"ii") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T2.js
new file mode 100644
index 000000000..ff1f02ba8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A5_T2;
+* @section: 15.10.4.1;
+* @assertion: If F contains any character other than 'g', 'i', or 'm', or if it contains the same one more than once, then throw a SyntaxError exception;
+* @description: Checking if using "migg" as F leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp(null,"migg") throw SyntaxError. Actual: ' + (new RegExp(null,"migg")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp(null,"migg") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T3.js
new file mode 100644
index 000000000..8801727f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A5_T3;
+* @section: 15.10.4.1;
+* @assertion: If F contains any character other than 'g', 'i', or 'm', or if it contains the same one more than once, then throw a SyntaxError exception;
+* @description: Checking by using eval, try to use eval("\"migg\"") as F;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("",eval("\\"migr\\"")) throw SyntaxError. Actual: ' + (new RegExp("",eval("\"migr\""))));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("",eval("\\"migr\\"")) throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T4.js
new file mode 100644
index 000000000..bcfff60b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A5_T4;
+* @section: 15.10.4.1;
+* @assertion: If F contains any character other than 'g', 'i', or 'm', or if it contains the same one more than once, then throw a SyntaxError exception;
+* @description: Checking if using "z" as F leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("a|b","z") throw SyntaxError. Actual: ' + (new RegExp("a|b","z")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("a|b","z") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T5.js
new file mode 100644
index 000000000..8f2bdbc03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A5_T5;
+* @section: 15.10.4.1;
+* @assertion: If F contains any character other than 'g', 'i', or 'm', or if it contains the same one more than once, then throw a SyntaxError exception;
+* @description: Checking if using "{toString:function(){return "x";}}" as F leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("a|b|[a-b]",{toString:function(){return "x" throw SyntaxError. Actual: ' + (new RegExp("a|b|[a-b]",{toString:function(){return "x"}})));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("a|b|[a-b]",{toString:function(){return "x" throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T6.js
new file mode 100644
index 000000000..406db0357
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A5_T6;
+* @section: 15.10.4.1;
+* @assertion: If F contains any character other than 'g', 'i', or 'm', or if it contains the same one more than once, then throw a SyntaxError exception;
+* @description: Checking if using "null" as F leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp(".",null) throw SyntaxError. Actual: ' + (new RegExp(".",null)));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp(".",null) throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T7.js
new file mode 100644
index 000000000..77a1cd618
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A5_T7;
+* @section: 15.10.4.1;
+* @assertion: If F contains any character other than 'g', 'i', or 'm', or if it contains the same one more than once, then throw a SyntaxError exception;
+* @description: Checking if using 1.0 as F leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("^",1.0) throw SyntaxError. Actual: ' + (new RegExp("^",1.0)));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("^",1.0) throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T8.js
new file mode 100644
index 000000000..69cc55dc2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A5_T8;
+* @section: 15.10.4.1;
+* @assertion: If F contains any character other than 'g', 'i', or 'm', or if it contains the same one more than once, then throw a SyntaxError exception;
+* @description: Checking if using "true" as F leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("|",true) throw SyntaxError. Actual: ' + (new RegExp("|",true)));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("|",true) throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T9.js
new file mode 100644
index 000000000..0477d457e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A5_T9.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A5_T9;
+* @section: 15.10.4.1;
+* @assertion: If F contains any character other than 'g', 'i', or 'm', or if it contains the same one more than once, then throw a SyntaxError exception;
+* @description: Checking if using "{toString:function(){}}" as F leads to throwing the correct exception;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("$sup",{toString:function(){}}) throw SyntaxError. Actual: ' + (new RegExp("$sup",{toString:function(){}})));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("$sup",{toString:function(){}}) throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A6_T1.js
new file mode 100644
index 000000000..5c1d8326e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A6_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A6_T1;
+* @section: 15.10.4.1;
+* @assertion: The [[Class]] property of the newly constructed object is set to "RegExp";
+* @description: Checking [[Class]] property of the newly constructed object;
+*/
+
+__re = new RegExp;
+__re.toString = Object.prototype.toString;
+
+//CHECK#1
+if (__re.toString() !== "[object "+"RegExp"+"]") {
+ $ERROR('#1: __re = new RegExp; __re.toString = Object.prototype.toString; __re.toString() === "[object "+"RegExp"+"]". Actual: ' + (__re.toString()));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A7_T1.js
new file mode 100644
index 000000000..38c1995f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A7_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A7_T1;
+* @section: 15.10.4.1;
+* @assertion: The [[Prototype]] property of the newly constructed object is set to the original RegExp prototype object, the one that is the initial value of RegExp.prototype;
+* @description: Add new property to [[Prototype]] of REgExp and check this property of the newly constructed object;
+*/
+
+__re = new RegExp;
+RegExp.prototype.indicator = 1;
+
+//CHECK#1
+if (__re.indicator !== 1) {
+ $ERROR('#1: __re = new RegExp; RegExp.prototype.indicator = 1; __re.indicator === 1. Actual: ' + (__re.indicator));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A7_T2.js
new file mode 100644
index 000000000..c566b2ff2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A7_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.
+
+/**
+* @name: S15.10.4.1_A7_T2;
+* @section: 15.10.4.1;
+* @assertion: The [[Prototype]] property of the newly constructed object is set to the original RegExp prototype object, the one that is the initial value of RegExp.prototype;
+* @description: Checking [[Prototype]] property of the newly constructed object;
+*/
+
+__re = new RegExp();
+
+//CHECK#1
+if (RegExp.prototype.isPrototypeOf(__re) !== true) {
+ $ERROR('#1: __re = new RegExp(); RegExp.prototype.isPrototypeOf(__re) === true. Actual: ' + (RegExp.prototype.isPrototypeOf(__re)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T1.js
new file mode 100644
index 000000000..dc7d93244
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_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.
+
+/**
+* @name: S15.10.4.1_A8_T1;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is "a|b" and flags is "i";
+*/
+
+__re = new RegExp("a|b","i");
+
+//CHECK#1
+if (__re.ignoreCase !== true) {
+ $ERROR('#1: __re = new RegExp("a|b","i"); __re.ignoreCase === true. Actual: ' + (__re.ignoreCase));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp("a|b","i"); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp("a|b","i"); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.lastIndex !== 0) {
+ $ERROR('#4: __re = new RegExp("a|b","i"); __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
+//CHECK#5
+if (typeof __re.source === "undefined") {
+ $ERROR('#5: __re = new RegExp("a|b","i"); typeof __re.source !== "undefined"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T10.js
new file mode 100644
index 000000000..ad614b437
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T10.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T10;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is true and flags is "m";
+*/
+
+__re = new RegExp(true,"m");
+
+//CHECK#1
+if (__re.ignoreCase !== false) {
+ $ERROR('#1: __re = new RegExp(true,"m"); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
+//CHECK#2
+if (__re.multiline !== true) {
+ $ERROR('#2: __re = new RegExp(true,"m"); __re.multiline === true. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp(true,"m"); __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.lastIndex !== 0) {
+ $ERROR('#4: __re = new RegExp(true,"m"); __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
+//CHECK#5
+if (typeof __re.source === "undefined") {
+ $ERROR('#5: __re = new RegExp(true,"m"); typeof __re.source !== "undefined"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T11.js
new file mode 100644
index 000000000..cf8badb51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T11.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T11;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Checking by using eval, pattern is Math and flags is eval("\"g\"");
+*/
+
+__re = new RegExp(Math,eval("\"g\""));
+
+//CHECK#1
+if (__re.ignoreCase !== false) {
+ $ERROR('#1: __re = new RegExp(Math,eval("\\"g\\"")); __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(Math,eval("\\"g\\"")); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== true) {
+ $ERROR('#3: __re = new RegExp(Math,eval("\\"g\\"")); __re.global === true. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.lastIndex !== 0) {
+ $ERROR('#4: __re = new RegExp(Math,eval("\\"g\\"")); __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
+//CHECK#5
+if (typeof __re.source === "undefined") {
+ $ERROR('#5: __re = new RegExp(Math,eval("\\"g\\"")); typeof __re.source !== "undefined"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T12.js
new file mode 100644
index 000000000..6dd9bff21
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T12.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T12;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is "\u0042" and flags is {toString:void 0, valueOf:function(){throw "invalof";} };
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("\\u0042", {toString:void 0, valueOf:function(){throw "invalof";}}) throw "invalof". Actual: ' + (new RegExp("\u0042", {toString:void 0, valueOf:function(){throw "invalof";}})));
+} catch (e) {
+ if (e !== "invalof" ) {
+ $ERROR('#1.2: new RegExp("\\u0042", {toString:void 0, valueOf:function(){throw "invalof";}}) throw "invalof". Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T13.js
new file mode 100644
index 000000000..7fbf98541
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T13.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T13;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is "1" and flags is {toString:function(){throw "intostr";} };
+*/
+
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("1", {toString:function(){throw "intostr";}}) throw "intostr". Actual: ' + (new RegExp("1", {toString:function(){throw "intostr";}})));
+} catch (e) {
+ if (e !== "intostr" ) {
+ $ERROR('#1.2: new RegExp("1", {toString:function(){throw "intostr";}}) throw "intostr". Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T2.js
new file mode 100644
index 000000000..9ea94efab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T2;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is function(){return "a|b|[]";}() and flags is "ig";
+*/
+
+__re = new RegExp(function(){return "a|b|[]";}(),"ig");
+
+//CHECK#1
+if (__re.ignoreCase !== true) {
+ $ERROR('#1: __re = new RegExp(function(){return "a|b|[]"; __re.ignoreCase === true. Actual: ' + (__re.ignoreCase));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(function(){return "a|b|[]"; __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== true) {
+ $ERROR('#3: __re = new RegExp(function(){return "a|b|[]"; __re.global === true. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.lastIndex !== 0) {
+ $ERROR('#4: __re = new RegExp(function(){return "a|b|[]"; __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
+//CHECK#5
+if (typeof __re.source === "undefined") {
+ $ERROR('#5: __re = new RegExp(function(){return "a|b|[]"; typeof __re.source !== "undefined"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T3.js
new file mode 100644
index 000000000..adae3bbb0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T3;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is {toString:function(){return "[0-9]";}} and flags is (function(){return "m";})();
+*/
+
+__re = new RegExp({toString:function(){return "[0-9]";}}, (function(){return "m";})());
+
+//CHECK#1
+if (__re.ignoreCase !== false) {
+ $ERROR('#1: __re = new RegExp({toString:function(){return "[0-9]"; __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
+//CHECK#2
+if (__re.multiline !== true) {
+ $ERROR('#2: __re = new RegExp({toString:function(){return "[0-9]"; __re.multiline === true. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp({toString:function(){return "[0-9]"; __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.lastIndex !== 0) {
+ $ERROR('#4: __re = new RegExp({toString:function(){return "[0-9]"; __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
+//CHECK#5
+if (typeof __re.source === "undefined") {
+ $ERROR('#5: __re = new RegExp({toString:function(){return "[0-9]"; typeof __re.source !== "undefined"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T4.js
new file mode 100644
index 000000000..c96bc858e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T4;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is {toString:void 0,valueOf:function(){return "[z-z]";}} and flags is {toString:void 0,valueOf:function(){return "mig";}};
+*/
+
+__re = new RegExp({toString:void 0,valueOf:function(){return "[z-z]";}}, {toString:void 0,valueOf:function(){return "mig";}});
+
+//CHECK#1
+if (__re.ignoreCase !== true) {
+ $ERROR('#1: __re = new RegExp({toString:void 0,valueOf:function(){return "[z-z]"; __re.ignoreCase === true. Actual: ' + (__re.ignoreCase));
+}
+
+//CHECK#2
+if (__re.multiline !== true) {
+ $ERROR('#2: __re = new RegExp({toString:void 0,valueOf:function(){return "[z-z]"; __re.multiline === true. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== true) {
+ $ERROR('#3: __re = new RegExp({toString:void 0,valueOf:function(){return "[z-z]"; __re.global === true. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.lastIndex !== 0) {
+ $ERROR('#4: __re = new RegExp({toString:void 0,valueOf:function(){return "[z-z]"; __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
+//CHECK#5
+if (typeof __re.source === "undefined") {
+ $ERROR('#5: __re = new RegExp({toString:void 0,valueOf:function(){return "[z-z]"; typeof __re.source !== "undefined"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T5.js
new file mode 100644
index 000000000..3590a347d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T5.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T5;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is new Object("abc{1}") and flags is {toString:function(){return "";}};
+*/
+
+__re = new RegExp(new Object("abc{1}"), {toString:function(){return "";}});
+
+//CHECK#1
+if (__re.ignoreCase !== false) {
+ $ERROR('#1: __re = new RegExp(new Object("abc{1}"), {toString:function(){return ""; __re.ignoreCase === false. Actual: ' + (__re.ignoreCase));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(new Object("abc{1}"), {toString:function(){return ""; __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== false) {
+ $ERROR('#3: __re = new RegExp(new Object("abc{1}"), {toString:function(){return ""; __re.global === false. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.lastIndex !== 0) {
+ $ERROR('#4: __re = new RegExp(new Object("abc{1}"), {toString:function(){return ""; __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
+//CHECK#5
+if (typeof __re.source === "undefined") {
+ $ERROR('#5: __re = new RegExp(new Object("abc{1}"), {toString:function(){return ""; typeof __re.source !== "undefined"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T6.js
new file mode 100644
index 000000000..5a7789e80
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T6;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is {toString:function(){throw "intostr";} } and flags is "i";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp({toString:function(){throw "intostr";}}, "i") throw "intostr". Actual: ' + (new RegExp({toString:function(){throw "intostr";}}, "i")));
+} catch (e) {
+ if (e !== "intostr" ) {
+ $ERROR('#1.2: new RegExp({toString:function(){throw "intostr";}}, "i") throw "intostr". Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T7.js
new file mode 100644
index 000000000..4b562680d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T7;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is {toString:void 0, valueOf:function(){throw "invalof";} } and flags is "i";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp({toString:void 0, valueOf:function(){throw "invalof";}}) throw "invalof". Actual: ' + (new RegExp({toString:void 0, valueOf:function(){throw "invalof";}})));
+} catch (e) {
+ if (e !== "invalof" ) {
+ $ERROR('#1.2: new RegExp({toString:void 0, valueOf:function(){throw "invalof";}}) throw "invalof". Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T8.js
new file mode 100644
index 000000000..1cd4e9323
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T8;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is {toString:function(){throw "intostr";} } and flags is "error";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp({toString:function(){throw "intostr";}}, "error") throw "intostr". Actual: ' + (new RegExp({toString:function(){throw "intostr";}}, "error")));
+} catch (e) {
+ if (e !== "intostr" ) {
+ $ERROR('#1.2: new RegExp({toString:function(){throw "intostr";}}, "error") throw "intostr". Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T9.js
new file mode 100644
index 000000000..b8119377b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A8_T9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A8_T9;
+* @section: 15.10.4.1;
+* @assertion: let P be ToString(pattern) and let F be ToString(flags);
+* @description: Pattern is 1 and flags is new Object("gi");
+*/
+
+__re = new RegExp(1, new Object("gi"));
+
+//CHECK#1
+if (__re.ignoreCase !== true) {
+ $ERROR('#1: __re = new RegExp(1, new Object("gi")); __re.ignoreCase === true. Actual: ' + (__re.ignoreCase));
+}
+
+//CHECK#2
+if (__re.multiline !== false) {
+ $ERROR('#2: __re = new RegExp(1, new Object("gi")); __re.multiline === false. Actual: ' + (__re.multiline));
+}
+
+//CHECK#3
+if (__re.global !== true) {
+ $ERROR('#3: __re = new RegExp(1, new Object("gi")); __re.global === true. Actual: ' + (__re.global));
+}
+
+//CHECK#4
+if (__re.lastIndex !== 0) {
+ $ERROR('#4: __re = new RegExp(1, new Object("gi")); __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
+//CHECK#5
+if (typeof __re.source === "undefined") {
+ $ERROR('#5: __re = new RegExp(1, new Object("gi")); typeof __re.source !== "undefined"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T1.js
new file mode 100644
index 000000000..9dfb660c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A9_T1;
+* @section: 15.10.4.1;
+* @assertion: If P's characters do not have the form Pattern, then throw a SyntaxError exception;
+* @description: Pattern is "??";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("??") throw SyntaxError. Actual: ' + (new RegExp("??")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("??") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T2.js
new file mode 100644
index 000000000..0665ccf92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A9_T2;
+* @section: 15.10.4.1;
+* @assertion: If P's characters do not have the form Pattern, then throw a SyntaxError exception;
+* @description: Pattern is "[{-z]";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("[{-z]") throw SyntaxError. Actual: ' + (new RegExp("[{-z]")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("[{-z]") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T3.js
new file mode 100644
index 000000000..bdd7f6c4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.4_The_RegExp_Constructor/S15.10.4.1_A9_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.4.1_A9_T3;
+* @section: 15.10.4.1;
+* @assertion: If P's characters do not have the form Pattern, then throw a SyntaxError exception;
+* @description: Pattern is "[a--z]";
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new RegExp("[a--z]") throw SyntaxError. Actual: ' + (new RegExp("[a--z]")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: new RegExp("[a--z]") throw SyntaxError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A1.js
new file mode 100644
index 000000000..da2f275db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.5.1_A1;
+* @section: 15.10.5.1;
+* @assertion: The RegExp has property prototype;
+* @description: Checking RegExp.prototype property;
+*/
+
+//CHECK#1
+if (RegExp.hasOwnProperty('prototype') !== true) {
+ $ERROR('#1: RegExp.hasOwnProperty(\'prototype\') === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A2.js
new file mode 100644
index 000000000..b57b64e1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.5.1_A2;
+* @section: 15.10.5.1;
+* @assertion: The RegExp.prototype property has the attribute DontEnum;
+* @description: Checking if enumerating the RegExp.prototype property fails;
+*/
+
+//CHECK#0
+if (RegExp.hasOwnProperty('prototype') !== true) {
+ $ERROR('#0: RegExp.hasOwnProperty(\'prototype\') === true');
+}
+
+ //CHECK#1
+if (RegExp.propertyIsEnumerable('prototype') !== false) {
+ $ERROR('#1: RegExp.propertyIsEnumerable(\'prototype\') === false');
+}
+
+ //CHECK#2
+count=0;
+for (p in RegExp){
+ if (p==="prototype") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in RegExp){ if (p==="prototype") count++; } count === 0. Actual: ' + (count));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A3.js
new file mode 100644
index 000000000..d730323b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.5.1_A3;
+* @section: 15.10.5.1;
+* @assertion: The RegExp.prototype property has the attribute DontDelete;
+* @description: Checking if deleting the RegExp.prototype property fails;
+*/
+
+//CHECK#0
+if (RegExp.hasOwnProperty('prototype') !== true) {
+ $FAIL('#0: RegExp.hasOwnProperty(\'prototype\') === true');
+}
+
+//CHECK#1
+if (delete RegExp.prototype !== false) {
+ $ERROR('#1: delete RegExp.prototype === false');
+}
+
+//CHECK#2
+if (RegExp.hasOwnProperty('prototype') !== true) {
+ $ERROR('#2: delete RegExp.prototype; RegExp.hasOwnProperty(\'prototype\') === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_A4.js
new file mode 100644
index 000000000..b4b4fac24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5.1_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.
+
+/**
+* @name: S15.10.5.1_A4;
+* @section: 15.10.5.1;
+* @assertion: The RegExp.prototype property has the attribute ReadOnly;
+* @description: Checking if varying the RegExp.prototype property fails;
+*/
+
+//CHECK#1
+if (RegExp.hasOwnProperty('prototype') !== true) {
+ $FAIL('#1: RegExp.hasOwnProperty(\'prototype\') === true');
+}
+
+__obj = RegExp.prototype;
+
+RegExp.prototype = function(){return "shifted";};
+
+//CHECK#2
+if (RegExp.prototype !== __obj) {
+ $ERROR('#2: __obj = RegExp.prototype; RegExp.prototype = function(){return "shifted";}; RegExp.prototype === __obj. Actual: ' + (RegExp.prototype));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A1.js
new file mode 100644
index 000000000..dae1cd45d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.5_A1;
+* @section: 15.10.5;
+* @assertion: RegExp constructor has length property whose value is 2;
+* @description: Checking RegExp.length property;
+*/
+
+ //CHECK#1
+if (RegExp.length !== 2) {
+ $ERROR('#1: RegExp.length === 2. Actual: ' + (RegExp.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A2_T1.js
new file mode 100644
index 000000000..e9e887ed8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A2_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.5_A2_T1;
+* @section: 15.10.5;
+* @assertion: The value of the internal [[Prototype]] property of the RegExp constructor is the Function prototype object;
+* @description: Checking Function.prototype.isPrototypeOf(RegExp);
+*/
+
+ //CHECK#1
+if (Function.prototype.isPrototypeOf(RegExp) !== true) {
+ $ERROR('#1: Function.prototype.isPrototypeOf(RegExp) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A2_T2.js
new file mode 100644
index 000000000..65eba6867
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.5_Properties_of_the_RegExp_Constructor/S15.10.5_A2_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.
+
+/**
+* @name: S15.10.5_A2_T2;
+* @section: 15.10.5;
+* @assertion: The value of the internal [[Prototype]] property of the RegExp constructor is the Function prototype object;
+* @description: Add new property to Function.prototype and then check this property of RegExp;
+*/
+
+Function.prototype.indicator = 1;
+
+ //CHECK#1
+if (RegExp.indicator !== 1) {
+ $ERROR('#1: Function.prototype.indicator = 1; RegExp.indicator === 1. Actual: ' + (RegExp.indicator));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A10.js
new file mode 100644
index 000000000..2a25b2d34
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A10;
+* @section: 15.10.6.2;
+* @assertion: The RegExp.prototype.exec.length property has the attribute ReadOnly;
+* @description: Checking if varying the RegExp.prototype.exec.length property fails;
+*/
+
+//CHECK#1
+if (RegExp.prototype.exec.hasOwnProperty('length') !== true) {
+ $FAIL('#1: RegExp.prototype.exec.hasOwnProperty(\'length\') === true');
+}
+
+__obj = RegExp.prototype.exec.length;
+
+RegExp.prototype.exec.length = function(){return "shifted";};
+
+//CHECK#2
+if (RegExp.prototype.exec.length !== __obj) {
+ $ERROR('#2: __obj = RegExp.prototype.exec.length; RegExp.prototype.exec.length = function(){return "shifted";}; RegExp.prototype.exec.length === __obj. Actual: ' + (RegExp.prototype.exec.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A11.js
new file mode 100644
index 000000000..82dbc26c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A11.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A11;
+* @section: 15.10.6.2;
+* @assertion: The length property of the exec method is 1;
+* @description: Checking RegExp.prototype.exec.length;
+*/
+
+//CHECK#1
+if (RegExp.prototype.exec.hasOwnProperty("length") !== true) {
+ $FAIL('#1: RegExp.prototype.exec.hasOwnProperty(\'length\') === true');
+}
+
+//CHECK#2
+if (RegExp.prototype.exec.length !== 1) {
+ $ERROR('#2: RegExp.prototype.exec.length === 1. Actual: ' + (RegExp.prototype.exec.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A12.js
new file mode 100644
index 000000000..111aedb39
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A12.js
@@ -0,0 +1,18 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A12;
+* @section: 15.10.6.2;
+* @assertion: regExp exec() acts like regExp.exec('undefined') (step 2);
+* @description: Checking RegExp.prototype.exec.length;
+*/
+
+(/foo/).test('xfoox');
+var match = new RegExp('(.|\r|\n)*','').exec()[0];
+if (match === 'xfoox') {
+ $FAIL('#1: regExp.exec() leaks match globally');
+}
+if (match !== 'undefined') {
+ $FAIL('#2: regExp.exec() must coerce absent first arg to "undefined"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T1.js
new file mode 100644
index 000000000..ea1c79e14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T1;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is "123" and RegExp is /1|12/;
+*/
+
+__executed = /1|12/.exec("123");
+
+__expected = ["1"];
+__expected.index=0;
+__expected.input="123";
+ //CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /1|12/.exec("123"); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /1|12/.exec("123"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /1|12/.exec("123"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /1|12/.exec("123"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /1|12/.exec("123"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T10.js
new file mode 100644
index 000000000..7d1643c3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T10.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T10;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is 1.01 and RegExp is /1|12/;
+*/
+
+__executed = /1|12/.exec(1.01);
+
+__expected = ["1"];
+__expected.index=0;
+__expected.input="1.01";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /1|12/.exec(1.01); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /1|12/.exec(1.01); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /1|12/.exec(1.01); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /1|12/.exec(1.01); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /1|12/.exec(1.01); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T11.js
new file mode 100644
index 000000000..f0007c8d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T11.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T11;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is new Number(1.012) and RegExp is /2|12/;
+*/
+
+__executed = /2|12/.exec(new Number(1.012));
+
+__expected = ["12"];
+__expected.index=3;
+__expected.input="1.012";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /2|12/.exec(new Number(1.012)); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /2|12/.exec(new Number(1.012)); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /2|12/.exec(new Number(1.012)); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /2|12/.exec(new Number(1.012)); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /2|12/.exec(new Number(1.012)); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T12.js
new file mode 100644
index 000000000..115be87a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T12.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T12;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is {toString:function(){return Math.PI;}} and RegExp is /\.14/;
+*/
+
+__executed = /\.14/.exec({toString:function(){return Math.PI}});
+
+__expected = [".14"];
+__expected.index=1;
+__expected.input=String(Math.PI);
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /\\.14/.exec({toString:function(){return Math.PI}}); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /\\.14/.exec({toString:function(){return Math.PI}}); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /\\.14/.exec({toString:function(){return Math.PI}}); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /\\.14/.exec({toString:function(){return Math.PI}}); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /\\.14/.exec({toString:function(){return Math.PI}}); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T13.js
new file mode 100644
index 000000000..8bddc32da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T13.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T13;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is true and RegExp is /t[a-b|q-s]/;
+*/
+
+__executed = /t[a-b|q-s]/.exec(true);
+
+__expected = ["tr"];
+__expected.index=0;
+__expected.input="true";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /t[a-b|q-s]/.exec(true); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /t[a-b|q-s]/.exec(true); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /t[a-b|q-s]/.exec(true); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /t[a-b|q-s]/.exec(true); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /t[a-b|q-s]/.exec(true); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T14.js
new file mode 100644
index 000000000..543d9705f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T14.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T14;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is new Boolean and RegExp is /AL|se/;
+*/
+
+__executed = /AL|se/.exec(new Boolean);
+
+__expected = ["se"];
+__expected.index=3;
+__expected.input="false";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /AL|se/.exec(new Boolean); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /AL|se/.exec(new Boolean); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /AL|se/.exec(new Boolean); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /AL|se/.exec(new Boolean); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /AL|se/.exec(new Boolean); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T15.js
new file mode 100644
index 000000000..6807fcc03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T15.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T15;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is {toString:function(){return false;}} and RegExp is /LS/i;
+*/
+
+__executed = /LS/i.exec({toString:function(){return false}});
+
+__expected = ["ls"];
+__expected.index=2;
+__expected.input="false";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /LS/i.exec({toString:function(){return false}}); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /LS/i.exec({toString:function(){return false}}); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /LS/i.exec({toString:function(){return false}}); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /LS/i.exec({toString:function(){return false}}); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /LS/i.exec({toString:function(){return false}}); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T16.js
new file mode 100644
index 000000000..79a3fad5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T16.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.
+
+/**
+* @name: S15.10.6.2_A1_T16;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: RegExp is /undefined/ and call exec() without arguments;
+*/
+
+__re = /undefined/.exec()[0];
+if (__re !== "undefined") {
+ $ERROR('#1: /undefined/.exec()[0] === "undefined". Actual: ' + (__re));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T17.js
new file mode 100644
index 000000000..79373bd06
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T17.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T17;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is null and RegExp is /ll|l/;
+*/
+
+__executed = /ll|l/.exec(null);
+
+__expected = ["ll"];
+__expected.index=2;
+__expected.input="null";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /ll|l/.exec(null); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /ll|l/.exec(null); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /ll|l/.exec(null); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /ll|l/.exec(null); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /ll|l/.exec(null); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T18.js
new file mode 100644
index 000000000..ee3953b81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T18.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T18;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is undefined and RegExp is /nd|ne/;
+*/
+
+__executed = /nd|ne/.exec(undefined);
+
+__expected = ["nd"];
+__expected.index=1;
+__expected.input="undefined";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /nd|ne/.exec(undefined); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /nd|ne/.exec(undefined); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /nd|ne/.exec(undefined); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /nd|ne/.exec(undefined); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /nd|ne/.exec(undefined); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T19.js
new file mode 100644
index 000000000..ba9c3f21e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T19.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T19;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is void 0 and RegExp is /e{1}/;
+*/
+
+__executed = /e{1}/.exec(void 0);
+
+__expected = ["e"];
+__expected.index=3;
+__expected.input="undefined";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /e{1}/.exec(void 0); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /e{1}/.exec(void 0); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /e{1}/.exec(void 0); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /e{1}/.exec(void 0); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /e{1}/.exec(void 0); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T2.js
new file mode 100644
index 000000000..99f506d5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T2.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T2;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is new String("123") and RegExp is /((1)|(12))((3)|(23))/;
+*/
+
+with(/((1)|(12))((3)|(23))/){
+ __executed = exec(new String("123"));
+}
+
+__expected = ["123", "1", "1", undefined, "23", undefined, "23"];
+__expected.index=0;
+__expected.input="123";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: with(/((1)|(12))((3)|(23))/){__executed = exec(new String("123"));} (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: with(/((1)|(12))((3)|(23))/){__executed = exec(new String("123"));} __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: with(/((1)|(12))((3)|(23))/){__executed = exec(new String("123"));} __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: with(/((1)|(12))((3)|(23))/){__executed = exec(new String("123"));} __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: with(/((1)|(12))((3)|(23))/){__executed = exec(new String("123"));} __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T20.js
new file mode 100644
index 000000000..fd431ea82
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T20.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T20;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is x and RegExp is /[a-f]d/, where x is undefined variable;
+*/
+
+__executed = /[a-f]d/.exec(x);
+
+__expected = ["ed"];
+__expected.index=7;
+__expected.input="undefined";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /[a-f]d/.exec(x); var x; (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[a-f]d/.exec(x); var x; __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[a-f]d/.exec(x); var x; __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[a-f]d/.exec(x); var x; __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[a-f]d/.exec(x); var x; __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T21.js
new file mode 100644
index 000000000..5b538e9b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T21.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T21;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is function(){}() and RegExp is /[a-z]n/;
+*/
+
+__executed = /[a-z]n/.exec(function(){}());
+
+__expected = ["un"];
+__expected.index=0;
+__expected.input="undefined";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /[a-z]n/.exec(function(){}()); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /[a-z]n/.exec(function(){}()); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /[a-z]n/.exec(function(){}()); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /[a-z]n/.exec(function(){}()); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /[a-z]n/.exec(function(){}()); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T3.js
new file mode 100644
index 000000000..39988e585
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T3.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T3;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is new Object("abcdefghi") and RegExp is /a[a-z]{2,4}/;
+*/
+
+__executed = /a[a-z]{2,4}/.exec(new Object("abcdefghi"));
+
+__expected = ["abcde"];
+__expected.index=0;
+__expected.input="abcdefghi";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /a[a-z]{2,4}/.exec(new Object("abcdefghi")); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a[a-z]{2,4}/.exec(new Object("abcdefghi")); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a[a-z]{2,4}/.exec(new Object("abcdefghi")); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a[a-z]{2,4}/.exec(new Object("abcdefghi")); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a[a-z]{2,4}/.exec(new Object("abcdefghi")); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T4.js
new file mode 100644
index 000000000..42fc37e27
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T4.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T4;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is {toString:function(){return "abcdefghi";}} and RegExp is /a[a-z]{2,4}?/;
+*/
+
+__executed = /a[a-z]{2,4}?/.exec({toString:function(){return "abcdefghi"}});
+
+__expected = ["abc"];
+__expected.index=0;
+__expected.input="abcdefghi";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /a[a-z]{2,4}?/.exec({toString:function(){return "abcdefghi"}}); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /a[a-z]{2,4}?/.exec({toString:function(){return "abcdefghi"}}); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /a[a-z]{2,4}?/.exec({toString:function(){return "abcdefghi"}}); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /a[a-z]{2,4}?/.exec({toString:function(){return "abcdefghi"}}); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /a[a-z]{2,4}?/.exec({toString:function(){return "abcdefghi"}}); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T5.js
new file mode 100644
index 000000000..d11ada895
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T5.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T5;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is {toString:function(){return {};}, valueOf:function(){return "aabaac";}} and RegExp is /(aa|aabaac|ba|b|c)* /;
+*/
+
+__executed = /(aa|aabaac|ba|b|c)*/.exec({toString:function(){return {};}, valueOf:function(){return "aabaac";}});
+
+__expected = ["aaba", "ba"];
+__expected.index=0;
+__expected.input="aabaac";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /(aa|aabaac|ba|b|c)*/.exec({toString:function(){return {};}, valueOf:function(){return "aabaac";}}); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(aa|aabaac|ba|b|c)*/.exec({toString:function(){return {};}, valueOf:function(){return "aabaac";}}); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(aa|aabaac|ba|b|c)*/.exec({toString:function(){return {};}, valueOf:function(){return "aabaac";}}); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(aa|aabaac|ba|b|c)*/.exec({toString:function(){return {};}, valueOf:function(){return "aabaac";}}); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(aa|aabaac|ba|b|c)*/.exec({toString:function(){return {};}, valueOf:function(){return "aabaac";}}); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T6.js
new file mode 100644
index 000000000..b38b1ce88
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T6.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T6;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is (function(){return "zaacbbbcac"})() and RegExp is /(z)((a+)?(b+)?(c))* /;
+*/
+
+__executed = /(z)((a+)?(b+)?(c))*/.exec((function(){return "zaacbbbcac"})());
+
+__expected = ["zaacbbbcac", "z", "ac", "a", undefined, "c"];
+__expected.index=0;
+__expected.input="zaacbbbcac";
+
+//CHECK#0
+if ((__executed instanceof Array) !== true) {
+ $ERROR('#0: __executed = /(z)((a+)?(b+)?(c))*/.exec((function(){return "zaacbbbcac"})()); (__executed instanceof Array) === true');
+}
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __executed = /(z)((a+)?(b+)?(c))*/.exec((function(){return "zaacbbbcac"})()); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __executed = /(z)((a+)?(b+)?(c))*/.exec((function(){return "zaacbbbcac"})()); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __executed = /(z)((a+)?(b+)?(c))*/.exec((function(){return "zaacbbbcac"})()); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __executed = /(z)((a+)?(b+)?(c))*/.exec((function(){return "zaacbbbcac"})()); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T7.js
new file mode 100644
index 000000000..fd0058a62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T7;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is {toString:function(){throw "intostr";}} and RegExp is /[a-z]/;
+*/
+
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[a-z]/.exec({toString:function(){throw "intostr"}}) throw "intostr". Actual: ' + (/[a-z]/.exec({toString:function(){throw "intostr"}})));
+} catch (e) {
+ if (e !== "intostr") {
+ $ERROR('#1.2: /[a-z]/.exec({toString:function(){throw "intostr"}}) throw "intostr". Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T8.js
new file mode 100644
index 000000000..cf7b47af1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T8;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is {toString:void 0, valueOf:function(){throw "invalof";}} and RegExp is /[a-z]/;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[a-z]/.exec({toString:void 0, valueOf:function(){throw "invalof"}}) throw "invalof". Actual: ' + (/[a-z]/.exec({toString:void 0, valueOf:function(){throw "invalof"}})));
+} catch (e) {
+ if (e !== "invalof") {
+ $ERROR('#1.2: /[a-z]/.exec({toString:void 0, valueOf:function(){throw "invalof"}}) throw "invalof". Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T9.js
new file mode 100644
index 000000000..3a90f4135
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T9.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A1_T9;
+* @section: 15.10.6.2;
+* @assertion: RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and
+* returns an Array object containing the results of the match, or null if the string did not match;
+* @description: String is undefined variable and RegExp is /1|12/;
+*/
+
+var __string;
+
+//CHECK#1
+__re = /1|12/;
+if (__re.exec(__string) !== null) {
+ $ERROR('#1: var __string; /1|12/.exec(__string) === null; function __string(){}. Actual: ' + (__re));
+}
+
+function __string(){};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T1.js
new file mode 100644
index 000000000..94bc7623d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_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.
+
+/**
+* @name: S15.10.6.2_A2_T1;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The internal [[Class]] property is "Object";
+*/
+
+__instance = new Object;
+
+__instance.exec = RegExp.prototype.exec;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = new Object; __instance.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = new Object; __instance.exec = RegExp.prototype.exec. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T10.js
new file mode 100644
index 000000000..7f4dbf746
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T10.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A2_T10;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is undefined;
+*/
+
+exec = RegExp.prototype.exec;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: exec = RegExp.prototype.exec; exec("message to investigate"). Actual: ' + (exec("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: exec = RegExp.prototype.exec; exec("message to investigate"). Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T2.js
new file mode 100644
index 000000000..e5e3aea1b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A2_T2;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is Math;
+*/
+
+__instance = Math;
+
+__instance.exec = RegExp.prototype.exec;
+
+//CHECK#1
+try {
+ with(__instance) exec("message to investigate");
+ $ERROR('#1.1: __instance = Math; __instance.exec = RegExp.prototype.exec; with(__instance) exec("message to investigate")');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = Math; __instance.exec = RegExp.prototype.exec; with(__instance) exec("message to investigate"). Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T3.js
new file mode 100644
index 000000000..e06e2c075
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A2_T3;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is function object;
+*/
+
+__instance.exec = RegExp.prototype.exec;
+
+//CHECK#1
+try {
+ with(__instance) exec("message to investigate");
+ $ERROR('#1.1: __instance.exec = RegExp.prototype.exec; with(__instance) exec("message to investigate"); function __instance(){}');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance.exec = RegExp.prototype.exec; with(__instance) exec("message to investigate"); function __instance(){}. Actual: ' + (e));
+ }
+}
+
+function __instance(){};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T4.js
new file mode 100644
index 000000000..9bddf8ae2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A2_T4;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is new String("[a-b]");
+*/
+
+__instance = new String("[a-b]");
+
+__instance.exec = RegExp.prototype.exec;
+
+//CHECK#1
+with(__instance){
+ try {
+ $ERROR('#1.1: __instance = new String("[a-b]"); __instance.exec = RegExp.prototype.exec; exec("message to investigate"). Actual: ' + (exec("message to investigate")));
+ } catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = new String("[a-b]"); __instance.exec = RegExp.prototype.exec; exec("message to investigate"). Actual: ' + (e));
+ }
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T5.js
new file mode 100644
index 000000000..3aac92f1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A2_T5;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is new Boolean(false);
+*/
+
+__instance = new Boolean(false);
+
+__instance.exec = RegExp.prototype.exec;
+
+//CHECK#1
+with(__instance) {
+ try {
+ $ERROR('#1.1: __instance = new Boolean(false); __instance.exec = RegExp.prototype.exec; exec("message to investigate"). Actual: ' + (exec("message to investigate")));
+ } catch (e) {
+ if ((e instanceof TypeError !== true)) {
+ $ERROR('#1.2: __instance = new Boolean(false); __instance.exec = RegExp.prototype.exec; exec("message to investigate"). Actual: ' + (e));
+ }
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T6.js
new file mode 100644
index 000000000..7ac059ad0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T6.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A2_T6;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is new Number(1.0);
+*/
+
+__instance = new Number(1.0);
+
+__instance.exec = RegExp.prototype.exec;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = new Number(1.0); __instance.exec = RegExp.prototype.exec; __instance["exec"]("message to investigate"). Actual: ' + (__instance["exec"]("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = new Number(1.0); __instance.exec = RegExp.prototype.exec; __instance["exec"]("message to investigate"). Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T7.js
new file mode 100644
index 000000000..8dd2d21bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T7.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A2_T7;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is false;
+*/
+
+__instance = false;
+
+Object.prototype.exec = RegExp.prototype.exec;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = false; Object.prototype.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = false; Object.prototype.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T8.js
new file mode 100644
index 000000000..8ee285f7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A2_T8;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is ".";
+*/
+
+__instance = ".";
+
+Object.prototype.exec = RegExp.prototype.exec;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = "."; Object.prototype.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = "."; Object.prototype.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T9.js
new file mode 100644
index 000000000..af4c400d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A2_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A2_T9;
+* @section: 15.10.6.2;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is 1.0;
+*/
+
+__instance = 1.0;
+
+Object.prototype.exec = RegExp.prototype.exec;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = 1.0; Object.prototype.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = 1.0; Object.prototype.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T1.js
new file mode 100644
index 000000000..996aafa8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A3_T1;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true and lastIndex not changed manually,
+* next exec calling start to match from position where current match finished;
+* @description: RegExp is /(?:ab|cd)\d?/g and tested string is "ab cd2 ab34 cd";
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__matched = [];
+
+__expected = ["ab", "cd2", "ab3", "cd"];
+
+do{
+ __executed = __re.exec("ab cd2 ab34 cd");
+ if (__executed !== null) {
+ __matched.push(__executed[0]);
+ } else {
+ break;
+ }
+}while(true);
+
+//CHECK#1
+if (__expected.length !== __matched.length) {
+ $ERROR('#1: __executed = /(?:ab|cd)\\d?/g.exec("ab cd2 ab34 cd"); __matched.length === ' + (__expected.length) + '.Actual: ' + (__matched.length));
+}
+
+//CHECK#2
+for(var index=0; index<__expected.length; index++) {
+ if (__expected[index] !== __matched[index]) {
+ $ERROR('#2: __executed = /(?:ab|cd)\\d?/g.exec("ab cd2 ab34 cd"); __matched[' + index + '] === ' + __expected[index] + '. Actual: ' + __matched[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T2.js
new file mode 100644
index 000000000..8fab0ae55
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T2.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A3_T2;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true and lastIndex not changed manually,
+* next exec calling start to match from position where current match finished;
+* @description: RegExp is /[Nn]evermore/g and tested string is very long string;
+*/
+
+__the__raven = " Once upon a midnight dreary, while I pondered weak and weary," +
+ "Over many a quaint and curious volume of forgotten lore," +
+ "While I nodded, nearly napping, suddenly there came a tapping," +
+ "As of some one gently rapping, rapping at my chamber door." +
+ "`'Tis some visitor,' I muttered, `tapping at my chamber door -" +
+ "Only this, and nothing more.'" +
+ "Ah, distinctly I remember it was in the bleak December," +
+ "And each separate dying ember wrought its ghost upon the floor." +
+ "Eagerly I wished the morrow; - vainly I had sought to borrow" +
+ "From my books surcease of sorrow - sorrow for the lost Lenore -" +
+ "For the rare and radiant maiden whom the angels named Lenore -" +
+ "Nameless here for evermore." +
+ "\n" +
+ "And the silken sad uncertain rustling of each purple curtain" +
+ "Thrilled me - filled me with fantastic terrors never felt before;" +
+ "So that now, to still the beating of my heart, I stood repeating" +
+ "`'Tis some visitor entreating entrance at my chamber door -" +
+ "Some late visitor entreating entrance at my chamber door; -" +
+ "This it is, and nothing more,'" +
+ "Presently my soul grew stronger; hesitating then no longer," +
+ "`Sir,' said I, `or Madam, truly your forgiveness I implore;" +
+ "But the fact is I was napping, and so gently you came rapping," +
+ "And so faintly you came tapping, tapping at my chamber door," +
+ "That I scarce was sure I heard you' - here I opened wide the door; -" +
+ "Darkness there, and nothing more." +
+ "\n" +
+ "Deep into that darkness peering, long I stood there wondering, fearing," +
+ "Doubting, dreaming dreams no mortal ever dared to dream before" +
+ "But the silence was unbroken, and the darkness gave no token," +
+ "And the only word there spoken was the whispered word, `Lenore!'" +
+ "This I whispered, and an echo murmured back the word, `Lenore!'" +
+ "Merely this and nothing more." +
+ "\n" +
+ "Back into the chamber turning, all my soul within me burning," +
+ "Soon again I heard a tapping somewhat louder than before." +
+ "`Surely,' said I, `surely that is something at my window lattice;" +
+ "Let me see then, what thereat is, and this mystery explore -" +
+ "Let my heart be still a moment and this mystery explore; -" +
+ "'Tis the wind and nothing more!'" +
+ "\n" +
+ "Open here I flung the shutter, when, with many a flirt and flutter," +
+ "In there stepped a stately raven of the saintly days of yore." +
+ "Not the least obeisance made he; not a minute stopped or stayed he;" +
+ "But, with mien of lord or lady, perched above my chamber door -" +
+ "Perched upon a bust of Pallas just above my chamber door -" +
+ "Perched, and sat, and nothing more." +
+ "\n" +
+ "Then this ebony bird beguiling my sad fancy into smiling," +
+ "By the grave and stern decorum of the countenance it wore," +
+ "`Though thy crest be shorn and shaven, thou,' I said, `art sure no craven." +
+ "Ghastly grim and ancient raven wandering from the nightly shore -" +
+ "Tell me what thy lordly name is on the Night's Plutonian shore!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "-n" +
+ "Much I marvelled this ungainly fowl to hear discourse so plainly," +
+ "Though its answer little meaning - little relevancy bore;" +
+ "For we cannot help agreeing that no living human being" +
+ "Ever yet was blessed with seeing bird above his chamber door -" +
+ "Bird or beast above the sculptured bust above his chamber door," +
+ "With such name as `Nevermore.'" +
+ "\n" +
+ "But the raven, sitting lonely on the placid bust, spoke only," +
+ "That one word, as if his soul in that one word he did outpour." +
+ "Nothing further then he uttered - not a feather then he fluttered -" +
+ "Till I scarcely more than muttered `Other friends have flown before -" +
+ "On the morrow he will leave me, as my hopes have flown before.'" +
+ "Then the bird said, `Nevermore.'" +
+ "\n" +
+ "Startled at the stillness broken by reply so aptly spoken," +
+ "`Doubtless,' said I, `what it utters is its only stock and store," +
+ "Caught from some unhappy master whom unmerciful disaster" +
+ "Followed fast and followed faster till his songs one burden bore -" +
+ "Till the dirges of his hope that melancholy burden bore" +
+ "Of \"Never-nevermore.\"'" +
+ "\n" +
+ "But the raven still beguiling all my sad soul into smiling," +
+ "Straight I wheeled a cushioned seat in front of bird and bust and door;" +
+ "Then, upon the velvet sinking, I betook myself to linking" +
+ "Fancy unto fancy, thinking what this ominous bird of yore -" +
+ "What this grim, ungainly, ghastly, gaunt, and ominous bird of yore" +
+ "Meant in croaking `Nevermore.'" +
+ "\n" +
+ "This I sat engaged in guessing, but no syllable expressing" +
+ "To the fowl whose fiery eyes now burned into my bosom's core;" +
+ "This and more I sat divining, with my head at ease reclining" +
+ "On the cushion's velvet lining that the lamp-light gloated o'er," +
+ "But whose velvet violet lining with the lamp-light gloating o'er," +
+ "She shall press, ah, nevermore!" +
+ "\n" +
+ "Then, methought, the air grew denser, perfumed from an unseen censer" +
+ "Swung by Seraphim whose foot-falls tinkled on the tufted floor." +
+ "`Wretch,' I cried, `thy God hath lent thee - by these angels he has sent thee" +
+ "Respite - respite and nepenthe from thy memories of Lenore!" +
+ "Quaff, oh quaff this kind nepenthe, and forget this lost Lenore!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil! -" +
+ "Whether tempter sent, or whether tempest tossed thee here ashore," +
+ "Desolate yet all undaunted, on this desert land enchanted -" +
+ "On this home by horror haunted - tell me truly, I implore -" +
+ "Is there - is there balm in Gilead? - tell me - tell me, I implore!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil!" +
+ "By that Heaven that bends above us - by that God we both adore -" +
+ "Tell this soul with sorrow laden if, within the distant Aidenn," +
+ "It shall clasp a sainted maiden whom the angels named Lenore -" +
+ "Clasp a rare and radiant maiden, whom the angels named Lenore?'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "`Be that word our sign of parting, bird or fiend!' I shrieked upstarting -" +
+ "`Get thee back into the tempest and the Night's Plutonian shore!" +
+ "Leave no black plume as a token of that lie thy soul hath spoken!" +
+ "Leave my loneliness unbroken! - quit the bust above my door!" +
+ "Take thy beak from out my heart, and take thy form from off my door!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "And the raven, never flitting, still is sitting, still is sitting" +
+ "On the pallid bust of Pallas just above my chamber door;" +
+ "And his eyes have all the seeming of a demon's that is dreaming," +
+ "And the lamp-light o'er him streaming throws his shadow on the floor;" +
+ "And my soul from out that shadow that lies floating on the floor" +
+ "Shall be lifted - nevermore!"
+
+NEVERMORE=11;
+
+__re = /[Nn]evermore/g;
+__matched=0;
+
+do{
+ __executed = __re.exec(__the__raven);
+ if (__executed !== null) {
+ __matched++;
+ } else {
+ break;
+ }
+}while(1);
+
+//CHECK#1
+if (__matched !== NEVERMORE) {
+ $ERROR('#1: __re = /[Nn]evermore/g; __executed = __re.exec(__the__raven)'+__matched);
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T3.js
new file mode 100644
index 000000000..568684e9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T3.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A3_T3;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true and lastIndex not changed manually,
+* next exec calling start to match from position where current match finished;
+* @description: RegExp is /[Nn]?evermore/g and tested string is very long string;
+*/
+
+__the__raven = " Once upon a midnight dreary, while I pondered weak and weary," +
+ "Over many a quaint and curious volume of forgotten lore," +
+ "While I nodded, nearly napping, suddenly there came a tapping," +
+ "As of some one gently rapping, rapping at my chamber door." +
+ "`'Tis some visitor,' I muttered, `tapping at my chamber door -" +
+ "Only this, and nothing more.'" +
+ "Ah, distinctly I remember it was in the bleak December," +
+ "And each separate dying ember wrought its ghost upon the floor." +
+ "Eagerly I wished the morrow; - vainly I had sought to borrow" +
+ "From my books surcease of sorrow - sorrow for the lost Lenore -" +
+ "For the rare and radiant maiden whom the angels named Lenore -" +
+ "Nameless here for evermore." +
+ "\n" +
+ "And the silken sad uncertain rustling of each purple curtain" +
+ "Thrilled me - filled me with fantastic terrors never felt before;" +
+ "So that now, to still the beating of my heart, I stood repeating" +
+ "`'Tis some visitor entreating entrance at my chamber door -" +
+ "Some late visitor entreating entrance at my chamber door; -" +
+ "This it is, and nothing more,'" +
+ "Presently my soul grew stronger; hesitating then no longer," +
+ "`Sir,' said I, `or Madam, truly your forgiveness I implore;" +
+ "But the fact is I was napping, and so gently you came rapping," +
+ "And so faintly you came tapping, tapping at my chamber door," +
+ "That I scarce was sure I heard you' - here I opened wide the door; -" +
+ "Darkness there, and nothing more." +
+ "\n" +
+ "Deep into that darkness peering, long I stood there wondering, fearing," +
+ "Doubting, dreaming dreams no mortal ever dared to dream before" +
+ "But the silence was unbroken, and the darkness gave no token," +
+ "And the only word there spoken was the whispered word, `Lenore!'" +
+ "This I whispered, and an echo murmured back the word, `Lenore!'" +
+ "Merely this and nothing more." +
+ "\n" +
+ "Back into the chamber turning, all my soul within me burning," +
+ "Soon again I heard a tapping somewhat louder than before." +
+ "`Surely,' said I, `surely that is something at my window lattice;" +
+ "Let me see then, what thereat is, and this mystery explore -" +
+ "Let my heart be still a moment and this mystery explore; -" +
+ "'Tis the wind and nothing more!'" +
+ "\n" +
+ "Open here I flung the shutter, when, with many a flirt and flutter," +
+ "In there stepped a stately raven of the saintly days of yore." +
+ "Not the least obeisance made he; not a minute stopped or stayed he;" +
+ "But, with mien of lord or lady, perched above my chamber door -" +
+ "Perched upon a bust of Pallas just above my chamber door -" +
+ "Perched, and sat, and nothing more." +
+ "\n" +
+ "Then this ebony bird beguiling my sad fancy into smiling," +
+ "By the grave and stern decorum of the countenance it wore," +
+ "`Though thy crest be shorn and shaven, thou,' I said, `art sure no craven." +
+ "Ghastly grim and ancient raven wandering from the nightly shore -" +
+ "Tell me what thy lordly name is on the Night's Plutonian shore!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "-n" +
+ "Much I marvelled this ungainly fowl to hear discourse so plainly," +
+ "Though its answer little meaning - little relevancy bore;" +
+ "For we cannot help agreeing that no living human being" +
+ "Ever yet was blessed with seeing bird above his chamber door -" +
+ "Bird or beast above the sculptured bust above his chamber door," +
+ "With such name as `Nevermore.'" +
+ "\n" +
+ "But the raven, sitting lonely on the placid bust, spoke only," +
+ "That one word, as if his soul in that one word he did outpour." +
+ "Nothing further then he uttered - not a feather then he fluttered -" +
+ "Till I scarcely more than muttered `Other friends have flown before -" +
+ "On the morrow he will leave me, as my hopes have flown before.'" +
+ "Then the bird said, `Nevermore.'" +
+ "\n" +
+ "Startled at the stillness broken by reply so aptly spoken," +
+ "`Doubtless,' said I, `what it utters is its only stock and store," +
+ "Caught from some unhappy master whom unmerciful disaster" +
+ "Followed fast and followed faster till his songs one burden bore -" +
+ "Till the dirges of his hope that melancholy burden bore" +
+ "Of \"Never-nevermore.\"'" +
+ "\n" +
+ "But the raven still beguiling all my sad soul into smiling," +
+ "Straight I wheeled a cushioned seat in front of bird and bust and door;" +
+ "Then, upon the velvet sinking, I betook myself to linking" +
+ "Fancy unto fancy, thinking what this ominous bird of yore -" +
+ "What this grim, ungainly, ghastly, gaunt, and ominous bird of yore" +
+ "Meant in croaking `Nevermore.'" +
+ "\n" +
+ "This I sat engaged in guessing, but no syllable expressing" +
+ "To the fowl whose fiery eyes now burned into my bosom's core;" +
+ "This and more I sat divining, with my head at ease reclining" +
+ "On the cushion's velvet lining that the lamp-light gloated o'er," +
+ "But whose velvet violet lining with the lamp-light gloating o'er," +
+ "She shall press, ah, nevermore!" +
+ "\n" +
+ "Then, methought, the air grew denser, perfumed from an unseen censer" +
+ "Swung by Seraphim whose foot-falls tinkled on the tufted floor." +
+ "`Wretch,' I cried, `thy God hath lent thee - by these angels he has sent thee" +
+ "Respite - respite and nepenthe from thy memories of Lenore!" +
+ "Quaff, oh quaff this kind nepenthe, and forget this lost Lenore!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil! -" +
+ "Whether tempter sent, or whether tempest tossed thee here ashore," +
+ "Desolate yet all undaunted, on this desert land enchanted -" +
+ "On this home by horror haunted - tell me truly, I implore -" +
+ "Is there - is there balm in Gilead? - tell me - tell me, I implore!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil!" +
+ "By that Heaven that bends above us - by that God we both adore -" +
+ "Tell this soul with sorrow laden if, within the distant Aidenn," +
+ "It shall clasp a sainted maiden whom the angels named Lenore -" +
+ "Clasp a rare and radiant maiden, whom the angels named Lenore?'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "`Be that word our sign of parting, bird or fiend!' I shrieked upstarting -" +
+ "`Get thee back into the tempest and the Night's Plutonian shore!" +
+ "Leave no black plume as a token of that lie thy soul hath spoken!" +
+ "Leave my loneliness unbroken! - quit the bust above my door!" +
+ "Take thy beak from out my heart, and take thy form from off my door!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "And the raven, never flitting, still is sitting, still is sitting" +
+ "On the pallid bust of Pallas just above my chamber door;" +
+ "And his eyes have all the seeming of a demon's that is dreaming," +
+ "And the lamp-light o'er him streaming throws his shadow on the floor;" +
+ "And my soul from out that shadow that lies floating on the floor" +
+ "Shall be lifted - nevermore!"
+
+NEVERMORE_AND_EVERMORE=12;
+
+__re = /[Nn]?evermore/g;
+__matched=0;
+
+do{
+ __executed = __re.exec(__the__raven);
+ if (__executed !== null) {
+ __matched++;
+ } else {
+ break;
+ }
+}while(1);
+
+//CHECK#1
+if (__matched !== NEVERMORE_AND_EVERMORE) {
+ $ERROR('#1: __re = /[Nn]?evermore/g; __executed = __re.exec(__the__raven)'+__matched);
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T4.js
new file mode 100644
index 000000000..1cffd6ce1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T4.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A3_T4;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true and lastIndex not changed manually,
+* next exec calling start to match from position where current match finished;
+* @description: RegExp is /([Nn]?ever|([Nn]othing\s{1,}))more/g and tested string is very long string;
+*/
+
+__the__raven = " Once upon a midnight dreary, while I pondered weak and weary," +
+ "Over many a quaint and curious volume of forgotten lore," +
+ "While I nodded, nearly napping, suddenly there came a tapping," +
+ "As of some one gently rapping, rapping at my chamber door." +
+ "`'Tis some visitor,' I muttered, `tapping at my chamber door -" +
+ "Only this, and nothing more.'" +
+ "Ah, distinctly I remember it was in the bleak December," +
+ "And each separate dying ember wrought its ghost upon the floor." +
+ "Eagerly I wished the morrow; - vainly I had sought to borrow" +
+ "From my books surcease of sorrow - sorrow for the lost Lenore -" +
+ "For the rare and radiant maiden whom the angels named Lenore -" +
+ "Nameless here for evermore." +
+ "\n" +
+ "And the silken sad uncertain rustling of each purple curtain" +
+ "Thrilled me - filled me with fantastic terrors never felt before;" +
+ "So that now, to still the beating of my heart, I stood repeating" +
+ "`'Tis some visitor entreating entrance at my chamber door -" +
+ "Some late visitor entreating entrance at my chamber door; -" +
+ "This it is, and nothing more,'" +
+ "Presently my soul grew stronger; hesitating then no longer," +
+ "`Sir,' said I, `or Madam, truly your forgiveness I implore;" +
+ "But the fact is I was napping, and so gently you came rapping," +
+ "And so faintly you came tapping, tapping at my chamber door," +
+ "That I scarce was sure I heard you' - here I opened wide the door; -" +
+ "Darkness there, and nothing more." +
+ "\n" +
+ "Deep into that darkness peering, long I stood there wondering, fearing," +
+ "Doubting, dreaming dreams no mortal ever dared to dream before" +
+ "But the silence was unbroken, and the darkness gave no token," +
+ "And the only word there spoken was the whispered word, `Lenore!'" +
+ "This I whispered, and an echo murmured back the word, `Lenore!'" +
+ "Merely this and nothing more." +
+ "\n" +
+ "Back into the chamber turning, all my soul within me burning," +
+ "Soon again I heard a tapping somewhat louder than before." +
+ "`Surely,' said I, `surely that is something at my window lattice;" +
+ "Let me see then, what thereat is, and this mystery explore -" +
+ "Let my heart be still a moment and this mystery explore; -" +
+ "'Tis the wind and nothing more!'" +
+ "\n" +
+ "Open here I flung the shutter, when, with many a flirt and flutter," +
+ "In there stepped a stately raven of the saintly days of yore." +
+ "Not the least obeisance made he; not a minute stopped or stayed he;" +
+ "But, with mien of lord or lady, perched above my chamber door -" +
+ "Perched upon a bust of Pallas just above my chamber door -" +
+ "Perched, and sat, and nothing more." +
+ "\n" +
+ "Then this ebony bird beguiling my sad fancy into smiling," +
+ "By the grave and stern decorum of the countenance it wore," +
+ "`Though thy crest be shorn and shaven, thou,' I said, `art sure no craven." +
+ "Ghastly grim and ancient raven wandering from the nightly shore -" +
+ "Tell me what thy lordly name is on the Night's Plutonian shore!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "-n" +
+ "Much I marvelled this ungainly fowl to hear discourse so plainly," +
+ "Though its answer little meaning - little relevancy bore;" +
+ "For we cannot help agreeing that no living human being" +
+ "Ever yet was blessed with seeing bird above his chamber door -" +
+ "Bird or beast above the sculptured bust above his chamber door," +
+ "With such name as `Nevermore.'" +
+ "\n" +
+ "But the raven, sitting lonely on the placid bust, spoke only," +
+ "That one word, as if his soul in that one word he did outpour." +
+ "Nothing further then he uttered - not a feather then he fluttered -" +
+ "Till I scarcely more than muttered `Other friends have flown before -" +
+ "On the morrow he will leave me, as my hopes have flown before.'" +
+ "Then the bird said, `Nevermore.'" +
+ "\n" +
+ "Startled at the stillness broken by reply so aptly spoken," +
+ "`Doubtless,' said I, `what it utters is its only stock and store," +
+ "Caught from some unhappy master whom unmerciful disaster" +
+ "Followed fast and followed faster till his songs one burden bore -" +
+ "Till the dirges of his hope that melancholy burden bore" +
+ "Of \"Never-nevermore.\"'" +
+ "\n" +
+ "But the raven still beguiling all my sad soul into smiling," +
+ "Straight I wheeled a cushioned seat in front of bird and bust and door;" +
+ "Then, upon the velvet sinking, I betook myself to linking" +
+ "Fancy unto fancy, thinking what this ominous bird of yore -" +
+ "What this grim, ungainly, ghastly, gaunt, and ominous bird of yore" +
+ "Meant in croaking `Nevermore.'" +
+ "\n" +
+ "This I sat engaged in guessing, but no syllable expressing" +
+ "To the fowl whose fiery eyes now burned into my bosom's core;" +
+ "This and more I sat divining, with my head at ease reclining" +
+ "On the cushion's velvet lining that the lamp-light gloated o'er," +
+ "But whose velvet violet lining with the lamp-light gloating o'er," +
+ "She shall press, ah, nevermore!" +
+ "\n" +
+ "Then, methought, the air grew denser, perfumed from an unseen censer" +
+ "Swung by Seraphim whose foot-falls tinkled on the tufted floor." +
+ "`Wretch,' I cried, `thy God hath lent thee - by these angels he has sent thee" +
+ "Respite - respite and nepenthe from thy memories of Lenore!" +
+ "Quaff, oh quaff this kind nepenthe, and forget this lost Lenore!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil! -" +
+ "Whether tempter sent, or whether tempest tossed thee here ashore," +
+ "Desolate yet all undaunted, on this desert land enchanted -" +
+ "On this home by horror haunted - tell me truly, I implore -" +
+ "Is there - is there balm in Gilead? - tell me - tell me, I implore!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil!" +
+ "By that Heaven that bends above us - by that God we both adore -" +
+ "Tell this soul with sorrow laden if, within the distant Aidenn," +
+ "It shall clasp a sainted maiden whom the angels named Lenore -" +
+ "Clasp a rare and radiant maiden, whom the angels named Lenore?'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "`Be that word our sign of parting, bird or fiend!' I shrieked upstarting -" +
+ "`Get thee back into the tempest and the Night's Plutonian shore!" +
+ "Leave no black plume as a token of that lie thy soul hath spoken!" +
+ "Leave my loneliness unbroken! - quit the bust above my door!" +
+ "Take thy beak from out my heart, and take thy form from off my door!'" +
+ "Quoth the raven, `Nevermore.'" +
+ "\n" +
+ "And the raven, never flitting, still is sitting, still is sitting" +
+ "On the pallid bust of Pallas just above my chamber door;" +
+ "And his eyes have all the seeming of a demon's that is dreaming," +
+ "And the lamp-light o'er him streaming throws his shadow on the floor;" +
+ "And my soul from out that shadow that lies floating on the floor" +
+ "Shall be lifted - nevermore!"
+
+ALL_THE_HOPELESS_MORE=18;
+
+__re = /([Nn]?ever|([Nn]othing\s{1,}))more/g;
+__matched=0;
+
+do{
+ __executed = __re.exec(__the__raven);
+ if (__executed !== null) {
+ __matched++;
+ } else {
+ break;
+ }
+}while(1);
+
+//CHECK#1
+if (__matched !== ALL_THE_HOPELESS_MORE) {
+ $ERROR('#1: __re = /([Nn]?ever|([Nn]othing\\s{1,}))more/g; __executed = __re.exec(__the__raven)'+__matched);
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T5.js
new file mode 100644
index 000000000..7cbe3e886
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T5.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A3_T5;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true and lastIndex not changed manually,
+* next exec calling start to match from position where current match finished;
+* @description: RegExp is /\d+/g and tested string is "123 456 789";
+*/
+
+__re = /\d+/g;
+
+__matched = [];
+
+__expected = ["123","456","789"];
+
+do{
+ __executed = __re.exec("123 456 789");
+ if (__executed !== null) {
+ __matched.push(__executed[0]);
+ } else {
+ break;
+ }
+}while(true);
+
+//CHECK#1
+if (__expected.length !== __matched.length) {
+ $ERROR('#1: __executed = /\\d+/g.exec("123 456 789"); __matched.length === ' + (__expected.length) + '.Actual: ' + (__matched.length));
+}
+
+//CHECK#2
+for(var index=0; index<__expected.length; index++) {
+ if (__expected[index] !== __matched[index]) {
+ $ERROR('#2: __executed = /\\d+/g.exec("123 456 789"); __matched[' + index + '] === ' + __expected[index] + '. Actual: ' + __matched[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T6.js
new file mode 100644
index 000000000..0a4d1aa74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T6.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A3_T6;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true and lastIndex not changed manually,
+* next exec calling start to match from position where current match finished;
+* @description: RegExp is /(\d+)/g and tested string is "123 456 789";
+*/
+
+__re = /(\d+)/g;
+
+__matched = [];
+
+__expected = ["123","456","789"];
+
+do{
+ __executed = __re.exec("123 456 789");
+ if (__executed !== null) {
+ __matched.push(__executed[0]);
+ } else {
+ break;
+ }
+}while(true);
+
+//CHECK#1
+if (__expected.length !== __matched.length) {
+ $ERROR('#1: __executed = /(\\d+)/g.exec("123 456 789"); __matched.length === ' + (__expected.length) + '.Actual: ' + (__matched.length));
+}
+
+//CHECK#2
+for(var index=0; index<__expected.length; index++) {
+ if (__expected[index] !== __matched[index]) {
+ $ERROR('#2: __executed = /(\\d+)/g.exec("123 456 789"); __matched[' + index + '] === ' + __expected[index] + '. Actual: ' + __matched[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T7.js
new file mode 100644
index 000000000..ab1fc2e61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A3_T7.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A3_T7;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true and lastIndex not changed manually,
+* next exec calling start to match from position where current match finished;
+* @description: RegExp is /\d+/ and tested string is "123 456 789";
+*/
+
+__re = /\d+/;
+
+__matched = [];
+
+__expected = ["123","123","123","123","123","123","123","123","123","123"];
+
+do{
+ __executed = __re.exec("123 456 789");
+ if (__executed !== null) {
+ __matched.push(__executed[0]);
+ } else {
+ break;
+ }
+}while(__matched.length<10);
+
+//CHECK#1
+if (__expected.length !== __matched.length) {
+ $ERROR('#1: __executed = /\\d+/.exec("123 456 789"); __matched.length === ' + (__expected.length) + '.Actual: ' + (__matched.length));
+}
+
+//CHECK#2
+for(var index=0; index<__expected.length; index++) {
+ if (__expected[index] !== __matched[index]) {
+ $ERROR('#2: __executed = /\\d+/.exec("123 456 789"); __matched[' + index + '] === ' + __expected[index] + '. Actual: ' + __matched[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T1.js
new file mode 100644
index 000000000..c91f2bc4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T1.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T1;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = 12 and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__re.lastIndex = 12;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["ab4"];
+__expected.index = 17;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = 12; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = 12; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = 12; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = 12; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T10.js
new file mode 100644
index 000000000..3c9518077
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T10.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T10;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = {valueOf:function(){return 12;}} and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__obj = {valueOf:function(){return 12;}};
+
+__re.lastIndex = __obj;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["ab4"];
+__expected.index = 17;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __obj = {valueOf:function(){return 12;}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __obj = {valueOf:function(){return 12;}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __obj = {valueOf:function(){return 12;}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; __obj = {valueOf:function(){return 12;}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T11.js
new file mode 100644
index 000000000..cbea13abe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T11.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T11;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = {valueOf:function(){throw "intoint";}} and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__obj = {valueOf:function(){throw "intoint";}};
+
+__re.lastIndex = __obj;
+
+//CHECK#5
+try {
+ $FAIL('#5.1: __obj = {valueOf:function(){throw "intoint";}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42") throw "intoint". Actual: ' + (__re.exec("aacd2233ab12nm444ab42")));
+} catch (e) {
+ if (e !== "intoint") {
+ $ERROR('#5.2: __obj = {valueOf:function(){throw "intoint";}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42") throw "intoint". Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T12.js
new file mode 100644
index 000000000..e5b58be2f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T12.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T12;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = {toString:function(){return 12;},valueOf:function(){return {};}} and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__obj = {toString:function(){return 12;},valueOf:function(){return {};}};
+
+__re.lastIndex = __obj;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["ab4"];
+__expected.index = 17;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __obj = {toString:function(){return 12;},valueOf:function(){return {};}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __obj = {toString:function(){return 12;},valueOf:function(){return {};}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __obj = {toString:function(){return 12;},valueOf:function(){return {};}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; __obj = {toString:function(){return 12;},valueOf:function(){return {};}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T2.js
new file mode 100644
index 000000000..25a041f3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T2.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T2;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = undefined and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__re.lastIndex = undefined;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = undefined; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = undefined; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = undefined; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = undefined; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T3.js
new file mode 100644
index 000000000..f93b57564
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T3.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T3;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = void 0 and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__re.lastIndex = void 0;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = void 0; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = void 0; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = void 0; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = void 0; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T4.js
new file mode 100644
index 000000000..d2824aa71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T4.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T4;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = null and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__re.lastIndex = null;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = null; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = null; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = null; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = null; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T5.js
new file mode 100644
index 000000000..9054cf291
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T5.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T5;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = x and again call exec, where x is undefined variable;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__re.lastIndex = x;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = x; __executed = __re.exec("aacd2233ab12nm444ab42"); var x; __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = x; __executed = __re.exec("aacd2233ab12nm444ab42"); var x; __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = x; __executed = __re.exec("aacd2233ab12nm444ab42"); var x; __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = x; __executed = __re.exec("aacd2233ab12nm444ab42"); var x; __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T6.js
new file mode 100644
index 000000000..dc40ae963
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T6.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T6;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = false and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__re.lastIndex = false;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = false; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = false; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = false; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = false; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T7.js
new file mode 100644
index 000000000..c7b044294
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T7.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T7;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = Math.NaN and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__re.lastIndex = Math.NaN;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = Math.NaN; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = Math.NaN; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = Math.NaN; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; re.lastIndex = Math.NaN; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T8.js
new file mode 100644
index 000000000..433dfb13d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T8.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T8;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = "12" and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__re.lastIndex = "12";
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["ab4"];
+__expected.index = 17;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = "12"; __executed = __re.exec("aacd2233ab12nm444ab42");__executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = "12"; __executed = __re.exec("aacd2233ab12nm444ab42");__executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = "12"; __executed = __re.exec("aacd2233ab12nm444ab42");__executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = "12"; __executed = __re.exec("aacd2233ab12nm444ab42");__executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T9.js
new file mode 100644
index 000000000..ca153da19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A4_T9.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A4_T9;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* If global is true next exec calling start to match from lastIndex position;
+* @description: Call first exec, then set re.lastIndex = "eleven" and again call exec;
+*/
+
+__re = /(?:ab|cd)\d?/g;
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__re.lastIndex = "eleven";
+
+__executed = __re.exec("aacd2233ab12nm444ab42");
+
+__expected = ["cd2"];
+__expected.index = 2;
+__expected.input = "aacd2233ab12nm444ab42";
+
+//CHECK#5
+if (__executed.length !== __expected.length) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = "eleven"; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#6
+if (__executed.index !== __expected.index) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = "eleven"; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#7
+if (__executed.input !== __expected.input) {
+ $ERROR('#7: __re = /(?:ab|cd)\\d?/g; __re.lastIndex = "eleven"; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#8
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#8: __re = /(?:ab|cd)\\d?/g;__re.lastIndex = "eleven"; __executed = __re.exec("aacd2233ab12nm444ab42"); __executed = __re.exec("aacd2233ab12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T1.js
new file mode 100644
index 000000000..67590bf06
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A5_T1;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* Let global is true and let I = If ToInteger(lastIndex).
+* Then if I<0 orI>length then set lastIndex to 0 and return null;
+* @description: First call /(?:ab|cd)\d?/g.exec("aac1dz2233a1bz12nm444ab42"), and then First call /(?:ab|cd)\d?/g.exec("aacd22");
+*/
+
+__re = /(?:ab|cd)\d?/g;
+__executed = __re.exec("aac1dz2233a1bz12nm444ab42");
+
+__expected = ["ab4"];
+__expected.index = 21;
+__expected.input = "aac1dz2233a1bz12nm444ab42";
+
+//CHECK#1
+if (__executed.length !== __expected.length) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aac1dz2233a1bz12nm444ab42"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
+}
+
+//CHECK#2
+if (__executed.index !== __expected.index) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aac1dz2233a1bz12nm444ab42"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
+}
+
+//CHECK#3
+if (__executed.input !== __expected.input) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aac1dz2233a1bz12nm444ab42"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
+}
+
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__executed[index] !== __expected[index]) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aac1dz2233a1bz12nm444ab42"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
+ }
+}
+
+__executed = __re.exec("aacd22");
+
+//CHECK#5
+if (__executed) {
+ $ERROR('#5: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd22"); __executed === true');
+}
+
+//CHECK#6
+if (__re.lastIndex !== 0) {
+ $ERROR('#6: __re = /(?:ab|cd)\\d?/g; __executed = __re.exec("aacd22"); __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T2.js
new file mode 100644
index 000000000..e2ef32757
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A5_T2;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* Let global is true and let I = If ToInteger(lastIndex).
+* Then if I<0 orI>length then set lastIndex to 0 and return null;
+* @description: Set lastIndex to 100 and call /(?:ab|cd)\d?/g.exec("aacd22 ");
+*/
+
+__re = /(?:ab|cd)\d?/g;
+__re.lastIndex=100;
+__executed = __re.exec("aacd22 ");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __re.lastIndex=100; __executed = __re.exec("aacd22 "); __executed === true');
+}
+
+//CHECK#2
+if (__re.lastIndex !== 0) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __re.lastIndex=100; __executed = __re.exec("aacd22 "); __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T3.js
new file mode 100644
index 000000000..303eaec8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A5_T3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A5_T3;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec behavior depends on global property.
+* Let global is true and let I = If ToInteger(lastIndex).
+* Then if I<0 orI>length then set lastIndex to 0 and return null;
+* @description: Set lastIndex to -1 and call /(?:ab|cd)\d?/g.exec("aacd22 ");
+*/
+
+__re = /(?:ab|cd)\d?/g;
+__re.lastIndex=-1;
+__executed = __re.test("aacd22 ");
+
+//CHECK#1
+if (__executed) {
+ $ERROR('#1: __re = /(?:ab|cd)\\d?/g; __re.lastIndex=-1; __executed = __re.test("aacd22 "); __executed === true');
+}
+
+//CHECK#2
+if (__re.lastIndex !== 0) {
+ $ERROR('#2: __re = /(?:ab|cd)\\d?/g; __re.lastIndex=-1; __executed = __re.test("aacd22 "); __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
+__re.lastIndex=-100;
+__executed = __re.test("aacd22 ");
+
+//CHECK#3
+if (__executed) {
+ $ERROR('#3: __re = /(?:ab|cd)\\d?/g; __re.lastIndex=-1; __executed = __re.test("aacd22 "); __re.lastIndex=-100; __executed = __re.test("aacd22 "); __executed === true');
+}
+
+//CHECK#4
+if (__re.lastIndex !== 0) {
+ $ERROR('#4: __re = /(?:ab|cd)\\d?/g; __re.lastIndex=-1; __executed = __re.test("aacd22 "); __re.lastIndex=-100; __executed = __re.test("aacd22 "); __re.lastIndex === 0. Actual: ' + (__re.lastIndex));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A6.js
new file mode 100644
index 000000000..f905c43df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A6;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec has not prototype property;
+* @description: Checking RegExp.prototype.exec.prototype;
+*/
+
+//CHECK#1
+if (RegExp.prototype.exec.prototype !== undefined) {
+ $ERROR('#1: RegExp.prototype.exec.prototype === undefined. Actual: ' + (RegExp.prototype.exec.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A7.js
new file mode 100644
index 000000000..4822518c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A7;
+* @section: 15.10.6.2, 13.2;
+* @assertion: RegExp.prototype.exec can't be used as constructor;
+* @description: Checking if creating the RegExp.prototype.exec object fails;
+*/
+
+__FACTORY = RegExp.prototype.exec;
+
+try {
+ __instance = new __FACTORY;
+ $ERROR('#1.1: __FACTORY = RegExp.prototype.exec throw TypeError. Actual: ' + (__instance));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __FACTORY = RegExp.prototype.exec throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A8.js
new file mode 100644
index 000000000..74a0096f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A8.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A8;
+* @section: 15.10.6.2;
+* @assertion: The RegExp.prototype.exec.length property has the attribute DontEnum;
+* @description: Checking if enumerating the RegExp.prototype.exec.length property fails;
+*/
+
+//CHECK#0
+if (RegExp.prototype.exec.hasOwnProperty('length') !== true) {
+ $ERROR('#0: RegExp.prototype.exec.hasOwnProperty(\'length\') === true');
+}
+
+ //CHECK#1
+if (RegExp.prototype.exec.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: RegExp.prototype.exec.propertyIsEnumerable(\'length\') === true');
+}
+
+ //CHECK#2
+count=0;
+
+for (p in RegExp.prototype.exec){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count = 0; for (p in RegExp.prototype.exec){ if (p==="length") count++; } count === 0. Actual: ' + (count));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A9.js
new file mode 100644
index 000000000..cae2ba792
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.2_A9;
+* @section: 15.10.6.2;
+* @assertion: The RegExp.prototype.exec.length property has the attribute DontDelete;
+* @description: Checking if deleting the RegExp.prototype.exec.length property fails;
+*/
+
+//CHECK#0
+if ((RegExp.prototype.exec.hasOwnProperty('length') !== true)) {
+ $FAIL('#0: RegExp.prototype.exec.hasOwnProperty(\'length\') === true');
+}
+
+//CHECK#1
+if (delete RegExp.prototype.exec.length !== false) {
+ $ERROR('#1: delete RegExp.prototype.exec.length === false');
+}
+
+//CHECK#2
+if (RegExp.prototype.exec.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete RegExp.prototype.exec.length; RegExp.prototype.exec.hasOwnProperty(\'length\') === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A10.js
new file mode 100644
index 000000000..d72677af7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A10.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A10;
+* @section: 15.10.6.3;
+* @assertion: The RegExp.prototype.test.length property has the attribute ReadOnly;
+* @description: Checking if varying the RegExp.prototype.test.length property fails;
+*/
+
+//CHECK#1
+if (RegExp.prototype.test.hasOwnProperty('length') !== true) {
+ $FAIL('#1: RegExp.prototype.test.hasOwnProperty(\'length\') === true');
+}
+
+__obj = RegExp.prototype.test.length;
+
+RegExp.prototype.test.length = function(){return "shifted";};
+
+//CHECK#2
+if (RegExp.prototype.test.length !== __obj) {
+ $ERROR('#2: __obj = RegExp.prototype.test.length; RegExp.prototype.test.length = function(){return "shifted";}; RegExp.prototype.test.length === __obj. Actual: ' + (RegExp.prototype.test.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A11.js
new file mode 100644
index 000000000..89ce04c69
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A11.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A11;
+* @section: 15.10.6.3;
+* @assertion: The length property of the test method is 1;
+* @description: Checking RegExp.prototype.test.length;
+*/
+
+//CHECK#1
+if (RegExp.prototype.test.hasOwnProperty("length") !== true) {
+ $FAIL('#1: RegExp.prototype.test.hasOwnProperty(\'length\') === true');
+}
+
+//CHECK#2
+if (RegExp.prototype.test.length !== 1) {
+ $ERROR('#2: RegExp.prototype.test.length === 1. Actual: ' + (RegExp.prototype.test.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T1.js
new file mode 100644
index 000000000..005cee3a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T1;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /1|12/ and tested string is "123";
+*/
+
+var __string = "123";
+__re = /1|12/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = "123";__re = /1|12/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T10.js
new file mode 100644
index 000000000..6045c8dc5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T10.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T10;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /1|12/ and tested string is 1.01;
+*/
+
+var __string = 1.01;
+__re = /1|12/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = 1.01;__re = /1|12/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T11.js
new file mode 100644
index 000000000..9e2071d62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T11.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T11;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /2|12/ and tested string is new Number(1.012);
+*/
+
+var __string = new Number(1.012);
+__re = /2|12/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = new Number(1.012); __re = /2|12/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T12.js
new file mode 100644
index 000000000..1340fbc0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T12.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T12;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /\.14/ and tested string is {toString:function(){return Math.PI;}};
+*/
+
+var __string = {toString:function(){return Math.PI;}};
+__re = /\.14/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = {toString:function(){return Math.PI;}}; __re = /\\.14/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T13.js
new file mode 100644
index 000000000..5f392d5f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T13.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T13;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /t[a-b|q-s]/ and tested string is true;
+*/
+
+var __string = true;
+__re = /t[a-b|q-s]/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = true;__re = /t[a-b|q-s]/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T14.js
new file mode 100644
index 000000000..a400faaa8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T14.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T14;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /AL|se/ and tested string is new Boolean;
+*/
+
+var __string = new Boolean;
+__re = /AL|se/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = new Boolean;__re = /AL|se/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T15.js
new file mode 100644
index 000000000..c5ca321b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T15.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T15;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /LS/i and tested string is {toString:function(){return false;}};
+*/
+
+var __string = {toString:function(){return false;}};
+__re = /LS/i;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = {toString:function(){return false;}}; __re = /LS/i; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T16.js
new file mode 100644
index 000000000..40e009004
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T16.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T16;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /undefined/ and call test() without arguments;
+*/
+
+__re = /undefined/;
+
+//CHECK#0
+if (__re.test() !== (__re.exec() !== null)) {
+ $ERROR('#0: __re = /undefined/; __re.test() === (__re.exec() !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T17.js
new file mode 100644
index 000000000..6e913cfbc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T17.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T17;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /ll|l/ and tested string is null;
+*/
+
+__re = /ll|l/;
+
+//CHECK#0
+if (__re.test(null) !== (__re.exec(null) !== null)) {
+ $ERROR('#0: __re = /ll|l/; __re.test(null) === (__re.exec(null) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T18.js
new file mode 100644
index 000000000..4a1f93627
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T18.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T18;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /nd|ne/ and tested string is undefined;
+*/
+
+__re = /nd|ne/;
+
+//CHECK#0
+if (__re.test(undefined) !== (__re.exec(undefined) !== null)) {
+ $ERROR('#0: __re = /nd|ne/; __re.test(undefined) === (__re.exec(undefined) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T19.js
new file mode 100644
index 000000000..8e3ace689
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T19.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T19;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /e{1}/ and tested string is void 0;
+*/
+
+__re = /e{1}/;
+
+//CHECK#0
+if (__re.test(void 0) !== (__re.exec(void 0) !== null)) {
+ $ERROR('#0: __re = /e{1}/; __re.test(void 0) === (__re.exec(void 0) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T2.js
new file mode 100644
index 000000000..491612846
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T2;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /((1)|(12))((3)|(23))/ and tested string is new String("123");
+*/
+
+var __string = new String("123");
+__re = /((1)|(12))((3)|(23))/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = new String("123"); __re = /((1)|(12))((3)|(23))/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T20.js
new file mode 100644
index 000000000..e44ff4ebf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T20.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T20;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /[a-f]d/ and tested string is x, where x is undefined;
+*/
+
+__re = /[a-f]d/;
+
+//CHECK#0
+if (__re.test(x) !== (__re.exec(x) !== null)) {
+ $ERROR('#0: __re = /[a-f]d/; __re.test(x) === (__re.exec(x) !== null); var x;');
+}
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T21.js
new file mode 100644
index 000000000..d087b8364
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T21.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T21;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /[a-z]n/ and tested string is x, where x is function(){}();
+*/
+
+__re = /[a-z]n/;
+
+//CHECK#0
+if (__re.test(function(){}()) !== (__re.exec(function(){}()) !== null)) {
+ $ERROR('#0: __re = /[a-z]n/; __re.test(function(){}()) === (__re.exec(function(){}()) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T3.js
new file mode 100644
index 000000000..2e274f612
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T3;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /a[a-z]{2,4}/ and tested string is new Object("abcdefghi");
+*/
+
+var __string = new Object("abcdefghi");
+__re = /a[a-z]{2,4}/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = new Object("abcdefghi"); __re = /a[a-z]{2,4}/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T4.js
new file mode 100644
index 000000000..3b12567df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T4;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /a[a-z]{2,4}?/ and tested string is {toString:function(){return "abcdefghi";}};
+*/
+
+var __string = {toString:function(){return "abcdefghi";}};
+__re = /a[a-z]{2,4}?/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = {toString:function(){return "abcdefghi";}}; __re = /a[a-z]{2,4}?/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T5.js
new file mode 100644
index 000000000..799da0bc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T5;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /(aa|aabaac|ba|b|c)* / and tested string is {toString:function(){return {};}, valueOf:function(){return "aabaac";}};
+*/
+
+var __string = {toString:function(){return {};}, valueOf:function(){return "aabaac";}};
+__re = /(aa|aabaac|ba|b|c)*/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string = {toString:function(){return {};}, valueOf:function(){return "aabaac";}}; __re = /(aa|aabaac|ba|b|c)*/; __re.test(__string) === (__re.exec(__string) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T6.js
new file mode 100644
index 000000000..191ab545b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T6;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /(z)((a+)?(b+)?(c))* / and tested string is (function(){return "zaacbbbcac"})();
+*/
+
+__re = /(z)((a+)?(b+)?(c))*/;
+
+//CHECK#0
+if (__re.test((function(){return "zaacbbbcac"})()) !== (__re.exec((function(){return "zaacbbbcac"})()) !== null)) {
+ $ERROR('#0: __re = /(z)((a+)?(b+)?(c))*/; __re.test((function(){return "zaacbbbcac"})()) === (__re.exec((function(){return "zaacbbbcac"})()) !== null)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T7.js
new file mode 100644
index 000000000..fe26935bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T7;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /[a-z]/ and tested string is {toString:function(){throw "intostr";}};
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[a-z]/.test({toString:function(){throw "intostr";}}) throw "intostr". Actual: ' + (/[a-z]/.test({toString:function(){throw "intostr";}})));
+} catch (e) {
+ if (e !== "intostr") {
+ $ERROR('#1.2: /[a-z]/.test({toString:function(){throw "intostr";}}) throw "intostr". Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T8.js
new file mode 100644
index 000000000..dfdb75acf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T8.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T8;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /[a-z]/ and tested string is {toString:void 0, valueOf:function(){throw "invalof";}};
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[a-z]/.test({toString:void 0, valueOf:function(){throw "invalof";}}) throw "invalof". Actual: ' + (/[a-z]/.test({toString:void 0, valueOf:function(){throw "invalof";}})));
+} catch (e) {
+ if (e !== "invalof") {
+ $ERROR('#1.2: /[a-z]/.test({toString:void 0, valueOf:function(){throw "invalof";}}) throw "invalof". Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T9.js
new file mode 100644
index 000000000..c9cdcdffe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A1_T9.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A1_T9;
+* @section: 15.10.6.3;
+* @assertion: Equivalent to the expression RegExp.prototype.exec(string) != null;
+* @description: RegExp is /1|12/ and tested string is function object;
+*/
+
+var __string;
+__re = /1|12/;
+
+//CHECK#0
+if (__re.test(__string) !== (__re.exec(__string) !== null)) {
+ $ERROR('#0: var __string;__re = /1|12/; __re.test(__string) === (__re.exec(__string) !== null); function __string(){};');
+}
+
+function __string(){};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T1.js
new file mode 100644
index 000000000..17e2c3ad6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_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.
+
+/**
+* @name: S15.10.6.3_A2_T1;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is new Object;
+*/
+
+__instance = new Object;
+
+__instance.test = RegExp.prototype.test;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = new Object; __instance.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (__instance.test("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = new Object; __instance.test = RegExp.prototype.test. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T10.js
new file mode 100644
index 000000000..cca9b9113
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T10.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A2_T10;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is undefined;
+*/
+
+test = RegExp.prototype.test;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: test = RegExp.prototype.test; test("message to investigate"). Actual: ' + (test("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: test = RegExp.prototype.test; test("message to investigate"). Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T2.js
new file mode 100644
index 000000000..69a6328e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A2_T2;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is Math;
+*/
+
+__instance = Math;
+
+__instance.test = RegExp.prototype.test;
+
+//CHECK#1
+try {
+ with(__instance) test("message to investigate");
+ $ERROR('#1.1: __instance = Math; __instance.test = RegExp.prototype.test; with(__instance) test("message to investigate")');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = Math; __instance.test = RegExp.prototype.test; with(__instance) test("message to investigate"). Actual: ' + (e));
+ }
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T3.js
new file mode 100644
index 000000000..0e52174ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A2_T3;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is function object;
+*/
+
+__instance.test = RegExp.prototype.test;
+
+//CHECK#1
+try {
+ with(__instance) test("message to investigate");
+ $ERROR('#1.1: __instance.test = RegExp.prototype.test; with(__instance) test("message to investigate"); function __instance(){}');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance.test = RegExp.prototype.test; with(__instance) test("message to investigate"); function __instance(){}. Actual: ' + (e));
+ }
+}
+
+function __instance(){};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T4.js
new file mode 100644
index 000000000..b613cfb54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A2_T4;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is new String("[a-b]");
+*/
+
+__instance = new String("[a-b]");
+
+__instance.test = RegExp.prototype.test;
+
+//CHECK#1
+with(__instance){
+ try {
+ $ERROR('#1.1: __instance = new String("[a-b]"); __instance.test = RegExp.prototype.test; test("message to investigate"). Actual: ' + (test("message to investigate")));
+ } catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = new String("[a-b]"); __instance.test = RegExp.prototype.test; test("message to investigate"). Actual: ' + (e));
+ }
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T5.js
new file mode 100644
index 000000000..a206874a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T5.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A2_T5;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is new Boolean(false);
+*/
+
+__instance = new Boolean(false);
+
+__instance.test = RegExp.prototype.test;
+
+//CHECK#1
+with(__instance) {
+ try {
+ $ERROR('#1.1: __instance = new Boolean(false); __instance.test = RegExp.prototype.test; test("message to investigate"). Actual: ' + (test("message to investigate")));
+ } catch (e) {
+ if ((e instanceof TypeError !== true)) {
+ $ERROR('#1.2: __instance = new Boolean(false); __instance.test = RegExp.prototype.test; test("message to investigate"). Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T6.js
new file mode 100644
index 000000000..814504691
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T6.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A2_T6;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is new Number(1.0);
+*/
+
+__instance = new Number(1.0);
+
+__instance.test = RegExp.prototype.test;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = new Number(1.0); __instance.test = RegExp.prototype.test; __instance["test"]("message to investigate"). Actual: ' + (__instance["test"]("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = new Number(1.0); __instance.test = RegExp.prototype.test; __instance["test"]("message to investigate"). Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T7.js
new file mode 100644
index 000000000..a6b80a5d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T7.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A2_T7;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is false;
+*/
+
+__instance = false;
+
+Object.prototype.test = RegExp.prototype.test;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = false; Object.prototype.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (__instance.test("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = false; Object.prototype.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (e));
+ }
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T8.js
new file mode 100644
index 000000000..a8abfdf01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T8.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A2_T8;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is ".";
+*/
+
+__instance = ".";
+
+Object.prototype.test = RegExp.prototype.test;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = "."; Object.prototype.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (__instance.test("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = "."; Object.prototype.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T9.js
new file mode 100644
index 000000000..e24a8cff5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A2_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A2_T9;
+* @section: 15.10.6.3;
+* @assertion: A TypeError exception is thrown if the this value is not an object for which the value of the internal [[Class]] property is "RegExp";
+* @description: The tested object is 1.0;
+*/
+
+__instance = 1.0;
+
+Object.prototype.test = RegExp.prototype.test;
+
+//CHECK#1
+try {
+ $ERROR('#1.1: __instance = 1.0; Object.prototype.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (__instance.test("message to investigate")));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __instance = 1.0; Object.prototype.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A6.js
new file mode 100644
index 000000000..c5f4142e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A6;
+* @section: 15.10.6.3, 13.2;
+* @assertion: RegExp.prototype.test has not prototype property;
+* @description: Checking RegExp.prototype.test.prototype;
+*/
+
+//CHECK#1
+if (RegExp.prototype.test.prototype !== undefined) {
+ $ERROR('#1: RegExp.prototype.test.prototype === undefined. Actual: ' + (RegExp.prototype.test.prototype));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A7.js
new file mode 100644
index 000000000..d9ee8d94a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A7;
+* @section: 15.10.6.3, 13.2;
+* @assertion: RegExp.prototype.test can't be used as constructor;
+* @description: Checking if creating the RegExp.prototype.test object fails;
+*/
+
+__FACTORY = RegExp.prototype.test;
+
+try {
+ __instance = new __FACTORY;
+ $ERROR('#1.1: __FACTORY = RegExp.prototype.test throw TypeError. Actual: ' + (__instance));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __FACTORY = RegExp.prototype.test throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A8.js
new file mode 100644
index 000000000..cfdbc36da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A8.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A8;
+* @section: 15.10.6.3;
+* @assertion: The RegExp.prototype.test.length property has the attribute DontEnum;
+* @description: Checking if enumerating the RegExp.prototype.test.length property fails;
+*/
+
+//CHECK#0
+if (RegExp.prototype.test.hasOwnProperty('length') !== true) {
+ $ERROR('#0: RegExp.prototype.test.hasOwnProperty(\'length\') === true');
+}
+
+ //CHECK#1
+if (RegExp.prototype.test.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: RegExp.prototype.test.propertyIsEnumerable(\'length\') === true');
+}
+
+ //CHECK#2
+count=0;
+
+for (p in RegExp.prototype.test){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count = 0; for (p in RegExp.prototype.test){ if (p==="length") count++; } count === 0. Actual: ' + (count));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A9.js
new file mode 100644
index 000000000..3477fdcba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.3_RegExp.prototype.test/S15.10.6.3_A9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_A9;
+* @section: 15.10.6.3;
+* @assertion: The RegExp.prototype.test.length property has the attribute DontDelete;
+* @description: Checking if deleting RegExp.prototype.test.length property fails;
+*/
+
+//CHECK#0
+if ((RegExp.prototype.exec.hasOwnProperty('length') !== true)) {
+ $FAIL('#0: RegExp.prototype.exec.hasOwnProperty(\'length\') === true');
+}
+
+//CHECK#1
+if (delete RegExp.prototype.exec.length !== false) {
+ $ERROR('#1: delete RegExp.prototype.exec.length === false');
+}
+
+//CHECK#2
+if (RegExp.prototype.exec.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete RegExp.prototype.exec.length; RegExp.prototype.exec.hasOwnProperty(\'length\') === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A10.js
new file mode 100644
index 000000000..4266de6fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A10.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.4_A10;
+* @section: 15.10.6.4;
+* @assertion: The RegExp.prototype.toString.length property has the attribute ReadOnly;
+* @description: Checking if varying the RegExp.prototype.toString.length property fails;
+*/
+
+//CHECK#1
+if (RegExp.prototype.toString.hasOwnProperty('length') !== true) {
+ $FAIL('#1: RegExp.prototype.toString.hasOwnProperty(\'length\') === true');
+}
+
+__obj = RegExp.prototype.toString.length;
+
+RegExp.prototype.toString.length = function(){return "shifted";};
+
+//CHECK#2
+if (RegExp.prototype.toString.length !== __obj) {
+ $ERROR('#2: __obj = RegExp.prototype.toString.length; RegExp.prototype.toString.length = function(){return "shifted";}; RegExp.prototype.toString.length === __obj. Actual: ' + (RegExp.prototype.toString.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A11.js
new file mode 100644
index 000000000..0f65014b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A11.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.4_A11;
+* @section: 15.10.6.4;
+* @assertion: The length property of the toString method is 1;
+* @description: Checking RegExp.prototype.toString.length;
+*/
+
+//CHECK#1
+if (RegExp.prototype.toString.hasOwnProperty("length") !== true) {
+ $FAIL('#1: RegExp.prototype.toString.hasOwnProperty(\'length\') === true');
+}
+
+//CHECK#2
+if (RegExp.prototype.toString.length !== 0) {
+ $ERROR('#2: RegExp.prototype.toString.length === 0. Actual: ' + (RegExp.prototype.toString.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A6.js
new file mode 100644
index 000000000..d518db871
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.4_A6;
+* @section: 15.10.6.4, 13.2;
+* @assertion: RegExp.prototype.toString has not prototype property;
+* @description: Checking RegExp.prototype.toString.prototype;
+*/
+
+//CHECK#1
+if (RegExp.prototype.toString.prototype !== undefined) {
+ $ERROR('#1: RegExp.prototype.toString.prototype === undefined. Actual: ' + (RegExp.prototype.toString.prototype));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A7.js
new file mode 100644
index 000000000..fa28c6723
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.4_A7;
+* @section: 15.10.6.4, 13.2;
+* @assertion: RegExp.prototype.toString can't be used as constructor;
+* @description: Checking if creating the RegExp.prototype.toString object fails;
+*/
+
+__FACTORY = RegExp.prototype.toString;
+
+try {
+ __instance = new __FACTORY;
+ $ERROR('#1.1: __FACTORY = RegExp.prototype.toString throw TypeError. Actual: ' + (__instance));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: __FACTORY = RegExp.prototype.toString throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A8.js
new file mode 100644
index 000000000..bdbeff72e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A8.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.4_A8;
+* @section: 15.10.6.4;
+* @assertion: The RegExp.prototype.toString.length property has the attribute DontEnum;
+* @description: Checking if enumerating the RegExp.prototype.toString.length property fails;
+*/
+
+//CHECK#0
+if (RegExp.prototype.toString.hasOwnProperty('length') !== true) {
+ $ERROR('#0: RegExp.prototype.toString.hasOwnProperty(\'length\') === true');
+}
+
+ //CHECK#1
+if (RegExp.prototype.toString.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: RegExp.prototype.toString.propertyIsEnumerable(\'length\') === true');
+}
+
+ //CHECK#2
+count=0;
+
+for (p in RegExp.prototype.toString){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count = 0; for (p in RegExp.prototype.toString){ if (p==="length") count++; } count === 0. Actual: ' + (count));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A9.js
new file mode 100644
index 000000000..cdeda5c89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/15.10.6.4_RegExp.prototype.toString/S15.10.6.4_A9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.4_A9;
+* @section: 15.10.6.4;
+* @assertion: The RegExp.prototype.toString.length property has the attribute DontDelete;
+* @description: Checking if deleting the RegExp.prototype.toString.length property fails;
+*/
+
+//CHECK#0
+if ((RegExp.prototype.toString.hasOwnProperty('length') !== true)) {
+ $FAIL('#0: RegExp.prototype.toString.hasOwnProperty(\'length\') === true');
+}
+
+//CHECK#1
+if (delete RegExp.prototype.toString.length !== false) {
+ $ERROR('#1: delete RegExp.prototype.toString.length === false');
+}
+
+//CHECK#2
+if (RegExp.prototype.toString.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete RegExp.prototype.toString.length; RegExp.prototype.toString.hasOwnProperty(\'length\') === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6.1_A1_T1.js
new file mode 100644
index 000000000..048cf51d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6.1_A1_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.1_A1_T1;
+* @section: 15.10.6.1;
+* @assertion: The initial value of RegExp.prototype.constructor is the built-in RegExp constructor;
+* @description: Compare RegExp.prototype.constructor with RegExp;
+*/
+
+//CHECK#1
+if (RegExp.prototype.constructor !== RegExp) {
+ $ERROR('#1: RegExp.prototype.constructor === RegExp. Actual: ' + (RegExp.prototype.constructor));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6.1_A1_T2.js
new file mode 100644
index 000000000..4b315d510
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6.1_A1_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.1_A1_T2;
+* @section: 15.10.6.1;
+* @assertion: The initial value of RegExp.prototype.constructor is the built-in RegExp constructor;
+* @description: Compare instance.constructor !== RegExp, where instance is new RegExp.prototype.constructor;
+*/
+
+__FACTORY = RegExp.prototype.constructor;
+
+__instance = new __FACTORY;
+
+//CHECK#1
+if ((__instance instanceof RegExp) !== true) {
+ $ERROR('#1: __FACTORY = RegExp.prototype.constructor; __instance = new __FACTORY; (__instance instanceof RegExp) === true');
+}
+
+//CHECK#2
+if (__instance.constructor !== RegExp) {
+ $ERROR('#2: __FACTORY = RegExp.prototype.constructor; __instance = new __FACTORY; __instance.constructor === RegExp. Actual: ' + (__instance.constructor));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A1_T1.js
new file mode 100644
index 000000000..10ed97f3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A1_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6_A1_T1;
+* @section: 15.10.6;
+* @assertion: The value of the internal [[Prototype]] property of the RegExp prototype object is the Object prototype;
+* @description: Checking Object.prototype.isPrototypeOf(RegExp.prototype);
+*/
+
+//CHECK#1
+if (Object.prototype.isPrototypeOf(RegExp.prototype) !== true) {
+ $ERROR('#1: Object.prototype.isPrototypeOf(RegExp.prototype) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A1_T2.js
new file mode 100644
index 000000000..8ea1ce280
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_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.
+
+/**
+* @name: S15.10.6_A1_T2;
+* @section: 15.10.6;
+* @assertion: The value of the internal [[Prototype]] property of the RegExp prototype object is the Object prototype;
+* @description: Add new property to Object.prototype and check it of RegExp.prototype;
+*/
+
+Object.prototype.indicator = 1;
+
+//CHECK#1
+if (RegExp.prototype.indicator !== 1) {
+ $ERROR('#1: Object.prototype.indicator = 1; RegExp.prototype.indicator === 1. Actual: ' + (RegExp.prototype.indicator));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_A2.js
new file mode 100644
index 000000000..a165443ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.6_Properties_of_the_RegExp_Prototype_Object/S15.10.6_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.
+
+/**
+* @name: S15.10.6_A2;
+* @section: 15.10.6;
+* @assertion: The value of the internal [[Class]] property of the RegExp prototype object is "Object";
+* @description: Checking performs with toString function;
+*/
+
+RegExp.prototype.toString = Object.prototype.toString;
+
+//CHECK#1
+if (RegExp.prototype.toString() !== "[object " + "Object" + "]") {
+ $ERROR('#1: RegExp.prototype.toString = Object.prototype.toString; RegExp.prototype.toString() === "[object " + "Object" + "]". Actual: ' + RegExp.prototype.toString());
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A10.js
new file mode 100644
index 000000000..d7626ec2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A10.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.1_A10;
+* @section: 15.10.7.1;
+* @assertion: The RegExp instance source property has the attribute ReadOnly;
+* @description: Checking if varying the source property fails;
+*/
+
+__re = /./;
+
+//CHECK#1
+if (__re.hasOwnProperty('source') !== true) {
+ $FAIL('#1: __re = /./; __re.hasOwnProperty(\'source\') === true');
+}
+
+__obj = __re.source;
+
+__re.source = "shifted";
+
+//CHECK#2
+if (__re.source !== __obj) {
+ $ERROR('#2: __re = /./; __obj = __re.source; __re.source = "shifted"; __re.source === __obj. Actual: ' + (__re.source));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A8.js
new file mode 100644
index 000000000..094cc6b8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A8.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.1_A8;
+* @section: 15.10.7.1;
+* @assertion: The RegExp instance source property has the attribute DontEnum;
+* @description: Checking if enumerating the source property of RegExp instance fails;
+*/
+
+__re = new RegExp("[1-2]","i");
+
+//CHECK#0
+if (__re.hasOwnProperty('source') !== true) {
+ $FAIL('#0: __re = new RegExp("[1-2]","i"); __re.hasOwnProperty(\'source\') === true');
+}
+
+ //CHECK#1
+if (__re.propertyIsEnumerable('source') !== false) {
+ $ERROR('#1: __re = new RegExp("[1-2]","i"); __re.propertyIsEnumerable(\'source\') === false');
+}
+
+ //CHECK#2
+count = 0
+for (p in __re){
+ if (p==="source") count++
+}
+
+if (count !== 0) {
+ $ERROR('#2: count = 0; __re = new RegExp("[1-2]","i"); for (p in __re){ if (p==="source") count++; } count === 0. Actual: ' + (count));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A9.js
new file mode 100644
index 000000000..e6b9e5b16
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.1_source/S15.10.7.1_A9.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.1_A9;
+* @section: 15.10.7.1;
+* @assertion: The RegExp instance source property has the attribute DontDelete;
+* @description: Checking if deleting the source property fails;
+*/
+
+__re = new RegExp;
+
+//CHECK#0
+if (__re.hasOwnProperty('source') !== true) {
+ $FAIL('#0: __re = new RegExp; __re.hasOwnProperty(\'source\') === true');
+}
+
+//CHECK#1
+if ((delete __re.source) !== false) {
+ $ERROR('#1: __re = new RegExp; (delete __re.source) === false');
+}
+
+//CHECK#2
+if (__re.hasOwnProperty('source') !== true) {
+ $ERROR('#2: __re = new RegExp;delete __re.source === true; __re.hasOwnProperty(\'source\') === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A10.js
new file mode 100644
index 000000000..2942fd8d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A10.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.2_A10;
+* @section: 15.10.7.2;
+* @assertion: The RegExp instance global property has the attribute ReadOnly;
+* @description: Checking if varying the global property fails;
+*/
+
+__re = /^|^/;
+
+//CHECK#1
+if (__re.hasOwnProperty('global') !== true) {
+ $FAIL('#1: __re = /^|^/; __re.hasOwnProperty(\'global\') === true');
+}
+
+__obj = __re.global;
+
+__re.global = "shifted";
+
+//CHECK#2
+if (__re.global !== __obj) {
+ $ERROR('#2: __re = /^|^/; __obj = __re.global; __re.global = "shifted"; __re.global === __obj. Actual: ' + (__re.global));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A8.js
new file mode 100644
index 000000000..0b8c9d2ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A8.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.2_A8;
+* @section: 15.10.7.2;
+* @assertion: The RegExp instance global property has the attribute DontEnum;
+* @description: Checking if enumerating the global property of RegExp instance fails;
+*/
+
+__re = new RegExp("[o-o]","m");
+
+//CHECK#0
+if (__re.hasOwnProperty('global') !== true) {
+ $FAIL('#0: __re = new RegExp("[o-o]","m"); __re.hasOwnProperty(\'global\') === true');
+}
+
+ //CHECK#1
+if (__re.propertyIsEnumerable('global') !== false) {
+ $ERROR('#1: __re = new RegExp("[o-o]","m"); __re.propertyIsEnumerable(\'global\') === false');
+}
+
+ //CHECK#2
+count = 0
+for (p in __re){
+ if (p==="global") count++
+}
+
+if (count !== 0) {
+ $ERROR('#2: count = 0; __re = new RegExp("[o-o]","m"); for (p in __re){ if (p==="global") count++; } count === 0. Actual: ' + (count));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A9.js
new file mode 100644
index 000000000..b17710626
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.2_global/S15.10.7.2_A9.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.2_A9;
+* @section: 15.10.7.2;
+* @assertion: The RegExp instance global property has the attribute DontDelete;
+* @description: Checking if deleting the global property fails;
+*/
+
+__re = new RegExp;
+
+//CHECK#0
+if (__re.hasOwnProperty('global') !== true) {
+ $FAIL('#0: __re = new RegExp; __re.hasOwnProperty(\'global\') === true');
+}
+
+//CHECK#1
+if ((delete __re.global) !== false) {
+ $ERROR('#1: __re = new RegExp; (delete __re.global) === false');
+}
+
+//CHECK#2
+if (__re.hasOwnProperty('global') !== true) {
+ $ERROR('#2: __re = new RegExp;delete __re.global === true; __re.hasOwnProperty(\'global\') === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A10.js
new file mode 100644
index 000000000..9214f6c40
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A10.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.3_A10;
+* @section: 15.10.7.3;
+* @assertion: The RegExp instance ignoreCase property has the attribute ReadOnly;
+* @description: Checking if varying the ignoreCase property fails;
+*/
+
+__re = /a|b|c/;
+
+//CHECK#1
+if (__re.hasOwnProperty('ignoreCase') !== true) {
+ $FAIL('#1: __re = /a|b|c/; __re.hasOwnProperty(\'ignoreCase\') === true');
+}
+
+__obj = __re.ignoreCase;
+
+__re.ignoreCase = "shifted";
+
+//CHECK#2
+if (__re.ignoreCase !== __obj) {
+ $ERROR('#2: __re = /a|b|c/; __obj = __re.ignoreCase; __re.ignoreCase = "shifted"; __re.ignoreCase === __obj. Actual: ' + (__re.ignoreCase));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A8.js
new file mode 100644
index 000000000..958be84f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A8.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.3_A8;
+* @section: 15.10.7.3;
+* @assertion: The RegExp instance ignoreCase property has the attribute DontEnum;
+* @description: Checking if enumerating the ignoreCase property of RegExp instance fails;
+*/
+
+__re = new RegExp("[|||||||]","");
+
+//CHECK#0
+if (__re.hasOwnProperty('ignoreCase') !== true) {
+ $FAIL('#0: __re = new RegExp("[|||||||]",""); __re.hasOwnProperty(\'ignoreCase\') === true');
+}
+
+ //CHECK#1
+if (__re.propertyIsEnumerable('ignoreCase') !== false) {
+ $ERROR('#1: __re = new RegExp("[|||||||]",""); __re.propertyIsEnumerable(\'ignoreCase\') === false');
+}
+
+ //CHECK#2
+count = 0
+for (p in __re){
+ if (p==="ignoreCase") count++
+}
+
+if (count !== 0) {
+ $ERROR('#2: count = 0; __re = new RegExp("[|||||||]",""); for (p in __re){ if (p==="ignoreCase") count++; } count === 0. Actual: ' + (count));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A9.js
new file mode 100644
index 000000000..3bc27e1f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.3_ignoreCase/S15.10.7.3_A9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.3_A9;
+* @section: 15.10.7.3;
+* @assertion: The RegExp instance ignoreCase property has the attribute DontDelete;
+* @description: Checking if deleting the ignoreCase property fails;
+*/
+
+__re = new RegExp;
+
+//CHECK#0
+if (__re.hasOwnProperty('ignoreCase') !== true) {
+ $FAIL('#0: __re = new RegExp; __re.hasOwnProperty(\'ignoreCase\') === true');
+}
+
+//CHECK#1
+if ((delete __re.ignoreCase) !== false) {
+ $ERROR('#1: __re = new RegExp; (delete __re.ignoreCase) === false');
+}
+
+//CHECK#2
+if (__re.hasOwnProperty('ignoreCase') !== true) {
+ $ERROR('#2: __re = new RegExp;delete __re.ignoreCase === true; __re.hasOwnProperty(\'ignoreCase\') === true');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A10.js
new file mode 100644
index 000000000..fa8303dce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A10.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.4_A10;
+* @section: 15.10.7.4;
+* @assertion: The RegExp instance multiline property has the attribute ReadOnly;
+* @description: Checking if varying the multiline property fails;
+*/
+
+__re = /\n/;
+
+//CHECK#1
+if (__re.hasOwnProperty('multiline') !== true) {
+ $FAIL('#1: __re = /\\n/; __re.hasOwnProperty(\'multiline\') === true');
+}
+
+__obj = __re.multiline;
+
+__re.multiline = "shifted";
+
+//CHECK#2
+if (__re.multiline !== __obj) {
+ $ERROR('#2: __re = /\\n/; __obj = __re.multiline; __re.multiline = "shifted"; __re.multiline === __obj. Actual: ' + (__re.multiline));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A8.js
new file mode 100644
index 000000000..bbb786cf7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A8.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.4_A8;
+* @section: 15.10.7.4;
+* @assertion: The RegExp instance multiline property has the attribute DontEnum;
+* @description: Checking if enumerating the multiline property of RegExp instance fails;
+*/
+
+__re = new RegExp("[\u0041-\u0049]");
+
+//CHECK#0
+if (__re.hasOwnProperty('multiline') !== true) {
+ $FAIL('#0: __re = new RegExp("[\\u0041-\\u0049]"); __re.hasOwnProperty(\'multiline\') === true');
+}
+
+ //CHECK#1
+if (__re.propertyIsEnumerable('multiline') !== false) {
+ $ERROR('#1: __re = new RegExp("[\\u0041-\\u0049]"); __re.propertyIsEnumerable(\'multiline\') === false');
+}
+
+ //CHECK#2
+count = 0
+for (p in __re){
+ if (p==="multiline") count++
+}
+
+if (count !== 0) {
+ $ERROR('#2: count = 0; __re = new RegExp("[\\u0041-\\u0049]"); for (p in __re){ if (p==="multiline") count++; } count === 0. Actual: ' + (count));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A9.js
new file mode 100644
index 000000000..699f3032c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.4_multiline/S15.10.7.4_A9.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.4_A9;
+* @section: 15.10.7.4;
+* @assertion: The RegExp instance multiline property has the attribute DontDelete;
+* @description: Checking if deleting the multiline property fails;
+*/
+
+__re = new RegExp;
+
+//CHECK#0
+if (__re.hasOwnProperty('multiline') !== true) {
+ $FAIL('#0: __re = new RegExp; __re.hasOwnProperty(\'multiline\') === true');
+}
+
+//CHECK#1
+if ((delete __re.multiline) !== false) {
+ $ERROR('#1: __re = new RegExp; (delete __re.multiline) === false');
+}
+
+//CHECK#2
+if (__re.hasOwnProperty('multiline') !== true) {
+ $ERROR('#2: __re = new RegExp;delete __re.multiline === true; __re.hasOwnProperty(\'multiline\') === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.5_lastIndex/S15.10.7.5_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.5_lastIndex/S15.10.7.5_A8.js
new file mode 100644
index 000000000..9b7630799
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.5_lastIndex/S15.10.7.5_A8.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.5_A8;
+* @section: 15.10.7.5;
+* @assertion: The RegExp instance lastIndex property has the attribute DontEnum;
+* @description: Checking if enumerating the lastIndex property of RegExp instance fails;
+*/
+
+__re = new RegExp("A?B");
+
+//CHECK#0
+if (__re.hasOwnProperty('lastIndex') !== true) {
+ $FAIL('#0: __re = new RegExp("A?B"); __re.hasOwnProperty(\'lastIndex\') === true');
+}
+
+ //CHECK#1
+if (__re.propertyIsEnumerable('lastIndex') !== false) {
+ $ERROR('#1: __re = new RegExp("A?B"); __re.propertyIsEnumerable(\'lastIndex\') === false');
+}
+
+ //CHECK#2
+count = 0
+for (p in __re){
+ if (p==="lastIndex") count++
+}
+
+if (count !== 0) {
+ $ERROR('#2: count = 0; __re = new RegExp("A?B"); for (p in __re){ if (p==="lastIndex") count++; } count === 0. Actual: ' + (count));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.5_lastIndex/S15.10.7.5_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.5_lastIndex/S15.10.7.5_A9.js
new file mode 100644
index 000000000..9fd620598
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/15.10.7.5_lastIndex/S15.10.7.5_A9.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7.5_A9;
+* @section: 15.10.7.5;
+* @assertion: The RegExp instance lastIndex property has the attribute DontDelete;
+* @description: Checking if deleting the lastIndex property fails;
+*/
+
+__re = new RegExp;
+
+//CHECK#0
+if (__re.hasOwnProperty('lastIndex') !== true) {
+ $FAIL('#0: __re = new RegExp; __re.hasOwnProperty(\'lastIndex\') === true');
+}
+
+//CHECK#1
+if ((delete __re.lastIndex) !== false) {
+ $ERROR('#1: __re = new RegExp; (delete __re.lastIndex) === false');
+}
+
+//CHECK#2
+if (__re.hasOwnProperty('lastIndex') !== true) {
+ $ERROR('#2: __re = new RegExp;delete __re.lastIndex === true; __re.hasOwnProperty(\'lastIndex\') === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A1_T1.js
new file mode 100644
index 000000000..0dc8b5c6d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7_A1_T1;
+* @section: 15.10.7;
+* @assertion: RegExp instance has not [[call]] property;
+* @description: Checking if call of RegExp instance fails;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: /[^a]*/() throw TypeError. Actual: ' + (/[^a]*/()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: /[^a]*/() throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A1_T2.js
new file mode 100644
index 000000000..39afe95b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7_A1_T2;
+* @section: 15.10.7;
+* @assertion: RegExp instance has not [[call]] property;
+* @description: Checking if call of RegExp("a|b","g")() fails;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: RegExp("a|b","g")() throw TypeError. Actual: ' + (RegExp("a|b","g")()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: RegExp("a|b","g")() throw TypeError. Actual: ' + (e));
+ }
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A2_T1.js
new file mode 100644
index 000000000..3295ab64f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_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.
+
+/**
+* @name: S15.10.7_A2_T1;
+* @section: 15.10.7;
+* @assertion: RegExp instance has not [[construct]] property;
+* @description: Checking if creating new RegExp instance fails;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new /z/() throw TypeError. Actual: ' + (new /z/()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new /z/() throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A2_T2.js
new file mode 100644
index 000000000..3a7237348
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_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.
+
+/**
+* @name: S15.10.7_A2_T2;
+* @section: 15.10.7;
+* @assertion: RegExp instance has not [[construct]] property;
+* @description: Checking if creating "new RegExp" instance fails;
+*/
+
+//CHECK#1
+try {
+ $ERROR('#1.1: new new RegExp throw TypeError. Actual: ' + (new new RegExp));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new new RegExp throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A3_T1.js
new file mode 100644
index 000000000..e8dc96d25
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A3_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.7_A3_T1;
+* @section: 15.10.7;
+* @assertion: RegExp instance type is RegExp;
+* @description: Checking type of RegExp instance with operators typeof, instanceof and check it constructor.
+* RegExp instance is /[^a]* /;
+*/
+
+__re = /[^a]*/;
+
+//CHECK#1
+if (typeof __re !== "object") {
+ $ERROR('#1: __re = /[^a]*/; typeof __re === "object". Actual: ' + (typeof __re));
+}
+
+//CHECK#1
+if (__re.constructor !== RegExp) {
+ $ERROR('#2: __re = /[^a]*/; __re.constructor === RegExp. Actual: ' + (__re.constructor));
+}
+
+//CHECK#3
+if ((__re instanceof RegExp) !== true) {
+ $ERROR('#3: __re = /[^a]*/; (__re instanceof RegExp) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_A3_T2.js
new file mode 100644
index 000000000..098d6d0ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.10_RegExp_Objects/15.10.7_Properties_of_RegExp_Instances/S15.10.7_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.
+
+/**
+* @name: S15.10.7_A3_T2;
+* @section: 15.10.7;
+* @assertion: RegExp instance type is RegExp;
+* @description: Checking type of RegExp instance with operators typeof, instanceof and check it constructor.
+* RegExp instance is new RegExp;
+*/
+
+__re = new RegExp;
+
+//CHECK#1
+if (typeof __re !== "object") {
+ $ERROR('#1: __re = new RegExp; typeof __re === "object". Actual: ' + (typeof __re));
+}
+
+//CHECK#1
+if (__re.constructor !== RegExp) {
+ $ERROR('#2: __re = new RegExp; __re.constructor === RegExp. Actual: ' + (__re.constructor));
+}
+
+//CHECK#3
+if ((__re instanceof RegExp) !== true) {
+ $ERROR('#3: __re = new RegExp; (__re instanceof RegExp) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A1_T1.js
new file mode 100644
index 000000000..60cfcbf8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A1_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.1.1_A1_T1;
+* @section: 15.11.1.1, 16;
+* @assertion: If the argument "message" is not undefined, the message property of the newly constructed object is
+* set to ToString(message);
+* @description: Checking message property of different error objects;
+*/
+
+function otherScope(msg)
+{
+ return Error(msg);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var err1=Error('msg1');
+if(err1.message!=="msg1"){
+ $ERROR('#1: var err1=Error(\'msg1\'); err1.message==="msg1". Actual: '+err1.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+var err2=otherScope('msg2');
+if(err2.message!=="msg2"){
+ $ERROR('#2: function otherScope(msg){return Error(msg);} var err2=otherScope(\'msg2\'); err2.message==="msg2". Actual: '+err2.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+var err3=otherScope();
+if(err3.hasOwnProperty('message')){
+ $ERROR('#3: function otherScope(msg){return Error(msg);} var err3=otherScope(); err3.hasOwnProperty("message"). Actual: '+err3.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+var err4=eval("Error('msg4')");
+if(err4.message!=="msg4"){
+ $ERROR('#4: var err4=eval("Error(\'msg4\')"); err4.message==="msg4". Actual: '+err4.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A2_T1.js
new file mode 100644
index 000000000..8b3ecf81c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_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.
+
+/**
+* @name: S15.11.1.1_A2_T1;
+* @section: 15.11.1.1, 16;
+* @assertion: The [[Prototype]] property of the newly constructed object is set to the original Error prototype
+* object, the one that is the initial value of Error.prototype (15.11.3.1);
+* @description: Checking prototype of the newly constructed Error object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var err1=Error('msg1');
+if(!Error.prototype.isPrototypeOf(err1)){
+ $ERROR('#1: var err1=Error(\'msg1\'); Error.prototype.isPrototypeOf(err1) return true. Actual: '+Error.prototype.isPrototypeOf(err1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A3_T1.js
new file mode 100644
index 000000000..b3298349d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1.1_A3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.1.1_A3_T1;
+* @section: 15.11.1.1, 16;
+* @assertion: The [[Class]] property of the newly constructed object is set to "Error";
+* @description: Checking Class of the newly constructed Error object using toSting() function;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+Error.prototype.toString=Object.prototype.toString;
+var err1=Error();
+if(err1.toString()!=='[object '+ 'Error' +']'){
+ $ERROR('#1: Error.prototype.toString=Object.prototype.toString; var err1=Error(); err1.toString()===\'[object Error]\'. Actual: '+err1.toString());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1_A1_T1.js
new file mode 100644
index 000000000..feda37ad3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.1_The_Error_Constructor_Called_as_a_Function/S15.11.1_A1_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.1_A1_T1;
+* @section: 15.11.1, 16;
+* @assertion: The function call Error(...) is equivalent to the object creation expression new
+* Error(...) with the same arguments;
+* @description: Checking constructor of the newly constructed Error object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+Error.prototype.toString=Object.prototype.toString;
+var err1=Error();
+if(err1.constructor!==Error){
+ $ERROR('#1: Error.prototype.toString=Object.prototype.toString; var err1=Error(); err1.constructor===Error. Actual: '+err1.constructor);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A1_T1.js
new file mode 100644
index 000000000..2ec4e11a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A1_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.2.1_A1_T1;
+* @section: 15.11.2.1, 16;
+* @assertion: If the argument "message" is not undefined, the message property of the newly constructed object is
+* set to ToString(message);
+* @description: Checking message property of different error objects;
+*/
+
+function otherScope(msg)
+{
+ return new Error(msg);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var err1=new Error('msg1');
+if(err1.message!=="msg1"){
+ $ERROR('#1: var err1=new Error(\'msg1\'); err1.message==="msg1". Actual: '+err1.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+var err2=otherScope('msg2');
+if(err2.message!=="msg2"){
+ $ERROR('#2: function otherScope(msg){return new Error(msg);} var err2=otherScope(\'msg2\'); err2.message==="msg2". Actual: '+err2.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+var err3=otherScope();
+if(err3.hasOwnProperty('message')){
+ $ERROR('#3: function otherScope(msg){return new Error(msg);} var err3=otherScope(); err3.hasOwnProperty("message"). Actual: '+err3.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+var err4=eval("new Error('msg4')");
+if(err4.message!=="msg4"){
+ $ERROR('#4: var err4=eval("new Error(\'msg4\')"); err4.message==="msg4". Actual: '+err4.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A2_T1.js
new file mode 100644
index 000000000..be1197300
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_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.
+
+/**
+* @name: S15.11.2.1_A2_T1;
+* @section: 15.11.2.1, 16;
+* @assertion: The [[Prototype]] property of the newly constructed object is set to the original Error prototype
+* object, the one that is the initial value of Error.prototype (15.11.3.1);
+* @description: Checking prototype of the newly constructed Error object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var err1=new Error('msg1');
+if(!Error.prototype.isPrototypeOf(err1)){
+ $ERROR('#1: Error.prototype.isPrototypeOf(err1) return true. Actual: '+Error.prototype.isPrototypeOf(err1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A3_T1.js
new file mode 100644
index 000000000..f087ce8ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.2_The_Error_Constructor/S15.11.2.1_A3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.2.1_A3_T1;
+* @section: 15.11.2.1, 16;
+* @assertion: The [[Class]] property of the newly constructed object is set to "Error";
+* @description: Checking Class of the newly constructed Error object using toSting() function;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+Error.prototype.toString=Object.prototype.toString;
+var err1=new Error();
+if(err1.toString()!=='[object '+ 'Error' +']'){
+ $ERROR('#1: err1.toString()===\'[object Error]\'. Actual: '+err1.toString());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A1_T1.js
new file mode 100644
index 000000000..10a0615d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A1_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.3.1_A1_T1;
+* @section: 15.11.3.1, 16;
+* @assertion: Error.prototype property has the attributes {DontDelete};
+* @description: Checking if deleting the Error.prototype property fails;
+*/
+
+var proto=Error.prototype;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(delete Error.prototype){
+ $ERROR('#1: delete Error.prototype return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(Error.prototype!==proto){
+ $ERROR('#2: var proto=Error.prototype; delete Error.prototype; Error.prototype===proto. Actual: '+Error.prototype);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A2_T1.js
new file mode 100644
index 000000000..01ab353b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A2_T1.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.3.1_A2_T1;
+* @section: 15.11.3.1, 16;
+* @assertion: Error.prototype property has the attributes {DontEnum};
+* @description: Checking if enumerating the Error.prototype property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(Error.hasOwnProperty('prototype'))) {
+ $ERROR('#0: Error.hasOwnProperty(\'prototype\') return true. Actual: '+Error.hasOwnProperty('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (Error.propertyIsEnumerable('prototype')) {
+ $ERROR('#1: Error.propertyIsEnumerable(\'prototype\') return false. Actual: '+Error.propertyIsEnumerable('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+cout=0;
+
+for (p in Error){
+ if (p==="prototype") cout++;
+}
+
+if (cout !== 0) {
+ $ERROR('#2: cout === 0. Actual: '+cout );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A3_T1.js
new file mode 100644
index 000000000..ef8d007c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A3_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.3.1_A3_T1;
+* @section: 15.11.3.1, 16;
+* @assertion: Error.prototype property has the attributes {ReadOnly};
+* @description: Checking if varying the Error.prototype property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(Error.hasOwnProperty('prototype'))) {
+ $ERROR('#1: Error.hasOwnProperty(\'prototype\') return true. Actual: '+Error.hasOwnProperty('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__obj = Error.prototype;
+
+Error.prototype = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (Error.prototype !== __obj) {
+ $ERROR('#2: __obj = Error.prototype; Error.prototype = function(){return "shifted";}; Error.prototype === __obj. Actual: '+Error.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ Error.prototype();
+ $ERROR('#3: "Error.prototype()" lead to throwing exception');
+} catch (e) {
+ ;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A4_T1.js
new file mode 100644
index 000000000..fc4573e86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3.1_A4_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.3.1_A4_T1;
+* @section: 15.11.3.1, 16;
+* @assertion: The Error has property prototype;
+* @description: Checking Error.hasOwnProperty('prototype');
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(Error.hasOwnProperty('prototype'))) {
+ $ERROR('#1: Error.hasOwnProperty(\'prototype\') return true. Actual: '+Error.hasOwnProperty('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3_A1_T1.js
new file mode 100644
index 000000000..a925bdcaa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3_A1_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.3_A1_T1;
+* @section: 15.11.3, 16;
+* @assertion: The value of the internal [[Prototype]] property of the Error constructor is the Function prototype object(15.3.4);
+* @description: Checking prototype of constructor of the newly constructed Error object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var err1=Error("err");
+if(!Function.prototype.isPrototypeOf(err1.constructor)){
+ $ERROR('#1: var err1=Error("err"); Function.prototype.isPrototypeOf(err1.constructor) return true. Actual:'+Function.prototype.isPrototypeOf(err1.constructor));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!Function.prototype.isPrototypeOf(Error.constructor)){
+ $ERROR('#2: Function.prototype.isPrototypeOf(Error.constructor) return true. Actual:'+Function.prototype.isPrototypeOf(Error.constructor));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3_A2_T1.js
new file mode 100644
index 000000000..3b4464c6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.3_Properties_of_the_Error_Constructor/S15.11.3_A2_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.3_A2_T1;
+* @section: 15.11.3, 16;
+* @assertion: The length property value is 1;
+* @description: Checking length property;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var err1=Error("err");
+if(err1.constructor.length!==1){
+ $ERROR('#1: var err1=Error("err"); err1.constructor.length===1. Actual: '+err1.constructor.length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(Error.constructor.length!==1){
+ $ERROR('#2: Error.constructor.length===1. Actual: '+Error.constructor.length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.1_A1_T1.js
new file mode 100644
index 000000000..a94c25869
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.1_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.
+
+/**
+* @name: S15.11.4.1_A1_T1;
+* @section: 15.11.4.1, 16;
+* @assertion: The initial value of Error.prototype.constructor is the built-in Error constructor;
+* @description: Checking Error.prototype.constructor;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (Error.prototype.constructor !== Error) {
+ $ERROR('#1: Error.prototype.constructor === Error. Actual: '+Error.prototype.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.1_A1_T2.js
new file mode 100644
index 000000000..75ac111ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.1_A1_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.4.1_A1_T2;
+* @section: 15.11.4.1, 16;
+* @assertion: The initial value of Error.prototype.constructor is the built-in Error constructor;
+* @description: Checking if creating "new Error.prototype.constructor" passes and checking its properties;
+*/
+
+constr = Error.prototype.constructor;
+
+err = new constr;
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#0
+if (err === undefined) {
+ $ERROR('#0: constr = Error.prototype.constructor; err = new constr; err === undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (err.constructor !== Error) {
+ $ERROR('#1: constr = Error.prototype.constructor; err = new constr; err.constructor === Error. Actual: '+err.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+if (!(Error.prototype.isPrototypeOf(err))) {
+ $ERROR('#2: constr = Error.prototype.constructor; err = new constr; Error.prototype.isPrototypeOf(err) return true. Actual: '+Error.prototype.isPrototypeOf(err));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#3
+Error.prototype.toString=Object.prototype.toString;
+to_string_result = '[object '+ 'Error' +']';
+if (err.toString() !== to_string_result) {
+ $ERROR('#3: constr = Error.prototype.constructor; err = new constr; Error.prototype.toString=Object.prototype.toString; err.toString() === \'[object Error]\'. Actual: '+err.toString() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#4
+if (err.valueOf().toString() !== to_string_result) {
+ $ERROR('#4: constr = Error.prototype.constructor; err = new constr; Error.prototype.toString=Object.prototype.toString; err.valueOf().toString() === \'[object Error]\'. Actual: '+err.valueOf().toString() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.2_A1.js
new file mode 100644
index 000000000..c30bac0a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.2_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.
+
+/**
+ * @name: S15.11.4.2_A1;
+ * @section: 15.11.4.2, 16;
+ * @assertion: The Error.prototype has name property;
+ * @description: Checking Error.prototype.name;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (!Error.prototype.hasOwnProperty('name')) {
+ $ERROR('#1: Error.prototype.hasOwnProperty(\'name\') return true. Actual: '+Error.prototype.hasOwnProperty('name'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.2_A2.js
new file mode 100644
index 000000000..0fe93ee78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.2_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.
+
+/**
+ * @name: S15.11.4.2_A2;
+ * @section: 15.11.4.2, 16;
+ * @assertion: The initial value of Error.prototype.name is "Error";
+ * @description: Checking value of Error.prototype.name;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (Error.prototype.name!=="Error") {
+ $ERROR('#1: Error.prototype.name==="Error". Actual: '+Error.prototype.name);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.3_A1.js
new file mode 100644
index 000000000..b70b494cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.3_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.
+
+/**
+ * @name: S15.11.4.3_A1;
+ * @section: 15.11.4.3, 16;
+ * @assertion: The Error.prototype has message property;
+ * @description: Checking Error.prototype.message;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (!Error.prototype.hasOwnProperty('message')) {
+ $ERROR('#1: Error.prototype.hasOwnProperty(\'message\') reurn true. Actual: '+Error.prototype.hasOwnProperty('message'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.3_A2.js
new file mode 100644
index 000000000..9d555d937
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.3_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.
+
+/**
+ * @name: S15.11.4.3_A2;
+ * @section: 15.11.4.3, 16;
+ * @assertion: The initial value of Error.prototype.message is "";
+ * @description: Checking value of Error.prototype.message;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (typeof Error.prototype.message !== "string") {
+ $ERROR('#1: typeof Error.prototype.message === "string". Actual: ' + Error.prototype.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.4_A1.js
new file mode 100644
index 000000000..abb9970f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.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.
+
+/**
+ * @name: S15.11.4.4_A1;
+ * @section: 15.11.4.4, 16;
+ * @assertion: The Error.prototype has toString property;
+ * @description: Checking Error.prototype.toString;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (!Error.prototype.hasOwnProperty('toString')) {
+ $ERROR('#1: Error.prototype.hasOwnProperty(\'toString\') return true. Actual: '+Error.prototype.hasOwnProperty('toString'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.4_A2.js
new file mode 100644
index 000000000..a491b04fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4.4_A2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.11.4.4_A2;
+ * @section: 15.11.4.4, 16;
+ * @assertion: The Error.prototype.toString returns an implementation defined string;
+ * @description: Checking if call of Error.prototype.toSting() fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+var err1=new Error("Error");
+try{
+ var toStr=err1.toString();
+}
+catch(e){
+ $ERROR('#1: var err1=new Error("Error"); var toStr=err1.toString(); lead to throwing exception. Exception is '+e);
+}
+if (toStr===undefined) {
+ $ERROR('#2: var err1=new Error("Error"); var toStr=err1.toString(); toStr!==undefined. Actual: '+toStr);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A1.js
new file mode 100644
index 000000000..30026a253
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.11.4_A1;
+ * @section: 15.11.4, 16;
+ * @assertion: The value of the internal [[Prototype]] property of the Error prototype object is the Object prototype
+ * object(15.2.3.1);
+ * @description: Get Error.prototype and compare with Object.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (!Object.prototype.isPrototypeOf(Error.prototype)) {
+ $ERROR('#1: Object.prototype.isPrototypeOf(Error.prototype) return true. Actual: '+Object.prototype.isPrototypeOf(Error.prototype));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A2.js
new file mode 100644
index 000000000..ad2180dad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.11.4_A2;
+* @section: 15.11.4, 16;
+* @assertion: The value of the internal [[Class]] property of Error prototype object is "Error";
+* @description: Getting the value of the internal [[Class]] property using Error.prototype.toString() function;
+*/
+
+Error.prototype.toString=Object.prototype.toString;
+__tostr = Error.prototype.toString();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__tostr !== "[object Error]") {
+ $ERROR('#1: Error.prototype.toString=Object.prototype.toString; __tostr = Error.prototype.toString(); __tostr === "[object Error]". Actual: '+__tostr );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A3.js
new file mode 100644
index 000000000..a1eb662c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.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.
+
+/**
+* @name: S15.11.4_A3;
+* @section: 15.11.4, 16;
+* @assertion: Since Error prototype object is not function it has not [[call]] method;
+* @description: Checking if call of Error prototype as a function fails;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ Error.prototype();
+ $FAIL('#1: "Error.prototype()" lead to throwing exception');
+} catch (e) {}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.4_A4.js
new file mode 100644
index 000000000..4f3cb2c4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.11_Error_Objects/15.11.4_Properties_of_the_Error_Prototype_Object/S15.11.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.
+
+/**
+* @name: S15.11.4_A4;
+* @section: 15.11.4, 16;
+* @assertion: Since Error prototype object is not function it has not [[create]] method;
+* @description: Checking if creating "new Error.prototype" fails;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __instance = new Object.prototype;
+ $FAIL('#1: "__instance = new Object.prototype" lead to throwing exception');
+} catch (e) {}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.12_The_JSON_Object/15.12.2_JSON.parse/S15.12.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.12_The_JSON_Object/15.12.2_JSON.parse/S15.12.2_A1.js
new file mode 100644
index 000000000..a7b140810
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.12_The_JSON_Object/15.12.2_JSON.parse/S15.12.2_A1.js
@@ -0,0 +1,19 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.12.2_A1;
+ * @section: 15.12.2;
+ * @assertion: JSON.parse must create a property with the given
+ * property name;
+ * @description: Tests that JSON.parse treats "__proto__" as a regular
+ * property name;
+ */
+
+var x = JSON.parse('{"__proto__":[]}');
+if (Object.getPrototypeOf(x) !== Object.prototype) {
+ $FAIL('#1: JSON.parse confused by "__proto__"');
+}
+if (!Array.isArray(x.__proto__)) {
+ $FAIL('#2: JSON.parse did not set "__proto__" as a regular property');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A1.js
new file mode 100644
index 000000000..adf3c2a7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.1_A1;
+ * @section: 15.1.1.1, 11.4.3, 15.1.2.4, 15.1.2.5;
+ * @assertion: The initial value of NaN is NaN;
+ * @description: Use typeof, isNaN, isFinite;
+*/
+
+// CHECK#1
+if (typeof(NaN) !== "number") {
+ $ERROR('#1: typeof(NaN) === "number". Actual: ' + (typeof(NaN)));
+}
+
+// CHECK#2
+if (isNaN(NaN) !== true) {
+ $ERROR('#2: NaN === Not-a-Number. Actual: ' + (NaN));
+}
+
+// CHECK#3
+if (isFinite(NaN) !== false) {
+ $ERROR('#3: NaN === Not-a-Finite. Actual: ' + (NaN));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A2_T1.js
new file mode 100644
index 000000000..b7caaf041
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A2_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.1_A2_T1;
+ * @section: 15.1.1.1, 15.5.1, 15.6.1, 15.7.1;
+ * @assertion: The NaN is not ReadOnly;
+ * @description: Checking Boolean, Number, String Functions;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+NaN = 1;
+if (Boolean(NaN) !== true) {
+ $ERROR('#1: NaN = 1; Boolean(NaN) === true. Actual: ' + (Boolean(NaN)));
+}
+
+// CHECK#2
+NaN = true;
+if (Number(NaN) !== 1) {
+ $ERROR('#2: NaN = true; Number(NaN) === 1. Actual: ' + (Number(NaN)));
+}
+
+// CHECK#3
+NaN = 1;
+if (String(NaN) !== "1") {
+ $ERROR('#3: NaN = 1; String(NaN) === "1". Actual: ' + (String(NaN)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A2_T2.js
new file mode 100644
index 000000000..098308fca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A2_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.1_A2_T2;
+ * @section: 15.1.1.1, 11.4.3;
+ * @assertion: The NaN is not ReadOnly;
+ * @description: Checking typeof Operator;
+*/
+
+// CHECK#1
+NaN = true;
+if (typeof(NaN) !== "boolean") {
+ $ERROR('#1: NaN = true; typeof(NaN) === "boolean". Actual: ' + (typeof(NaN)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A3.1.js
new file mode 100644
index 000000000..353ca169e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A3.1.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.
+
+/**
+ * @name: S15.1.1.1_A3.1;
+ * @section: 15.1.1.1, 11.4.1;
+ * @assertion: The NaN is DontDelete;
+ * @description: Use delete;
+ * @strict_mode_negative
+ *
+*/
+
+// CHECK#1
+if (delete NaN !== false) {
+ $ERROR('#1: delete NaN === false. Actual: ' + (delete NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A3.2.js
new file mode 100644
index 000000000..f8c1547fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.1_NaN/S15.1.1.1_A3.2.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.
+
+/**
+ * @name: S15.1.1.1_A3.2;
+ * @section: 15.1.1.1, 12.6.4;
+ * @assertion: The NaN is DontEnum;
+ * @description: Use for-in statement;
+*/
+
+// CHECK#1
+for (var prop in this) {
+ if (prop === "NaN") {
+ $ERROR('#1: The NaN is DontEnum');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A1.js
new file mode 100644
index 000000000..3d74966c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_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.
+
+/**
+ * @name: S15.1.1.2_A1;
+ * @section: 15.1.1.2, 11.4.3, 15.1.2.4, 15.1.2.5;
+ * @assertion: The initial value of Infinity is Number.POSITIVE_INFINITY;
+ * @description: Use typeof, isNaN, isFinite;
+*/
+
+// CHECK#1
+if (typeof(Infinity) !== "number") {
+ $ERROR('#1: typeof(Infinity) === "number". Actual: ' + (typeof(Infinity)));
+}
+
+// CHECK#2
+if (isFinite(Infinity) !== false) {
+ $ERROR('#2: Infinity === Not-a-Finite. Actual: ' + (Infinity));
+}
+
+// CHECK#3
+if (isNaN(Infinity) !== false) {
+ $ERROR('#3: Infinity === Not-a-Number. Actual: ' + (Infinity));
+}
+
+
+// CHECK#4
+if (Infinity !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: Infinity === Number.POSITIVE_INFINITY. Actual: ' + (Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A2_T1.js
new file mode 100644
index 000000000..f11b27277
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A2_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.2_A2_T1;
+ * @section: 15.1.1.2, 15.5.1, 15.6.1, 15.7.1;
+ * @assertion: The Infinity is not ReadOnly;
+ * @description: Checking Boolean, Number, String Functions;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+Infinity = 0;
+if (Boolean(Infinity) !== false) {
+ $ERROR('#1: Infinity = 0; Boolean(Infinity) === false. Actual: ' + (Boolean(Infinity)));
+}
+
+// CHECK#2
+Infinity = false;
+if (Number(Infinity) !== 0) {
+ $ERROR('#2: Infinity = false; Number(Infinity) === 0. Actual: ' + (Number(Infinity)));
+}
+
+// CHECK#3
+Infinity = 0;
+if (String(Infinity) !== "0") {
+ $ERROR('#3: Infinity = 0; String(Infinity) === "0". Actual: ' + (String(Infinity)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A2_T2.js
new file mode 100644
index 000000000..8a2f32aaa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A2_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.2_A2_T2;
+ * @section: 15.1.1.2, 11.4.3;
+ * @assertion: The Infinity is not ReadOnly;
+ * @description: Checking typeof Functions;
+*/
+
+// CHECK#1
+var Finite = true;
+if (typeof(Finite) !== "boolean") {
+ $ERROR('#1: Finite = true; typeof(NaN) === "boolean". Actual: ' + (typeof(NaN)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A3.1.js
new file mode 100644
index 000000000..995b91294
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A3.1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.2_A3.1;
+ * @section: 15.1.1.2, 11.4.1;
+ * @assertion: The Infinity is DontDelete;
+ * @description: Use delete;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+if (delete Infinity !== false) {
+ $ERROR('#1: delete Infinity === false. Actual: ' + (delete Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A3.2.js
new file mode 100644
index 000000000..bfd920b88
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.2_Infinity/S15.1.1.2_A3.2.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.
+
+/**
+ * @name: S15.1.1.2_A3.2;
+ * @section: 15.1.1.2, 12.6.4;
+ * @assertion: The Infinity is DontEnum;
+ * @description: Use for-in statement;
+*/
+
+// CHECK#1
+for (var prop in this) {
+ if (prop === "Infinity") {
+ $ERROR('#1: The Infinity is DontEnum');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A1.js
new file mode 100644
index 000000000..e3dec6a74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.3_A1;
+ * @section: 15.1.1.3, 11.4.3, 15.1.2.4, 15.1.2.5;
+ * @assertion: The initial value of undefined is undefined;
+ * @description: Use typeof, isNaN, isFinite;
+*/
+
+// CHECK#1
+if (typeof(undefined) !== "undefined") {
+ $ERROR('#1: typeof(undefined) === "undefined". Actual: ' + (typeof(undefined)));
+}
+
+// CHECK#2
+if (undefined !== void 0) {
+ $ERROR('#2: undefined === void 0. Actual: ' + (undefined));
+}
+
+// CHECK#3
+if (undefined !== eval("var x")) {
+ $ERROR('#3: undefined === eval("var x"). Actual: ' + (undefined));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A2_T1.js
new file mode 100644
index 000000000..4f710448c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A2_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.3_A2_T1;
+ * @section: 15.1.1.3, 15.5.1, 15.6.1, 15.7.1;
+ * @assertion: The undefined is not ReadOnly;
+ * @description: Checking Boolean, Number, String Functions;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+undefined = 1;
+if (Boolean(undefined) !== true) {
+ $ERROR('#1: undefined = 1; Boolean(undefined) === true. Actual: ' + (Boolean(undefined)));
+}
+
+// CHECK#2
+undefined = true;
+if (Number(undefined) !== 1) {
+ $ERROR('#2: undefined = true; Number(undefined) === 1. Actual: ' + (Number(undefined)));
+}
+
+// CHECK#3
+undefined = 1;
+if (String(undefined) !== "1") {
+ $ERROR('#3: undefined = 1; String(undefined) === "1". Actual: ' + (String(undefined)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A2_T2.js
new file mode 100644
index 000000000..05880d850
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A2_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.3_A2_T2;
+ * @section: 15.1.1.3, 11.4.3;
+ * @assertion: The undefined is not ReadOnly;
+ * @description: Checking typeof Operator;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+undefined = true;
+if (typeof(undefined) !== "boolean") {
+ ERROR('#1: undefined = true; typeof(undefined) === "boolean". Actual: ' + (typeof(undefined)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A3.1.js
new file mode 100644
index 000000000..9a7a3c6cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A3.1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.3_A3.1;
+ * @section: 15.1.1.3, 11.4.1;
+ * @assertion: The undefined is DontDelete;
+ * @description: Use delete;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+if (delete undefined !== false) {
+ $ERROR('#1: delete undefined === false. Actual: ' + (delete undefined));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A3.2.js
new file mode 100644
index 000000000..fcd0d27aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.1_Value_Properties_of_the_Global_Object/15.1.1.3_undefined/S15.1.1.3_A3.2.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.
+
+/**
+ * @name: S15.1.1.3_A3.2;
+ * @section: 15.1.1.3, 12.6.4;
+ * @assertion: The undefined is DontEnum;
+ * @description: Use for-in statement;
+*/
+
+// CHECK#1
+for (prop in this) {
+ if (prop === "undefined") {
+ $ERROR('#1: The undefined is DontEnum');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.1_T1.js
new file mode 100644
index 000000000..35a7870ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.1_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A1.1_T1;
+ * @section: 15.1.2.1;
+ * @assertion: If x is not a string value, return x;
+ * @description: Checking all primitive;
+*/
+
+//CHECK#1
+var x = 1;
+if (eval(x) !== x) {
+ $ERROR('#1: x = 1; eval(x) === x. Actual: ' + (eval(x)));
+}
+
+//CHECK#2
+if (eval(1) !== 1) {
+ $ERROR('#2: eval(1) === 1. Actual: ' + (eval(1)));
+}
+
+//CHECK#3
+if (eval(true) !== true) {
+ $ERROR('#3: eval(true) === true. Actual: ' + (eval(true)));
+}
+
+//CHECK#4
+if (eval(null) !== null) {
+ $ERROR('#4: eval(null) === null. Actual: ' + (eval(null)));
+}
+
+//CHECK#5
+if (eval(undefined) !== undefined) {
+ $ERROR('#5: eval(undefined) === undefined. Actual: ' + (eval(undefined)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.1_T2.js
new file mode 100644
index 000000000..13c75be57
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.1_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A1.1_T2;
+ * @section: 15.1.2.1;
+ * @assertion: If x is not a string value, return x;
+ * @description: Checking all object;
+*/
+
+//CHECK#1
+var x = {};
+if (eval(x) !== x) {
+ $ERROR('#1: x = {}; eval(x) === x. Actual: ' + (eval(x)));
+}
+
+//CHECK#2
+x = new Number(1);
+if (eval(x) !== x) {
+ $ERROR('#2: x = new Number(1); eval(x) === x. Actual: ' + (eval(x)));
+}
+
+//CHECK#3
+x = new Boolean(true);
+if (eval(x) !== x) {
+ $ERROR('#3: x = new Boolean(true); eval(x) === x. Actual: ' + (eval(x)));
+}
+
+//CHECK#4
+x = new String("1+1");
+if (eval(x) !== x) {
+ $ERROR('#4: x = new String("1"); eval(x) === x. Actual: ' + (eval(x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.2_T1.js
new file mode 100644
index 000000000..cc30c4b79
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A1.2_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A1.2_T1;
+ * @section: 15.1.2.1;
+ * @assertion: If the eval function is called with some argument, then use a first argument;
+ * @description: eval("x = 1", "x = 2"), x equal 1, not 2;
+*/
+
+//CHECK#1
+var x;
+eval("x = 1", "x = 2");
+if (x !== 1) {
+ $ERROR('#1: eval("x = 1", "x = 2"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A2_T1.js
new file mode 100644
index 000000000..ea6c85e45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A2_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A2_T1;
+ * @section: 15.1.2.1, 16;
+ * @assertion: If the parse fails, throw a SyntaxError exception (but see also clause 16);
+ * @description: Checking if execution of "eval("x = 1; x\u000A++"), catch SyntaxError" passes;
+*/
+
+//CHECK#1
+var x;
+try {
+ eval("x = 1; x\u000A++");
+ $ERROR('#1.1: eval("x = 1; x\\u000A++") must throw a SyntaxError. Actual: ' + (eval("x = 1; x\u000A++")));
+} catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: eval("x = 1; x\\u000A++") must throw a SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A2_T2.js
new file mode 100644
index 000000000..839e3b010
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A2_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A2_T2;
+ * @section: 15.1.2.1, 16;
+ * @assertion: If the parse fails, throw a SyntaxError exception (but see also clause 16);
+ * @description: Checking if execution of "eval("x = 1; x\u000A++")" fails;
+ * @negative
+*/
+
+//CHECK#1
+var x;
+eval("x = 1; x\u000A++");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.1_T1.js
new file mode 100644
index 000000000..33b588ba6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.1_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.1_T1;
+ * @section: 15.1.2.1, 12.4;
+ * @assertion: If Result(3).type is normal and its completion value is a value V,
+ * then return the value V;
+ * @description: Expression statement. Eval return primitive value;
+*/
+
+var x;
+//CHECK#1
+if (eval("x = 1") !== 1) {
+ $ERROR('#1: eval("x = 1") === 1. Actual: ' + (eval("x = 1")));
+}
+
+//CHECK#2
+if (eval("1") !== 1) {
+ $ERROR('#2: eval("1") === 1. Actual: ' + (eval("1")));
+}
+
+//CHECK#3
+if (eval("'1'") !== '1') {
+ $ERROR('#3: eval("\'1\'") === \'1\'. Actual: ' + (eval("'1'")));
+}
+
+//CHECK#4
+x = 1;
+if (eval("++x") !== 2) {
+ $ERROR('#4: x = 1; eval("++x") === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.1_T2.js
new file mode 100644
index 000000000..d98a0086a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.1_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.1_T2;
+ * @section: 15.1.2.1, 12.4;
+ * @assertion: If Result(3).type is normal and its completion value is a value V,
+ * then return the value V;
+ * @description: Expression statement. Eval return object value;
+*/
+
+//CHECK#1
+var x = {};
+var y;
+if (eval("y = x") !== x) {
+ $ERROR('#1: var x = {}; eval("y = x") === x. Actual: ' + (eval("y = x")));
+}
+
+
+//CHECK#2
+if (eval("x") !== x) {
+ $ERROR('#2: var x = {}; eval("x") === x. Actual: ' + (eval("x")));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T1.js
new file mode 100644
index 000000000..8bff8c954
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.2_T1;
+ * @section: 15.1.2.1, 12.1;
+ * @assertion: If Result(3).type is normal and its completion value is empty,
+ * then return the value undefined;
+ * @description: Block statement;
+*/
+
+//CHECK#1
+if (eval("{}") !== undefined) {
+ $ERROR('#1: eval("{}") === undefined. Actual: ' + (eval("{}")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T2.js
new file mode 100644
index 000000000..78af4be93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.2_T2;
+ * @section: 15.1.2.1, 12.2;
+ * @assertion: If Result(3).type is normal and its completion value is empty,
+ * then return the value undefined;
+ * @description: Var statement;
+*/
+
+//CHECK#1
+if (eval("var x = 1") !== undefined) {
+ $ERROR('#1: eval("var x = 1") === undefined. Actual: ' + (eval("var x = 1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T3.js
new file mode 100644
index 000000000..2fa8c3f8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.2_T3;
+ * @section: 15.1.2.1, 12.3;
+ * @assertion: If Result(3).type is normal and its completion value is empty,
+ * then return the value undefined;
+ * @description: Empty statement;
+*/
+
+//CHECK#1
+if (eval(";") !== undefined) {
+ $ERROR('#1: eval(";") === undefined. Actual: ' + (eval(";")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T4.js
new file mode 100644
index 000000000..46470bb10
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.2_T4;
+ * @section: 15.1.2.1, 12.5;
+ * @assertion: If Result(3).type is normal and its completion value is empty,
+ * then return the value undefined;
+ * @description: If statement;
+*/
+
+//CHECK#1
+if (eval("if (false) ;") !== undefined) {
+ $ERROR('#1: eval("if (false) ;") === undefined. Actual: ' + eval("if (false) ;"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T5.js
new file mode 100644
index 000000000..ae9ea4e98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T5.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.2_T5;
+ * @section: 15.1.2.1, 12.11;
+ * @assertion: If Result(3).type is normal and its completion value is empty,
+ * then return the value undefined;
+ * @description: Switch statement;
+*/
+
+//CHECK#1
+if (eval("switch(1){}") !== undefined) {
+ $ERROR('#1: eval("switch(1){}") === undefined. Actual: ' + (eval("switch(1){}")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T6.js
new file mode 100644
index 000000000..9e52de151
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.2_T6;
+ * @section: 15.1.2.1, 12.6.1;
+ * @assertion: If Result(3).type is normal and its completion value is empty,
+ * then return the value undefined;
+ * @description: do-while statement;
+*/
+
+//CHECK#1
+if (eval("do ; while(false)") !== undefined) {
+ $ERROR('#1: eval("do ; while(false)") === undefined. Actual: ' + (eval("do ; while(false)")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T7.js
new file mode 100644
index 000000000..421e265fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T7.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.2_T7;
+ * @section: 15.1.2.1, 12.6.2;
+ * @assertion: If Result(3).type is normal and its completion value is empty,
+ * then return the value undefined;
+ * @description: do-while statement;
+*/
+
+//CHECK#1
+if (eval("while(false);") !== undefined) {
+ $ERROR('#1: eval("while(false);") === undefined. Actual: ' + (eval("while(false);")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T8.js
new file mode 100644
index 000000000..19bdbfe78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.2_T8.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.2_T8;
+ * @section: 15.1.2.1, 12.6.3;
+ * @assertion: If Result(3).type is normal and its completion value is empty,
+ * then return the value undefined;
+ * @description: for statement;
+*/
+
+//CHECK#1
+if (eval("for(false;false;false);") !== undefined) {
+ $ERROR('#1: eval("for(false;false;false);") === undefined. Actual: ' + (eval("for(false;false;false);")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T1.js
new file mode 100644
index 000000000..f5affb3af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.3_T1;
+ * @section: 15.1.2.1, 12.7;
+ * @assertion: If Result(3).type is not normal, then Result(3).type must be throw.
+ * Throw Result(3).value as an exception;
+ * @description: Continue statement;
+*/
+
+//CHECK#1
+try {
+ eval("continue;");
+ $ERROR('#1.1: continue must throw SyntaxError. Actual: ' + (eval("continue;")));
+} catch(e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: continue must throw SyntaxError. Actual ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ for (var i = 0; i <= 1; i++) {
+ for (var j = 0; j <= 1; j++) {
+ eval("continue;");
+ }
+ }
+ $ERROR('#2.1: continue must throw SyntaxError. Actual: ' + (eval("continue;")));
+} catch(e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#2.2: continue must throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T2.js
new file mode 100644
index 000000000..f66ea4002
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.3_T2;
+ * @section: 15.1.2.1, 12.8;
+ * @assertion: If Result(3).type is not normal, then Result(3).type must be throw.
+ * Throw Result(3).value as an exception;
+ * @description: Break statement;
+*/
+
+//CHECK#1
+try {
+ eval("break;");
+ $ERROR('#1.1: break must throw SyntaxError. Actual: ' + (eval("break;")));
+} catch(e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: break must throw SyntaxError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ for (var i = 0; i <= 1; i++) {
+ for (var j = 0; j <= 1; j++) {
+ eval("break;");
+ }
+ }
+ $ERROR('#2.1: break must throw SyntaxError. Actual: ' + (eval("break;")));
+} catch(e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#2.2: break must throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T3.js
new file mode 100644
index 000000000..5ee0bedd0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T3.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.3_T3;
+ * @section: 15.1.2.1, 12.9;
+ * @assertion: If Result(3).type is not normal, then Result(3).type must be throw.
+ * Throw Result(3).value as an exception;
+ * @description: Return statement;
+*/
+
+//CHECK#1
+try {
+ eval("return;");
+ $ERROR('#1.1: return must throw SyntaxError. Actual: ' + (eval("return;")));
+} catch(e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: return must throw SyntaxError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+
+function f() { eval("return;"); };
+
+try {
+ f();
+ $ERROR('#2.1: return must throw SyntaxError. Actual: ' + (f()));
+} catch(e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#2.2: return must throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T4.js
new file mode 100644
index 000000000..e1db69a52
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A3.3_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A3.3_T4;
+ * @section: 15.1.2.1, 12.13;
+ * @assertion: If Result(3).type is not normal, then Result(3).type must be throw.
+ * Throw Result(3).value as an exception;
+ * @description: Throw statement;
+*/
+
+//CHECK#1
+try {
+ eval("throw 1;");
+ $ERROR('#1.1: throw 1 must throw SyntaxError. Actual: ' + (eval("throw 1;")));
+} catch(e) {
+ if (e !== 1) {
+ $ERROR('#1.2: throw 1 must throw SyntaxError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.1.js
new file mode 100644
index 000000000..2d5dad470
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A4.1;
+ * @section: 15.1.2.1, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of eval has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (eval.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: eval.propertyIsEnumerable(\'length\') === false. Actual: ' + (eval.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (p in eval){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in eval) { if (p === "length") result = false; }; result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.2.js
new file mode 100644
index 000000000..f1782f015
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A4.2;
+ * @section: 15.1.2.1, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of eval has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+*/
+
+//CHECK#1
+if (eval.hasOwnProperty('length') !== true) {
+ $FAIL('#1: eval.hasOwnProperty(\'length\') === true. Actual: ' + (eval.hasOwnProperty('length')));
+}
+
+delete eval.length;
+
+//CHECK#2
+if (eval.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete eval.length; eval.hasOwnProperty(\'length\') === true. Actual: ' + (eval.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (eval.length === undefined) {
+ $ERROR('#3: delete eval.length; eval.length !== undefined');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.3.js
new file mode 100644
index 000000000..1668ed29c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A4.3;
+ * @section: 15.1.2.1;
+ * @assertion: The length property of eval has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+var x = eval.length;
+eval.length = Infinity;
+if (eval.length !== x) {
+ $ERROR('#1: x = eval.length; eval.length = Infinity; eval.length === x. Actual: ' + (eval.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.4.js
new file mode 100644
index 000000000..74c6ac526
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A4.4;
+ * @section: 15.1.2.1;
+ * @assertion: The length property of eval is 1;
+ * @description: eval.length === 1;
+*/
+
+//CHECK#1
+if (eval.length !== 1) {
+ $ERROR('#1: eval.length === 1. Actual: ' + (eval.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.5.js
new file mode 100644
index 000000000..fd55a100c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.1_A4.5;
+ * @section: 15.1.2.1, 15.2.4.7, 12.6.4;
+ * @assertion: The eval property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('eval') !== false) {
+ $ERROR('#1: this.propertyIsEnumerable(\'eval\') === false. Actual: ' + (this.propertyIsEnumerable('eval')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in this){
+ if (p === "eval") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "eval") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.6.js
new file mode 100644
index 000000000..6ba1e2a5c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.1_A4.6;
+* @section: 15.1.2.1;
+* @assertion: The eval property has not prototype property;
+* @description: Checking eval.prototype;
+*/
+
+//CHECK#1
+if (eval.prototype !== undefined) {
+ $ERROR('#1: eval.prototype === undefined. Actual: ' + (eval.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.7.js
new file mode 100644
index 000000000..c82ebd710
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.1_eval/S15.1.2.1_A4.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.1_A4.7;
+* @section: 15.1.2.1, 11.2.2;
+* @assertion: The eval property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new eval();
+ $ERROR('#1.1: new eval() throw TypeError. Actual: ' + (new eval()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new eval() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T1.js
new file mode 100644
index 000000000..6f07f553d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A1_T1;
+ * @section: 15.1.2.2, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for boolean primitive;
+*/
+
+//CHECK#1
+if (!(isNaN(parseInt(true)) && isNaN(parseInt("NaN")))) {
+ $ERROR('#1: parseInt(true) === Not-a-Number; parseInt("NaN") === Not-a-Number. Actual: ' + (parseInt("NaN")));
+}
+
+//CHECK#2
+if (String(parseInt(false)) !== "NaN") {
+ $ERROR('#2: String(parseInt(false)) === "NaN". Actual: ' + (String(parseInt(false))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T2.js
new file mode 100644
index 000000000..781d3b055
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A1_T2;
+ * @section: 15.1.2.2, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for number primitive;
+*/
+
+//CHECK#1
+if (parseInt(-1) !== parseInt("-1")) {
+ $ERROR('#1: parseInt(-1) === parseInt("-1"). Actual: ' + (parseInt(-1)));
+}
+
+//CHECK#2
+if (String(parseInt(Infinity)) !== "NaN") {
+ $ERROR('#2: String(parseInt(Infinity)) === "NaN". Actual: ' + (String(parseInt(Infinity))));
+}
+
+//CHECK#3
+if (String(parseInt(NaN)) !== "NaN") {
+ $ERROR('#3: String(parseInt(NaN)) === "NaN". Actual: ' + (String(parseInt(NaN))));
+}
+
+//CHECK#4
+if (parseInt(-0) !== 0) {
+ $ERROR('#4: parseInt(-0) === 0. Actual: ' + (parseInt(-0)));
+} else {
+ if (1 / parseInt(-0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: parseInt(-0) === +0. Actual: ' + (parseInt(-0)));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T3.js
new file mode 100644
index 000000000..25a3334dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A1_T3;
+ * @section: 15.1.2.2, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for undefined and null;
+*/
+
+//CHECK#1
+if (!(isNaN(parseInt(undefined)) && isNaN(parseInt("NaN")))) {
+ $ERROR('#1: parseInt(undefined) === Not-a-Number; parseInt("NaN") === Not-a-Number. Actual: ' + (parseInt("NaN")));
+}
+
+//CHECK#2
+if (!(isNaN(parseInt(null)) && isNaN(parseInt("NaN")))) {
+ $ERROR('#2: parseInt(null) === Not-a-Number; parseInt("NaN") === Not-a-Number. Actual: ' + (parseInt("NaN")));
+}
+
+//CHECK#3
+if (String(parseInt(undefined)) !== "NaN") {
+ $ERROR('#3: String(parseInt(undefined)) === "NaN". Actual: ' + (String(parseInt(undefined))));
+}
+
+//CHECK#4
+if (String(parseInt(null)) !== "NaN") {
+ $ERROR('#4: String(parseInt(null)) === "NaN". Actual: ' + (String(parseInt(null))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T4.js
new file mode 100644
index 000000000..eb95903f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A1_T4;
+ * @section: 15.1.2.2, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for Boolean object;
+*/
+
+//CHECK#1
+if (!(isNaN(parseInt(new Boolean(true))) && isNaN(parseInt("NaN")))) {
+ $ERROR('#1: parseInt(new Boolean(true)) === Not-a-Number; parseInt("NaN") === Not-a-Number. Actual: ' + (parseInt("NaN")));
+}
+
+//CHECK#2
+if (String(parseInt(new Boolean(false))) !== "NaN") {
+ $ERROR('#2: String(parseInt(new Boolean(false))) === "NaN". Actual: ' + (String(parseInt(new Boolean(false)))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T5.js
new file mode 100644
index 000000000..42d3c4349
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T5.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A1_T5;
+ * @section: 15.1.2.2, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for Number object;
+*/
+
+//CHECK#1
+if (parseInt(new Number(-1)) !== parseInt("-1")) {
+ $ERROR('#1: parseInt(new Number(-1)) === parseInt("-1"). Actual: ' + (parseInt(new Number(-1))));
+}
+
+//CHECK#2
+if (String(parseInt(new Number(Infinity))) !== "NaN") {
+ $ERROR('#2: String(parseInt(new Number(Infinity))) === "NaN". Actual: ' + (String(parseInt(new Number(Infinity)))));
+}
+
+//CHECK#3
+if (String(parseInt(new Number(NaN))) !== "NaN") {
+ $ERROR('#3: String(parseInt(new Number(NaN))) === "NaN". Actual: ' + (String(parseInt(new Number(NaN)))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T6.js
new file mode 100644
index 000000000..733dd48dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A1_T6;
+ * @section: 15.1.2.2, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for String object;
+*/
+
+//CHECK#1
+if (parseInt(new String("-1")) !== parseInt("-1")) {
+ $ERROR('#1: parseInt(new String("-1")) === parseInt("-1"). Actual: ' + (parseInt(new String("-1"))));
+}
+
+//CHECK#2
+if (String(parseInt(new String("Infinity"))) !== "NaN") {
+ $ERROR('#2: String(parseInt(new String("Infinity"))) === "NaN". Actual: ' + (String(parseInt(new String("Infinity")))));
+}
+
+//CHECK#3
+if (String(parseInt(new String("NaN"))) !== "NaN") {
+ $ERROR('#3: String(parseInt(new String("NaN"))) === "NaN". Actual: ' + (String(parseInt(new String("NaN")))));
+}
+
+//CHECK#4
+if (String(parseInt(new String("false"))) !== "NaN") {
+ $ERROR('#4: String(parseInt(new String("false"))) === "NaN". Actual: ' + (String(parseInt(new String("false")))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T7.js
new file mode 100644
index 000000000..f57b22ee1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A1_T7.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A1_T7;
+ * @section: 15.1.2.2, 9.8, 8.6.2.6;
+ * @assertion: Operator use ToString;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, String);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (isNaN(parseInt(object)) !== true) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; parseInt(object) === Not-a-Number. Actual: ' + (parseInt(object)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (parseInt(object) !== 0) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; parseInt(object) === 0. Actual: ' + (parseInt(object)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (parseInt(object) !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; parseInt(object) === 1. Actual: ' + (parseInt(object)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ if (parseInt(object) !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseInt(object) === 1. Actual: ' + (parseInt(object)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseInt(object) not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseInt(object) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (parseInt(object) !== 1) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; parseInt(object) === 1. Actual: ' + (parseInt(object)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (parseInt(object) !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; parseInt(object) === 1. Actual: ' + (parseInt(object)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ parseInt(object);
+ $ERROR('#7.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; parseInt(object) throw "error". Actual: ' + (parseInt(object)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; parseInt(object) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ parseInt(object);
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt(object) throw TypeError. Actual: ' + (parseInt(object)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt(object) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T1.js
new file mode 100644
index 000000000..3ca83f46a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_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.
+
+/**
+ * @name: S15.1.2.2_A2_T1;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: TAB (U+0009);
+*/
+
+//CHECK#1
+if (parseInt("\u00091") !== parseInt("1")) {
+ $ERROR('#1: parseInt("\\u00091") === parseInt("1"). Actual: ' + (parseInt("\u00091")));
+}
+
+//CHECK#2
+if (parseInt("\u0009\u0009-1") !== parseInt("-1")) {
+ $ERROR('#2: parseInt("\\u0009\\u0009-1") === parseInt("-1"). Actual: ' + (parseInt("\u0009\u0009-1")));
+}
+
+//CHECK#3
+if (parseInt(" 1") !== parseInt("1")) {
+ $ERROR('#3: parseInt(" 1") === parseInt("1"). Actual: ' + (parseInt(" 1")));
+}
+
+//CHECK#4
+if (parseInt(" 1") !== parseInt("1")) {
+ $ERROR('#4: parseInt(" 1") === parseInt("1"). Actual: ' + (parseInt(" 1")));
+}
+
+//CHECK#5
+if (parseInt(" \u0009 \u0009-1") !== parseInt("-1")) {
+ $ERROR('#5: parseInt(" \\u0009 \\u0009-1") === parseInt("-1"). Actual: ' + (parseInt(" \u0009 \u0009-1")));
+}
+
+//CHECK#6
+if (isNaN(parseInt("\u0009")) !== true) {
+ $ERROR('#6: parseInt("\\u0009") === Not-a-Number. Actual: ' + (parseInt("\u0009")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T10.js
new file mode 100644
index 000000000..e87c6d8d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T10.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A2_T10;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: USP;
+*/
+
+//CHECK#
+var count = 0;
+var errorCount = 0;
+var uspU = ["\u1680", "\u180E", "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006", "\u2007", "\u2008", "\u2009", "\u200A", "\u202F", "\u205F", "\u3000"];
+var uspS = ["1680", "180E", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "200A", "202F", "205F", "3000"];
+
+for (var index = 0; index < uspU.length; index++) {
+ var result = true;
+ if (parseInt(uspU[index] + "1") !== parseInt("1")) {
+ $ERROR('#1.' + uspS[index] + ' ');
+ result = false;
+ }
+ if (parseInt(uspU[index] + uspU[index] + uspU[index] + "1") !== parseInt("1")) {
+ $ERROR('#2.' + uspS[index] + ' ');
+ result = false;
+ }
+ if (isNaN(parseInt(uspU[index])) !== true) {
+ $ERROR('#3.' + uspS[index] + ' ');
+ result = false;
+ }
+ if (result !== true) {
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T2.js
new file mode 100644
index 000000000..eed95977b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A2_T2;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: SP (U+0020);
+*/
+
+//CHECK#1
+if (parseInt("\u00201") !== parseInt("1")) {
+ $ERROR('#1: parseInt("\\u00201") === parseInt("1"). Actual: ' + (parseInt("\u00201")));
+}
+
+//CHECK#2
+if (parseInt("\u0020\u0020-1") !== parseInt("-1")) {
+ $ERROR('#2: parseInt("\\u0020\\u0020-1") === parseInt("-1"). Actual: ' + (parseInt("\u0020\u0020-1")));
+}
+
+//CHECK#3
+if (parseInt(" 1") !== parseInt("1")) {
+ $ERROR('#3: parseInt(" 1") === parseInt("1"). Actual: ' + (parseInt(" 1")));
+}
+
+//CHECK#4
+if (parseInt(" 1") !== parseInt("1")) {
+ $ERROR('#4: parseInt(" 1") === parseInt("1"). Actual: ' + (parseInt(" 1")));
+}
+
+//CHECK#5
+if (parseInt(" \u0020 \u0020-1") !== parseInt("-1")) {
+ $ERROR('#5: parseInt(" \\u0020 \\u0020-1") === parseInt("-1"). Actual: ' + (parseInt(" \u0020 \u0020-1")));
+}
+
+//CHECK#6
+if (isNaN(parseInt("\u0020")) !== true) {
+ $ERROR('#6: parseInt("\\u0020") === Not-a-Number. Actual: ' + (parseInt("\u0020")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T3.js
new file mode 100644
index 000000000..7d454d0b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A2_T3;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: NBSB (U+00A0);
+*/
+
+//CHECK#1
+if (parseInt("\u00A01") !== parseInt("1")) {
+ $ERROR('#1: parseInt("\\u00A01") === parseInt("1"). Actual: ' + (parseInt("\u00A01")));
+}
+
+//CHECK#2
+if (parseInt("\u00A0\u00A0-1") !== parseInt("-1")) {
+ $ERROR('#2: parseInt("\\u00A0\\u00A0-1") === parseInt("-1"). Actual: ' + (parseInt("\u00A0\u00A0-1")));
+}
+
+//CHECK#3
+if (isNaN(parseInt("\u00A0")) !== true) {
+ $ERROR('#3: parseInt("\\u00A0") === Not-a-Number. Actual: ' + (parseInt("\u00A0")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T4.js
new file mode 100644
index 000000000..eee47779d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T4.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A2_T4;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: FF (U+000C);
+*/
+
+//CHECK#1
+if (parseInt("\u000C1") !== parseInt("1")) {
+ $ERROR('#1: parseInt("\\u000C1") === parseInt("1"). Actual: ' + (parseInt("\u000C1")));
+}
+
+//CHECK#2
+if (parseInt("\u000C\u000C-1") !== parseInt("-1")) {
+ $ERROR('#2: parseInt("\\u000C\\u000C-1") === parseInt("-1"). Actual: ' + (parseInt("\u000C\u000C-1")));
+}
+
+//CHECK#3
+if (isNaN(parseInt("\u000C")) !== true) {
+ $ERROR('#3: parseInt("\\u000C") === Not-a-Number. Actual: ' + (parseInt("\u000C")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T5.js
new file mode 100644
index 000000000..0c91ec8d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T5.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A2_T5;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: VT (U+000B);
+*/
+
+//CHECK#1
+if (parseInt("\u000B1") !== parseInt("1")) {
+ $ERROR('#1: parseInt("\\u000B1") === parseInt("1"). Actual: ' + (parseInt("\u000B1")));
+}
+
+//CHECK#2
+if (parseInt("\u000B\u000B-1") !== parseInt("-1")) {
+ $ERROR('#2: parseInt("\\u000B\\u000B-1") === parseInt("-1"). Actual: ' + (parseInt("\u000B\u000B-1")));
+}
+
+//CHECK#3
+if (isNaN(parseInt("\u000B")) !== true) {
+ $ERROR('#3: parseInt("\\u000B") === Not-a-Number. Actual: ' + (parseInt("\u000B")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T6.js
new file mode 100644
index 000000000..c5b51a76d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T6.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A2_T6;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: CR (U+000D);
+*/
+
+//CHECK#1
+if (parseInt("\u000D1") !== parseInt("1")) {
+ $ERROR('#1: parseInt("\\u000D1") === parseInt("1"). Actual: ' + (parseInt("\u000D1")));
+}
+
+//CHECK#2
+if (parseInt("\u000D\u000D-1") !== parseInt("-1")) {
+ $ERROR('#2: parseInt("\\u000D\\u000D-1") === parseInt("-1"). Actual: ' + (parseInt("\u000D\u000D-1")));
+}
+
+//CHECK#3
+if (isNaN(parseInt("\u000D")) !== true) {
+ $ERROR('#3: parseInt("\\u000D") === Not-a-Number. Actual: ' + (parseInt("\u000D")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T7.js
new file mode 100644
index 000000000..bdc17a25a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T7.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A2_T7;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: LF (U+000A);
+*/
+
+//CHECK#1
+if (parseInt("\u000A1") !== parseInt("1")) {
+ $ERROR('#1: parseInt("\\u000A1") === parseInt("1"). Actual: ' + (parseInt("\u000A1")));
+}
+
+//CHECK#2
+if (parseInt("\u000A\u000A-1") !== parseInt("-1")) {
+ $ERROR('#2: parseInt("\\u000A\\u000A-1") === parseInt("-1"). Actual: ' + (parseInt("\u000A\u000A-1")));
+}
+
+//CHECK#3
+if (isNaN(parseInt("\u000A")) !== true) {
+ $ERROR('#3: parseInt("\\u000A") === Not-a-Number. Actual: ' + (parseInt("\u000A")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T8.js
new file mode 100644
index 000000000..670b39a5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T8.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A2_T8;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: LS (U+2028);
+*/
+
+//CHECK#1
+if (parseInt("\u20281") !== parseInt("1")) {
+ $ERROR('#1: parseInt("\\u20281") === parseInt("1"). Actual: ' + (parseInt("\u20281")));
+}
+
+//CHECK#2
+if (parseInt("\u2028\u2028-1") !== parseInt("-1")) {
+ $ERROR('#2: parseInt("\\u2028\\u2028-1") === parseInt("-1"). Actual: ' + (parseInt("\u2028\u2028-1")));
+}
+
+//CHECK#3
+if (isNaN(parseInt("\u2028")) !== true) {
+ $ERROR('#3: parseInt("\\u2028") === Not-a-Number. Actual: ' + (parseInt("\u2028")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T9.js
new file mode 100644
index 000000000..fa285aabe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A2_T9.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A2_T9;
+ * @section: 15.1.2.2;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: PS (U+2029);
+*/
+
+//CHECK#1
+if (parseInt("\u20291") !== parseInt("1")) {
+ $ERROR('#1: parseInt("\\u20291") === parseInt("1"). Actual: ' + (parseInt("\u20291")));
+}
+
+//CHECK#2
+if (parseInt("\u2029\u2029-1") !== parseInt("-1")) {
+ $ERROR('#2: parseInt("\\u2029\\u2029-1") === parseInt("-1"). Actual: ' + (parseInt("\u2029\u2029-1")));
+}
+
+//CHECK#3
+if (isNaN(parseInt("\u2029")) !== true) {
+ $ERROR('#3: parseInt("\\u2029") === Not-a-Number. Actual: ' + (parseInt("\u2029")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T1.js
new file mode 100644
index 000000000..58450dd5b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.1_T1;
+ * @section: 15.1.2.2, 9.3;
+ * @assertion: Operator use ToNumber;
+ * @description: Checking for boolean primitive;
+*/
+
+//CHECK#1
+if (parseInt("11", false) !== parseInt("11", 10)) {
+ $ERROR('#1: parseInt("11", false) === parseInt("11", 10). Actual: ' + (parseInt("11", false)));
+}
+
+//CHECK#2
+if (isNaN(parseInt("11", true)) !== true) {
+ $ERROR('#2: parseInt("11", true) === Not-a-Number. Actual: ' + (parseInt("11", true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T2.js
new file mode 100644
index 000000000..4364a12ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.1_T2;
+ * @section: 15.1.2.2, 9.3;
+ * @assertion: Operator use ToNumber;
+ * @description: Checking for string primitive;
+*/
+
+//CHECK#1
+if (parseInt("11", "2") !== parseInt("11", 2)) {
+ $ERROR('#1: parseInt("11", "2") === parseInt("11", 2). Actual: ' + (parseInt("11", "2")));
+}
+
+//CHECK#2
+if (parseInt("11", "0") !== parseInt("11", 10)) {
+ $ERROR('#2: parseInt("11", "0") === parseInt("11", 10). Actual: ' + (parseInt("11", "0")));
+}
+
+//CHECK#3
+if (parseInt("11", "") !== parseInt("11", 10)) {
+ $ERROR('#3: parseInt("11", "") === parseInt("11", 10). Actual: ' + (parseInt("11", "")));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T3.js
new file mode 100644
index 000000000..7c6e15af2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.1_T3;
+ * @section: 15.1.2.2, 9.3;
+ * @assertion: Operator use ToNumber;
+ * @description: Checking for undefined and null;
+*/
+
+//CHECK#1
+if (parseInt("11", undefined) !== parseInt("11", 10)) {
+ $ERROR('#1: parseInt("11", undefined) === parseInt("11", 10). Actual: ' + (parseInt("11", undefined)));
+}
+
+//CHECK#2
+if (parseInt("11", null) !== parseInt("11", 10)) {
+ $ERROR('#2: parseInt("11", null) === parseInt("11", 10). Actual: ' + (parseInt("11", null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T4.js
new file mode 100644
index 000000000..be3801661
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.1_T4;
+ * @section: 15.1.2.2, 9.3;
+ * @assertion: Operator use ToNumber;
+ * @description: Checking for Boolean object;
+*/
+
+//CHECK#1
+if (parseInt("11", new Boolean(false)) !== parseInt("11", false)) {
+ $ERROR('#1: parseInt("11", new Boolean(false)) === parseInt("11", false). Actual: ' + (parseInt("11", new Boolean(false))));
+}
+
+//CHECK#2
+if (isNaN(parseInt("11", new Boolean(true))) !== true) {
+ $ERROR('#2: parseInt("11", new Boolean(true)) === Not-a-Number. Actual: ' + (parseInt("11", new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T5.js
new file mode 100644
index 000000000..818eecc1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.1_T5;
+ * @section: 15.1.2.2, 9.3;
+ * @assertion: Operator use ToNumber;
+ * @description: Checking for Number object;
+*/
+
+//CHECK#1
+if (parseInt("11", new Number(2)) !== parseInt("11", 2)) {
+ $ERROR('#1: parseInt("11", new Number(2)) === parseInt("11", 2). Actual: ' + (parseInt("11", new Number(2))));
+}
+
+//CHECK#2
+if (parseInt("11", new Number(Infinity)) !== parseInt("11", Infinity)) {
+ $ERROR('#2: parseInt("11", new Number(Infinity)) === parseInt("11", Infinity). Actual: ' + (parseInt("11", new Number(Infinity))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T6.js
new file mode 100644
index 000000000..4886116f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.1_T6;
+ * @section: 15.1.2.2, 9.3;
+ * @assertion: Operator use ToNumber;
+ * @description: Checking for String object;
+*/
+
+//CHECK#1
+if (parseInt("11", new String("2")) !== parseInt("11", 2)) {
+ $ERROR('#1: parseInt("11", new String("2")) === parseInt("11", 2). Actual: ' + (parseInt("11", new String("2"))));
+}
+
+//CHECK#2
+if (parseInt("11", new String("Infinity")) !== parseInt("11", Infinity)) {
+ $ERROR('#2: parseInt("11", new String("Infinity")) === parseInt("11", Infinity). Actual: ' + (parseInt("11", new String("Infinity"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T7.js
new file mode 100644
index 000000000..1fe067f49
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.1_T7.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.1_T7;
+ * @section: 15.1.2.2, 9.3, 8.6.2.6;
+ * @assertion: Operator use ToNumber;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return 2}};
+if (parseInt("11", object) !== parseInt("11", 2)) {
+ $ERROR('#1: var object = {valueOf: function() {return 2}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 2}, toString: function() {return 1}};
+if (parseInt("11", object) !== parseInt("11", 2)) {
+ $ERROR('#2: var object = {valueOf: function() {return 2}, toString: function() {return 1}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 2}, toString: function() {return {}}};
+if (parseInt("11", object) !== parseInt("11", 2)) {
+ $ERROR('#3: var object = {valueOf: function() {return 2}, toString: function() {return {}}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 2}, toString: function() {throw "error"}};
+ if (parseInt("11", object) !== parseInt("11", 2)) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 2}, toString: function() {throw "error"}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 2}, toString: function() {throw "error"}}; parseInt("11", object) not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 2}, toString: function() {throw "error"}}; parseInt("11", object) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 2}};
+if (parseInt("11", object) !== parseInt("11", 2)) {
+ $ERROR('#5: var object = {toString: function() {return 2}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 2}}
+if (parseInt("11", object) !== parseInt("11", 2)) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 2}}; parseInt("11", object) === parseInt("11", 2). Actual: ' + (parseInt("11", object)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 2}};
+ parseInt("11", object);
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 2}}; parseInt("11", object) throw "error". Actual: ' + (parseInt("11", object)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 2}}; parseInt("11", object) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ parseInt("11", object);
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt("11", object) throw TypeError. Actual: ' + (parseInt("11", object)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt("11", object) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T1.js
new file mode 100644
index 000000000..34fab3c5a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.2_T1;
+ * @section: 15.1.2.2;
+ * @assertion: Operator use ToInt32;
+ * @description: If radix is NaN, +0, -0, +Infinity, -Infinity, return radix = +0;
+*/
+
+//CHECK#1
+if (parseInt("11", NaN) !== parseInt("11", 10)) {
+ $ERROR('#1: parseInt("11", NaN) === parseInt("11", 10). Actual: ' + (parseInt("11", NaN)));
+}
+
+//CHECK#2
+if (parseInt("11", +0) !== parseInt("11", 10)) {
+ $ERROR('#2: parseInt("11", +0) === parseInt("11", 10). Actual: ' + (parseInt("11", +0)));
+}
+
+//CHECK#3
+if (parseInt("11", -0) !== parseInt("11", 10)) {
+ $ERROR('#3: parseInt("11", -0) === parseInt("11", 10). Actual: ' + (parseInt("11", -0)));
+}
+
+//CHECK#4
+if (parseInt("11", Number.POSITIVE_INFINITY) !== parseInt("11", 10)) {
+ $ERROR('#4: parseInt("11", Number.POSITIVE_INFINITY) === parseInt("11", 10). Actual: ' + (parseInt("11", Number.POSITIVE_INFINITY)));
+}
+
+//CHECK#5
+if (parseInt("11", Number.NEGATIVE_INFINITY) !== parseInt("11", 10)) {
+ $ERROR('#5: parseInt("11", Number.NEGATIVE_INFINITY) === parseInt("11", 10). Actual: ' + (parseInt("11", Number.NEGATIVE_INFINITY)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T2.js
new file mode 100644
index 000000000..c3e33816d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.2_T2;
+ * @section: 15.1.2.2;
+ * @assertion: Operator use ToInt32;
+ * @description: ToInt32 use floor;
+*/
+
+//CHECK#1
+if (parseInt("11", 2.1) !== parseInt("11", 2)) {
+ $ERROR('#1: parseInt("11", 2.1) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.1)));
+}
+
+//CHECK#2
+if (parseInt("11", 2.5) !== parseInt("11", 2)) {
+ $ERROR('#2: parseInt("11", 2.5) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.5)));
+}
+
+//CHECK#3
+if (parseInt("11", 2.9) !== parseInt("11", 2)) {
+ $ERROR('#3: parseInt("11", 2.9) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.9)));
+}
+
+//CHECK#4
+if (parseInt("11", 2.000000000001) !== parseInt("11", 2)) {
+ $ERROR('#4: parseInt("11", 2.000000000001) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.000000000001)));
+}
+
+//CHECK#5
+if (parseInt("11", 2.999999999999) !== parseInt("11", 2)) {
+ $ERROR('#5: parseInt("11", 2.999999999999) === parseInt("11", 2). Actual: ' + (parseInt("11", 2.999999999999)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T3.js
new file mode 100644
index 000000000..59ddad564
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A3.2_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A3.2_T3;
+ * @section: 15.1.2.2;
+ * @assertion: Operator use ToInt32;
+ * @description: ToInt32 use modulo;
+*/
+
+//CHECK#1
+if (parseInt("11", 4294967298) !== parseInt("11", 2)) {
+ $ERROR('#1: parseInt("11", 4294967298) === parseInt("11", 2). Actual: ' + (parseInt("11", 4294967298)));
+}
+
+//CHECK#2
+if (parseInt("11", 4294967296) !== parseInt("11", 10)) {
+ $ERROR('#2: parseInt("11", 4294967296) === parseInt("11", 10). Actual: ' + (parseInt("11", 4294967296)));
+}
+
+//CHECK#3
+if (isNaN(parseInt("11", -2147483650)) !== true) {
+ $ERROR('#3: parseInt("11", 2147483650) === Not-a-Number. Actual: ' + (parseInt("11", 2147483650)));
+}
+
+//CHECK#4
+if (parseInt("11", -4294967294) !== parseInt("11", 2)) {
+ $ERROR('#4: parseInt("11", -4294967294) === parseInt("11", 2). Actual: ' + (parseInt("11", -4294967294)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.1_T1.js
new file mode 100644
index 000000000..cc43895d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.1_T1.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A4.1_T1;
+ * @section: 15.1.2.2;
+ * @assertion: If R = 0 or R = undefined, then R = 10;
+ * @description: R = 0;
+*/
+
+//CHECK#0
+if (parseInt("0", 0) !== parseInt("0", 10)) {
+ $ERROR('#0: parseInt("0", 0) === parseInt("0", 10). Actual: ' + (parseInt("0", 0)));
+}
+
+//CHECK#1
+if (parseInt("1", 0) !== parseInt("1", 10)) {
+ $ERROR('#1: parseInt("1", 0) === parseInt("01", 10). Actual: ' + (parseInt("1", 0)));
+}
+
+//CHECK#2
+if (parseInt("2", 0) !== parseInt("2", 10)) {
+ $ERROR('#2: parseInt("2", 0) === parseInt("2", 10). Actual: ' + (parseInt("2", 0)));
+}
+
+//CHECK#3
+if (parseInt("3", 0) !== parseInt("3", 10)) {
+ $ERROR('#3: parseInt("3", 0) === parseInt("3", 10). Actual: ' + (parseInt("3", 0)));
+}
+
+//CHECK#4
+if (parseInt("4", 0) !== parseInt("4", 10)) {
+ $ERROR('#4: parseInt("4", 0) === parseInt(4", 10). Actual: ' + (parseInt("4", 0)));
+}
+
+//CHECK#5
+if (parseInt("5", 0) !== parseInt("5", 10)) {
+ $ERROR('#5: parseInt("5", 0) === parseInt("5", 10). Actual: ' + (parseInt("5", 0)));
+}
+
+//CHECK#6
+if (parseInt("6", 0) !== parseInt("6", 10)) {
+ $ERROR('#6: parseInt("6", 0) === parseInt("6", 10). Actual: ' + (parseInt("6", 0)));
+}
+
+//CHECK#7
+if (parseInt("7", 0) !== parseInt("7", 10)) {
+ $ERROR('#7: parseInt("7", 0) === parseInt("7", 10). Actual: ' + (parseInt("7", 0)));
+}
+
+//CHECK#8
+if (parseInt("8", 0) !== parseInt("8", 10)) {
+ $ERROR('#8: parseInt("8", 0) === parseInt("8", 10). Actual: ' + (parseInt("8", 0)));
+}
+
+//CHECK#9
+if (parseInt("9", 0) !== parseInt("9", 10)) {
+ $ERROR('#9: parseInt("9", 0) === parseInt("9", 10). Actual: ' + (parseInt("9", 0)));
+}
+
+//CHECK#10
+if (parseInt("10", 0) !== parseInt("10", 10)) {
+ $ERROR('#10: parseInt("10", 0) === parseInt("10", 10). Actual: ' + (parseInt("10", 0)));
+}
+
+//CHECK#11
+if (parseInt("11", 0) !== parseInt("11", 10)) {
+ $ERROR('#11: parseInt("11", 0) === parseInt("11", 10). Actual: ' + (parseInt("11", 0)));
+}
+
+//CHECK#12
+if (parseInt("9999", 0) !== parseInt("9999", 10)) {
+ $ERROR('#12: parseInt("9999", 0) === parseInt("9999", 10). Actual: ' + (parseInt("9999", 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.1_T2.js
new file mode 100644
index 000000000..230989c7d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.1_T2.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A4.1_T2;
+ * @section: 15.1.2.2;
+ * @assertion: If R = 0 or R = undefined, then R = 10;
+ * @description: R = undefined;
+*/
+
+//CHECK#0
+if (parseInt("0") !== parseInt("0", 10)) {
+ $ERROR('#0: parseInt("0") === parseInt("0", 10). Actual: ' + (parseInt("0")));
+}
+
+//CHECK#1
+if (parseInt("1") !== parseInt("1", 10)) {
+ $ERROR('#1: parseInt("1") === parseInt("01", 10). Actual: ' + (parseInt("1")));
+}
+
+//CHECK#2
+if (parseInt("2") !== parseInt("2", 10)) {
+ $ERROR('#2: parseInt("2") === parseInt("2", 10). Actual: ' + (parseInt("2")));
+}
+
+//CHECK#3
+if (parseInt("3") !== parseInt("3", 10)) {
+ $ERROR('#3: parseInt("3") === parseInt("3", 10). Actual: ' + (parseInt("3")));
+}
+
+//CHECK#4
+if (parseInt("4") !== parseInt("4", 10)) {
+ $ERROR('#4: parseInt("4") === parseInt(4", 10). Actual: ' + (parseInt("4")));
+}
+
+//CHECK#5
+if (parseInt("5") !== parseInt("5", 10)) {
+ $ERROR('#5: parseInt("5") === parseInt("5", 10). Actual: ' + (parseInt("5")));
+}
+
+//CHECK#6
+if (parseInt("6") !== parseInt("6", 10)) {
+ $ERROR('#6: parseInt("6") === parseInt("6", 10). Actual: ' + (parseInt("6")));
+}
+
+//CHECK#7
+if (parseInt("7") !== parseInt("7", 10)) {
+ $ERROR('#7: parseInt("7") === parseInt("7", 10). Actual: ' + (parseInt("7")));
+}
+
+//CHECK#8
+if (parseInt("8") !== parseInt("8", 10)) {
+ $ERROR('#8: parseInt("8") === parseInt("8", 10). Actual: ' + (parseInt("8")));
+}
+
+//CHECK#9
+if (parseInt("9") !== parseInt("9", 10)) {
+ $ERROR('#9: parseInt("9") === parseInt("9", 10). Actual: ' + (parseInt("9")));
+}
+
+//CHECK#10
+if (parseInt("10") !== parseInt("10", 10)) {
+ $ERROR('#10: parseInt("10") === parseInt("10", 10). Actual: ' + (parseInt("10")));
+}
+
+//CHECK#11
+if (parseInt("11") !== parseInt("11", 10)) {
+ $ERROR('#11: parseInt("11") === parseInt("11", 10). Actual: ' + (parseInt("11")));
+}
+
+//CHECK#12
+if (parseInt("9999") !== parseInt("9999", 10)) {
+ $ERROR('#12: parseInt("9999") === parseInt("9999", 10). Actual: ' + (parseInt("9999")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T1.js
new file mode 100644
index 000000000..9e0c8fb23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T1.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A4.2_T1;
+ * @section: 15.1.2.2;
+ * @assertion: If R < 2 or R > 36, then return NaN;
+ * @description: R = 1;
+*/
+
+//CHECK#0
+if (isNaN(parseInt("0", 1)) !== true) {
+ $ERROR('#0: parseInt("0", 1) === Not-a-Number. Actual: ' + (parseInt("0", 1)));
+}
+
+//CHECK#1
+if (isNaN(parseInt("1", 1)) !== true) {
+ $ERROR('#1: parseInt("1", 1) === Not-a-Number. Actual: ' + (parseInt("1", 1)));
+}
+
+//CHECK#2
+if (isNaN(parseInt("2", 1)) !== true) {
+ $ERROR('#2: parseInt("2", 1) === Not-a-Number. Actual: ' + (parseInt("2", 1)));
+}
+
+//CHECK#3
+if (isNaN(parseInt("3", 1)) !== true) {
+ $ERROR('#3: parseInt("3", 1) === Not-a-Number. Actual: ' + (parseInt("3", 1)));
+}
+
+//CHECK#4
+if (isNaN(parseInt("4", 1)) !== true) {
+ $ERROR('#4: parseInt("4", 1) === Not-a-Number. Actual: ' + (parseInt("4", 1)));
+}
+
+//CHECK#5
+if (isNaN(parseInt("5", 1)) !== true) {
+ $ERROR('#5: parseInt("5", 1) === Not-a-Number. Actual: ' + (parseInt("5", 1)));
+}
+
+//CHECK#6
+if (isNaN(parseInt("6", 1)) !== true) {
+ $ERROR('#6: parseInt("6", 1) === Not-a-Number. Actual: ' + (parseInt("6", 1)));
+}
+
+//CHECK#7
+if (isNaN(parseInt("7", 1)) !== true) {
+ $ERROR('#7: parseInt("7", 1) === Not-a-Number. Actual: ' + (parseInt("7", 1)));
+}
+
+//CHECK#8
+if (isNaN(parseInt("8", 1)) !== true) {
+ $ERROR('#8: parseInt("8", 1) === Not-a-Number. Actual: ' + (parseInt("8", 1)));
+}
+
+//CHECK#9
+if (isNaN(parseInt("9", 1)) !== true) {
+ $ERROR('#9: parseInt("9", 1) === Not-a-Number. Actual: ' + (parseInt("9", 1)));
+}
+
+//CHECK#10
+if (isNaN(parseInt("10", 1)) !== true) {
+ $ERROR('#10: parseInt("10", 1) === Not-a-Number. Actual: ' + (parseInt("10", 1)));
+}
+
+//CHECK#11
+if (isNaN(parseInt("11", 1)) !== true) {
+ $ERROR('#11: parseInt("11", 1) === Not-a-Number. Actual: ' + (parseInt("11", 1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T2.js
new file mode 100644
index 000000000..571c58cfa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T2.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A4.2_T2;
+ * @section: 15.1.2.2;
+ * @assertion: If R < 2 or R > 36, then return NaN;
+ * @description: R = 37;
+*/
+
+//CHECK#0
+if (isNaN(parseInt("0", 37)) !== true) {
+ $ERROR('#0: parseInt("0", 37) === Not-a-Number. Actual: ' + (parseInt("0", 37)));
+}
+
+//CHECK#1
+if (isNaN(parseInt("1", 37)) !== true) {
+ $ERROR('#1: parseInt("1", 37) === Not-a-Number. Actual: ' + (parseInt("1", 37)));
+}
+
+//CHECK#2
+if (isNaN(parseInt("2", 37)) !== true) {
+ $ERROR('#2: parseInt("2", 37) === Not-a-Number. Actual: ' + (parseInt("2", 37)));
+}
+
+//CHECK#3
+if (isNaN(parseInt("3", 37)) !== true) {
+ $ERROR('#3: parseInt("3", 37) === Not-a-Number. Actual: ' + (parseInt("3", 37)));
+}
+
+//CHECK#4
+if (isNaN(parseInt("4", 37)) !== true) {
+ $ERROR('#4: parseInt("4", 37) === Not-a-Number. Actual: ' + (parseInt("4", 37)));
+}
+
+//CHECK#5
+if (isNaN(parseInt("5", 37)) !== true) {
+ $ERROR('#5: parseInt("5", 37) === Not-a-Number. Actual: ' + (parseInt("5", 37)));
+}
+
+//CHECK#6
+if (isNaN(parseInt("6", 37)) !== true) {
+ $ERROR('#6: parseInt("6", 37) === Not-a-Number. Actual: ' + (parseInt("6", 37)));
+}
+
+//CHECK#7
+if (isNaN(parseInt("7", 37)) !== true) {
+ $ERROR('#7: parseInt("7", 37) === Not-a-Number. Actual: ' + (parseInt("7", 37)));
+}
+
+//CHECK#8
+if (isNaN(parseInt("8", 37)) !== true) {
+ $ERROR('#8: parseInt("8", 37) === Not-a-Number. Actual: ' + (parseInt("8", 37)));
+}
+
+//CHECK#9
+if (isNaN(parseInt("9", 37)) !== true) {
+ $ERROR('#9: parseInt("9", 37) === Not-a-Number. Actual: ' + (parseInt("9", 37)));
+}
+
+//CHECK#10
+if (isNaN(parseInt("10", 37)) !== true) {
+ $ERROR('#10: parseInt("10", 37) === Not-a-Number. Actual: ' + (parseInt("10", 37)));
+}
+
+//CHECK#11
+if (isNaN(parseInt("11", 37)) !== true) {
+ $ERROR('#11: parseInt("11", 37) === Not-a-Number. Actual: ' + (parseInt("11", 37)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T3.js
new file mode 100644
index 000000000..414f29322
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A4.2_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A4.2_T3;
+ * @section: 15.1.2.2;
+ * @assertion: If R < 2 or R > 36, then return NaN;
+ * @description: Complex test;
+*/
+
+//CHECK#
+var pow = 2;
+for (var i = 1; i < 32; i++) {
+ if (pow > 36) {
+ var res = true;
+ if (isNaN(parseInt(1, pow)) !== true) {
+ $ERROR('#1.' + i + ': If R < 2 or R > 36, then return NaN');
+ }
+ if (isNaN(parseInt(1, -pow)) !== true) {
+ $ERROR('#2.' + i + ': If R < 2 or R > 36, then return NaN');
+ }
+ }
+ pow = pow * 2;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.1_T1.js
new file mode 100644
index 000000000..f0038dc61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.1_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A5.1_T1;
+ * @section: 15.1.2.2;
+ * @assertion: If the length of S is at least 1 and the first character of S is 0,
+ * then at the implementation's discretion either let R = 8 or R = 10;
+ * @description: Either R = 8, or R = 10;
+*/
+
+//CHECK#
+var res8 = 1;
+var res10 = 1;
+if (parseInt("08") !== parseInt("08", 8)) {
+ res8 = 0;
+}
+if (parseInt("08") !== parseInt("08", 10)) {
+ res10 = 0;
+}
+if (parseInt("09") !== parseInt("09", 8)) {
+ res8 = 0;
+}
+if (parseInt("09") !== parseInt("09", 10)) {
+ res10 = 0;
+}
+if (parseInt("010") !== parseInt("010", 8)) {
+ res8 = 0;
+}
+if (parseInt("010") !== parseInt("010", 10)) {
+ res10 = 0;
+}
+if (res8 + res10 !== 1) {
+ $ERROR('#1: If the length of S is at least 1 and the first character of S is 0, then at the implementation\'s discretion either let R = 8 or R = 10');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.2_T1.js
new file mode 100644
index 000000000..d26b2ae82
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.2_T1.js
@@ -0,0 +1,100 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A5.2_T1;
+ * @section: 15.1.2.2;
+ * @assertion: If the length of S is at least 2 and the first two characters of S
+ * are either 0x or 0X, then remove the first two characters from S and let R = 16;
+ * @description: : 0x;
+*/
+
+//CHECK#0
+if (parseInt("0x0", 0) !== parseInt("0", 16)) {
+ $ERROR('#0: parseInt("0x0", 0) === parseInt("0", 16). Actual: ' + (parseInt("0x0", 0)));
+}
+
+//CHECK#1
+if (parseInt("0x1", 0) !== parseInt("1", 16)) {
+ $ERROR('#1: parseInt("0x1", 0) === parseInt("1", 16). Actual: ' + (parseInt("0x1", 0)));
+}
+
+//CHECK#2
+if (parseInt("0x2", 0) !== parseInt("2", 16)) {
+ $ERROR('#2: parseInt("0x2", 0) === parseInt("2", 16). Actual: ' + (parseInt("0x2", 0)));
+}
+
+//CHECK#3
+if (parseInt("0x3", 0) !== parseInt("3", 16)) {
+ $ERROR('#3: parseInt("0x3", 0) === parseInt("3", 16). Actual: ' + (parseInt("0x3", 0)));
+}
+
+//CHECK#4
+if (parseInt("0x4", 0) !== parseInt("4", 16)) {
+ $ERROR('#4: parseInt("0x4", 0) === parseInt("4", 16). Actual: ' + (parseInt("0x4", 0)));
+}
+
+//CHECK#5
+if (parseInt("0x5", 0) !== parseInt("5", 16)) {
+ $ERROR('#5: parseInt("0x5", 0) === parseInt("5", 16). Actual: ' + (parseInt("0x5", 0)));
+}
+
+//CHECK#6
+if (parseInt("0x6", 0) !== parseInt("6", 16)) {
+ $ERROR('#6: parseInt("0x6", 0) === parseInt("6", 16). Actual: ' + (parseInt("0x6", 0)));
+}
+
+//CHECK#7
+if (parseInt("0x7", 0) !== parseInt("7", 16)) {
+ $ERROR('#7: parseInt("0x7", 0) === parseInt("7", 16). Actual: ' + (parseInt("0x7", 0)));
+}
+
+//CHECK#8
+if (parseInt("0x8", 0) !== parseInt("8", 16)) {
+ $ERROR('#8: parseInt("0x8", 0) === parseInt("8", 16). Actual: ' + (parseInt("0x8", 0)));
+}
+
+//CHECK#9
+if (parseInt("0x9", 0) !== parseInt("9", 16)) {
+ $ERROR('#9: parseInt("0x9", 0) === parseInt("9", 16). Actual: ' + (parseInt("0x9", 0)));
+}
+
+//CHECK#A
+if (parseInt("0xA", 0) !== parseInt("A", 16)) {
+ $ERROR('#A: parseInt("0xA", 0) === parseInt("A", 16). Actual: ' + (parseInt("0xA", 0)));
+}
+
+//CHECK#B
+if (parseInt("0xB", 0) !== parseInt("B", 16)) {
+ $ERROR('#B: parseInt("0xB", 0) === parseInt("B", 16). Actual: ' + (parseInt("0xB", 0)));
+}
+
+//CHECK#C
+if (parseInt("0xC", 0) !== parseInt("C", 16)) {
+ $ERROR('#C: parseInt("0xC", 0) === parseInt("C", 16). Actual: ' + (parseInt("0xC", 0)));
+}
+
+//CHECK#D
+if (parseInt("0xD", 0) !== parseInt("D", 16)) {
+ $ERROR('#D: parseInt("0xD", 0) === parseInt("D", 16). Actual: ' + (parseInt("0xD", 0)));
+}
+
+//CHECK#E
+if (parseInt("0xE", 0) !== parseInt("E", 16)) {
+ $ERROR('#E: parseInt("0xE", 0) === parseInt("E", 16). Actual: ' + (parseInt("0xE", 0)));
+}
+
+//CHECK#F
+if (parseInt("0xF", 0) !== parseInt("F", 16)) {
+ $ERROR('#F: parseInt("0xF", 0) === parseInt("F", 16). Actual: ' + (parseInt("0xF", 0)));
+}
+
+//CHECK#E
+if (parseInt("0xE", 0) !== parseInt("E", 16)) {
+ $ERROR('#E: parseInt("0xE", 0) === parseInt("E", 16). Actual: ' + (parseInt("0xE", 0)));
+}
+
+//CHECK#ABCDEF
+if (parseInt("0xABCDEF", 0) !== parseInt("ABCDEF", 16)) {
+ $ERROR('#ABCDEF: parseInt("0xABCDEF", 0) === parseInt("ABCDEF", 16). Actual: ' + (parseInt("0xABCDEF", 0)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.2_T2.js
new file mode 100644
index 000000000..bcf86389d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A5.2_T2.js
@@ -0,0 +1,100 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A5.2_T2;
+ * @section: 15.1.2.2;
+ * @assertion: If the length of S is at least 2 and the first two characters of S
+ * are either 0x or 0X, then remove the first two characters from S and let R = 16;
+ * @description: : 0X;
+*/
+
+//CHECK#0
+if (parseInt("0X0", 0) !== parseInt("0", 16)) {
+ $ERROR('#0: parseInt("0X0", 0) === parseInt("0", 16). Actual: ' + (parseInt("0X0", 0)));
+}
+
+//CHECK#1
+if (parseInt("0X1") !== parseInt("1", 16)) {
+ $ERROR('#1: parseInt("0X1") === parseInt("1", 16). Actual: ' + (parseInt("0X1")));
+}
+
+//CHECK#2
+if (parseInt("0X2") !== parseInt("2", 16)) {
+ $ERROR('#2: parseInt("0X2") === parseInt("2", 16). Actual: ' + (parseInt("0X2")));
+}
+
+//CHECK#3
+if (parseInt("0X3") !== parseInt("3", 16)) {
+ $ERROR('#3: parseInt("0X3") === parseInt("3", 16). Actual: ' + (parseInt("0X3")));
+}
+
+//CHECK#4
+if (parseInt("0X4") !== parseInt("4", 16)) {
+ $ERROR('#4: parseInt("0X4") === parseInt("4", 16). Actual: ' + (parseInt("0X4")));
+}
+
+//CHECK#5
+if (parseInt("0X5") !== parseInt("5", 16)) {
+ $ERROR('#5: parseInt("0X5") === parseInt("5", 16). Actual: ' + (parseInt("0X5")));
+}
+
+//CHECK#6
+if (parseInt("0X6") !== parseInt("6", 16)) {
+ $ERROR('#6: parseInt("0X6") === parseInt("6", 16). Actual: ' + (parseInt("0X6")));
+}
+
+//CHECK#7
+if (parseInt("0X7") !== parseInt("7", 16)) {
+ $ERROR('#7: parseInt("0X7") === parseInt("7", 16). Actual: ' + (parseInt("0X7")));
+}
+
+//CHECK#8
+if (parseInt("0X8") !== parseInt("8", 16)) {
+ $ERROR('#8: parseInt("0X8") === parseInt("8", 16). Actual: ' + (parseInt("0X8")));
+}
+
+//CHECK#9
+if (parseInt("0X9") !== parseInt("9", 16)) {
+ $ERROR('#9: parseInt("0X9") === parseInt("9", 16). Actual: ' + (parseInt("0X9")));
+}
+
+//CHECK#A
+if (parseInt("0XA") !== parseInt("A", 16)) {
+ $ERROR('#A: parseInt("0XA") === parseInt("A", 16). Actual: ' + (parseInt("0XA")));
+}
+
+//CHECK#B
+if (parseInt("0XB") !== parseInt("B", 16)) {
+ $ERROR('#B: parseInt("0XB") === parseInt("B", 16). Actual: ' + (parseInt("0XB")));
+}
+
+//CHECK#C
+if (parseInt("0XC") !== parseInt("C", 16)) {
+ $ERROR('#C: parseInt("0XC") === parseInt("C", 16). Actual: ' + (parseInt("0XC")));
+}
+
+//CHECK#D
+if (parseInt("0XD") !== parseInt("D", 16)) {
+ $ERROR('#D: parseInt("0XD") === parseInt("D", 16). Actual: ' + (parseInt("0XD")));
+}
+
+//CHECK#E
+if (parseInt("0XE") !== parseInt("E", 16)) {
+ $ERROR('#E: parseInt("0XE") === parseInt("E", 16). Actual: ' + (parseInt("0XE")));
+}
+
+//CHECK#F
+if (parseInt("0XF") !== parseInt("F", 16)) {
+ $ERROR('#F: parseInt("0XF") === parseInt("F", 16). Actual: ' + (parseInt("0XF")));
+}
+
+//CHECK#E
+if (parseInt("0XE") !== parseInt("E", 16)) {
+ $ERROR('#E: parseInt("0XE") === parseInt("E", 16). Actual: ' + (parseInt("0XE")));
+}
+
+//CHECK#ABCDEF
+if (parseInt("0XABCDEF") !== parseInt("ABCDEF", 16)) {
+ $ERROR('#ABCDEF: parseInt("0XABCDEF") === parseInt("ABCDEF", 16). Actual: ' + (parseInt("0XABCDEF")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T1.js
new file mode 100644
index 000000000..32a873c7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A6.1_T1;
+ * @section: 15.1.2.2;
+ * @assertion: If S contains any character that is not a radix-R digit,
+ * then let Z be the substring of S consisting of all characters before
+ * the first such character; otherwise, let Z be S;
+ * @description: Complex test. R in [2, 36];
+*/
+
+//CHECK#
+for (var i = 2; i <= 36; i++) {
+ if (parseInt("10$1", i) !== i) {
+ $ERROR('#' + i +': i = ' + i + 'parseInt("10$1", i) === i. Actual: ' + (parseInt("10$1", i)));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T2.js
new file mode 100644
index 000000000..51469579c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A6.1_T2;
+ * @section: 15.1.2.2;
+ * @assertion: If S contains any character that is not a radix-R digit,
+ * then let Z be the substring of S consisting of all characters before
+ * the first such character; otherwise, let Z be S;
+ * @description: Complex test. Radix-R notation in [0..9, A-Z];
+*/
+
+//CHECK#
+var R_digit = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+for (var i = 2; i <= 36; i++) {
+ if (parseInt(R_digit[i - 2] + "$", i) !== i - 1) {
+ $ERROR('#' + i + ': ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T3.js
new file mode 100644
index 000000000..9eca01526
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A6.1_T3;
+ * @section: 15.1.2.2;
+ * @assertion: If S contains any character that is not a radix-R digit,
+ * then let Z be the substring of S consisting of all characters before
+ * the first such character; otherwise, let Z be S;
+ * @description: Complex test. Radix-R notation in [0..9, a-z];
+*/
+
+//CHECK#
+var R_digit = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (var i = 2; i <= 36; i++) {
+ if (parseInt(R_digit[i - 2] + "$", i) !== i - 1) {
+ $ERROR('#' + i + ': ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T4.js
new file mode 100644
index 000000000..899ed126d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A6.1_T4;
+ * @section: 15.1.2.2;
+ * @assertion: If S contains any character that is not a radix-R digit,
+ * then let Z be the substring of S consisting of all characters before
+ * the first such character; otherwise, let Z be S;
+ * @description: Complex test. Radix-R notation in [0..9, A-Z];
+*/
+
+//CHECK#
+var R_digit = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+for (var i = 2; i <= 35; i++) {
+ if (parseInt(R_digit[i - 2] + R_digit[i - 1], i) !== i - 1) {
+ $ERROR('#' + i + ': ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T5.js
new file mode 100644
index 000000000..1b3f9dd39
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A6.1_T5;
+ * @section: 15.1.2.2;
+ * @assertion: If S contains any character that is not a radix-R digit,
+ * then let Z be the substring of S consisting of all characters before
+ * the first such character; otherwise, let Z be S;
+ * @description: Complex test. Radix-R notation in [0..9, a-z];
+*/
+
+//CHECK#
+var R_digit = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (var i = 2; i <= 35; i++) {
+ if (parseInt(R_digit[i - 2] + R_digit[i - 1], i) !== i - 1) {
+ $ERROR('#' + i + ': ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T6.js
new file mode 100644
index 000000000..1c7a9da44
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A6.1_T6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A6.1_T6;
+ * @section: 15.1.2.2;
+ * @assertion: If S contains any character that is not a radix-R digit,
+ * then let Z be the substring of S consisting of all characters before
+ * the first such character; otherwise, let Z be S;
+ * @description: Complex test. Radix-R notation in [0..9];
+*/
+
+//CHECK#2
+if (parseInt("0123456789", 2) !== 1) {
+ $ERROR('#2: parseInt("0123456789", 2) === 1. Actual: ' + (parseInt("0123456789", 2)));
+}
+
+//CHECK#3
+if (parseInt("01234567890", 3) !== 5) {
+ $ERROR('#3: parseInt("01234567890", 3) === 5. Actual: ' + (parseInt("01234567890", 3)));
+}
+
+//CHECK#4
+if (parseInt("01234567890", 4) !== 27) {
+ $ERROR('#4: parseInt("01234567890", 4) === 27. Actual: ' + (parseInt("01234567890", 4)));
+}
+
+//CHECK#5
+if (parseInt("01234567890", 5) !== 194) {
+ $ERROR('#5: parseInt("01234567890", 5) === 194. Actual: ' + (parseInt("01234567890", 5)));
+}
+
+//CHECK#6
+if (parseInt("01234567890", 6) !== 1865) {
+ $ERROR('#6: parseInt("01234567890", 6) === 1865. Actual: ' + (parseInt("01234567890", 6)));
+}
+
+//CHECK#7
+if (parseInt("01234567890", 7) !== 22875) {
+ $ERROR('#7: parseInt("01234567890", 7) === 22875. Actual: ' + (parseInt("01234567890", 7)));
+}
+
+//CHECK#8
+if (parseInt("01234567890", 8) !== 342391) {
+ $ERROR('#8: parseInt("01234567890", 8) === 342391. Actual: ' + (parseInt("01234567890", 8)));
+}
+
+//CHECK#9
+if (parseInt("01234567890", 9) !== 6053444) {
+ $ERROR('#9: parseInt("01234567890", 9) === 6053444. Actual: ' + (parseInt("01234567890", 9)));
+}
+
+//CHECK#10
+if (parseInt("01234567890", 10) !== Number(1234567890)) {
+ $ERROR('#10: parseInt("01234567890", 10) === Number(1234567890). Actual: ' + (parseInt("01234567890", 10)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.1_T1.js
new file mode 100644
index 000000000..82de152e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A7.1_T1;
+ * @section: 15.1.2.2;
+ * @assertion: If Z is empty, return NaN;
+ * @description: Complex test. R in [2, 36];
+*/
+
+//CHECK#
+for (var i = 2; i <= 36; i++) {
+ if (isNaN(parseInt("$string", i)) !== true) {
+ $ERROR('#' + i + ': parseInt("$string", i) === Not-a-Number. Actual: ' + (parseInt("$string", i)));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.1_T2.js
new file mode 100644
index 000000000..7d4a82162
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.1_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A7.1_T2;
+ * @section: 15.1.2.2;
+ * @assertion: If Z is empty, return NaN;
+ * @description: x is not a radix-R digit;
+*/
+
+//CHECK#1
+if (isNaN(parseInt("$0x")) !== true) {
+ $ERROR('#1: parseInt("$0x") === Not-a-Number. Actual: ' + (parseInt("$0x")));
+}
+
+//CHECK#2
+if (isNaN(parseInt("$0X")) !== true) {
+ $ERROR('#2: parseInt("$0X") === Not-a-Number. Actual: ' + (parseInt("$0X")));
+}
+
+//CHECK#3
+if (isNaN(parseInt("$$$")) !== true) {
+ $ERROR('#3: parseInt("$$$") === Not-a-Number. Actual: ' + (parseInt("$$$")));
+}
+
+//CHECK#4
+if (isNaN(parseInt("")) !== true) {
+ $ERROR('#4: parseInt("") === Not-a-Number. Actual: ' + (parseInt("")));
+}
+
+//CHECK#5
+if (isNaN(parseInt(" ")) !== true) {
+ $ERROR('#5: parseInt(" ") === Not-a-Number. Actual: ' + (parseInt(" ")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T1.js
new file mode 100644
index 000000000..a7e2feac7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_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.
+
+/**
+ * @name: S15.1.2.2_A7.2_T1;
+ * @section: 15.1.2.2;
+ * @assertion: Compute the mathematical integer value
+ * that is represented by Z in radix-R notation, using the
+ * letters A-Z and a-z for digits with values 10 through 35.
+ * Compute the number value for Result(16);
+ * @description: Complex test. Check algorithm;
+*/
+
+//CHECK#
+var R_digit1 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+var R_digit2 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (var i = 2; i <= 36; i++) {
+ for (var j = 0; j < 10; j++) {
+ var str = "";
+ var num = 0;
+ var pow = 1;
+ var k0 = Math.max(2, i - j);
+ for (var k = k0; k <= i; k++) {
+ if (k % 2 === 0) {
+ str = str + R_digit1[k - 2];
+ } else {
+ str = str + R_digit2[k - 2];
+ }
+ num = num + (i + (k0 - k) - 1) * pow;
+ pow = pow * i;
+ }
+ if (parseInt(str, i) !== num) {
+ $ERROR('#' + i + '.' + j + ' : ');
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T2.js
new file mode 100644
index 000000000..86af2de0f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T2.js
@@ -0,0 +1,112 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A7.2_T2;
+ * @section: 15.1.2.2;
+ * @assertion: Compute the mathematical integer value
+ * that is represented by Z in radix-R notation, using the
+ * letters A-Z and a-z for digits with values 10 through 35.
+ * Compute the number value for Result(16);
+ * @description: Checking algorithm for R = 2;
+*/
+
+//CHECK#1
+if (parseInt("1", 2) !== 1) {
+ $ERROR('#1: parseInt("1", 2) === 1. Actual: ' + (parseInt("1", 2)));
+}
+
+//CHECK#2
+if (parseInt("11", 2) !== 3) {
+ $ERROR('#2: parseInt("11", 2) === 3. Actual: ' + (parseInt("11", 2)));
+}
+
+//CHECK#3
+if (parseInt("111", 2) !== 7) {
+ $ERROR('#3: parseInt("111", 2) === 7. Actual: ' + (parseInt("111", 2)));
+}
+
+//CHECK#4
+if (parseInt("1111", 2) !== 15) {
+ $ERROR('#4: parseInt("1111", 2) === 15. Actual: ' + (parseInt("1111", 2)));
+}
+
+//CHECK#5
+if (parseInt("11111", 2) !== 31) {
+ $ERROR('#5: parseInt("11111", 2) === 31. Actual: ' + (parseInt("11111", 2)));
+}
+
+//CHECK#6
+if (parseInt("111111", 2) !== 63) {
+ $ERROR('#6: parseInt("111111", 2) === 63. Actual: ' + (parseInt("111111", 2)));
+}
+
+//CHECK#7
+if (parseInt("1111111", 2) !== 127) {
+ $ERROR('#7: parseInt("1111111", 2) === 127. Actual: ' + (parseInt("1111111", 2)));
+}
+
+//CHECK#8
+if (parseInt("11111111", 2) !== 255) {
+ $ERROR('#8: parseInt("11111111", 2) === 255. Actual: ' + (parseInt("11111111", 2)));
+}
+
+//CHECK#9
+if (parseInt("111111111", 2) !== 511) {
+ $ERROR('#9: parseInt("111111111", 2) === 511. Actual: ' + (parseInt("111111111", 2)));
+}
+
+//CHECK#10
+if (parseInt("1111111111", 2) !== 1023) {
+ $ERROR('#10: parseInt("1111111111", 2) === 1023. Actual: ' + (parseInt("1111111111", 2)));
+}
+
+//CHECK#11
+if (parseInt("11111111111", 2) !== 2047) {
+ $ERROR('#11: parseInt("11111111111", 2) === 2047. Actual: ' + (parseInt("11111111111", 2)));
+}
+
+//CHECK#12
+if (parseInt("111111111111", 2) !== 4095) {
+ $ERROR('#12: parseInt("111111111111", 2) === 4095. Actual: ' + (parseInt("111111111111", 2)));
+}
+
+//CHECK#13
+if (parseInt("1111111111111", 2) !== 8191) {
+ $ERROR('#13: parseInt("1111111111111", 2) === 8191. Actual: ' + (parseInt("1111111111111", 2)));
+}
+
+//CHECK#14
+if (parseInt("11111111111111", 2) !== 16383) {
+ $ERROR('#14: parseInt("11111111111111", 2) === 16383. Actual: ' + (parseInt("11111111111111", 2)));
+}
+
+//CHECK#15
+if (parseInt("111111111111111", 2) !== 32767) {
+ $ERROR('#15: parseInt("111111111111111", 2) === 32767. Actual: ' + (parseInt("111111111111111", 2)));
+}
+
+//CHECK#16
+if (parseInt("1111111111111111", 2) !== 65535) {
+ $ERROR('#16: parseInt("1111111111111111", 2) === 65535. Actual: ' + (parseInt("1111111111111111", 2)));
+}
+
+//CHECK#17
+if (parseInt("11111111111111111", 2) !== 131071) {
+ $ERROR('#17: parseInt("11111111111111111", 2) === 131071. Actual: ' + (parseInt("11111111111111111", 2)));
+}
+
+//CHECK#18
+if (parseInt("111111111111111111", 2) !== 262143) {
+ $ERROR('#18: parseInt("111111111111111111", 2) === 262143. Actual: ' + (parseInt("111111111111111111", 2)));
+}
+
+//CHECK#19
+if (parseInt("1111111111111111111", 2) !== 524287) {
+ $ERROR('#19: parseInt("1111111111111111111", 2) === 524287. Actual: ' + (parseInt("1111111111111111111", 2)));
+}
+
+//CHECK#20
+if (parseInt("11111111111111111111", 2) !== 1048575) {
+ $ERROR('#20: parseInt("11111111111111111111", 2) === 1048575. Actual: ' + (parseInt("11111111111111111111", 2)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T3.js
new file mode 100644
index 000000000..90b855ef0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.2_T3.js
@@ -0,0 +1,112 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A7.2_T3;
+ * @section: 15.1.2.2;
+ * @assertion: Compute the mathematical integer value
+ * that is represented by Z in radix-R notation, using the
+ * letters A-Z and a-z for digits with values 10 through 35.
+ * Compute the number value for Result(16);
+ * @description: Checking algorithm for R = 16;
+*/
+
+//CHECK#1
+if (parseInt("0x1", 16) !== 1) {
+ $ERROR('#1: parseInt("0x1", 16) === 1. Actual: ' + (parseInt("0x1", 16)));
+}
+
+//CHECK#2
+if (parseInt("0X10", 16) !== 16) {
+ $ERROR('#2: parseInt("0X10", 16) === 16. Actual: ' + (parseInt("0X10", 16)));
+}
+
+//CHECK#3
+if (parseInt("0x100", 16) !== 256) {
+ $ERROR('#3: parseInt("0x100", 16) === 256. Actual: ' + (parseInt("0x100", 16)));
+}
+
+//CHECK#4
+if (parseInt("0X1000", 16) !== 4096) {
+ $ERROR('#4: parseInt("0X1000", 16) === 4096. Actual: ' + (parseInt("0X1000", 16)));
+}
+
+//CHECK#5
+if (parseInt("0x10000", 16) !== 65536) {
+ $ERROR('#5: parseInt("0x10000", 16) === 65536. Actual: ' + (parseInt("0x10000", 16)));
+}
+
+//CHECK#6
+if (parseInt("0X100000", 16) !== 1048576) {
+ $ERROR('#6: parseInt("x100000", 16) === 1048576. Actual: ' + (parseInt("x100000", 16)));
+}
+
+//CHECK#7
+if (parseInt("0x1000000", 16) !== 16777216) {
+ $ERROR('#7: parseInt("0x1000000", 16) === 16777216. Actual: ' + (parseInt("0x1000000", 16)));
+}
+
+//CHECK#8
+if (parseInt("0x10000000", 16) !== 268435456) {
+ $ERROR('#8: parseInt("0x10000000", 16) === 268435456. Actual: ' + (parseInt("0x10000000", 16)));
+}
+
+//CHECK#9
+if (parseInt("0x100000000", 16) !== 4294967296) {
+ $ERROR('#9: parseInt("0x100000000", 16) === 4294967296. Actual: ' + (parseInt("0x100000000", 16)));
+}
+
+//CHECK#10
+if (parseInt("0x1000000000", 16) !== 68719476736) {
+ $ERROR('#10: parseInt("0x1000000000", 16) === 68719476736. Actual: ' + (parseInt("0x1000000000", 16)));
+}
+
+//CHECK#10
+if (parseInt("0x10000000000", 16) !== 1099511627776) {
+ $ERROR('#10: parseInt("0x10000000000", 16) === 1099511627776. Actual: ' + (parseInt("0x10000000000", 16)));
+}
+
+//CHECK#12
+if (parseInt("0x100000000000", 16) !== 17592186044416) {
+ $ERROR('#12: parseInt("0x100000000000", 16) === 17592186044416. Actual: ' + (parseInt("0x100000000000", 16)));
+}
+
+//CHECK#13
+if (parseInt("0x1000000000000", 16) !== 281474976710656) {
+ $ERROR('#13: parseInt("0x1000000000000", 16) === 281474976710656. Actual: ' + (parseInt("0x1000000000000", 16)));
+}
+
+//CHECK#14
+if (parseInt("0x10000000000000", 16) !== 4503599627370496) {
+ $ERROR('#14: parseInt("0x10000000000000", 16) === 4503599627370496. Actual: ' + (parseInt("0x10000000000000", 16)));
+}
+
+//CHECK#15
+if (parseInt("0x100000000000000", 16) !== 72057594037927936) {
+ $ERROR('#15: parseInt("0x100000000000000", 16) === 72057594037927936. Actual: ' + (parseInt("0x100000000000000", 16)));
+}
+
+//CHECK#16
+if (parseInt("0x1000000000000000", 16) !== 1152921504606846976) {
+ $ERROR('#16: parseInt("0x1000000000000000", 16) === 1152921504606846976. Actual: ' + (parseInt("0x1000000000000000", 16)));
+}
+
+//CHECK#17
+if (parseInt("0x10000000000000000", 16) !== 18446744073709551616) {
+ $ERROR('#17: parseInt("0x10000000000000000", 16) === 18446744073709551616. Actual: ' + (parseInt("0x10000000000000000", 16)));
+}
+
+//CHECK#18
+if (parseInt("0x100000000000000000", 16) !== 295147905179352825856) {
+ $ERROR('#18: parseInt("0x100000000000000000", 16) === 295147905179352825856. Actual: ' + (parseInt("0x100000000000000000", 16)));
+}
+
+//CHECK#19
+if (parseInt("0x1000000000000000000", 16) !== 4722366482869645213696) {
+ $ERROR('#19: parseInt("0x1000000000000000000", 16) === 4722366482869645213696. Actual: ' + (parseInt("0x1000000000000000000", 16)));
+}
+
+//CHECK#20
+if (parseInt("0x10000000000000000000", 16) !== 75557863725914323419136) {
+ $ERROR('#20: parseInt("0x10000000000000000000", 16) === 75557863725914323419136. Actual: ' + (parseInt("0x10000000000000000000", 16)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T1.js
new file mode 100644
index 000000000..9fa19756e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A7.3_T1;
+ * @section: 15.1.2.2;
+ * @assertion: Return sign * Result(17);
+ * @description: Complex test. Check algorithm;
+*/
+
+//CHECK#
+var R_digit1 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+var R_digit2 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (var i = 2; i <= 36; i++) {
+ for (var j = 0; j < 10; j++) {
+ var str = "+";
+ var sign = 1;
+ if (j % 2 !== 0) {
+ str = "-";
+ sign= -1;
+ }
+ var num = 0;
+ var pow = 1;
+ var k0 = Math.max(2, i - j);
+ for (var k = k0; k <= i; k++) {
+ if (k % 2 === 0) {
+ str = str + R_digit1[k - 2];
+ } else {
+ str = str + R_digit2[k - 2];
+ }
+ num = num + (i + (k0 - k) - 1) * pow;
+ pow = pow * i;
+ }
+ if (parseInt(str, i) !== num * sign) {
+ $ERROR('#' + i + '.' + j + ' : ');
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T2.js
new file mode 100644
index 000000000..8ca4598c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T2.js
@@ -0,0 +1,109 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A7.3_T2;
+ * @section: 15.1.2.2;
+ * @assertion: Return sign * Result(17);
+ * @description: Checking algorithm for R = 2;
+*/
+
+//CHECK#1
+if (parseInt("-1", 2) !== -1) {
+ $ERROR('#1: parseInt("-1", 2) === -1. Actual: ' + (parseInt("-1", 2)));
+}
+
+//CHECK#2
+if (parseInt("-11", 2) !== -3) {
+ $ERROR('#2: parseInt("-11", 2) === -3. Actual: ' + (parseInt("-11", 2)));
+}
+
+//CHECK#3
+if (parseInt("-111", 2) !== -7) {
+ $ERROR('#3: parseInt("-111", 2) === -7. Actual: ' + (parseInt("-111", 2)));
+}
+
+//CHECK#4
+if (parseInt("-1111", 2) !== -15) {
+ $ERROR('#4: parseInt("-1111", 2) === -15. Actual: ' + (parseInt("-1111", 2)));
+}
+
+//CHECK#5
+if (parseInt("-11111", 2) !== -31) {
+ $ERROR('#5: parseInt("-11111", 2) === -31. Actual: ' + (parseInt("-11111", 2)));
+}
+
+//CHECK#6
+if (parseInt("-111111", 2) !== -63) {
+ $ERROR('#6: parseInt("-111111", 2) === -63. Actual: ' + (parseInt("-111111", 2)));
+}
+
+//CHECK#7
+if (parseInt("-1111111", 2) !== -127) {
+ $ERROR('#7: parseInt("-1111111", 2) === -127. Actual: ' + (parseInt("-1111111", 2)));
+}
+
+//CHECK#8
+if (parseInt("-11111111", 2) !== -255) {
+ $ERROR('#8: parseInt("-11111111", 2) === -255. Actual: ' + (parseInt("-11111111", 2)));
+}
+
+//CHECK#9
+if (parseInt("-111111111", 2) !== -511) {
+ $ERROR('#9: parseInt("-111111111", 2) === -511. Actual: ' + (parseInt("-111111111", 2)));
+}
+
+//CHECK#10
+if (parseInt("-1111111111", 2) !== -1023) {
+ $ERROR('#10: parseInt("-1111111111", 2) === -1023. Actual: ' + (parseInt("-1111111111", 2)));
+}
+
+//CHECK#11
+if (parseInt("-11111111111", 2) !== -2047) {
+ $ERROR('#11: parseInt("-11111111111", 2) === -2047. Actual: ' + (parseInt("-11111111111", 2)));
+}
+
+//CHECK#12
+if (parseInt("-111111111111", 2) !== -4095) {
+ $ERROR('#12: parseInt("-111111111111", 2) === -4095. Actual: ' + (parseInt("-111111111111", 2)));
+}
+
+//CHECK#13
+if (parseInt("-1111111111111", 2) !== -8191) {
+ $ERROR('#13: parseInt("-1111111111111", 2) === -8191. Actual: ' + (parseInt("-1111111111111", 2)));
+}
+
+//CHECK#14
+if (parseInt("-11111111111111", 2) !== -16383) {
+ $ERROR('#14: parseInt("-11111111111111", 2) === -16383. Actual: ' + (parseInt("-11111111111111", 2)));
+}
+
+//CHECK#15
+if (parseInt("-111111111111111", 2) !== -32767) {
+ $ERROR('#15: parseInt("-111111111111111", 2) === -32767. Actual: ' + (parseInt("-111111111111111", 2)));
+}
+
+//CHECK#16
+if (parseInt("-1111111111111111", 2) !== -65535) {
+ $ERROR('#16: parseInt("-1111111111111111", 2) === -65535. Actual: ' + (parseInt("-1111111111111111", 2)));
+}
+
+//CHECK#17
+if (parseInt("-11111111111111111", 2) !== -131071) {
+ $ERROR('#17: parseInt("-11111111111111111", 2) === -131071. Actual: ' + (parseInt("-11111111111111111", 2)));
+}
+
+//CHECK#18
+if (parseInt("-111111111111111111", 2) !== -262143) {
+ $ERROR('#18: parseInt("-111111111111111111", 2) === -262143. Actual: ' + (parseInt("-111111111111111111", 2)));
+}
+
+//CHECK#19
+if (parseInt("-1111111111111111111", 2) !== -524287) {
+ $ERROR('#19: parseInt("-1111111111111111111", 2) === -524287. Actual: ' + (parseInt("-1111111111111111111", 2)));
+}
+
+//CHECK#20
+if (parseInt("-11111111111111111111", 2) !== -1048575) {
+ $ERROR('#20: parseInt("-11111111111111111111", 2) === -1048575. Actual: ' + (parseInt("-11111111111111111111", 2)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T3.js
new file mode 100644
index 000000000..7bad7645e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A7.3_T3.js
@@ -0,0 +1,109 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A7.3_T3;
+ * @section: 15.1.2.2;
+ * @assertion: Return sign * Result(17);
+ * @description: Checking algorithm for R = 10;
+*/
+
+//CHECK#1
+if (parseInt("-1", 10) !== -1) {
+ $ERROR('#1: parseInt("-1", 10) === -1. Actual: ' + (parseInt("-1", 10)));
+}
+
+//CHECK#2
+if (parseInt("-10", 10) !== -10) {
+ $ERROR('#2: parseInt("-10", 10) === -10. Actual: ' + (parseInt("-10", 10)));
+}
+
+//CHECK#3
+if (parseInt("-100", 10) !== -100) {
+ $ERROR('#3: parseInt("-100", 10) === -100. Actual: ' + (parseInt("-100", 10)));
+}
+
+//CHECK#4
+if (parseInt("-1000", 10) !== -1000) {
+ $ERROR('#4: parseInt("-1000", 10) === -1000. Actual: ' + (parseInt("-1000", 10)));
+}
+
+//CHECK#5
+if (parseInt("-10000", 10) !== -10000) {
+ $ERROR('#5: parseInt("-10000", 10) === -10000. Actual: ' + (parseInt("-10000", 10)));
+}
+
+//CHECK#6
+if (parseInt("-100000", 10) !== -100000) {
+ $ERROR('#6: parseInt("-100000", 10) === -100000. Actual: ' + (parseInt("-100000", 10)));
+}
+
+//CHECK#7
+if (parseInt("-1000000", 10) !== -1000000) {
+ $ERROR('#7: parseInt("-1000000", 10) === -1000000. Actual: ' + (parseInt("-1000000", 10)));
+}
+
+//CHECK#8
+if (parseInt("-10000000", 10) !== -10000000) {
+ $ERROR('#8: parseInt("-10000000", 10) === -10000000. Actual: ' + (parseInt("-10000000", 10)));
+}
+
+//CHECK#9
+if (parseInt("-100000000", 10) !== -100000000) {
+ $ERROR('#9: parseInt("-100000000", 10) === -100000000. Actual: ' + (parseInt("-100000000", 10)));
+}
+
+//CHECK#10
+if (parseInt("-1000000000", 10) !== -1000000000) {
+ $ERROR('#10: parseInt("-1000000000", 10) === -1000000000. Actual: ' + (parseInt("-1000000000", 10)));
+}
+
+//CHECK#10
+if (parseInt("-10000000000", 10) !== -10000000000) {
+ $ERROR('#10: parseInt("-10000000000", 10) === -10000000000. Actual: ' + (parseInt("-10000000000", 10)));
+}
+
+//CHECK#12
+if (parseInt("-100000000000", 10) !== -100000000000) {
+ $ERROR('#12: parseInt("-100000000000", 10) === -100000000000. Actual: ' + (parseInt("-100000000000", 10)));
+}
+
+//CHECK#13
+if (parseInt("-1000000000000", 10) !== -1000000000000) {
+ $ERROR('#13: parseInt("-1000000000000", 10) === -1000000000000. Actual: ' + (parseInt("-1000000000000", 10)));
+}
+
+//CHECK#14
+if (parseInt("-10000000000000", 10) !== -10000000000000) {
+ $ERROR('#14: parseInt("-10000000000000", 10) === -10000000000000. Actual: ' + (parseInt("-10000000000000", 10)));
+}
+
+//CHECK#15
+if (parseInt("-100000000000000", 10) !== -100000000000000) {
+ $ERROR('#15: parseInt("-100000000000000", 10) === -100000000000000. Actual: ' + (parseInt("-100000000000000", 10)));
+}
+
+//CHECK#10
+if (parseInt("-1000000000000000", 10) !== -1000000000000000) {
+ $ERROR('#10: parseInt("-1000000000000000", 10) === -1000000000000000. Actual: ' + (parseInt("-1000000000000000", 10)));
+}
+
+//CHECK#17
+if (parseInt("-10000000000000000", 10) !== -10000000000000000) {
+ $ERROR('#17: parseInt("-10000000000000000", 10) === -10000000000000000. Actual: ' + (parseInt("-10000000000000000", 10)));
+}
+
+//CHECK#18
+if (parseInt("-100000000000000000", 10) !== -100000000000000000) {
+ $ERROR('#18: parseInt("-100000000000000000", 10) === -100000000000000000. Actual: ' + (parseInt("-100000000000000000", 10)));
+}
+
+//CHECK#19
+if (parseInt("-1000000000000000000", 10) !== -1000000000000000000) {
+ $ERROR('#19: parseInt("-1000000000000000000", 10) === -1000000000000000000. Actual: ' + (parseInt("-1000000000000000000", 10)));
+}
+
+//CHECK#20
+if (parseInt("-10000000000000000000", 10) !== -10000000000000000000) {
+ $ERROR('#20: parseInt("-10000000000000000000", 10) === -10000000000000000000. Actual: ' + (parseInt("-10000000000000000000", 10)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A8.js
new file mode 100644
index 000000000..f668ccd62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A8.js
@@ -0,0 +1,82 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A8;
+ * @section: 15.1.2.2, 9.3.1;
+ * @assertion: parseInt may interpret only a leading portion of the string as
+ * a number value; it ignores any characters that cannot be interpreted as part
+ * of the notation of an decimal literal, and no indication is given that any such
+ * characters were ignored.
+ * @description: Complex test without eval;
+*/
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+for (var index = 0; index <= 65535; index++) {
+ if ((index < 0x0030) || (index > 0x0039) &&
+ (index < 0x0041) || (index > 0x005A) &&
+ (index < 0x0061) || (index > 0x007A)) {
+ var hex = decimalToHexString(index);
+ if (parseInt("1Z" + String.fromCharCode(index), 36) !== 71) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.1.js
new file mode 100644
index 000000000..493dbb706
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A9.1;
+ * @section: 15.1.2.2, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of parseInt has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (parseInt.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: parseInt.propertyIsEnumerable(\'length\') === false. Actual: ' + (parseInt.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in parseInt){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in parseInt) { if (p === "length") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.2.js
new file mode 100644
index 000000000..84c1112bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A9.2;
+ * @section: 15.1.2.2, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of parseInt has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+if (parseInt.hasOwnProperty('length') !== true) {
+ $FAIL('#1: parseInt.hasOwnProperty(\'length\') === true. Actual: ' + (parseInt.hasOwnProperty('length')));
+}
+
+delete parseInt.length;
+
+//CHECK#2
+if (parseInt.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete parseInt.length; parseInt.hasOwnProperty(\'length\') === true. Actual: ' + (parseInt.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (parseInt.length === undefined) {
+ $ERROR('#3: delete parseInt.length; parseInt.length !== undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.3.js
new file mode 100644
index 000000000..b56c90fad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A9.3;
+ * @section: 15.1.2.2;
+ * @assertion: The length property of parseInt has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+x = parseInt.length;
+parseInt.length = Infinity;
+if (parseInt.length !== x) {
+ $ERROR('#1: x = parseInt.length; parseInt.length = Infinity; parseInt.length === x. Actual: ' + (parseInt.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.4.js
new file mode 100644
index 000000000..2b81bc082
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A9.4;
+ * @section: 15.1.2.2;
+ * @assertion: The length property of parseInt is 2;
+ * @description: parseInt.length === 2;
+*/
+
+//CHECK#1
+if (parseInt.length !== 2) {
+ $ERROR('#1: parseInt.length === 2. Actual: ' + (parseInt.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.5.js
new file mode 100644
index 000000000..e5ca5558e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_A9.5;
+ * @section: 15.1.2.2, 15.2.4.7, 12.6.4;
+ * @assertion: The parseInt property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('parseInt') !== false) {
+ $ERROR('#1: this.propertyIsEnumerable(\'parseInt\') === false. Actual: ' + (this.propertyIsEnumerable('parseInt')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in this){
+ if (p === "parseInt") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "parseInt") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.6.js
new file mode 100644
index 000000000..66af13b8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.2_A9.6;
+* @section: 15.1.2.2;
+* @assertion: The parseInt property has not prototype property;
+* @description: Checking parseInt.prototype;
+*/
+
+//CHECK#1
+if (parseInt.prototype !== undefined) {
+ $ERROR('#1: parseInt.prototype === undefined. Actual: ' + (parseInt.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.7.js
new file mode 100644
index 000000000..123be57fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.2_parseInt/S15.1.2.2_A9.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.2_A9.7;
+* @section: 15.1.2.2, 11.2.2;
+* @assertion: The parseInt property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new parseInt();
+ $ERROR('#1.1: new parseInt() throw TypeError. Actual: ' + (new parseInt()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new parseInt() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T1.js
new file mode 100644
index 000000000..25e593b6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A1_T1;
+ * @section: 15.1.2.3, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for boolean primitive;
+*/
+
+//CHECK#1
+if (!(isNaN(parseFloat(true)) && isNaN(parseFloat("NaN")))) {
+ $ERROR('#1: parseFloat(true) === Not-a-Number; parseFloat("NaN") === Not-a-Number. Actual: ' + (parseFloat("NaN")));
+}
+
+//CHECK#2
+if (String(parseFloat(false)) !== "NaN") {
+ $ERROR('#2: String(parseFloat(false)) === "NaN". Actual: ' + (String(parseFloat(false))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T2.js
new file mode 100644
index 000000000..a0f81e2f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_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.
+
+/**
+ * @name: S15.1.2.3_A1_T2;
+ * @section: 15.1.2.3, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for number primitive;
+*/
+
+//CHECK#1
+if (parseFloat(-1.1) !== parseFloat("-1.1")) {
+ $ERROR('#1: parseFloat(-1.1) === parseFloat("-1.1"). Actual: ' + (parseFloat(-1.1)));
+}
+
+//CHECK#2
+if (parseFloat(Infinity) !== parseFloat("Infinity")) {
+ $ERROR('#2: parseFloat(Infinity) === parseFloat("Infinity"). Actual: ' + (parseFloat(Infinity)));
+}
+
+//CHECK#3
+if (String(parseFloat(NaN)) !== "NaN") {
+ $ERROR('#3: String(parseFloat(NaN)) === "NaN". Actual: ' + (String(parseFloat(NaN))));
+}
+
+//CHECK#4
+if (parseFloat(.01e+2) !== parseFloat(".01e+2")) {
+ $ERROR('#4: parseFloat(.01e+2) === parseFloat(".01e+2"). Actual: ' + (parseFloat(.01e+2)));
+}
+
+//CHECK#5
+if (parseFloat(-0) !== 0) {
+ $ERROR('#5: parseFloat(-0) === 0. Actual: ' + (parseFloat(-0)));
+} else {
+ if (1 / parseFloat(-0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5: parseFloat(-0) === +0. Actual: ' + (parseFloat(-0)));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T3.js
new file mode 100644
index 000000000..ea793257f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A1_T3;
+ * @section: 15.1.2.3, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for undefined and null;
+*/
+
+//CHECK#1
+if (!(isNaN(parseFloat(undefined)) && isNaN(parseFloat("NaN")))) {
+ $ERROR('#1: parseFloat(undefined) === Not-a-Number; parseFloat("NaN") === Not-a-Number. Actual: ' + (parseFloat("NaN")));
+}
+
+//CHECK#2
+if (!(isNaN(parseFloat(null)) && isNaN(parseFloat("NaN")))) {
+ $ERROR('#2: parseFloat(null) === Not-a-Number; parseFloat("NaN") === Not-a-Number. Actual: ' + (parseFloat("NaN")));
+}
+
+
+//CHECK#3
+if (String(parseFloat(undefined)) !== "NaN") {
+ $ERROR('#3: String(parseFloat(undefined)) === "NaN". Actual: ' + (String(parseFloat(undefined))));
+}
+
+//CHECK#4
+if (String(parseFloat(null)) !== "NaN") {
+ $ERROR('#4: String(parseFloat(null)) === "NaN". Actual: ' + (String(parseFloat(null))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T4.js
new file mode 100644
index 000000000..033b76ad8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A1_T4;
+ * @section: 15.1.2.3, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for Boolean object;
+*/
+
+//CHECK#1
+if (!(isNaN(parseFloat(new Boolean(true))) && isNaN(parseFloat("NaN")))) {
+ $ERROR('#1: parseFloat(new Boolean(true)) === Not-a-Number; parseFloat("NaN") === Not-a-Number. Actual: ' + (parseFloat("NaN")));
+}
+
+//CHECK#2
+if (String(parseFloat(new Boolean(false))) !== "NaN") {
+ $ERROR('#2: String(parseFloat(new Boolean(false))) === "NaN". Actual: ' + (String(parseFloat(new Boolean(false)))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T5.js
new file mode 100644
index 000000000..8604f1a43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A1_T5;
+ * @section: 15.1.2.3, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for Number object;
+*/
+
+//CHECK#1
+if (parseFloat(new Number(-1.1)) !== parseFloat("-1.1")) {
+ $ERROR('#1: parseFloat(new Number(-1.1)) === parseFloat("-1.1"). Actual: ' + (parseFloat(new Number(-1.1))));
+}
+
+//CHECK#2
+if (parseFloat(new Number(Infinity)) !== parseFloat("Infinity")) {
+ $ERROR('#2: parseFloat(new Number(Infinity)) === parseFloat("Infinity"). Actual: ' + (parseFloat(new Number(Infinity))));
+}
+
+//CHECK#3
+if (String(parseFloat(new Number(NaN))) !== "NaN") {
+ $ERROR('#3: String(parseFloat(new Number(NaN))) === "NaN". Actual: ' + (String(parseFloat(new Number(NaN)))));
+}
+
+//CHECK#4
+if (parseFloat(new Number(.01e+2)) !== parseFloat(".01e+2")) {
+ $ERROR('#4: parseFloat(new Number(.01e+2)) === parseFloat(".01e+2"). Actual: ' + (parseFloat(new Number(.01e+2))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T6.js
new file mode 100644
index 000000000..dfc73b198
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T6.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A1_T6;
+ * @section: 15.1.2.3, 9.8;
+ * @assertion: Operator use ToString;
+ * @description: Checking for String object;
+*/
+
+//CHECK#1
+if (parseFloat(new String("-1.1")) !== parseFloat("-1.1")) {
+ $ERROR('#1: parseFloat(new String("-1.1")) === parseFloat("-1.1"). Actual: ' + (parseFloat(new String("-1.1"))));
+}
+
+//CHECK#2
+if (parseFloat(new String("Infinity")) !== parseFloat("Infinity")) {
+ $ERROR('#2: parseFloat(new String("Infinity")) === parseFloat("Infinity"). Actual: ' + (parseFloat(new String("Infinity"))));
+}
+
+//CHECK#3
+if (String(parseFloat(new String("NaN"))) !== "NaN") {
+ $ERROR('#3: String(parseFloat(new String("NaN"))) === "NaN". Actual: ' + (String(parseFloat(new String("NaN")))));
+}
+
+//CHECK#4
+if (parseFloat(new String(".01e+2")) !== parseFloat(".01e+2")) {
+ $ERROR('#4: parseFloat(new String(".01e+2")) === parseFloat(".01e+2"). Actual: ' + (parseFloat(new String(".01e+2"))));
+}
+
+//CHECK#5
+if (String(parseFloat(new String("false"))) !== "NaN") {
+ $ERROR('#5: String(parseFloat(new String("false"))) === "NaN". Actual: ' + (String(parseFloat(new String("false")))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T7.js
new file mode 100644
index 000000000..2eab8eccb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A1_T7.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A1_T7;
+ * @section: 15.1.2.3, 9.8, 8.6.2.6;
+ * @assertion: Operator use ToString;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, String);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (isNaN(parseFloat(object)) !== true) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; parseFloat(object) === Not-a-Number. Actual: ' + (parseFloat(object)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (parseFloat(object) !== 0) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; parseFloat(object) === 0. Actual: ' + (parseFloat(object)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (parseFloat(object) !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; parseFloat(object) === 1. Actual: ' + (parseFloat(object)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ if (parseFloat(object) !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseFloat(object) === 1. Actual: ' + (parseFloat(object)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseFloat(object) not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseFloat(object) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (parseFloat(object) !== 1) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; parseFloat(object) === 1. Actual: ' + (parseFloat(object)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (parseFloat(object) !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; parseFloat(object) === 1. Actual: ' + (parseFloat(object)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ parseFloat(object);
+ $ERROR('#7.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; parseFloat(object) throw "error". Actual: ' + (parseFloat(object)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; parseFloat(object) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ parseFloat(object);
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseFloat(object) throw TypeError. Actual: ' + (parseFloat(object)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseFloat(object) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T1.js
new file mode 100644
index 000000000..a259bdd33
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_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.
+
+/**
+ * @name: S15.1.2.3_A2_T1;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: TAB (U+0009);
+*/
+
+//CHECK#1
+if (parseFloat("\u00091.1") !== parseFloat("1.1")) {
+ $ERROR('#1: parseFloat("\\u00091.1") === parseFloat("1.1"). Actual: ' + (parseFloat("\u00091.1")));
+}
+
+//CHECK#2
+if (parseFloat("\u0009\u0009-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#2: parseFloat("\\u0009\\u0009-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat("\u0009\u0009-1.1")));
+}
+
+//CHECK#3
+if (parseFloat(" 1.1") !== parseFloat("1.1")) {
+ $ERROR('#3: parseFloat(" 1.1") === parseFloat("1.1"). Actual: ' + (parseFloat(" 1.1")));
+}
+
+//CHECK#4
+if (parseFloat(" 1.1") !== parseFloat("1.1")) {
+ $ERROR('#4: parseFloat(" 1.1") === parseFloat("1.1"). Actual: ' + (parseFloat(" 1.1")));
+}
+
+//CHECK#5
+if (parseFloat(" \u0009 \u0009-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#5: parseFloat(" \\u0009 \\u0009-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat(" \u0009 \u0009-1.1")));
+}
+
+//CHECK#6
+if (isNaN(parseFloat("\u0009")) !== true) {
+ $ERROR('#6: parseFloat("\\u0009") === Not-a-Number. Actual: ' + (parseFloat("\u0009")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T10.js
new file mode 100644
index 000000000..9fa2cb5c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T10.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A2_T10;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: USP;
+*/
+
+//CHECK#
+var count = 0;
+var errorCount = 0;
+var uspU = ["\u1680", "\u180E", "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006", "\u2007", "\u2008", "\u2009", "\u200A", "\u202F", "\u205F", "\u3000"];
+var uspS = ["1680", "180E", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "200A", "202F", "205F", "3000"];
+for (var index = 0; index < uspU.length; index++) {
+ var result = true;
+ if (parseFloat(uspU[index] + "1.1") !== parseFloat("1.1")) {
+ $ERROR('#1.' + uspS[index] + ' ');
+ result = false;
+ }
+ if (parseFloat(uspU[index] + uspU[index] + uspU[index] + "1.1") !== parseFloat("1.1")) {
+ $ERROR('#2.' + uspS[index] + ' ');
+ result = false;
+ }
+ if (isNaN(parseFloat(uspU[index])) !== true) {
+ $ERROR('#3.' + uspS[index] + ' ');
+ result = false;
+ }
+ if (result !== true) {
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T2.js
new file mode 100644
index 000000000..4c942ea1f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A2_T2;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: SP (U+0020);
+*/
+
+//CHECK#1
+if (parseFloat("\u00201.1") !== parseFloat("1.1")) {
+ $ERROR('#1: parseFloat("\\u00201.1") === parseFloat("1.1"). Actual: ' + (parseFloat("\u00201.1")));
+}
+
+//CHECK#2
+if (parseFloat("\u0020\u0020-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#2: parseFloat("\\u0020\\u0020-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat("\u0020\u0020-1.1")));
+}
+
+//CHECK#3
+if (parseFloat(" 1.1") !== parseFloat("1.1")) {
+ $ERROR('#3: parseFloat(" 1.1") === parseFloat("1.1"). Actual: ' + (parseFloat(" 1.1")));
+}
+
+//CHECK#4
+if (parseFloat(" 1.1") !== parseFloat("1.1")) {
+ $ERROR('#4: parseFloat(" 1.1") === parseFloat("1.1"). Actual: ' + (parseFloat(" 1.1")));
+}
+
+//CHECK#5
+if (parseFloat(" \u0020 \u0020-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#5: parseFloat(" \\u0020 \\u0020-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat(" \u0020 \u0020-1.1")));
+}
+
+//CHECK#6
+if (isNaN(parseFloat("\u0020")) !== true) {
+ $ERROR('#6: parseFloat("\\u0020") === Not-a-Number. Actual: ' + (parseFloat("\u0020")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T3.js
new file mode 100644
index 000000000..13d1eb022
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A2_T3;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: NBSB (U+00A0);
+*/
+
+//CHECK#1
+if (parseFloat("\u00A01.1") !== parseFloat("1.1")) {
+ $ERROR('#1: parseFloat("\\u00A01.1") === parseFloat("1.1"). Actual: ' + (parseFloat("\u00A01.1")));
+}
+
+//CHECK#2
+if (parseFloat("\u00A0\u00A0-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#2: parseFloat("\\u00A0\\u00A0-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat("\u00A0\u00A0-1.1")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("\u00A0")) !== true) {
+ $ERROR('#3: parseFloat("\\u00A0") === Not-a-Number. Actual: ' + (parseFloat("\u00A0")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T4.js
new file mode 100644
index 000000000..494a1947e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T4.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A2_T4;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: FF (U+000C);
+*/
+
+//CHECK#1
+if (parseFloat("\u000C1.1") !== parseFloat("1.1")) {
+ $ERROR('#1: parseFloat("\\u000C1.1") === parseFloat("1.1"). Actual: ' + (parseFloat("\u000C1.1")));
+}
+
+//CHECK#2
+if (parseFloat("\u000C\u000C-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#2: parseFloat("\\u000C\\u000C-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat("\u000C\u000C-1.1")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("\u000C")) !== true) {
+ $ERROR('#3: parseFloat("\\u000C") === Not-a-Number. Actual: ' + (parseFloat("\u000C")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T5.js
new file mode 100644
index 000000000..6b28ea1d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T5.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A2_T5;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: VT (U+000B);
+*/
+
+//CHECK#1
+if (parseFloat("\u000B1.1") !== parseFloat("1.1")) {
+ $ERROR('#1: parseFloat("\\u000B1.1") === parseFloat("1.1"). Actual: ' + (parseFloat("\u000B1.1")));
+}
+
+//CHECK#2
+if (parseFloat("\u000B\u000B-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#2: parseFloat("\\u000B\\u000B-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat("\u000B\u000B-1.1")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("\u000B")) !== true) {
+ $ERROR('#3: parseFloat("\\u000B") === Not-a-Number. Actual: ' + (parseFloat("\u000B")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T6.js
new file mode 100644
index 000000000..6c0aee42f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T6.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A2_T6;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: CR (U+000D);
+*/
+
+//CHECK#1
+if (parseFloat("\u000D1.1") !== parseFloat("1.1")) {
+ $ERROR('#1: parseFloat("\\u000D1.1") === parseFloat("1.1"). Actual: ' + (parseFloat("\u000D1.1")));
+}
+
+//CHECK#2
+if (parseFloat("\u000D\u000D-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#2: parseFloat("\\u000D\\u000D-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat("\u000D\u000D-1.1")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("\u000D")) !== true) {
+ $ERROR('#3: parseFloat("\\u000D") === Not-a-Number. Actual: ' + (parseFloat("\u000D")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T7.js
new file mode 100644
index 000000000..30e3dcb24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T7.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A2_T7;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: LF (U+000A);
+*/
+
+//CHECK#1
+if (parseFloat("\u000A1.1") !== parseFloat("1.1")) {
+ $ERROR('#1: parseFloat("\\u000A1.1") === parseFloat("1.1"). Actual: ' + (parseFloat("\u000A1.1")));
+}
+
+//CHECK#2
+if (parseFloat("\u000A\u000A-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#2: parseFloat("\\u000A\\u000A-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat("\u000A\u000A-1.1")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("\u000A")) !== true) {
+ $ERROR('#3: parseFloat("\\u000A") === Not-a-Number. Actual: ' + (parseFloat("\u000A")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T8.js
new file mode 100644
index 000000000..648e19e2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T8.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A2_T8;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: LS (U+2028);
+*/
+
+//CHECK#1
+if (parseFloat("\u20281.1") !== parseFloat("1.1")) {
+ $ERROR('#1: parseFloat("\\u20281.1") === parseFloat("1.1"). Actual: ' + (parseFloat("\u20281.1")));
+}
+
+//CHECK#2
+if (parseFloat("\u2028\u2028-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#2: parseFloat("\\u2028\\u2028-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat("\u2028\u2028-1.1")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("\u2028")) !== true) {
+ $ERROR('#3: parseFloat("\\u2028") === Not-a-Number. Actual: ' + (parseFloat("\u2028")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T9.js
new file mode 100644
index 000000000..4802ad16b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A2_T9.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A2_T9;
+ * @section: 15.1.2.3;
+ * @assertion: Operator remove leading StrWhiteSpaceChar;
+ * @description: StrWhiteSpaceChar :: PS (U+2029);
+*/
+
+//CHECK#1
+if (parseFloat("\u20291.1") !== parseFloat("1.1")) {
+ $ERROR('#1: parseFloat("\\u20291.1") === parseFloat("1.1"). Actual: ' + (parseFloat("\u20291.1")));
+}
+
+//CHECK#2
+if (parseFloat("\u2029\u2029-1.1") !== parseFloat("-1.1")) {
+ $ERROR('#2: parseFloat("\\u2029\\u2029-1.1") === parseFloat("-1.1"). Actual: ' + (parseFloat("\u2029\u2029-1.1")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("\u2029")) !== true) {
+ $ERROR('#3: parseFloat("\\u2029") === Not-a-Number. Actual: ' + (parseFloat("\u2029")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T1.js
new file mode 100644
index 000000000..5e7bcb81e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A3_T1;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: If neither Result(2) nor any prefix of Result(2) satisfies the syntax of a
+ * StrDecimalLiteral (see 9.3.1), return NaN;
+ * @description: parseFloat("some string") return NaN;
+*/
+
+//CHECK#1
+if (isNaN(parseFloat("str")) !== true) {
+ $ERROR('#1: parseFloat("str") === Not-a-Number. Actual: ' + (parseFloat("str")));
+}
+
+//CHECK#2
+if (isNaN(parseFloat("s1")) !== true) {
+ $ERROR('#2: parseFloat("s1") === Not-a-Number. Actual: ' + (parseFloat("s1")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("")) !== true) {
+ $ERROR('#3: parseFloat("") === Not-a-Number. Actual: ' + (parseFloat("")));
+}
+
+//CHECK#4
+if (String(parseFloat("str")) !== "NaN") {
+ $ERROR('#4: String(parseFloat("str")) === "NaN". Actual: ' + (String(parseFloat("str"))));
+}
+
+//CHECK#5
+if (String(parseFloat("s1")) !== "NaN") {
+ $ERROR('#5: String(parseFloat("s1")) === "NaN". Actual: ' + (String(parseFloat("s1"))));
+}
+
+//CHECK#6
+if (String(parseFloat("")) !== "NaN") {
+ $ERROR('#6: String(parseFloat("")) === "NaN". Actual: ' + (String(parseFloat(""))));
+}
+
+//CHECK#7
+if (String(parseFloat("+")) !== "NaN") {
+ $ERROR('#7: String(parseFloat("+")) === "NaN". Actual: ' + (String(parseFloat("+"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T2.js
new file mode 100644
index 000000000..8e3c91b23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T2.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A3_T2;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: If neither Result(2) nor any prefix of Result(2) satisfies the syntax of a
+ * StrDecimalLiteral (see 9.3.1), return NaN;
+ * @description: parseFloat("wrong number format with ExponentIndicator") return NaN;
+*/
+
+//CHECK#1
+if (isNaN(parseFloat("e1")) !== true) {
+ $ERROR('#1: parseFloat("e1") === Not-a-Number. Actual: ' + (parseFloat("e1")));
+}
+
+//CHECK#2
+if (isNaN(parseFloat("e-1")) !== true) {
+ $ERROR('#2: parseFloat("e-1") === Not-a-Number. Actual: ' + (parseFloat("e-1")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("E+1")) !== true) {
+ $ERROR('#3: parseFloat("E+1") === Not-a-Number. Actual: ' + (parseFloat("E+1")));
+}
+
+//CHECK#4
+if (isNaN(parseFloat("E0")) !== true) {
+ $ERROR('#4: parseFloat("E0") === Not-a-Number. Actual: ' + (parseFloat("E0")));
+}
+
+//CHECK#5
+if (String(parseFloat("e1")) !== "NaN") {
+ $ERROR('#5: String(parseFloat("e1")) === "NaN". Actual: ' + (String(parseFloat("e1"))));
+}
+
+//CHECK#6
+if (String(parseFloat("e-1")) !== "NaN") {
+ $ERROR('#6: String(parseFloat("e-1")) === "NaN". Actual: ' + (String(parseFloat("e-1"))));
+}
+
+//CHECK#7
+if (String(parseFloat("E+1")) !== "NaN") {
+ $ERROR('#73: String(parseFloat("E+1")) === "NaN". Actual: ' + (String(parseFloat("E+1"))));
+}
+
+//CHECK#8
+if (String(parseFloat("E0")) !== "NaN") {
+ $ERROR('#8: String(parseFloat("E0")) === "NaN". Actual: ' + (String(parseFloat("E0"))));
+}
+
+//CHECK#9
+if (isNaN(parseFloat("-.e-1")) !== true) {
+ $ERROR('#9: parseFloat("-.e-1") === Not-a-Number. Actual: ' + (parseFloat("-.e-1")));
+}
+
+//CHECK#10
+if (isNaN(parseFloat(".e1")) !== true) {
+ $ERROR('#10: parseFloat(".e1") === Not-a-Number. Actual: ' + (parseFloat(".e1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T3.js
new file mode 100644
index 000000000..cfa374acf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A3_T3.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A3_T3;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: If neither Result(2) nor any prefix of Result(2) satisfies the syntax of a
+ * StrDecimalLiteral (see 9.3.1), return NaN;
+ * @description: parseFloat("wrong numbr format") return NaN;
+*/
+
+//CHECK#1
+if (isNaN(parseFloat(".x")) !== true) {
+ $ERROR('#1: parseFloat(".x") === Not-a-Number. Actual: ' + (parseFloat(".x")));
+}
+
+//CHECK#2
+if (isNaN(parseFloat("+x")) !== true) {
+ $ERROR('#2: parseFloat("+x") === Not-a-Number. Actual: ' + (parseFloat("+x")));
+}
+
+//CHECK#3
+if (isNaN(parseFloat("infinity")) !== true) {
+ $ERROR('#3: parseFloat("infinity") === Not-a-Number. Actual: ' + (parseFloat("infinity")));
+}
+
+//CHECK#4
+if (isNaN(parseFloat("A")) !== true) {
+ $ERROR('#4: parseFloat("A") === Not-a-Number. Actual: ' + (parseFloat("A")));
+}
+
+//CHECK#5
+if (String(parseFloat(".s")) !== "NaN") {
+ $ERROR('#5: String(parseFloat(".s")) === "NaN". Actual: ' + (String(parseFloat(".s"))));
+}
+
+//CHECK#6
+if (String(parseFloat("+x")) !== "NaN") {
+ $ERROR('#6: String(parseFloat("+x")) === "NaN". Actual: ' + (String(parseFloat("+x"))));
+}
+
+//CHECK#7
+if (String(parseFloat("infinity")) !== "NaN") {
+ $ERROR('#73: String(parseFloat("infinity")) === "NaN". Actual: ' + (String(parseFloat("infinity"))));
+}
+
+//CHECK#8
+if (String(parseFloat("A")) !== "NaN") {
+ $ERROR('#8: String(parseFloat("A")) === "NaN". Actual: ' + (String(parseFloat("A"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T1.js
new file mode 100644
index 000000000..70b3f930c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A4_T1;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Compute the longest prefix of Result(2), which might be Result(2) itself,
+ * which satisfies the syntax of a StrDecimalLiteral;
+ * @description: Some wrong number;
+*/
+
+//CHECK#1
+if (parseFloat("0x") !== 0) {
+ $ERROR('#1: parseFloat("0x") === 0. Actual: ' + (parseFloat("0x")));
+}
+
+//CHECK#2
+if (parseFloat("11x") !== 11) {
+ $ERROR('#2: parseFloat("11x") === 11. Actual: ' + (parseFloat("11x")));
+}
+
+//CHECK#3
+if (parseFloat("11s1") !== 11) {
+ $ERROR('#3: parseFloat("11s1") === 11. Actual: ' + (parseFloat("11s1")));
+}
+
+//CHECK#4
+if (parseFloat("11.s1") !== 11) {
+ $ERROR('#4: parseFloat("11.s1") === 11. Actual: ' + (parseFloat("11.s1")));
+}
+
+//CHECK#5
+if (parseFloat(".0s1") !== 0) {
+ $ERROR('#5: parseFloat(".0s1") === 0. Actual: ' + (parseFloat(".0s1")));
+}
+
+//CHECK#6
+if (parseFloat("1.s1") !== 1) {
+ $ERROR('#6: parseFloat("1.s1") === 1. Actual: ' + (parseFloat("1.s1")));
+}
+
+//CHECK#7
+if (parseFloat("1..1") !== 1) {
+ $ERROR('#7: parseFloat("1..1") === 1. Actual: ' + (parseFloat("1..1")));
+}
+
+//CHECK#8
+if (parseFloat("0.1.1") !== 0.1) {
+ $ERROR('#8: parseFloat("0.1.1") === 0.1. Actual: ' + (parseFloat("0.1.1")));
+}
+
+//CHECK#9
+if (parseFloat("0. 1") !== 0) {
+ $ERROR('#9: parseFloat("0. 1") === 0. Actual: ' + (parseFloat("0. 1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T2.js
new file mode 100644
index 000000000..612c8197c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A4_T2;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Compute the longest prefix of Result(2), which might be Result(2) itself,
+ * which satisfies the syntax of a StrDecimalLiteral;
+ * @description: With ExponentIndicator;
+*/
+
+//CHECK#1
+if (parseFloat("1ex") !== 1) {
+ $ERROR('#1: parseFloat("1ex") === 1. Actual: ' + (parseFloat("1ex")));
+}
+
+//CHECK#2
+if (parseFloat("1e-x") !== 1) {
+ $ERROR('#2: parseFloat("1e-x") === 1. Actual: ' + (parseFloat("1e-x")));
+}
+
+//CHECK#3
+if (parseFloat("1e1x") !== 10) {
+ $ERROR('#3: parseFloat("1e1x") === 10. Actual: ' + (parseFloat("1e1x")));
+}
+
+//CHECK#4
+if (parseFloat("1e-1x") !== 0.1) {
+ $ERROR('#4: parseFloat("1e-1x") === 0.1. Actual: ' + (parseFloat("1e-1x")));
+}
+
+//CHECK#5
+if (parseFloat("0.1e-1x") !== 0.01) {
+ $ERROR('#5: parseFloat("0.1e-1x") === 0.01. Actual: ' + (parseFloat("0.1e-1x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T3.js
new file mode 100644
index 000000000..d24c6e6ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T3.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A4_T3;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Compute the longest prefix of Result(2), which might be Result(2) itself,
+ * which satisfies the syntax of a StrDecimalLiteral;
+ * @description: StrDecimalLiteral not contain HexIntegerLiteral;
+*/
+
+//CHECK#0
+if (parseFloat("0x0") !== 0) {
+ $ERROR('#0: parseFloat("0x0") === 0. Actual: ' + (parseFloat("0x0")));
+}
+
+//CHECK#1
+if (parseFloat("0x1") !== 0) {
+ $ERROR('#1: parseFloat("0x1") === 0. Actual: ' + (parseFloat("0x1")));
+}
+
+//CHECK#2
+if (parseFloat("0x2") !== 0) {
+ $ERROR('#2: parseFloat("0x2") === 0. Actual: ' + (parseFloat("0x2")));
+}
+
+//CHECK#3
+if (parseFloat("0x3") !== 0) {
+ $ERROR('#3: parseFloat("0x3") === 0. Actual: ' + (parseFloat("0x3")));
+}
+
+//CHECK#4
+if (parseFloat("0x4") !== 0) {
+ $ERROR('#4: parseFloat("0x4") === 0. Actual: ' + (parseFloat("0x4")));
+}
+
+//CHECK#5
+if (parseFloat("0x5") !== 0) {
+ $ERROR('#5: parseFloat("0x5") === 0. Actual: ' + (parseFloat("0x5")));
+}
+
+//CHECK#6
+if (parseFloat("0x6") !== 0) {
+ $ERROR('#6: parseFloat("0x6") === 0. Actual: ' + (parseFloat("0x6")));
+}
+
+//CHECK#7
+if (parseFloat("0x7") !== 0) {
+ $ERROR('#7: parseFloat("0x7") === 0. Actual: ' + (parseFloat("0x7")));
+}
+
+//CHECK#8
+if (parseFloat("0x8") !== 0) {
+ $ERROR('#8: parseFloat("0x8") === 0. Actual: ' + (parseFloat("0x8")));
+}
+
+//CHECK#9
+if (parseFloat("0x9") !== 0) {
+ $ERROR('#9: parseFloat("0x9") === 0. Actual: ' + (parseFloat("0x9")));
+}
+
+//CHECK#A
+if (parseFloat("0xA") !== 0) {
+ $ERROR('#A: parseFloat("0xA") === 0. Actual: ' + (parseFloat("0xA")));
+}
+
+//CHECK#B
+if (parseFloat("0xB") !== 0) {
+ $ERROR('#B: parseFloat("0xB") === 0. Actual: ' + (parseFloat("0xB")));
+}
+
+//CHECK#C
+if (parseFloat("0xC") !== 0) {
+ $ERROR('#C: parseFloat("0xC") === 0. Actual: ' + (parseFloat("0xC")));
+}
+
+//CHECK#D
+if (parseFloat("0xD") !== 0) {
+ $ERROR('#D: parseFloat("0xD") === 0. Actual: ' + (parseFloat("0xD")));
+}
+
+//CHECK#E
+if (parseFloat("0xE") !== 0) {
+ $ERROR('#E: parseFloat("0xE") === 0. Actual: ' + (parseFloat("0xE")));
+}
+
+//CHECK#F
+if (parseFloat("0xF") !== 0) {
+ $ERROR('#F: parseFloat("0xF") === 0. Actual: ' + (parseFloat("0xF")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T4.js
new file mode 100644
index 000000000..19b434f51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A4_T4;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Compute the longest prefix of Result(2), which might be Result(2) itself,
+ * which satisfies the syntax of a StrDecimalLiteral;
+ * @description: "Infinity"+"some string";
+*/
+
+//CHECK#1
+if (parseFloat("Infinity1") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: parseFloat("Infinity1") === Number.POSITIVE_INFINITY. Actual: ' + (parseFloat("Infinity1")));
+}
+
+//CHECK#2
+if (parseFloat("Infinityx") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: parseFloat("Infinityx") === Number.POSITIVE_INFINITY. Actual: ' + (parseFloat("Infinityx")));
+}
+
+//CHECK#3
+if (parseFloat("Infinity+1") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: parseFloat("Infinity+1") === Number.POSITIVE_INFINITY. Actual: ' + (parseFloat("Infinity+1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T5.js
new file mode 100644
index 000000000..510df03a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T5.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A4_T5;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Compute the longest prefix of Result(2), which might be Result(2) itself,
+ * which satisfies the syntax of a StrDecimalLiteral;
+ * @description: Checking DecimalDigits . DecimalDigits_opt ExponentPart_opt;
+*/
+
+//CHECK#1
+if (parseFloat("-11.string") !== -11) {
+ $ERROR('#1: parseFloat("-11.string") === -11. Actual: ' + (parseFloat("-11.string")));
+}
+
+//CHECK#2
+if (parseFloat("01.string") !== 1) {
+ $ERROR('#2: parseFloat("01.string") === 1. Actual: ' + (parseFloat("01.string")));
+}
+
+//CHECK#3
+if (parseFloat("+11.1string") !== 11.1) {
+ $ERROR('#3: parseFloat("+11.1string") === 11.1. Actual: ' + (parseFloat("+11.1string")));
+}
+
+//CHECK#4
+if (parseFloat("01.1string") !== 1.1) {
+ $ERROR('#4: parseFloat("01.1string") === 1.1. Actual: ' + (parseFloat("01.1string")));
+}
+
+//CHECK#5
+if (parseFloat("-11.e-1string") !== -1.1) {
+ $ERROR('#5: parseFloat("-11.e-1string") === -1.1. Actual: ' + (parseFloat("-11.e-1string")));
+}
+
+//CHECK#6
+if (parseFloat("01.e1string") !== 10) {
+ $ERROR('#6: parseFloat("01.e1string") === 10. Actual: ' + (parseFloat("01.e1string")));
+}
+
+//CHECK#7
+if (parseFloat("+11.22e-1string") !== 1.122) {
+ $ERROR('#7: parseFloat("+11.22e-1string") === 1.122. Actual: ' + (parseFloat("+11.22e-1string")));
+}
+
+//CHECK#8
+if (parseFloat("01.01e1string") !== 10.1) {
+ $ERROR('#8: parseFloat("01.01e1string") === 10.1. Actual: ' + (parseFloat("01.01e1string")));
+}
+
+//CHECK#9
+if (parseFloat("001.string") !== 1) {
+ $ERROR('#9: parseFloat("001.string") === 1. Actual: ' + (parseFloat("001.string")));
+}
+
+//CHECK#10
+if (parseFloat("010.string") !== 10) {
+ $ERROR('#10: parseFloat("010.string") === 10. Actual: ' + (parseFloat("010.string")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T6.js
new file mode 100644
index 000000000..d707c8e0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T6.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A4_T6;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Compute the longest prefix of Result(2), which might be Result(2) itself,
+ * which satisfies the syntax of a StrDecimalLiteral;
+ * @description: Checking . DecimalDigits ExponentPart_opt;
+*/
+
+
+//CHECK#1
+if (parseFloat("+.1string") !== 0.1) {
+ $ERROR('#1: parseFloat("+.1string") === 0.1. Actual: ' + (parseFloat("+.1string")));
+}
+
+//CHECK#2
+if (parseFloat(".01string") !== 0.01) {
+ $ERROR('#2: parseFloat(".01string") === 0.01. Actual: ' + (parseFloat(".01string")));
+}
+
+//CHECK#3
+if (parseFloat("+.22e-1string") !== 0.022) {
+ $ERROR('#3: parseFloat("+.22e-1string") === 0.022. Actual: ' + (parseFloat("+.22e-1string")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T7.js
new file mode 100644
index 000000000..bd2e9a62b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A4_T7.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A4_T7;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Compute the longest prefix of Result(2), which might be Result(2) itself,
+ * which satisfies the syntax of a StrDecimalLiteral;
+ * @description: Checking DecimalDigits ExponentPart_opt;
+*/
+
+//CHECK#1
+if (parseFloat("-11string") !== -11) {
+ $ERROR('#1: parseFloat("-11string") === -11. Actual: ' + (parseFloat("-11string")));
+}
+
+//CHECK#2
+if (parseFloat("01string") !== 1) {
+ $ERROR('#2: parseFloat("01string") === 1. Actual: ' + (parseFloat("01string")));
+}
+
+//CHECK#3
+if (parseFloat("-11e-1string") !== -1.1) {
+ $ERROR('#3: parseFloat("-11e-1string") === -1.1. Actual: ' + (parseFloat("-11e-1string")));
+}
+
+//CHECK#4
+if (parseFloat("01e1string") !== 10) {
+ $ERROR('#4: parseFloat("01e1string") === 10. Actual: ' + (parseFloat("01e1string")));
+}
+
+//CHECK#5
+if (parseFloat("001string") !== 1) {
+ $ERROR('#5: parseFloat("001string") === 1. Actual: ' + (parseFloat("001string")));
+}
+
+//CHECK#6
+if (parseFloat("1e001string") !== 10) {
+ $ERROR('#6: parseFloat("1e001string") === 10. Actual: ' + (parseFloat("1e001string")));
+}
+
+//CHECK#7
+if (parseFloat("010string") !== 10) {
+ $ERROR('#7: parseFloat("010string") === 10. Actual: ' + (parseFloat("010string")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T1.js
new file mode 100644
index 000000000..3e526bbf3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A5_T1;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Return the number value for the MV of Result(4);
+ * @description: Checking Infinity;
+*/
+
+//CHECK#1
+if (parseFloat("Infinity") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: parseFloat("Infinity") === Number.POSITIVE_INFINITY. Actual: ' + (parseFloat("Infinity")));
+}
+
+//CHECK#2
+if (parseFloat("+Infinity") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: parseFloat("+Infinity") === Number.POSITIVE_INFINITY. Actual: ' + (parseFloat("+Infinity")));
+}
+
+//CHECK#3
+if (parseFloat("-Infinity") !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: parseFloat("-Infinity") === Number.NEGATIVE_INFINITY. Actual: ' + (parseFloat("-Infinity")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T2.js
new file mode 100644
index 000000000..d7b94c3c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A5_T2;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Return the number value for the MV of Result(4);
+ * @description: Checking DecimalDigits . DecimalDigits_opt ExponentPart_opt;
+*/
+
+//CHECK#1
+if (parseFloat("-11.") !== -11) {
+ $ERROR('#1: parseFloat("-11.") === -11. Actual: ' + (parseFloat("-11.")));
+}
+
+//CHECK#2
+if (parseFloat("01.") !== 1) {
+ $ERROR('#2: parseFloat("01.") === 1. Actual: ' + (parseFloat("01.")));
+}
+
+//CHECK#3
+if (parseFloat("+11.1") !== 11.1) {
+ $ERROR('#3: parseFloat("+11.1") === 11.1. Actual: ' + (parseFloat("+11.1")));
+}
+
+//CHECK#4
+if (parseFloat("01.1") !== 1.1) {
+ $ERROR('#4: parseFloat("01.1") === 1.1. Actual: ' + (parseFloat("01.1")));
+}
+
+//CHECK#5
+if (parseFloat("-11.e-1") !== -1.1) {
+ $ERROR('#5: parseFloat("-11.e-1") === -1.1. Actual: ' + (parseFloat("-11.e-1")));
+}
+
+//CHECK#6
+if (parseFloat("01.e1") !== 10) {
+ $ERROR('#6: parseFloat("01.e1") === 10. Actual: ' + (parseFloat("01.e1")));
+}
+
+//CHECK#7
+if (parseFloat("+11.22e-1") !== 1.122) {
+ $ERROR('#7: parseFloat("+11.22e-1") === 1.122. Actual: ' + (parseFloat("+11.22e-1")));
+}
+
+//CHECK#8
+if (parseFloat("01.01e1") !== 10.1) {
+ $ERROR('#8: parseFloat("01.01e1") === 10.1. Actual: ' + (parseFloat("01.01e1")));
+}
+
+//CHECK#9
+if (parseFloat("001.") !== 1) {
+ $ERROR('#9: parseFloat("001.") === 1. Actual: ' + (parseFloat("001.")));
+}
+
+//CHECK#10
+if (parseFloat("010.") !== 10) {
+ $ERROR('#10: parseFloat("010.") === 10. Actual: ' + (parseFloat("010.")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T3.js
new file mode 100644
index 000000000..a6629049a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A5_T3;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Return the number value for the MV of Result(4);
+ * @description: Checking . DecimalDigits ExponentPart_opt;
+*/
+
+
+//CHECK#1
+if (parseFloat("+.1") !== 0.1) {
+ $ERROR('#1: parseFloat("+.1") === 0.1. Actual: ' + (parseFloat("+.1")));
+}
+
+//CHECK#2
+if (parseFloat(".01") !== 0.01) {
+ $ERROR('#2: parseFloat(".01") === 0.01. Actual: ' + (parseFloat(".01")));
+}
+
+//CHECK#3
+if (parseFloat("+.22e-1") !== 0.022) {
+ $ERROR('#3: parseFloat("+.22e-1") === 0.022. Actual: ' + (parseFloat("+.22e-1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T4.js
new file mode 100644
index 000000000..b0fef7c1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A5_T4.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A5_T4;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: Return the number value for the MV of Result(4);
+ * @description: Checking DecimalDigits ExponentPart_opt;
+*/
+
+//CHECK#1
+if (parseFloat("-11") !== -11) {
+ $ERROR('#1: parseFloat("-11") === -11. Actual: ' + (parseFloat("-11")));
+}
+
+//CHECK#2
+if (parseFloat("01") !== 1) {
+ $ERROR('#2: parseFloat("01") === 1. Actual: ' + (parseFloat("01")));
+}
+
+//CHECK#3
+if (parseFloat("-11e-1") !== -1.1) {
+ $ERROR('#3: parseFloat("-11e-1") === -1.1. Actual: ' + (parseFloat("-11e-1")));
+}
+
+//CHECK#4
+if (parseFloat("01e1") !== 10) {
+ $ERROR('#4: parseFloat("01e1") === 10. Actual: ' + (parseFloat("01e1")));
+}
+
+//CHECK#5
+if (parseFloat("001") !== 1) {
+ $ERROR('#5: parseFloat("001") === 1. Actual: ' + (parseFloat("001")));
+}
+
+//CHECK#6
+if (parseFloat("1e001") !== 10) {
+ $ERROR('#6: parseFloat("1e001") === 10. Actual: ' + (parseFloat("1e001")));
+}
+
+//CHECK#7
+if (parseFloat("010") !== 10) {
+ $ERROR('#7: parseFloat("010") === 10. Actual: ' + (parseFloat("010")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A6.js
new file mode 100644
index 000000000..361060a9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A6.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A6;
+ * @section: 15.1.2.3, 9.3.1;
+ * @assertion: parseFloat may interpret only a leading portion of the string as
+ * a number value; it ignores any characters that cannot be interpreted as part
+ * of the notation of an decimal literal, and no indication is given that any such
+ * characters were ignored.
+ * @description: Complex test without eval;
+*/
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+for (var index = 0; index <= 65535; index++) {
+ if ((index < 0x0030) || (index > 0x0039)) {
+ var hex = decimalToHexString(index);
+ if (parseFloat("0.1e1" + String.fromCharCode(index)) !== 1) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.1.js
new file mode 100644
index 000000000..4e896241f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A7.1;
+ * @section: 15.1.2.3, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of parseFloat has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (parseFloat.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: parseFloat.propertyIsEnumerable(\'length\') === false. Actual: ' + (parseFloat.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in parseFloat){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in parseFloat) { if (p === "length") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.2.js
new file mode 100644
index 000000000..93482ebf5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A7.2;
+ * @section: 15.1.2.3, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of parseFloat has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+if (parseFloat.hasOwnProperty('length') !== true) {
+ $FAIL('#1: parseFloat.hasOwnProperty(\'length\') === true. Actual: ' + (parseFloat.hasOwnProperty('length')));
+}
+
+delete parseFloat.length;
+
+//CHECK#2
+if (parseFloat.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete parseFloat.length; parseFloat.hasOwnProperty(\'length\') === true. Actual: ' + (parseFloat.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (parseFloat.length === undefined) {
+ $ERROR('#3: delete parseFloat.length; parseFloat.length !== undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.3.js
new file mode 100644
index 000000000..b08cc1ca1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A7.3;
+ * @section: 15.1.2.3;
+ * @assertion: The length property of parseFloat has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+var x = parseFloat.length;
+parseFloat.length = Infinity;
+if (parseFloat.length !== x) {
+ $ERROR('#1: x = parseFloat.length; parseFloat.length = Infinity; parseFloat.length === x. Actual: ' + (parseFloat.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.4.js
new file mode 100644
index 000000000..b955f7127
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A7.4;
+ * @section: 15.1.2.3;
+ * @assertion: The length property of parseFloat is 1;
+ * @description: parseFloat.length === 1;
+*/
+
+//CHECK#1
+if (parseFloat.length !== 1) {
+ $ERROR('#1: parseFloat.length === 1. Actual: ' + (parseFloat.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.5.js
new file mode 100644
index 000000000..d2f4fe176
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.3_A7.5;
+ * @section: 15.1.2.3, 15.2.4.7, 12.6.4;
+ * @assertion: The parseFloat property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('parseFloat') !== false) {
+ $ERROR('#1:this.propertyIsEnumerable(\'parseFloat\') === false. Actual: ' + (this.propertyIsEnumerable('parseFloat')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in this){
+ if (p === "parseFloat") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "parseFloat") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.6.js
new file mode 100644
index 000000000..192650f8b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.3_A7.6;
+* @section: 15.1.2.3;
+* @assertion: The parseFloat property has not prototype property;
+* @description: Checking parseFloat.prototype;
+*/
+
+//CHECK#1
+if (parseFloat.prototype !== undefined) {
+ $ERROR('#1: parseFloat.prototype === undefined. Actual: ' + (parseFloat.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.7.js
new file mode 100644
index 000000000..e3d902adc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.3_parseFloat/S15.1.2.3_A7.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.3_A7.7;
+* @section: 15.1.2.3, 11.2.2;
+* @assertion: The parseFloat property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new parseFloat();
+ $ERROR('#1.1: new parseFloat() throw TypeError. Actual: ' + (new parseFloat()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new parseFloat() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A1_T1.js
new file mode 100644
index 000000000..b426c645e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A1_T1.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.4_A1_T1;
+ * @section: 15.1.2.4;
+ * @assertion: isNaN applies ToNumber to its argument, then return true if the result is NaN, and otherwise return false;
+ * @description: Checking all primitive;
+*/
+
+// CHECK#1
+if (!(isNaN(NaN) === true)) {
+ $ERROR('#1: NaN === Not-a-Number. Actual: ' + (NaN));
+}
+
+// CHECK#2
+if (!(isNaN(Number.NaN) === true)) {
+ $ERROR('#2: Number.NaN === Not-a-Number. Actual: ' + (Number.NaN));
+}
+
+// CHECK#3
+if (!(isNaN(Number(void 0)) === true)) {
+ $ERROR('#3: Number(void 0) === Not-a-Number. Actual: ' + (Number(void 0)));
+}
+
+// CHECK#4
+if (!(isNaN(void 0) === true)) {
+ $ERROR('#4: void 0 === Not-a-Number. Actual: ' + (void 0));
+}
+
+// CHECK#5
+if (!(isNaN("string") === true)) {
+ $ERROR('#5: "string" === Not-a-Number. Actual: ' + ("string"));
+}
+
+// CHECK#6
+if (isNaN(Number.POSITIVE_INFINITY) === true) {
+ $ERROR('#6: Number.POSITIVE_INFINITY !== Not-a-Number');
+}
+
+// CHECK#7
+if (isNaN(Number.NEGATIVE_INFINITY) === true) {
+ $ERROR('#7: Number.NEGATIVE_INFINITY !== Not-a-Number');
+}
+
+// CHECK#8
+if (isNaN(Number.MAX_VALUE) === true) {
+ $ERROR('#8: Number.MAX_VALUE !== Not-a-Number');
+}
+
+// CHECK#9
+if (isNaN(Number.MIN_VALUE) === true) {
+ $ERROR('#9: Number.MIN_VALUE !== Not-a-Number');
+}
+
+// CHECK#10
+if (isNaN(-0) === true) {
+ $ERROR('#10: -0 !== Not-a-Number');
+}
+
+// CHECK#11
+if (isNaN(true) === true) {
+ $ERROR('#11: true !== Not-a-Number');
+}
+
+// CHECK#12
+if (isNaN("1") === true) {
+ $ERROR('#12: "1" !== Not-a-Number');
+}
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A1_T2.js
new file mode 100644
index 000000000..6be2762bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A1_T2.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.4_A1_T2;
+ * @section: 15.1.2.4;
+ * @assertion: isNaN applies ToNumber to its argument, then return true if the result is NaN, and otherwise return false;
+ * @description: Checking all object;
+*/
+
+// CHECK#1
+if (!(isNaN({}) === true)) {
+ $ERROR('#1: {} === Not-a-Number. Actual: ' + ({}));
+}
+
+// CHECK#2
+if (!(isNaN(new String("string")) === true)) {
+ $ERROR('#2: new String("string") === Not-a-Number. Actual: ' + (new String("string")));
+}
+
+// CHECK#3
+if (isNaN(new String("1")) === true) {
+ $ERROR('#3: new String("1") === Not-a-Number. Actual: ' + (new String("1")));
+}
+
+// CHECK#4
+if (isNaN(new Number(1)) === true) {
+ $ERROR('#4: new Number(1) !== Not-a-Number');
+}
+
+// CHECK#5
+if (!(isNaN(new Number(NaN)) === true)) {
+ $ERROR('#5: new Number(NaN) === Not-a-Number. Actual: ' + (new Number(NaN)));
+}
+
+// CHECK#6
+if (isNaN(new Boolean(true)) === true) {
+ $ERROR('#6: new Boolean(true) !== Not-a-Number');
+}
+
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.1.js
new file mode 100644
index 000000000..c8bf95da2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.4_A2.1;
+ * @section: 15.1.2.4, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of isNaN has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (isNaN.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: isNaN.propertyIsEnumerable(\'length\') === false. Actual: ' + (isNaN.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (p in isNaN){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in isNaN) { if (p === "length") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.2.js
new file mode 100644
index 000000000..37992570e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.4_A2.2;
+ * @section: 15.1.2.4, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of isNaN has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+if (isNaN.hasOwnProperty('length') !== true) {
+ $FAIL('#1: isNaN.hasOwnProperty(\'length\') === true. Actual: ' + (isNaN.hasOwnProperty('length')));
+}
+
+delete isNaN.length;
+
+//CHECK#2
+if (isNaN.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete isNaN.length; isNaN.hasOwnProperty(\'length\') === true. Actual: ' + (isNaN.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (isNaN.length === undefined) {
+ $ERROR('#3: delete isNaN.length; isNaN.length !== undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.3.js
new file mode 100644
index 000000000..0e8f44fc7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.4_A2.3;
+ * @section: 15.1.2.4;
+ * @assertion: The length property of isNaN has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+x = isNaN.length;
+isNaN.length = Infinity;
+if (isNaN.length !== x) {
+ $ERROR('#1: x = isNaN.length; isNaN.length = Infinity; isNaN.length === x. Actual: ' + (isNaN.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.4.js
new file mode 100644
index 000000000..48af19758
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.4_A2.4;
+ * @section: 15.1.2.4;
+ * @assertion: The length property of isNaN is 1;
+ * @description: isNaN.length === 1;
+*/
+
+//CHECK#1
+if (isNaN.length !== 1) {
+ $ERROR('#1: isNaN.length === 1. Actual: ' + (isNaN.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.5.js
new file mode 100644
index 000000000..e42438535
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.4_A2.5;
+ * @section: 15.1.2.4, 15.2.4.7, 12.6.4;
+ * @assertion: The isNaN property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('isNaN') !== false) {
+ $ERROR('#1: this.propertyIsEnumerable(\'isNaN\') === false. Actual: ' + (this.propertyIsEnumerable('isNaN')));
+}
+
+//CHECK#2
+var result = true;
+for (p in this){
+ if (p === "isNaN") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "isNaN") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.6.js
new file mode 100644
index 000000000..f1595ffb7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.4_A2.6;
+* @section: 15.1.2.4;
+* @assertion: The isNaN property has not prototype property;
+* @description: Checking isNaN.prototype;
+*/
+
+//CHECK#1
+if (isNaN.prototype !== undefined) {
+ $ERROR('#1: isNaN.prototype === undefined. Actual: ' + (isNaN.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.7.js
new file mode 100644
index 000000000..844d8db5c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.4_isNaN/S15.1.2.4_A2.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.4_A2.7;
+* @section: 15.1.2.4, 11.2.2;
+* @assertion: The isNaN property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new isNaN();
+ $ERROR('#1.1: new isNaN() throw TypeError. Actual: ' + (new isNaN()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new isNaN() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A1_T1.js
new file mode 100644
index 000000000..3c7a0744c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A1_T1.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.5_A1_T1;
+ * @section: 15.1.2.5;
+ * @assertion: isFinite applies ToNumber to its argument, then return false if the result is NaN, +Infinity, -Infinity, and otherwise return true;
+ * @description: Checking all primitive;
+*/
+
+// CHECK#1
+if (!(isFinite(NaN) === false)) {
+ $ERROR('#1: NaN === Not-a-Finite. Actual: ' + (NaN));
+}
+
+// CHECK#2
+if (!(isFinite(Number.NaN) === false)) {
+ $ERROR('#2: Number.NaN === Not-a-Finite. Actual: ' + (Number.NaN));
+}
+
+// CHECK#3
+if (!(isFinite(Number(void 0)) === false)) {
+ $ERROR('#3: Number(void 0) === Not-a-Finite. Actual: ' + (Number(void 0)));
+}
+
+// CHECK#4
+if (!(isFinite(void 0) === false)) {
+ $ERROR('#4: void 0 === Not-a-Finite. Actual: ' + (void 0));
+}
+
+// CHECK#5
+if (!(isFinite("string") === false)) {
+ $ERROR('#5: "string" === Not-a-Finite. Actual: ' + ("string"));
+}
+
+// CHECK#6
+if (isFinite(Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#6: Number.POSITIVE_INFINITY === Not-a-Finite. Actual: ' + (Number.POSITIVE_INFINITY));
+}
+
+// CHECK#7
+if (isFinite(Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#7: Number.NEGATIVE_INFINITY === Not-a-Finite. Actual: ' + (Number.NEGATIVE_INFINITY));
+}
+
+// CHECK#8
+if (isFinite(Number.MAX_VALUE) === false) {
+ $ERROR('#8: Number.MAX_VALUE !== Not-a-Finite');
+}
+
+// CHECK#9
+if (isFinite(Number.MIN_VALUE) === false) {
+ $ERROR('#9: Number.MIN_VALUE !== Not-a-Finite');
+}
+
+// CHECK#10
+if (isFinite(-0) === false) {
+ $ERROR('#10: -0 !== Not-a-Finite');
+}
+
+// CHECK#11
+if (isFinite(false) === false) {
+ $ERROR('#11: false !== Not-a-Finite');
+}
+
+// CHECK#12
+if (isFinite("1") === false) {
+ $ERROR('#12: "1" !== Not-a-Finite');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A1_T2.js
new file mode 100644
index 000000000..8557087e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A1_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.5_A1_T2;
+ * @section: 15.1.2.5;
+ * @assertion: isFinite applies ToNumber to its argument, then return false if the result is NaN, +Infinity, -Infinity, and otherwise return true;
+ * @description: Checking all object;
+*/
+
+// CHECK#1
+if (!(isFinite({}) === false)) {
+ $ERROR('#1: {} === Not-a-Finite. Actual: ' + ({}));
+}
+
+// CHECK#2
+if (!(isFinite(new String("string")) === false)) {
+ $ERROR('#2: new String("string") === Not-a-Finite. Actual: ' + (new String("string")));
+}
+
+// CHECK#3
+if (isFinite(new String("1")) === false) {
+ $ERROR('#3: new String("1") === Not-a-Finite. Actual: ' + (new String("1")));
+}
+
+// CHECK#4
+if (isFinite(new Number(1)) === false) {
+ $ERROR('#4: new Number(1) !== Not-a-Finite');
+}
+
+// CHECK#5
+if (!(isFinite(new Number(NaN)) === false)) {
+ $ERROR('#5: new Number(NaN) === Not-a-Finite. Actual: ' + (new Number(NaN)));
+}
+
+// CHECK#6
+if (isFinite(new Boolean(true)) === false) {
+ $ERROR('#6: new Boolean(true) !== Not-a-Finite');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.1.js
new file mode 100644
index 000000000..59cbe8a12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.5_A2.1;
+ * @section: 15.1.2.5, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of isFinite has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (isFinite.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: isFinite.propertyIsEnumerable(\'length\') === false. Actual: ' + (isFinite.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (p in isFinite){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in isFinite) { if (p === "length") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.2.js
new file mode 100644
index 000000000..f106d908c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.5_A2.2;
+ * @section: 15.1.2.5, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of isFinite has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+if (isFinite.hasOwnProperty('length') !== true) {
+ $FAIL('#1: isFinite.hasOwnProperty(\'length\') === true. Actual: ' + (isFinite.hasOwnProperty('length')));
+}
+
+delete isFinite.length;
+
+//CHECK#2
+if (isFinite.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete isFinite.length; isFinite.hasOwnProperty(\'length\') === true. Actual: ' + (isFinite.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (isFinite.length === undefined) {
+ $ERROR('#3: delete isFinite.length; isFinite.length !== undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.3.js
new file mode 100644
index 000000000..4cc8f8bff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.5_A2.3;
+ * @section: 15.1.2.5;
+ * @assertion: The length property of isFinite has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+x = isFinite.length;
+isFinite.length = Infinity;
+if (isFinite.length !== x) {
+ $ERROR('#1: x = isFinite.length; isFinite.length = Infinity; isFinite.length === x. Actual: ' + (isFinite.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.4.js
new file mode 100644
index 000000000..73d9fcda0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.5_A2.4;
+ * @section: 15.1.2.5;
+ * @assertion: The length property of isFinite is 1;
+ * @description: isFinite.length === 1;
+*/
+
+//CHECK#1
+if (isFinite.length !== 1) {
+ $ERROR('#1: isFinite.length === 1. Actual: ' + (isFinite.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.5.js
new file mode 100644
index 000000000..d89b2cc1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.5_A2.5;
+ * @section: 15.1.2.5, 15.2.4.7, 12.6.4;
+ * @assertion: The isFinite property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('isFinite') !== false) {
+ $ERROR('#1: this.propertyIsEnumerable(\'isFinite\') === false. Actual: ' + (this.propertyIsEnumerable('isFinite')));
+}
+
+//CHECK#2
+var result = true;
+for (p in this){
+ if (p === "isFinite") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "isFinite") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.6.js
new file mode 100644
index 000000000..15e691b3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.5_A2.6;
+* @section: 15.1.2.5;
+* @assertion: The isFinite property has not prototype property;
+* @description: Checking isFinit.prototype;
+*/
+
+//CHECK#1
+if (isFinite.prototype !== undefined) {
+ $ERROR('#1: isFinite.prototype === undefined. Actual: ' + (isFinite.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.7.js
new file mode 100644
index 000000000..43519bd6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.2_Function_Properties_of_the_Global_Object/15.1.2.5_isFinite/S15.1.2.5_A2.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.2.5_A2.7;
+* @section: 15.1.2.5, 11.2.2;
+* @assertion: The isFinite property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new isFinite();
+ $ERROR('#1.1: new isFinite() throw TypeError. Actual: ' + (new isFinite()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new isFinite() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.10_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.10_T1.js
new file mode 100644
index 000000000..d800b8b88
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.10_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.
+
+/**
+ * @name: S15.1.3.1_A1.10_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 110xxxxx (n = 2) and string.charAt(k + 4) and
+ * string.charAt(k + 5) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests;
+*/
+
+//CHECK
+var result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (var indexI = 0; indexI < interval.length; indexI++) {
+ for (var indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURI("%C0%" + String.fromCharCode(indexJ, indexJ));
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 110xxxxx (n = 2) and (string.charAt(k + 4) and string.charAt(k + 5)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.11_T1.js
new file mode 100644
index 000000000..a70f84b26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.11_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.11_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 1110xxxx (n = 3) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 4) and string.charAt(k + 5)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+var result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (var indexI = 0; indexI < interval.length; indexI++) {
+ for (var indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURI("%E0%" + String.fromCharCode(indexJ, indexJ) + "%A0");
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 1110xxxx (n = 3) and (string.charAt(k + 4) and string.charAt(k + 5)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.11_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.11_T2.js
new file mode 100644
index 000000000..0226c0dd1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.11_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.11_T2;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 1110xxxx (n = 3) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 7) and string.charAt(k + 8)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+var result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (var indexI = 0; indexI < interval.length; indexI++) {
+ for (var indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURI("%E0%" + "%A0" + String.fromCharCode(indexJ, indexJ));
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 1110xxxx (n = 3) and (string.charAt(k + 7) and string.charAt(k + 8)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T1.js
new file mode 100644
index 000000000..6d42b79e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.12_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) or (string.charAt(k + 10) and
+ * string.charAt(k + 11)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 4) and string.charAt(k + 5)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+var result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (var indexI = 0; indexI < interval.length; indexI++) {
+ for (var indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURI("%F0%" + String.fromCharCode(indexJ, indexJ) + "%A0%A0");
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 11110xxx (n = 4) and (string.charAt(k + 4) and string.charAt(k + 5)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T2.js
new file mode 100644
index 000000000..ca20a9ff1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.12_T2;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) or (string.charAt(k + 10) and
+ * string.charAt(k + 11)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 7) and string.charAt(k + 7)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+var result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (var indexI = 0; indexI < interval.length; indexI++) {
+ for (var indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURI("%F0%" + "%A0" + String.fromCharCode(indexJ, indexJ) + "%A0");
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 11110xxx (n = 4) and (string.charAt(k + 7) and string.charAt(k + 8)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T3.js
new file mode 100644
index 000000000..c5a3bd5f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.12_T3.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.12_T3;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) or (string.charAt(k + 10) and
+ * string.charAt(k + 11)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 10) and string.charAt(k + 11)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+var result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (var indexI = 0; indexI < interval.length; indexI++) {
+ for (var indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURI("%F0%" + "%A0%A0" + String.fromCharCode(indexJ, indexJ));
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 11110xxx (n = 4) and (string.charAt(k + 10) and string.charAt(k + 11)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.13_T1.js
new file mode 100644
index 000000000..a0ce645a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.13_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.13_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 110xxxxx (n = 2) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xC0 - 0xDF], C = [0x00, 0x7F];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xC0; indexB <= 0xDF; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0x00; indexC <= 0x7F; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.13_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.13_T2.js
new file mode 100644
index 000000000..5a4351f68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.13_T2.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.13_T2;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 110xxxxx (n = 2) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xC0 - 0xDF], C = [0xC0, 0xFF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xC0; indexB <= 0xDF; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T1.js
new file mode 100644
index 000000000..af76abb08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.14_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 1110xxxx (n = 3) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF], C = [0x00, 0x7F];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xE0; indexB <= 0xEF; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0x00; indexC <= 0x7F; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%" + hexC.substring(2) + "%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T2.js
new file mode 100644
index 000000000..cf51bb7d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T2.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.14_T2;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 1110xxxx (n = 3) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF], C = [0x00, 0x7F];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xE0; indexB <= 0xEF; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0x00; indexC <= 0x7F; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%A0" + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T3.js
new file mode 100644
index 000000000..244c24a01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T3.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.14_T3;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 1110xxxx (n = 3) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF], C = [0xC0, 0xFF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xE0; indexB <= 0xEF; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%" + hexC.substring(2) + "%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T4.js
new file mode 100644
index 000000000..8055cc9e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.14_T4.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.14_T4;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 1110xxxx (n = 3) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF], C = [0xC0, 0xFF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xE0; indexB <= 0xEF; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%A0" + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T1.js
new file mode 100644
index 000000000..372c355a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.15_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0x00, 0x7F];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0x00; indexC <= 0x7F; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%" + hexC.substring(2) + "%A0%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T2.js
new file mode 100644
index 000000000..39e01c2d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T2.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.15_T2;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0x00, 0x7F];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0x00; indexC <= 0x7F; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%A0" + "%" + hexC.substring(2) + "%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T3.js
new file mode 100644
index 000000000..3981a593b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T3.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.15_T3;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0x00, 0x7F];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0x00; indexC <= 0x7F; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%A0%A0" + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T4.js
new file mode 100644
index 000000000..c918c27f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T4.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.15_T4;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0xC0, 0xFF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%" + hexC.substring(2) + "%A0%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T5.js
new file mode 100644
index 000000000..0ce7006c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T5.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.15_T5;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0xC0, 0xFF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%A0" + "%" + hexC.substring(2) + "%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T6.js
new file mode 100644
index 000000000..0cd966c86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.15_T6.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.15_T6;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0xC0, 0xFF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ var hexB = decimalToHexString(indexB);
+ var result = true;
+ for (var indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ var hexC = decimalToHexString(indexC);
+ try {
+ decodeURI("%" + hexB.substring(2) + "%A0%A0" + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.1_T1.js
new file mode 100644
index 000000000..9b37c99de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.1_T1.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.1_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If string.charAt(k) equal "%" and k + 2 >= string.length, throw URIError;
+ * @description: Complex tests;
+*/
+
+var result = true;
+
+//CHECK#1
+try {
+ decodeURI("%");
+ result = false;
+} catch(e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+}
+
+//CHECK#2
+try {
+ decodeURI("%A");
+ result = false;
+} catch(e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+}
+
+//CHECK#3
+try {
+ decodeURI("%1");
+ result = false;
+} catch(e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+}
+
+//CHECK#4
+try {
+ decodeURI("% ");
+ result = false;
+} catch(e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If string.charAt(k) equal "%" and k + 2 >= string.length, throw URIError');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.2_T1.js
new file mode 100644
index 000000000..f39d45137
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.2_T1.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.2_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = string.charAt(k+1) + string.charAt(k+2) do not represent
+ * hexadecimal digits, throw URIError;
+ * @description: Complex tests;
+*/
+
+//CHECK
+var result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (var indexI = 0; indexI < interval.length; indexI++) {
+ for (var indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURI("%" + String.fromCharCode(indexJ) + "1");
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If string.charAt(k+1) does not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.2_T2.js
new file mode 100644
index 000000000..67cbe4b3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.2_T2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.2_T2;
+ * @section: 15.1.3.1;
+ * @assertion: If B = string.charAt(k+1) + string.charAt(k+2) do not represent
+ * hexadecimal digits, throw URIError;
+ * @description: Complex tests;
+*/
+
+//CHECK
+var result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (var indexI = 0; indexI < interval.length; indexI++) {
+ for (var indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURI("%" + "1" + String.fromCharCode(indexJ));
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If string.charAt(k+2) does not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.3_T1.js
new file mode 100644
index 000000000..d5f247bdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.3_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.3_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 10xxxxxx or B = 11111xxx, throw URIError;
+ * @description: Complex tests. B = 10xxxxxx -> B in [0x80 - 0xBF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0x80; index <= 0xBF; index++) {
+ count++;
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.3_T2.js
new file mode 100644
index 000000000..1c44ab422
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.3_T2.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.3_T2;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 10xxxxxx or B = 11111xxx, throw URIError;
+ * @description: Complex tests. B = 11111xxx -> B in [0xF8 - 0xFF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xF8; index <= 0xFF; index++) {
+ count++;
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.4_T1.js
new file mode 100644
index 000000000..bb40def18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.4_T1.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.4_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 110xxxxx (n = 2) and (k + 2) + 3 >= length, throw URIError;
+ * @description: Complex tests. B = [0xC0 - 0xDF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xC0; index <= 0xDF; index++) {
+ count++;
+ var str = "";
+ var result = true;
+ for (var len = 0; len < 3; len++) {
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2) + str);
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ str = str + "1";
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.5_T1.js
new file mode 100644
index 000000000..5b25ea14b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.5_T1.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.5_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 1110xxxx (n = 3) and (k + 2) + 6 >= length, throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xE0; index <= 0xEF; index++) {
+ count++;
+ var str = "";
+ var result = true;
+ for (var len = 0; len < 6; len++) {
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2) + str);
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ str = str + "1";
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.6_T1.js
new file mode 100644
index 000000000..53f4f5221
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.6_T1.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.6_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and (k + 2) + 9 >= length, throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0xF7];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xF0; index <= 0xF7; index++) {
+ count++;
+ var str = "";
+ var result = true;
+ for (var len = 0; len < 9; len++) {
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2) + str);
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ str = str + "1";
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.7_T1.js
new file mode 100644
index 000000000..50020d035
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.7_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.7_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 110xxxxx (n = 2) and string.charAt(k + 3) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xC0 - 0xDF];
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xC0; index <= 0xDF; index++) {
+ count++;
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2) + "111");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.8_T1.js
new file mode 100644
index 000000000..32ab3a51d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.8_T1.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.8_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 1110xxxx (n = 3) and string.charAt(k + 3),
+ * string.charAt(k + 6) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF],
+ * string.charAt(k + 3) not equal "%";
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xE0; index <= 0xEF; index++) {
+ count++;
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2) + "111%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.8_T2.js
new file mode 100644
index 000000000..a8c7ff558
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.8_T2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.8_T2;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 1110xxxx (n = 3) and string.charAt(k + 3),
+ * string.charAt(k + 6) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF],
+ * string.charAt(k + 6) not equal "%";
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xE0; index <= 0xEF; index++) {
+ count++;
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2) + "%A0111");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T1.js
new file mode 100644
index 000000000..d47bcbbe7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T1.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.9_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and string.charAt(k + 3),
+ * string.charAt(k + 6), string.charAt(k + 9) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7],
+ * string.charAt(k + 3) not equal "%";
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xF0; index <= 0xF7; index++) {
+ count++;
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2) + "111%A0%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T2.js
new file mode 100644
index 000000000..b07f5fafb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.9_T2;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and string.charAt(k + 3),
+ * string.charAt(k + 6), string.charAt(k + 9) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7],
+ * string.charAt(k + 6) not equal "%";
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xF0; index <= 0xF7; index++) {
+ count++;
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2) + "%A0111%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T3.js
new file mode 100644
index 000000000..ad264d95b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A1.9_T3.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A1.9_T3;
+ * @section: 15.1.3.1;
+ * @assertion: If B = 11110xxx (n = 4) and string.charAt(k + 3),
+ * string.charAt(k + 6), string.charAt(k + 9) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7],
+ * string.charAt(k + 9) not equal "%";
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var index = 0xF0; index <= 0xF7; index++) {
+ count++;
+ var hex = decimalToHexString(index);
+ try {
+ decodeURI("%" + hex.substring(2) + "%A0%A0111");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.1_T1.js
new file mode 100644
index 000000000..f0eec895e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.1_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A2.1_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If string.charAt(k) not equal "%", return this char;
+ * @description: Complex tests;
+*/
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+for (var indexI = 0; indexI <= 65535; indexI++) {
+ if (indexI !== 0x25) {
+ var hex = decimalToHexString(indexI);
+ try {
+ var str = String.fromCharCode(indexI);
+ if (decodeURI(str) !== str) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e){
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.2_T1.js
new file mode 100644
index 000000000..acfaad1e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.2_T1.js
@@ -0,0 +1,83 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A2.2_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B1 = 0xxxxxxxx ([0x00 - 0x7F]), without [uriReserved, #], return B1;
+ * @description: Complex tests, use RFC 3629;
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+var uriReserved = [";", "/", "?", ":", "@", "&", "=", "+", "$", ","];
+l:
+for (var indexB1 = 0x00; indexB1 <= 0x7F; indexB1++) {
+ count++;
+ var hexB1 = decimalToHexString(indexB1);
+ var index = indexB1;
+ try {
+ var hex = String.fromCharCode(index);
+ for (indexC = 0; indexC < uriReserved.length; indexC++) {
+ if (hex === uriReserved[indexC]) continue l;
+ }
+ if (hex === "#") continue l;
+ if (decodeURI("%" + hexB1.substring(2)) === hex) continue;
+ } catch (e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.3_T1.js
new file mode 100644
index 000000000..16202503c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.3_T1.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A2.3_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B1 = 110xxxxx ([0xC0 - 0xDF]), B2 = 10xxxxxx ([0x80 - 0xBF), without B1 = [0xC0, 0xC1], return UTF8(B1, B2);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB1 = 0xC2; indexB1 <= 0xDF; indexB1++) {
+ var hexB1 = decimalToHexString(indexB1);
+ for (var indexB2 = 0x80; indexB2 <= 0xBF; indexB2++) {
+ count++;
+ var hexB2 = decimalToHexString(indexB2);
+ var index = (indexB1 & 0x1F) * 0x40 + (indexB2 & 0x3F);
+ try {
+ if (decodeURI("%" + hexB1.substring(2) + "%" + hexB2.substring(2)) === String.fromCharCode(index)) continue;
+ } catch (e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.4_T1.js
new file mode 100644
index 000000000..b2d8d9c0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.4_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A2.4_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B1 = 1110xxxx ([0xE0 - 0xEF]), B2, B3 = 10xxxxxxx ([0x80 - 0xBF]), without [B1, B2] = [0xE0, 0x80 - 0x9F], [0xED, 0xA0 - 0xBF] (0xD800 - 0xDFFF), return UTF8(B1, B2, B3);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB1 = 0xE0; indexB1 <= 0xEF; indexB1++) {
+ var hexB1 = decimalToHexString(indexB1);
+ for (var indexB2 = 0x80; indexB2 <= 0xBF; indexB2++) {
+ if ((indexB1 === 0xE0) && (indexB2 <= 0x9F)) continue;
+ if ((indexB1 === 0xED) && (0xA0 <= indexB2)) continue;
+ var hexB2 = decimalToHexString(indexB2);
+ for (var indexB3 = 0x80; indexB3 <= 0xBF; indexB3++) {
+ count++;
+ var hexB3 = decimalToHexString(indexB3);
+ var index = (indexB1 & 0x0F) * 0x1000 + (indexB2 & 0x3F) * 0x40 + (indexB3 & 0x3F);
+ try {
+ if (decodeURI("%" + hexB1.substring(2) + "%" + hexB2.substring(2) + "%" + hexB3.substring(2)) === String.fromCharCode(index)) continue;
+ } catch (e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.5_T1.js
new file mode 100644
index 000000000..354f46904
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A2.5_T1.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A2.5_T1;
+ * @section: 15.1.3.1;
+ * @assertion: If B1 = 11110xxx ([0xF0 - 0x0F4]), B2, B3, B4 = 10xxxxxxx ([0x80 - 0xBF]), without [B1, B2] = [0xF0, 0x80 - 0x9F], [0xF4, 0x90 - 0xBF], return UTF8(B1, B2, B3, B4);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+var errorCount = 0;
+var count = 0;
+var indexP;
+var indexO = 0;
+
+for (var indexB1 = 0xF0; indexB1 <= 0xF4; indexB1++) {
+ var hexB1 = decimalToHexString(indexB1);
+ for (var indexB2 = 0x80; indexB2 <= 0xBF; indexB2++) {
+ if ((indexB1 === 0xF0) && (indexB2 <= 0x9F)) continue;
+ if ((indexB1 === 0xF4) && (indexB2 >= 0x90)) continue;
+ var hexB2 = decimalToHexString(indexB2);
+ for (var indexB3 = 0x80; indexB3 <= 0xBF; indexB3++) {
+ var hexB3 = decimalToHexString(indexB3);
+ for (var indexB4 = 0x80; indexB4 <= 0xBF; indexB4++) {
+ var hexB4 = decimalToHexString(indexB4);
+ count++;
+ var index = (indexB1 & 0x07) * 0x40000 + (indexB2 & 0x3F) * 0x1000 + (indexB3 & 0x3F) * 0x40 + (indexB4 & 0x3F);
+ var L = ((index - 0x10000) & 0x03FF) + 0xDC00;
+ var H = (((index - 0x10000) >> 10) & 0x03FF) + 0xD800;
+ try {
+ if (decodeURI("%" + hexB1.substring(3) + "%" + hexB2.substring(3) + "%" + hexB3.substring(3) + "%" + hexB4.substring(3)) === String.fromCharCode(H) + String.fromCharCode(L)) continue;
+ } catch (e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 4; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T1.js
new file mode 100644
index 000000000..93ecb1df2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A3_T1;
+ * @section: 15.1.3.1;
+ * @assertion: Let reservedURISet be a string containing one instance of each character valid
+ * in uriReserved plus "#";
+ * @description: Checking all character in reservedURISet. HexDigit in [0..9, A..F];
+*/
+
+//CHECK#1
+if (decodeURI("%3B") !== "%3B") {
+ $ERROR('#1: decodeURI("%3B") equal "%3B", not ";"');
+}
+
+//CHECK#2
+if (decodeURI("%2F") !== "%2F") {
+ $ERROR('#2: decodeURI("%2F") equal "%2F", not "/"');
+}
+
+//CHECK#3
+if (decodeURI("%3F") !== "%3F") {
+ $ERROR('#3: decodeURI("%3F") equal "%3F", not "?"');
+}
+
+//CHECK#4
+if (decodeURI("%3A") !== "%3A") {
+ $ERROR('#4: decodeURI("%3A") equal "%3A", not ":"');
+}
+
+//CHECK#5
+if (decodeURI("%40") !== "%40") {
+ $ERROR('#5: decodeURI("%40") equal "%40", not "@"');
+}
+
+//CHECK#6
+if (decodeURI("%26") !== "%26") {
+ $ERROR('#6: decodeURI("%26") equal "%26", not "&"');
+}
+
+//CHECK#7
+if (decodeURI("%3D") !== "%3D") {
+ $ERROR('#7.1: decodeURI("%3D") equal "%3D", not "="');
+}
+
+//CHECK#8
+if (decodeURI("%2B") !== "%2B") {
+ $ERROR('#8.1: decodeURI("%2B") equal "%2B", not "+"');
+}
+
+//CHECK#9
+if (decodeURI("%24") !== "%24") {
+ $ERROR('#9: decodeURI("%24") equal "%24", not "$"');
+}
+
+//CHECK#10
+if (decodeURI("%2C") !== "%2C") {
+ $ERROR('#10: decodeURI("%2C") equal "%2C", not ","');
+}
+
+//CHECK#11
+if (decodeURI("%23") !== "%23") {
+ $ERROR('#11: decodeURI("%23") equal "%23", not "#"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T2.js
new file mode 100644
index 000000000..e21acacbe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T2.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A3_T2;
+ * @section: 15.1.3.1;
+ * @assertion: Let reservedURISet be a string containing one instance of each character valid
+ * in uriReserved plus "#";
+ * @description: Checking all character in reservedURISet. HexDigit in [0..9, a..f];
+*/
+
+//CHECK#1
+if (decodeURI("%3b") !== "%3b") {
+ $ERROR('#1: decodeURI("%3b") equal "%3b", not ";" or "%3B"');
+}
+
+//CHECK#2
+if (decodeURI("%2f") !== "%2f") {
+ $ERROR('#2: decodeURI("%2f") equal "%2f", not "/" or "%2F"');
+}
+
+//CHECK#3
+if (decodeURI("%3f") !== "%3f") {
+ $ERROR('#3: decodeURI("%3f") equal "%3f", not "?" or "%3F"');
+}
+
+//CHECK#4
+if (decodeURI("%3a") !== "%3a") {
+ $ERROR('#4: decodeURI("%3a") equal "%3a", not ":" or "%3A"');
+}
+
+//CHECK#5
+if (decodeURI("%40") !== "%40") {
+ $ERROR('#5: decodeURI("%40") equal "%40", not "@"');
+}
+
+//CHECK#6
+if (decodeURI("%26") !== "%26") {
+ $ERROR('#6: decodeURI("%26") equal "%26", not "&"');
+}
+
+//CHECK#7
+if (decodeURI("%3d") !== "%3d") {
+ $ERROR('#7.1: decodeURI("%3d") equal "%3d", not "=" or "%3D"');
+}
+
+//CHECK#8
+if (decodeURI("%2b") !== "%2b") {
+ $ERROR('#8.1: decodeURI("%2b") equal "%2b", not "+" or "%2B"');
+}
+
+//CHECK#9
+if (decodeURI("%24") !== "%24") {
+ $ERROR('#9: decodeURI("%24") equal "%24", not "$"');
+}
+
+//CHECK#10
+if (decodeURI("%2c") !== "%2c") {
+ $ERROR('#10: decodeURI("%2c") equal "%2c", not "," or "%2C"');
+}
+
+//CHECK#11
+if (decodeURI("%23") !== "%23") {
+ $ERROR('#11: decodeURI("%23") equal "%23", not "#"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T3.js
new file mode 100644
index 000000000..7c4f4754a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A3_T3;
+ * @section: 15.1.3.1;
+ * @assertion: Let reservedURISet be a string containing one instance of each character valid
+ * in uriReserved plus "#";
+ * @description: Complex test;
+*/
+
+//CHECK#1
+if (decodeURI("%3B%2F%3F%3A%40%26%3D%2B%24%2C%23") !== "%3B%2F%3F%3A%40%26%3D%2B%24%2C%23") {
+ $ERROR('#1: decodeURI("%3B%2F%3F%3A%40%26%3D%2B%24%2C%23") equal "%3B%2F%3F%3A%40%26%3D%2B%24%2C%23", not ";/?:@&=+$,#"');
+}
+
+//CHECK#2
+if (decodeURI("%3b%2f%3f%3a%40%26%3d%2b%24%2c%23") !== "%3b%2f%3f%3a%40%26%3d%2b%24%2c%23") {
+ $ERROR('#2: decodeURI("%3b%2f%3f%3a%40%26%3d%2b%24%2c%23") equal "%3b%2f%3f%3a%40%26%3d%2b%24%2c%23", not ";/?:@&=+$,#" or "%3B%2F%3F%3A%40%26%3D%2B%24%2C%23"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T1.js
new file mode 100644
index 000000000..cf4a6edf0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A4_T1;
+ * @section: 15.1.3.1;
+ * @assertion: URI tests;
+ * @description: Checking ENGLISH ALPHABET;
+*/
+
+//CHECK#1
+if (decodeURI("http://unipro.ru/0123456789") !== "http://unipro.ru/0123456789") {
+ $ERROR('#1: http://unipro.ru/0123456789');
+}
+
+//CHECK#2
+if (decodeURI("%41%42%43%44%45%46%47%48%49%4A%4B%4C%4D%4E%4F%50%51%52%53%54%55%56%57%58%59%5A") !== "ABCDEFGHIJKLMNOPQRSTUVWXYZ") {
+ $ERROR('#2: ABCDEFGHIJKLMNOPQRSTUVWXYZ');
+}
+
+//CHECK#3
+if (decodeURI("%61%62%63%64%65%66%67%68%69%6A%6B%6C%6D%6E%6F%70%71%72%73%74%75%76%77%78%79%7A") !== "abcdefghijklmnopqrstuvwxyz") {
+ $ERROR('#3: abcdefghijklmnopqrstuvwxyz');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T2.js
new file mode 100644
index 000000000..4e54f818f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A4_T2;
+ * @section: 15.1.3.1;
+ * @assertion: URI tests;
+ * @description: Checking RUSSIAN ALPHABET;
+*/
+
+//CHECK#1
+if (decodeURI("http://ru.wikipedia.org/wiki/%d0%ae%D0%bd%D0%B8%D0%BA%D0%BE%D0%B4") !== "http://ru.wikipedia.org/wiki/Юникод") {
+ $ERROR('#1: http://ru.wikipedia.org/wiki/Юникод');
+}
+
+//CHECK#2
+if (decodeURI("http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8") !== "http://ru.wikipedia.org/wiki/Юникод#Ссылки") {
+ $ERROR('#2: http://ru.wikipedia.org/wiki/Юникод#Ссылки');
+}
+
+//CHECK#3
+if (decodeURI("http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%23%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0") !== "http://ru.wikipedia.org/wiki/Юникод%23Версии Юникода") {
+ $ERROR('#3: http://ru.wikipedia.org/wiki/Юникод%23Версии Юникода');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T3.js
new file mode 100644
index 000000000..2019fdbfd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A4_T3;
+ * @section: 15.1.3.1;
+ * @assertion: URI tests;
+ * @description: Checking URL with Line Terminator;
+*/
+
+//CHECK#1
+if (decodeURI("http://unipro.ru/%0Aabout") !== "http://unipro.ru/\nabout") {
+ $ERROR('#1: http://unipro.ru/%A0about');
+}
+
+//CHECK#2
+if (decodeURI("http://unipro.ru/%0Babout") !== "http://unipro.ru/\vabout") {
+ $ERROR('#2: http://unipro.ru/%0Babout');
+}
+
+//CHECK#3
+if (decodeURI("http://unipro.ru/%0Cabout") !== "http://unipro.ru/\fabout") {
+ $ERROR('#3: http://unipro.ru/%0Cabout');
+}
+
+//CHECK#4
+if (decodeURI("http://unipro.ru/%0Dabout") !== "http://unipro.ru/\rabout") {
+ $ERROR('#4: http://unipro.ru/%0Dabout');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T4.js
new file mode 100644
index 000000000..4ce97f71b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A4_T4;
+ * @section: 15.1.3.1;
+ * @assertion: URI tests;
+ * @description: Test some url;
+*/
+
+//CHECK#1
+if (decodeURI("") !== "") {
+ $ERROR('#1: ""');
+}
+
+//CHECK#2
+if (decodeURI("http:%2f%2Funipro.ru") !== "http:%2f%2Funipro.ru") {
+ $ERROR('#2: http:%2f%2Funipro.ru');
+}
+
+//CHECK#3
+if (decodeURI("http://www.google.ru/support/jobs/bin/static.py%3Fpage%3dwhy-ru.html%26sid%3Dliveandwork") !== "http://www.google.ru/support/jobs/bin/static.py%3Fpage%3dwhy-ru.html%26sid%3Dliveandwork") {
+ $ERROR('#3: http://www.google.ru/support/jobs/bin/static.py%3Fpage%3dwhy-ru.html%26sid%3Dliveandwork"');
+}
+
+//CHECK%234
+if (decodeURI("http://en.wikipedia.org/wiki/UTF-8%23Description") !== "http://en.wikipedia.org/wiki/UTF-8%23Description") {
+ $ERROR('%234: http://en.wikipedia.org/wiki/UTF-8%23Description');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.1.js
new file mode 100644
index 000000000..51c60350d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A5.1;
+ * @section: 15.1.3.1, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of decodeURI has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (decodeURI.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: decodeURI.propertyIsEnumerable(\'length\') === false. Actual: ' + (decodeURI.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+result = true;
+for (p in decodeURI){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in decodeURI) { if (p === "length") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.2.js
new file mode 100644
index 000000000..296f3922c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A5.2;
+ * @section: 15.1.3.1, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of decodeURI has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+if (decodeURI.hasOwnProperty('length') !== true) {
+ $FAIL('#1: decodeURI.hasOwnProperty(\'length\') === true. Actual: ' + (decodeURI.hasOwnProperty('length')));
+}
+
+delete decodeURI.length;
+
+//CHECK#2
+if (decodeURI.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete decodeURI.length; decodeURI.hasOwnProperty(\'length\') === true. Actual: ' + (decodeURI.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (decodeURI.length === undefined) {
+ $ERROR('#3: delete decodeURI.length; decodeURI.length !== undefined');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.3.js
new file mode 100644
index 000000000..62b0a8915
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A5.3;
+ * @section: 15.1.3.1;
+ * @assertion: The length property of decodeURI has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+var x = decodeURI.length;
+decodeURI.length = Infinity;
+if (decodeURI.length !== x) {
+ $ERROR('#1: x = decodeURI.length; decodeURI.length = Infinity; decodeURI.length === x. Actual: ' + (decodeURI.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.4.js
new file mode 100644
index 000000000..42096a1ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A5.4;
+ * @section: 15.1.3.1;
+ * @assertion: The length property of decodeURI is 1;
+ * @description: decodeURI.length === 1;
+*/
+
+//CHECK#1
+if (decodeURI.length !== 1) {
+ $ERROR('#1: decodeURI.length === 1. Actual: ' + (decodeURI.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.5.js
new file mode 100644
index 000000000..93cdb038e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A5.5;
+ * @section: 15.1.3.1, 15.2.4.7, 12.6.4;
+ * @assertion: The decodeURI property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('decodeURI') !== false) {
+ $ERROR('#1: this.propertyIsEnumerable(\'decodeURI\') === false. Actual: ' + (this.propertyIsEnumerable('decodeURI')));
+}
+
+//CHECK#2
+result = true;
+for (p in this){
+ if (p === "decodeURI") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "decodeURI") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.6.js
new file mode 100644
index 000000000..627875f77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.3.1_A5.6;
+* @section: 15.1.3.1;
+* @assertion: The decodeURI property has not prototype property;
+* @description: Checking decodeURI.prototype;
+*/
+
+//CHECK#1
+if (decodeURI.prototype !== undefined) {
+ $ERROR('#1: decodeURI.prototype === undefined. Actual: ' + (decodeURI.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.7.js
new file mode 100644
index 000000000..8cc75c1fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.3.1_A5.7;
+* @section: 15.1.3.1, 11.2.2;
+* @assertion: The decodeURI property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new decodeURI();
+ $ERROR('#1.1: new decodeURI() throw TypeError. Actual: ' + (new decodeURI()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new decodeURI() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A6_T1.js
new file mode 100644
index 000000000..4c1278677
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.1_decodeURI/S15.1.3.1_A6_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.1_A6_T1;
+ * @section: 15.1.3.1, 9.8, 8.6.2.6;
+ * @assertion: Operator use ToString;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, String);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return "%5E"}};
+if (decodeURI(object) !== "[object Object]") {
+ $ERROR('#1: var object = {valueOf: function() {return "%5E"}}; decodeURI(object) === [object Object]. Actual: ' + (decodeURI(object)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return ""}, toString: function() {return "%5E"}};
+if (decodeURI(object) !== "^") {
+ $ERROR('#2: var object = {valueOf: function() {return ""}, toString: function() {return "%5E"}}; decodeURI(object) === "^". Actual: ' + (decodeURI(object)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return "%5E"}, toString: function() {return {}}};
+if (decodeURI(object) !== "^") {
+ $ERROR('#3: var object = {valueOf: function() {return "%5E"}, toString: function() {return {}}}; decodeURI(object) === "^". Actual: ' + (decodeURI(object)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return "%5E"}};
+ if (decodeURI(object) !== "^") {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return "%5E"}}; decodeURI(object) === "^". Actual: ' + (decodeURI(object)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return "%5E"}}; decodeURI(object) not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return "%5E"}}; decodeURI(object) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return "%5E"}};
+if (decodeURI(object) !== "^") {
+ $ERROR('#5: var object = {toString: function() {return "%5E"}}; decodeURI(object) === "^". Actual: ' + (decodeURI(object)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return "%5E"}}
+if (decodeURI(object) !== "^") {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return "%5E"}}; decodeURI(object) === "^". Actual: ' + (decodeURI(object)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return "%5E"}, toString: function() {throw "error"}};
+ decodeURI(object);
+ $ERROR('#7.1: var object = {valueOf: function() {return "%5E"}, toString: function() {throw "error"}}; decodeURI(object) throw "error". Actual: ' + (decodeURI(object)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return "%5E"}, toString: function() {throw "error"}}; decodeURI(object) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ decodeURI(object);
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; decodeURI(object) throw TypeError. Actual: ' + (decodeURI(object)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; decodeURI(object) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.10_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.10_T1.js
new file mode 100644
index 000000000..f6a83a53f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.10_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.
+
+/**
+ * @name: S15.1.3.2_A1.10_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 110xxxxx (n = 2) and string.charAt(k + 4) and
+ * string.charAt(k + 5) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests;
+*/
+
+//CHECK
+result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (indexI = 0; indexI < interval.length; indexI++) {
+ for (indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURIComponent("%C0%" + String.fromCharCode(indexJ, indexJ));
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 110xxxxx (n = 2) and (string.charAt(k + 4) and string.charAt(k + 5)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.11_T1.js
new file mode 100644
index 000000000..0063212b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.11_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.11_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 1110xxxx (n = 3) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 4) and string.charAt(k + 5)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (indexI = 0; indexI < interval.length; indexI++) {
+ for (indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURIComponent("%E0%" + String.fromCharCode(indexJ, indexJ) + "%A0");
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 1110xxxx (n = 3) and (string.charAt(k + 4) and string.charAt(k + 5)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.11_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.11_T2.js
new file mode 100644
index 000000000..9158fc453
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.11_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.11_T2;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 1110xxxx (n = 3) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 7) and string.charAt(k + 8)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (indexI = 0; indexI < interval.length; indexI++) {
+ for (indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURIComponent("%E0%" + "%A0" + String.fromCharCode(indexJ, indexJ));
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 1110xxxx (n = 3) and (string.charAt(k + 7) and string.charAt(k + 8)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T1.js
new file mode 100644
index 000000000..357d9b5f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.12_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) or (string.charAt(k + 10) and
+ * string.charAt(k + 11)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 4) and string.charAt(k + 5)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (indexI = 0; indexI < interval.length; indexI++) {
+ for (indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURIComponent("%F0%" + String.fromCharCode(indexJ, indexJ) + "%A0%A0");
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 11110xxx (n = 4) and (string.charAt(k + 4) and string.charAt(k + 5)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T2.js
new file mode 100644
index 000000000..7d1fa2050
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.12_T2;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) or (string.charAt(k + 10) and
+ * string.charAt(k + 11)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 7) and string.charAt(k + 7)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (indexI = 0; indexI < interval.length; indexI++) {
+ for (indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURIComponent("%F0%" + "%A0" + String.fromCharCode(indexJ, indexJ) + "%A0");
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 11110xxx (n = 4) and (string.charAt(k + 7) and string.charAt(k + 8)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T3.js
new file mode 100644
index 000000000..b2e5903cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.12_T3.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.12_T3;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and (string.charAt(k + 4) and
+ * string.charAt(k + 5)) or (string.charAt(k + 7) and
+ * string.charAt(k + 8)) or (string.charAt(k + 10) and
+ * string.charAt(k + 11)) do not represent hexadecimal digits, throw URIError;
+ * @description: Complex tests, string.charAt(k + 10) and string.charAt(k + 11)
+ * do not represent hexadecimal digits;
+*/
+
+//CHECK
+result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (indexI = 0; indexI < interval.length; indexI++) {
+ for (indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURIComponent("%F0%" + "%A0%A0" + String.fromCharCode(indexJ, indexJ));
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If B = 11110xxx (n = 4) and (string.charAt(k + 10) and string.charAt(k + 11)) do not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.13_T1.js
new file mode 100644
index 000000000..865544b9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.13_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.13_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 110xxxxx (n = 2) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xC0 - 0xDF], C = [0x00, 0x7F];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xC0; indexB <= 0xDF; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0x00; indexC <= 0x7F; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.13_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.13_T2.js
new file mode 100644
index 000000000..ddfb4be3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.13_T2.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.13_T2;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 110xxxxx (n = 2) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xC0 - 0xDF], C = [0xC0, 0xFF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xC0; indexB <= 0xDF; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T1.js
new file mode 100644
index 000000000..b768d3158
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.14_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 1110xxxx (n = 3) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF], C = [0x00, 0x7F];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xE0; indexB <= 0xEF; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0x00; indexC <= 0x7F; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%" + hexC.substring(2) + "%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T2.js
new file mode 100644
index 000000000..6af0e02ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T2.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.14_T2;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 1110xxxx (n = 3) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF], C = [0x00, 0x7F];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xE0; indexB <= 0xEF; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0x00; indexC <= 0x7F; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%A0" + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T3.js
new file mode 100644
index 000000000..996695a3c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T3.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.14_T3;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 1110xxxx (n = 3) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF], C = [0xC0, 0xFF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xE0; indexB <= 0xEF; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%" + hexC.substring(2) + "%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T4.js
new file mode 100644
index 000000000..892981a86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.14_T4.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.14_T4;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 1110xxxx (n = 3) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF], C = [0xC0, 0xFF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xE0; indexB <= 0xEF; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%A0" + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T1.js
new file mode 100644
index 000000000..f43de8f40
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.15_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0x00, 0x7F];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0x00; indexC <= 0x7F; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%" + hexC.substring(2) + "%A0%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T2.js
new file mode 100644
index 000000000..e937b817a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T2.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.15_T2;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0x00, 0x7F];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0x00; indexC <= 0x7F; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%A0" + "%" + hexC.substring(2) + "%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T3.js
new file mode 100644
index 000000000..83f107f8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T3.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.15_T3;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0x00, 0x7F];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0x00; indexC <= 0x7F; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%A0%A0" + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T4.js
new file mode 100644
index 000000000..845cb49a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T4.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.15_T4;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0xC0, 0xFF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%" + hexC.substring(2) + "%A0%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T5.js
new file mode 100644
index 000000000..9c8ac68a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T5.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.15_T5;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0xC0, 0xFF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%A0" + "%" + hexC.substring(2) + "%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T6.js
new file mode 100644
index 000000000..699dcbb21
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.15_T6.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.15_T6;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and C != 10xxxxxx (C - first of octets after B), throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7], C = [0xC0, 0xFF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB = 0xF0; indexB <= 0xF7; indexB++) {
+ count++;
+ hexB = decimalToHexString(indexB);
+ result = true;
+ for (indexC = 0xC0; indexC <= 0xFF; indexC++) {
+ hexC = decimalToHexString(indexC);
+ try {
+ decodeURIComponent("%" + hexB.substring(2) + "%A0%A0" + "%" + hexC.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = indexB;
+ } else {
+ if ((indexB - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = indexB;
+ }
+ }
+ indexP = indexB;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.1_T1.js
new file mode 100644
index 000000000..766c36bd3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.1_T1.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.1_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If string.charAt(k) equal "%" and k + 2 >= string.length, throw URIError;
+ * @description: Complex tests;
+*/
+
+result = true;
+
+//CHECK#1
+try {
+ decodeURIComponent("%");
+ result = false;
+} catch(e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+}
+
+//CHECK#2
+try {
+ decodeURIComponent("%A");
+ result = false;
+} catch(e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+}
+
+//CHECK#3
+try {
+ decodeURIComponent("%1");
+ result = false;
+} catch(e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+}
+
+//CHECK#4
+try {
+ decodeURIComponent("% ");
+ result = false;
+} catch(e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If string.charAt(k) equal "%" and k + 2 >= string.length, throw URIError');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.2_T1.js
new file mode 100644
index 000000000..be0789158
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.2_T1.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.2_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = string.charAt(k+1) + string.charAt(k+2) do not represent
+ * hexadecimal digits, throw URIError;
+ * @description: Complex tests;
+*/
+
+//CHECK
+result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (indexI = 0; indexI < interval.length; indexI++) {
+ for (indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURIComponent("%" + String.fromCharCode(indexJ) + "1");
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If string.charAt(k+1) does not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.2_T2.js
new file mode 100644
index 000000000..868510bb4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.2_T2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.2_T2;
+ * @section: 15.1.3.2;
+ * @assertion: If B = string.charAt(k+1) + string.charAt(k+2) do not represent
+ * hexadecimal digits, throw URIError;
+ * @description: Complex tests;
+*/
+
+//CHECK
+result = true;
+var interval = [[0x00, 0x29], [0x40,0x40], [0x47, 0x60], [0x67, 0xFFFF]];
+for (indexI = 0; indexI < interval.length; indexI++) {
+ for (indexJ = interval[indexI][0]; indexJ <= interval[indexI][1]; indexJ++) {
+ try {
+ decodeURIComponent("%" + "1" + String.fromCharCode(indexJ));
+ result = false;
+ } catch (e) {
+ if ((e instanceof URIError) !== true) {
+ result = false;
+ }
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: If string.charAt(k+2) does not represent hexadecimal digits, throw URIError');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.3_T1.js
new file mode 100644
index 000000000..2236e8d01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.3_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.3_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 10xxxxxx or B = 11111xxx, throw URIError;
+ * @description: Complex tests. B = 10xxxxxx -> B in [0x80 - 0xBF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0x80; index <= 0xBF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.3_T2.js
new file mode 100644
index 000000000..8dd2a7413
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.3_T2.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.3_T2;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 10xxxxxx or B = 11111xxx, throw URIError;
+ * @description: Complex tests. B = 11111xxx -> B in [0xF8 - 0xFF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xF8; index <= 0xFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.4_T1.js
new file mode 100644
index 000000000..71781b135
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.4_T1.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.4_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 110xxxxx (n = 2) and (k + 2) + 3 >= length, throw URIError;
+ * @description: Complex tests. B = [0xC0 - 0xDF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xC0; index <= 0xDF; index++) {
+ count++;
+ str = "";
+ result = true;
+ for (len = 0; len < 3; len++) {
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2) + str);
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ str = str + "1";
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.5_T1.js
new file mode 100644
index 000000000..d219030b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.5_T1.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.5_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 1110xxxx (n = 3) and (k + 2) + 6 >= length, throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xE0; index <= 0xEF; index++) {
+ count++;
+ str = "";
+ result = true;
+ for (len = 0; len < 6; len++) {
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2) + str);
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ str = str + "1";
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.6_T1.js
new file mode 100644
index 000000000..83e0fca8e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.6_T1.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.6_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and (k + 2) + 9 >= length, throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0xF7];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xF0; index <= 0xF7; index++) {
+ count++;
+ str = "";
+ result = true;
+ for (len = 0; len < 9; len++) {
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2) + str);
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ result = false;
+ str = str + "1";
+ }
+ if (result !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.7_T1.js
new file mode 100644
index 000000000..42978945a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.7_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.7_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 110xxxxx (n = 2) and string.charAt(k + 3) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xC0 - 0xDF];
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xC0; index <= 0xDF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2) + "111");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.8_T1.js
new file mode 100644
index 000000000..bfe77c70d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.8_T1.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.8_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 1110xxxx (n = 3) and string.charAt(k + 3),
+ * string.charAt(k + 6) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF],
+ * string.charAt(k + 3) not equal "%";
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xE0; index <= 0xEF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2) + "111%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.8_T2.js
new file mode 100644
index 000000000..cbef6e553
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.8_T2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.8_T2;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 1110xxxx (n = 3) and string.charAt(k + 3),
+ * string.charAt(k + 6) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xE0 - 0xEF],
+ * string.charAt(k + 6) not equal "%";
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xE0; index <= 0xEF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2) + "%A0111");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T1.js
new file mode 100644
index 000000000..5d435f780
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T1.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.9_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and string.charAt(k + 3),
+ * string.charAt(k + 6), string.charAt(k + 9) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7],
+ * string.charAt(k + 3) not equal "%";
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xF0; index <= 0xF7; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2) + "111%A0%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T2.js
new file mode 100644
index 000000000..f035760c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.9_T2;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and string.charAt(k + 3),
+ * string.charAt(k + 6), string.charAt(k + 9) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7],
+ * string.charAt(k + 6) not equal "%";
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xF0; index <= 0xF7; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2) + "%A0111%A0");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T3.js
new file mode 100644
index 000000000..ce0f7e6a9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A1.9_T3.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A1.9_T3;
+ * @section: 15.1.3.2;
+ * @assertion: If B = 11110xxx (n = 4) and string.charAt(k + 3),
+ * string.charAt(k + 6), string.charAt(k + 9) not equal "%", throw URIError;
+ * @description: Complex tests. B = [0xF0 - 0x0F7],
+ * string.charAt(k + 9) not equal "%";
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xF0; index <= 0xF7; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ decodeURIComponent("%" + hex.substring(2) + "%A0%A0111");
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.1_T1.js
new file mode 100644
index 000000000..f56c4c36c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.1_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A2.1_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If string.charAt(k) not equal "%", return this char;
+ * @description: Complex tests;
+*/
+
+//CHECK
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI <= 65535; indexI++) {
+ if (indexI !== 0x25) {
+ hex = decimalToHexString(indexI);
+ try {
+ var str = String.fromCharCode(indexI);
+ if (decodeURIComponent(str) !== str) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e){
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.2_T1.js
new file mode 100644
index 000000000..e0d6fe20b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.2_T1.js
@@ -0,0 +1,77 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A2.2_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B1 = 0xxxxxxxx ([0x00 - 0x7F]), return B1;
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (indexB1 = 0x00; indexB1 <= 0x7F; indexB1++) {
+ count++;
+ var hexB1 = decimalToHexString(indexB1);
+ var index = indexB1;
+ try {
+ hex = String.fromCharCode(index);
+ if (decodeURIComponent("%" + hexB1.substring(2)) === hex) continue;
+ } catch (e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.3_T1.js
new file mode 100644
index 000000000..8af8c1f6f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.3_T1.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A2.3_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B1 = 110xxxxx ([0xC0 - 0xDF]), B2 = 10xxxxxx ([0x80 - 0xBF), without B1 = [0xC0, 0xC1], return UTF8(B1, B2);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB1 = 0xC2; indexB1 <= 0xDF; indexB1++) {
+ var hexB1 = decimalToHexString(indexB1);
+ for (indexB2 = 0x80; indexB2 <= 0xBF; indexB2++) {
+ count++;
+ var hexB2 = decimalToHexString(indexB2);
+ var index = (indexB1 & 0x1F) * 0x40 + (indexB2 & 0x3F);
+ try {
+ if (decodeURIComponent("%" + hexB1.substring(2) + "%" + hexB2.substring(2)) === String.fromCharCode(index)) continue;
+ } catch (e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.4_T1.js
new file mode 100644
index 000000000..bdd9f511b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.4_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A2.4_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B1 = 1110xxxx ([0xE0 - 0xEF]), B2, B3 = 10xxxxxxx ([0x80 - 0xBF]), without [B1, B2] = [0xE0, 0x80 - 0x9F], [0xED, 0xA0 - 0xBF] (0xD800 - 0xDFFF), return UTF8(B1, B2, B3);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB1 = 0xE0; indexB1 <= 0xEF; indexB1++) {
+ var hexB1 = decimalToHexString(indexB1);
+ for (indexB2 = 0x80; indexB2 <= 0xBF; indexB2++) {
+ if ((indexB1 === 0xE0) && (indexB2 <= 0x9F)) continue;
+ if ((indexB1 === 0xED) && (0xA0 <= indexB2)) continue;
+ var hexB2 = decimalToHexString(indexB2);
+ for (indexB3 = 0x80; indexB3 <= 0xBF; indexB3++) {
+ count++;
+ var hexB3 = decimalToHexString(indexB3);
+ var index = (indexB1 & 0x0F) * 0x1000 + (indexB2 & 0x3F) * 0x40 + (indexB3 & 0x3F);
+ try {
+ if (decodeURIComponent("%" + hexB1.substring(2) + "%" + hexB2.substring(2) + "%" + hexB3.substring(2)) === String.fromCharCode(index)) continue;
+ } catch (e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.5_T1.js
new file mode 100644
index 000000000..89df40af0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.5_T1.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A2.5_T1;
+ * @section: 15.1.3.2;
+ * @assertion: If B1 = 11110xxx ([0xF0 - 0x0F4]), B2, B3, B4 = 10xxxxxxx ([0x80 - 0xBF]), without [B1, B2] = [0xF0, 0x80 - 0x9F], [0xF4, 0x90 - 0xBF], return UTF8(B1, B2, B3, B4);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (indexB1 = 0xF0; indexB1 <= 0xF4; indexB1++) {
+ var hexB1 = decimalToHexString(indexB1);
+ for (indexB2 = 0x80; indexB2 <= 0xBF; indexB2++) {
+ if ((indexB1 === 0xF0) && (indexB2 <= 0x9F)) continue;
+ if ((indexB1 === 0xF4) && (indexB2 >= 0x90)) continue;
+ var hexB2 = decimalToHexString(indexB2);
+ for (indexB3 = 0x80; indexB3 <= 0xBF; indexB3++) {
+ var hexB3 = decimalToHexString(indexB3);
+ for (indexB4 = 0x80; indexB4 <= 0xBF; indexB4++) {
+ var hexB4 = decimalToHexString(indexB4);
+ count++;
+ var index = (indexB1 & 0x07) * 0x40000 + (indexB2 & 0x3F) * 0x1000 + (indexB3 & 0x3F) * 0x40 + (indexB4 & 0x3F);
+ var L = ((index - 0x10000) & 0x03FF) + 0xDC00;
+ var H = (((index - 0x10000) >> 10) & 0x03FF) + 0xD800;
+ try {
+ if (decodeURIComponent("%" + hexB1.substring(3) + "%" + hexB2.substring(3) + "%" + hexB3.substring(3) + "%" + hexB4.substring(3)) === String.fromCharCode(H) + String.fromCharCode(L)) continue;
+ } catch (e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 4; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T1.js
new file mode 100644
index 000000000..44baf30f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T1.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A3_T1;
+ * @section: 15.1.3.2;
+ * @assertion: Let reservedURIComponentSet be the empty string;
+ * @description: uriReserved and "#" not in reservedURIComponentSet. HexDigit in [0..9, A..F];
+*/
+
+//CHECK#1
+if (decodeURIComponent("%3B") !== ";") {
+ $ERROR('#1: decodeURIComponent("%3B") equal ";", not "%3B"');
+}
+
+//CHECK#2
+if (decodeURIComponent("%2F") !== "/") {
+ $ERROR('#2: decodeURIComponent("%2F") equal "/", not "%2F"');
+}
+
+//CHECK#3
+if (decodeURIComponent("%3F") !== "?") {
+ $ERROR('#3: decodeURIComponent("%3F") equal "?", not "%3F"');
+}
+
+//CHECK#4
+if (decodeURIComponent("%3A") !== ":") {
+ $ERROR('#4: decodeURIComponent("%3A") equal ":", not "%3A"');
+}
+
+//CHECK#5
+if (decodeURIComponent("%40") !== "@") {
+ $ERROR('#5: decodeURIComponent("%40") equal "@", not "%40"');
+}
+
+//CHECK#6
+if (decodeURIComponent("%26") !== "&") {
+ $ERROR('#6: decodeURIComponent("%26") equal "&", not "%26"');
+}
+
+//CHECK#7
+if (decodeURIComponent("%3D") !== "=") {
+ $ERROR('#7.1: decodeURIComponent("%3D") equal "=", not "%3D"');
+}
+
+//CHECK#8
+if (decodeURIComponent("%2B") !== "+") {
+ $ERROR('#8.1: decodeURIComponent("%2B") equal "+", not "%2B"');
+}
+
+//CHECK#9
+if (decodeURIComponent("%24") !== "$") {
+ $ERROR('#9: decodeURIComponent("%24") equal "$", not "%24"');
+}
+
+//CHECK#10
+if (decodeURIComponent("%2C") !== ",") {
+ $ERROR('#10: decodeURIComponent("%2C") equal ",", not "%2C"');
+}
+
+//CHECK#11
+if (decodeURIComponent("%23") !== "#") {
+ $ERROR('#11: decodeURIComponent("%23") equal "#", not "%23"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T2.js
new file mode 100644
index 000000000..8b81e97b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T2.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A3_T2;
+ * @section: 15.1.3.2;
+ * @assertion: Let reservedURIComponentSet be the empty string;
+ * @description: uriReserved and "#" not in reservedURIComponentSet. HexDigit in [0..9, a..f];
+*/
+
+//CHECK#1
+if (decodeURIComponent("%3b") !== ";") {
+ $ERROR('#1: decodeURIComponent("%3b") equal ";", not "%3B" or "%3b"');
+}
+
+//CHECK#2
+if (decodeURIComponent("%2f") !== "/") {
+ $ERROR('#2: decodeURIComponent("%2f") equal "/", not "%2F" or "%2f"');
+}
+
+//CHECK#3
+if (decodeURIComponent("%3f") !== "?") {
+ $ERROR('#3: decodeURIComponent("%3f") equal "?", not "%3F" or "%3f"');
+}
+
+//CHECK#4
+if (decodeURIComponent("%3a") !== ":") {
+ $ERROR('#4: decodeURIComponent("%3a") equal ":", not "%3A" or "%3a"');
+}
+
+//CHECK#5
+if (decodeURIComponent("%40") !== "@") {
+ $ERROR('#5: decodeURIComponent("%40") equal "@", not "%40"');
+}
+
+//CHECK#6
+if (decodeURIComponent("%26") !== "&") {
+ $ERROR('#6: decodeURIComponent("%26") equal "&", not "%26"');
+}
+
+//CHECK#7
+if (decodeURIComponent("%3d") !== "=") {
+ $ERROR('#7.1: decodeURIComponent("%3d") equal "=", not "%3D" or "%3d"');
+}
+
+//CHECK#8
+if (decodeURIComponent("%2b") !== "+") {
+ $ERROR('#8.1: decodeURIComponent("%2b") equal "+", not "%2B" or "%2b"');
+}
+
+//CHECK#9
+if (decodeURIComponent("%24") !== "$") {
+ $ERROR('#9: decodeURIComponent("%24") equal "$", not "%24"');
+}
+
+//CHECK#10
+if (decodeURIComponent("%2c") !== ",") {
+ $ERROR('#10: decodeURIComponent("%2c") equal ",", not "%2C" or "%2c"');
+}
+
+//CHECK#11
+if (decodeURIComponent("%23") !== "#") {
+ $ERROR('#11: decodeURIComponent("%23") equal "#", not "%23"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T3.js
new file mode 100644
index 000000000..c52dcc73d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A3_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A3_T3;
+ * @section: 15.1.3.2;
+ * @assertion: Let reservedURIComponentSet be the empty string;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+if (decodeURIComponent("%3B%2F%3F%3A%40%26%3D%2B%24%2C%23") !== ";/?:@&=+$,#") {
+ $ERROR('#1: decodeURIComponent("%3B%2F%3F%3A%40%26%3D%2B%24%2C%23") equal ";/?:@&=+$,#", not "%3B%2F%3F%3A%40%26%3D%2B%24%2C%23"');
+}
+
+//CHECK#2
+if (decodeURIComponent("%3b%2f%3f%3a%40%26%3d%2b%24%2c%23") !== ";/?:@&=+$,#") {
+ $ERROR('#2: decodeURIComponent("%3b%2f%3f%3a%40%26%3d%2b%24%2c%23") equal ";/?:@&=+$,#" or "%3B%2F%3F%3A%40%26%3D%2B%24%2C%23", not "%3b%2f%3f%3a%40%26%3d%2b%24%2c%23"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T1.js
new file mode 100644
index 000000000..f3082b14c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A4_T1;
+ * @section: 15.1.3.2;
+ * @assertion: URI tests;
+ * @description: Checking ENGLISH ALPHABET;
+*/
+
+//CHECK#1
+if (decodeURIComponent("http://unipro.ru/0123456789") !== "http://unipro.ru/0123456789") {
+ $ERROR('#1: http://unipro.ru/0123456789');
+}
+
+//CHECK#2
+if (decodeURIComponent("%41%42%43%44%45%46%47%48%49%4A%4B%4C%4D%4E%4F%50%51%52%53%54%55%56%57%58%59%5A") !== "ABCDEFGHIJKLMNOPQRSTUVWXYZ") {
+ $ERROR('#2: ABCDEFGHIJKLMNOPQRSTUVWXYZ');
+}
+
+//CHECK#3
+if (decodeURIComponent("%61%62%63%64%65%66%67%68%69%6A%6B%6C%6D%6E%6F%70%71%72%73%74%75%76%77%78%79%7A") !== "abcdefghijklmnopqrstuvwxyz") {
+ $ERROR('#3: abcdefghijklmnopqrstuvwxyz');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T2.js
new file mode 100644
index 000000000..3a3ad1563
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A4_T2;
+ * @section: 15.1.3.2;
+ * @assertion: URI tests;
+ * @description: Checking RUSSIAN ALPHABET;
+*/
+
+//CHECK#1
+if (decodeURIComponent("http://ru.wikipedia.org/wiki/%d0%ae%D0%bd%D0%B8%D0%BA%D0%BE%D0%B4") !== "http://ru.wikipedia.org/wiki/Юникод") {
+ $ERROR('#1: http://ru.wikipedia.org/wiki/Юникод');
+}
+
+//CHECK#2
+if (decodeURIComponent("http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8") !== "http://ru.wikipedia.org/wiki/Юникод#Ссылки") {
+ $ERROR('#2: http://ru.wikipedia.org/wiki/Юникод#Ссылки');
+}
+
+//CHECK#3
+if (decodeURIComponent("http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%23%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0") !== "http://ru.wikipedia.org/wiki/Юникод#Версии Юникода") {
+ $ERROR('#3: http://ru.wikipedia.org/wiki/Юникод%23Версии Юникода');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T3.js
new file mode 100644
index 000000000..ffd81cf8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A4_T3;
+ * @section: 15.1.3.2;
+ * @assertion: URI tests;
+ * @description: Checking URL with Line Terminator;
+*/
+
+//CHECK#1
+if (decodeURIComponent("http://unipro.ru/%0Aabout") !== "http://unipro.ru/\nabout") {
+ $ERROR('#1: http://unipro.ru/%A0about');
+}
+
+//CHECK#2
+if (decodeURIComponent("http://unipro.ru/%0Babout") !== "http://unipro.ru/\vabout") {
+ $ERROR('#2: http://unipro.ru/%0Babout');
+}
+
+//CHECK#3
+if (decodeURIComponent("http://unipro.ru/%0Cabout") !== "http://unipro.ru/\fabout") {
+ $ERROR('#3: http://unipro.ru/%0Cabout');
+}
+
+//CHECK#4
+if (decodeURIComponent("http://unipro.ru/%0Dabout") !== "http://unipro.ru/\rabout") {
+ $ERROR('#4: http://unipro.ru/%0Dabout');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T4.js
new file mode 100644
index 000000000..12acfd2a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A4_T4;
+ * @section: 15.1.3.2;
+ * @assertion: URI tests;
+ * @description: Test some url;
+*/
+
+//CHECK#1
+if (decodeURIComponent("") !== "") {
+ $ERROR('#1: ""');
+}
+
+//CHECK#2
+if (decodeURIComponent("http://unipro.ru") !== "http://unipro.ru") {
+ $ERROR('#2: http://unipro.ru');
+}
+
+//CHECK#3
+if (decodeURIComponent("http:%2f%2Fwww.google.ru/support/jobs/bin/static.py%3Fpage%3dwhy-ru.html%26sid%3Dliveandwork") !== "http://www.google.ru/support/jobs/bin/static.py?page=why-ru.html&sid=liveandwork") {
+ $ERROR('#3: http:%2f%2Fwww.google.ru/support/jobs/bin/static.py%3Fpage3dwhy-ru.html%26sid3Dliveandwork"');
+}
+
+//CHECK#4
+if (decodeURIComponent("http:%2F%2Fen.wikipedia.org/wiki/UTF-8%23Description") !== "http://en.wikipedia.org/wiki/UTF-8#Description") {
+ $ERROR('#4: http:%2F%2Fen.wikipedia.org/wiki/UTF-8%23Description');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.1.js
new file mode 100644
index 000000000..296a9e7f1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A5.1;
+ * @section: 15.1.3.2, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of decodeURIComponent has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (decodeURIComponent.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: decodeURIComponent.propertyIsEnumerable(\'length\') === false. Actual: ' + (decodeURIComponent.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+result = true;
+for (p in decodeURIComponent){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in decodeURIComponent) { if (p === "length") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.2.js
new file mode 100644
index 000000000..d37a04f39
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A5.2;
+ * @section: 15.1.3.2, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of decodeURIComponent has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+*/
+
+//CHECK#1
+if (decodeURIComponent.hasOwnProperty('length') !== true) {
+ $FAIL('#1: decodeURIComponent.hasOwnProperty(\'length\') === true. Actual: ' + (decodeURIComponent.hasOwnProperty('length')));
+}
+
+delete decodeURIComponent.length;
+
+//CHECK#2
+if (decodeURIComponent.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete decodeURIComponent.length; decodeURIComponent.hasOwnProperty(\'length\') === true. Actual: ' + (decodeURIComponent.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (decodeURIComponent.length === undefined) {
+ $ERROR('#3: delete decodeURIComponent.length; decodeURIComponent.length !== undefined');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.3.js
new file mode 100644
index 000000000..d94f889d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A5.3;
+ * @section: 15.1.3.2;
+ * @assertion: The length property of decodeURIComponent has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+*/
+
+//CHECK#1
+x = decodeURIComponent.length;
+decodeURIComponent.length = Infinity;
+if (decodeURIComponent.length !== x) {
+ $ERROR('#1: x = decodeURIComponent.length; decodeURIComponent.length = Infinity; decodeURIComponent.length === x. Actual: ' + (decodeURIComponent.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.4.js
new file mode 100644
index 000000000..23c5bfb50
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A5.4;
+ * @section: 15.1.3.2;
+ * @assertion: The length property of decodeURIComponent is 1;
+ * @description: decodeURIComponent.length === 1;
+*/
+
+//CHECK#1
+if (decodeURIComponent.length !== 1) {
+ $ERROR('#1: decodeURIComponent.length === 1. Actual: ' + (decodeURIComponent.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.5.js
new file mode 100644
index 000000000..3d5685ede
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A5.5;
+ * @section: 15.1.3.2, 15.2.4.7, 12.6.4;
+ * @assertion: The decodeURIComponent property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('decodeURIComponent') !== false) {
+ $ERROR('#1: this.propertyIsEnumerable(\'decodeURIComponent\') === false. Actual: ' + (this.propertyIsEnumerable('decodeURIComponent')));
+}
+
+//CHECK#2
+result = true;
+for (p in this){
+ if (p === "decodeURIComponent") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "decodeURIComponent") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.6.js
new file mode 100644
index 000000000..3822f5c32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.3.2_A5.6;
+* @section: 15.1.3.2;
+* @assertion: The decodeURIComponent property has not prototype property;
+* @description: Checking decodeURIComponent.prototype;
+*/
+
+//CHECK#1
+if (decodeURIComponent.prototype !== undefined) {
+ $ERROR('#1: decodeURIComponent.prototype === undefined. Actual: ' + (decodeURIComponent.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.7.js
new file mode 100644
index 000000000..515d9998c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.3.2_A5.7;
+* @section: 15.1.3.2, 11.2.2;
+* @assertion: The decodeURIComponent property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new decodeURIComponent();
+ $ERROR('#1.1: new decodeURIComponent() throw TypeError. Actual: ' + (new decodeURIComponent()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new decodeURIComponent() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A6_T1.js
new file mode 100644
index 000000000..30c2324b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.2_decodeURIComponent/S15.1.3.2_A6_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.2_A6_T1;
+ * @section: 15.1.3.2, 9.8, 8.6.2.6;
+ * @assertion: Operator use ToString;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, String);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return "%5E"}};
+if (decodeURIComponent(object) !== "[object Object]") {
+ $ERROR('#1: var object = {valueOf: function() {return "%5E"}}; decodeURIComponent(object) === [object Object]. Actual: ' + (decodeURIComponent(object)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return ""}, toString: function() {return "%5E"}};
+if (decodeURIComponent(object) !== "^") {
+ $ERROR('#2: var object = {valueOf: function() {return ""}, toString: function() {return "%5E"}}; decodeURIComponent(object) === "^". Actual: ' + (decodeURIComponent(object)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return "%5E"}, toString: function() {return {}}};
+if (decodeURIComponent(object) !== "^") {
+ $ERROR('#3: var object = {valueOf: function() {return "%5E"}, toString: function() {return {}}}; decodeURIComponent(object) === "^". Actual: ' + (decodeURIComponent(object)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return "%5E"}};
+ if (decodeURIComponent(object) !== "^") {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return "%5E"}}; decodeURIComponent(object) === "^". Actual: ' + (decodeURIComponent(object)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return "%5E"}}; decodeURIComponent(object) not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return "%5E"}}; decodeURIComponent(object) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return "%5E"}};
+if (decodeURIComponent(object) !== "^") {
+ $ERROR('#5: var object = {toString: function() {return "%5E"}}; decodeURIComponent(object) === "^". Actual: ' + (decodeURIComponent(object)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return "%5E"}}
+if (decodeURIComponent(object) !== "^") {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return "%5E"}}; decodeURIComponent(object) === "^". Actual: ' + (decodeURIComponent(object)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return "%5E"}, toString: function() {throw "error"}};
+ decodeURIComponent(object);
+ $ERROR('#7.1: var object = {valueOf: function() {return "%5E"}, toString: function() {throw "error"}}; decodeURIComponent(object) throw "error". Actual: ' + (decodeURIComponent(object)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return "%5E"}, toString: function() {throw "error"}}; decodeURIComponent(object) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ decodeURIComponent(object);
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; decodeURIComponent(object) throw TypeError. Actual: ' + (decodeURIComponent(object)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; decodeURIComponent(object) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T1.js
new file mode 100644
index 000000000..241ea9366
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.1_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xDC00 - 0xDFFF], throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xDC00; index <= 0xDFFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(index));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T2.js
new file mode 100644
index 000000000..0480311c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T2.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.1_T2;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xDC00 - 0xDFFF], throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xDC00; index <= 0xDFFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(index, 0x0041));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T1.js
new file mode 100644
index 000000000..2fe4d8a3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.2_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.length = k + 1, throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(index));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T2.js
new file mode 100644
index 000000000..93484b815
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T2.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.2_T2;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.length = k + 1, throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(0x0041, index));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.3_T1.js
new file mode 100644
index 000000000..e933a9b7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.3_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.3_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.charAt(k+1) not in [0xDC00 - 0xDFFF], throw URIError;
+ * @description: Complex tests, string.charAt(k+1) in [0x0000, 0xD7FF, 0xD800, 0xDBFE, 0xDBFF, 0xE000, 0xFFFF];
+*/
+
+chars = [0x0000, 0xD7FF, 0xD800, 0xDBFE, 0xDBFF, 0xE000, 0xFFFF];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ count++;
+ res = true;
+ for (indexC = 0; indexC < chars.length; indexC++) {
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(index, chars[indexC]));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ res = false;
+ }
+ if (res !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.1_T1.js
new file mode 100644
index 000000000..77f76d078
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.1_T1.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.1_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0x0000 - 0x007F]\[uriReserved, uriUnescaped, #], return 1 octet (00000000 0zzzzzzz -> 0zzzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+uriReserved = [";", "/", "?", ":", "@", "&", "=", "+", "$", ","];
+uriUnescaped = ["-", "_", ".", "!", "~", "*", "'", "(", ")", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+l :
+for (index = 0x0000; index <= 0x007F; index++) {
+ count++;
+ str = String.fromCharCode(index);
+ for (indexC = 0; indexC < uriReserved.length; indexC++) {
+ if (uriReserved[indexC] === str) continue l;
+ }
+ for (indexC = 0; indexC < uriUnescaped.length; indexC++) {
+ if (uriUnescaped[indexC] === str) continue l;
+ }
+ if ("#" === str) continue l;
+ try {
+ if (encodeURI(str).toUpperCase() === "%" + decimalToHexString(index).substring(2)) continue l;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.2_T1.js
new file mode 100644
index 000000000..319e5ae36
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.2_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0x0080 - 0x07FF], return 2 octets (00000yyy yyzzzzzz -> 110yyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+l:
+for (index = 0x0080; index <= 0x07FF; index++) {
+ count++;
+ hex1 = decimalToHexString(0x0080 + (index & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x00C0 + (index & 0x07C0) / 0x0040).substring(2);
+ str = String.fromCharCode(index);
+ try {
+ if (encodeURI(str).toUpperCase() === "%" + hex2 + "%" + hex1) continue;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.3_T1.js
new file mode 100644
index 000000000..353ca1479
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.3_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.3_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0x0800 - 0xD7FF], return 3 octets (xxxxyyyy yyzzzzzz -> 1110xxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0x0800; index <= 0xD7FF; index++) {
+ count++;
+ hex1 = decimalToHexString(0x0080 + (index & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x00E0 + (index & 0xF000) / 0x1000).substring(2);
+ str = String.fromCharCode(index);
+ try {
+ if (encodeURI(str).toUpperCase() === "%" + hex3 + "%" + hex2 + "%" + hex1) continue;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T1.js
new file mode 100644
index 000000000..e8e10bbae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T1.js
@@ -0,0 +1,88 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.4_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.charAt(k+1) in [0xDC00 � 0xDFFF], return 4 octets (000wwwxx xxxxyyyy yyzzzzzz -> 11110www 10xxxxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629, string.charAt(k+1) in [0xDC00, 0xDDFF, 0xDFFF];
+*/
+
+chars = [0xDC00, 0xDDFF, 0xDFFF];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ res = true;
+ for (indexC = 0; indexC < chars.length; indexC++) {
+ index1 = (index - 0xD800) * 0x400 + (chars[indexC] - 0xDC00) + 0x10000;
+ hex1 = decimalToHexString(0x0080 + (index1 & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index1 & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x0080 + (index1 & 0x3F000) / 0x1000).substring(2);
+ hex4 = decimalToHexString(0x00F0 + (index1 & 0x1C0000) / 0x40000).substring(2);
+ str = String.fromCharCode(index, chars[indexC]);
+ try {
+ if (encodeURI(str).toUpperCase() !== "%" + hex4 + "%" + hex3 + "%" + hex2 + "%" + hex1) {
+ res = false;
+ }
+ } catch(e) {res = false}
+ }
+ if (res !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T2.js
new file mode 100644
index 000000000..d078b069b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T2.js
@@ -0,0 +1,88 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.4_T2;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.charAt(k+1) in [0xDC00 � 0xDFFF], return 4 octets (000wwwxx xxxxyyyy yyzzzzzz -> 11110www 10xxxxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629, string.charAt(k) in [0xD800, 0xDBFF, 0xD9FF];
+*/
+
+chars = [0xD800, 0xDBFF, 0xD9FF];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0xDC00; index <= 0xDFFF; index++) {
+ res = true;
+ for (indexC = 0; indexC < chars.length; indexC++) {
+ index1 = (chars[indexC] - 0xD800) * 0x400 + (index - 0xDC00) + 0x10000;
+ hex1 = decimalToHexString(0x0080 + (index1 & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index1 & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x0080 + (index1 & 0x3F000) / 0x1000).substring(2);
+ hex4 = decimalToHexString(0x00F0 + (index1 & 0x1C0000) / 0x40000).substring(2);
+ str = String.fromCharCode(chars[indexC], index);
+ try {
+ if (encodeURI(str).toUpperCase() !== "%" + hex4 + "%" + hex3 + "%" + hex2 + "%" + hex1) {
+ res = false;
+ }
+ } catch(e) {res = false}
+ }
+ if (res !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.5_T1.js
new file mode 100644
index 000000000..9ec1a2b2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.5_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.5_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xE000 - 0xFFFF], return 3 octets (xxxxyyyy yyzzzzzz -> 1110xxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0xE000; index <= 0xFFFF; index++) {
+ count++;
+ hex1 = decimalToHexString(0x0080 + (index & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x00E0 + (index & 0xF000) / 0x1000).substring(2);
+ str = String.fromCharCode(index);
+ try {
+ if (encodeURI(str).toUpperCase() === "%" + hex3 + "%" + hex2 + "%" + hex1) continue;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.1_T1.js
new file mode 100644
index 000000000..b3119441f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.1_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.1_T1;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing one instance of each character valid in uriReserved;
+ * @description: Complex tests;
+*/
+
+uriReserved = [";", "/", "?", ":", "@", "&", "=", "+", "$", ","];
+for (indexC = 0; indexC < uriReserved.length; indexC++) {
+ var str = uriReserved[indexC];
+ if (encodeURI(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T1.js
new file mode 100644
index 000000000..f2d16c1e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.2_T1;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing one instance of each character valid in uriUnescaped;
+ * @description: Complex tests, uriUnescaped :: uriAlpha;
+*/
+
+uriAlpha = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (indexC = 0; indexC < uriAlpha.length; indexC++) {
+ var str = uriAlpha[indexC];
+ if (encodeURI(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing ' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T2.js
new file mode 100644
index 000000000..802b73d46
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T2.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.2_T2;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing one instance of each character valid in uriUnescaped;
+ * @description: Complex tests, uriUnescaped :: DecimalDigit;
+*/
+
+DecimalDigit = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
+for (indexC = 0; indexC < DecimalDigit.length; indexC++) {
+ var str = DecimalDigit[indexC];
+ if (encodeURI(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T3.js
new file mode 100644
index 000000000..5c64bb272
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.2_T3;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing one instance of each character valid in uriUnescaped;
+ * @description: Complex tests, uriUnescaped :: uriMark;
+*/
+
+uriMark = ["-", "_", ".", "!", "~", "*", "'", "(", ")"];
+for (indexC = 0; indexC < uriMark.length; indexC++) {
+ var str = uriMark[indexC];
+ if (encodeURI(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.3_T1.js
new file mode 100644
index 000000000..8be71a67d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.3_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.3_T1;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing "#";
+ * @description: encodeURI("#") === "#";
+*/
+
+if (encodeURI("#") !== "#") {
+ $ERROR('#1: unescapedURISet containing "#"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T1.js
new file mode 100644
index 000000000..2f297e5a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A4_T1;
+ * @section: 15.1.3.3;
+ * @assertion: URI tests;
+ * @description: Checking ENGLISH ALPHABET;
+*/
+
+//CHECK#1
+if (encodeURI("http://unipro.ru/0123456789") !== "http://unipro.ru/0123456789") {
+ $ERROR('#1: http://unipro.ru/0123456789');
+}
+
+//CHECK#2
+if (encodeURI("aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ") !== "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ") {
+ $ERROR('#2: aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ');
+}
+
+//CHECK#3
+if (encodeURI("aA_bB-cC.dD!eE~fF*gG'hH(iI)jJ;kK/lL?mM:nN@oO&pP=qQ+rR$sS,tT9uU8vV7wW6xX5yY4zZ") !== "aA_bB-cC.dD!eE~fF*gG'hH(iI)jJ;kK/lL?mM:nN@oO&pP=qQ+rR$sS,tT9uU8vV7wW6xX5yY4zZ") {
+ $ERROR('#3: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T2.js
new file mode 100644
index 000000000..4aec4212a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A4_T2;
+ * @section: 15.1.3.3;
+ * @assertion: URI tests;
+ * @description: Checking RUSSIAN ALPHABET;
+*/
+
+//CHECK#1
+if ((encodeURI("http://ru.wikipedia.org/wiki/Юникод") !== "http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4") && (encodeURI("http://ru.wikipedia.org/wiki/Юникод") !== "http://ru.wikipedia.org/wiki/" + "%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4".toLowerCase())) {
+ $ERROR('#1: http://ru.wikipedia.org/wiki/Юникод');
+}
+
+//CHECK#2
+if ((encodeURI("http://ru.wikipedia.org/wiki/Юникод#Ссылки") !== "http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8") && (encodeURI("http://ru.wikipedia.org/wiki/Юникод#Ссылки") !== "http://ru.wikipedia.org/wiki/" + "%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8".toLowerCase())) {
+ $ERROR('#2: http://ru.wikipedia.org/wiki/Юникод#Ссылки');
+}
+
+//CHECK#3
+if ((encodeURI("http://ru.wikipedia.org/wiki/Юникод#Версии Юникода") !== "http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0") && ((encodeURI("http://ru.wikipedia.org/wiki/Юникод#Версии Юникода") !== "http://ru.wikipedia.org/wiki/" + "%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0".toLowerCase()))) {
+ $ERROR('#3: http://ru.wikipedia.org/wiki/Юникод#Версии Юникода');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T3.js
new file mode 100644
index 000000000..c28ecf983
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A4_T3;
+ * @section: 15.1.3.3;
+ * @assertion: URI tests;
+ * @description: Checking URL with Line Terminator;
+*/
+
+//CHECK#1
+if ((encodeURI("http://unipro.ru/\nabout") !== "http://unipro.ru/%0Aabout") && encodeURI("http://unipro.ru/\nabout") !== "http://unipro.ru/%0aabout") {
+ $ERROR('#1: http://unipro.ru/\\nabout');
+}
+
+//CHECK#2
+if ((encodeURI("http://unipro.ru/\vabout") !== "http://unipro.ru/%0Babout") && encodeURI("http://unipro.ru/\vabout") !== "http://unipro.ru/%0babout") {
+ $ERROR('#2: http://unipro.ru/\\vabout');
+}
+
+//CHECK#3
+if ((encodeURI("http://unipro.ru/\fabout") !== "http://unipro.ru/%0Cabout") && encodeURI("http://unipro.ru/\fabout") !== "http://unipro.ru/%0cabout") {
+ $ERROR('#3: http://unipro.ru/\\fabout');
+}
+
+//CHECK#4
+if ((encodeURI("http://unipro.ru/\rabout") !== "http://unipro.ru/%0Dabout") && encodeURI("http://unipro.ru/\rabout") !== "http://unipro.ru/%0dabout") {
+ $ERROR('#4: http://unipro.ru/\\rabout');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T4.js
new file mode 100644
index 000000000..eea709e8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A4_T4;
+ * @section: 15.1.3.3;
+ * @assertion: URI tests;
+ * @description: Test some url;
+*/
+
+//CHECK#1
+if (encodeURI("") !== "") {
+ $ERROR('#1: ""');
+}
+
+//CHECK#2
+if (encodeURI("http://unipro.ru") !== "http://unipro.ru") {
+ $ERROR('#2: http://unipro.ru');
+}
+
+//CHECK#3
+if (encodeURI("http://www.google.ru/support/jobs/bin/static.py?page=why-ru.html&sid=liveandwork") !== "http://www.google.ru/support/jobs/bin/static.py?page=why-ru.html&sid=liveandwork") {
+ $ERROR('#3: http://www.google.ru/support/jobs/bin/static.py?page=why-ru.html&sid=liveandwork"');
+}
+
+//CHECK#4
+if (encodeURI("http://en.wikipedia.org/wiki/UTF-8#Description") !== "http://en.wikipedia.org/wiki/UTF-8#Description") {
+ $ERROR('#4: http://en.wikipedia.org/wiki/UTF-8#Description');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.1.js
new file mode 100644
index 000000000..a61d56844
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A5.1;
+ * @section: 15.1.3.3, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of encodeURI has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (encodeURI.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: encodeURI.propertyIsEnumerable(\'length\') === false. Actual: ' + (encodeURI.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+result = true;
+for (p in encodeURI){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in encodeURI) { if (p === "length") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.2.js
new file mode 100644
index 000000000..11ac65b35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A5.2;
+ * @section: 15.1.3.3, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of encodeURI has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+*/
+
+//CHECK#1
+if (encodeURI.hasOwnProperty('length') !== true) {
+ $FAIL('#1: encodeURI.hasOwnProperty(\'length\') === true. Actual: ' + (encodeURI.hasOwnProperty('length')));
+}
+
+delete encodeURI.length;
+
+//CHECK#2
+if (encodeURI.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete encodeURI.length; encodeURI.hasOwnProperty(\'length\') === true. Actual: ' + (encodeURI.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (encodeURI.length === undefined) {
+ $ERROR('#3: delete encodeURI.length; encodeURI.length !== undefined');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.3.js
new file mode 100644
index 000000000..deed6373f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A5.3;
+ * @section: 15.1.3.3;
+ * @assertion: The length property of encodeURI has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+*/
+
+//CHECK#1
+x = encodeURI.length;
+encodeURI.length = Infinity;
+if (encodeURI.length !== x) {
+ $ERROR('#1: x = encodeURI.length; encodeURI.length = Infinity; encodeURI.length === x. Actual: ' + (encodeURI.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.4.js
new file mode 100644
index 000000000..601127fb2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A5.4;
+ * @section: 15.1.3.3;
+ * @assertion: The length property of encodeURI is 1;
+ * @description: encodeURI.length === 1;
+*/
+
+//CHECK#1
+if (encodeURI.length !== 1) {
+ $ERROR('#1: encodeURI.length === 1. Actual: ' + (encodeURI.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.5.js
new file mode 100644
index 000000000..ee1baf518
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A5.5;
+ * @section: 15.1.3.3, 15.2.4.7, 12.6.4;
+ * @assertion: The encodeURI property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('encodeURI') !== false) {
+ $ERROR('#1: this.propertyIsEnumerable(\'encodeURI\') === false. Actual: ' + (this.propertyIsEnumerable('encodeURI')));
+}
+
+//CHECK#2
+result = true;
+for (p in this){
+ if (p === "encodeURI") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "encodeURI") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.6.js
new file mode 100644
index 000000000..ae32b30bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.3.3_A5.6;
+* @section: 15.1.3.3;
+* @assertion: The encodeURI property has not prototype property;
+* @description: Checking encodeURI.prototype;
+*/
+
+//CHECK#1
+if (encodeURI.prototype !== undefined) {
+ $ERROR('#1: encodeURI.prototype === undefined. Actual: ' + (encodeURI.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.7.js
new file mode 100644
index 000000000..0ab9b8c9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.3.3_A5.7;
+* @section: 15.1.3.3, 11.2.2;
+* @assertion: The encodeURI property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new encodeURI();
+ $ERROR('#1.1: new encodeURI() throw TypeError. Actual: ' + (new encodeURI()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new encodeURI() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A6_T1.js
new file mode 100644
index 000000000..6cae662d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A6_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A6_T1;
+ * @section: 15.1.3.3, 9.8, 8.6.2.6;
+ * @assertion: Operator use ToString;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, String);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return "^"}};
+if (encodeURI(object) !== "%5Bobject%20Object%5D") {
+ $ERROR('#1: var object = {valueOf: function() {return "^"}}; encodeURI(object) === %5Bobject%20Object%5D. Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return ""}, toString: function() {return "^"}};
+if (encodeURI(object) !== "%5E") {
+ $ERROR('#2: var object = {valueOf: function() {return ""}, toString: function() {return "^"}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return "^"}, toString: function() {return {}}};
+if (encodeURI(object) !== "%5E") {
+ $ERROR('#3: var object = {valueOf: function() {return "^"}, toString: function() {return {}}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}};
+ if (encodeURI(object) !== "%5E") {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}}; encodeURI(object) not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}}; encodeURI(object) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return "^"}};
+if (encodeURI(object) !== "%5E") {
+ $ERROR('#5: var object = {toString: function() {return "^"}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return "^"}}
+if (encodeURI(object) !== "%5E") {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return "^"}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return "^"}, toString: function() {throw "error"}};
+ encodeURI(object);
+ $ERROR('#7.1: var object = {valueOf: function() {return "^"}, toString: function() {throw "error"}}; encodeURI(object) throw "error". Actual: ' + (encodeURI(object)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return "^"}, toString: function() {throw "error"}}; encodeURI(object) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ encodeURI(object);
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; encodeURI(object) throw TypeError. Actual: ' + (encodeURI(object)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; encodeURI(object) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.1_T1.js
new file mode 100644
index 000000000..33236bdec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.1_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A1.1_T1;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0xDC00 - 0xDFFF], throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xDC00; index <= 0xDFFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURIComponent(String.fromCharCode(index));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.1_T2.js
new file mode 100644
index 000000000..c6da20e22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.1_T2.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A1.1_T2;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0xDC00 - 0xDFFF], throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xDC00; index <= 0xDFFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURIComponent(String.fromCharCode(index, 0x0041));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.2_T1.js
new file mode 100644
index 000000000..f1134901b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A1.2_T1;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.length = k + 1, throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURIComponent(String.fromCharCode(index));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.2_T2.js
new file mode 100644
index 000000000..286031e3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.2_T2.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A1.2_T2;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.length = k + 1, throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURIComponent(String.fromCharCode(0x0041, index));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.3_T1.js
new file mode 100644
index 000000000..7258c28d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A1.3_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A1.3_T1;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.charAt(k+1) not in [0xDC00 - 0xDFFF], throw URIError;
+ * @description: Complex tests, string.charAt(k+1) in [0x0000, 0xD7FF, 0xD800, 0xDBFE, 0xDBFF, 0xE000, 0xFFFF];
+*/
+
+chars = [0x0000, 0xD7FF, 0xD800, 0xDBFE, 0xDBFF, 0xE000, 0xFFFF];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ count++;
+ res = true;
+ for (indexC = 0; indexC < chars.length; indexC++) {
+ hex = decimalToHexString(index);
+ try {
+ encodeURIComponent(String.fromCharCode(index, chars[indexC]));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ res = false;
+ }
+ if (res !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.1_T1.js
new file mode 100644
index 000000000..8c4276b3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.1_T1.js
@@ -0,0 +1,81 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A2.1_T1;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0x0000 - 0x007F]\[uriUnescaped], return 1 octet (00000000 0zzzzzzz -> 0zzzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+uriUnescaped = ["-", "_", ".", "!", "~", "*", "'", "(", ")", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+l :
+for (index = 0x0000; index <= 0x007F; index++) {
+ count++;
+ str = String.fromCharCode(index);
+ for (indexC = 0; indexC < uriUnescaped.length; indexC++) {
+ if (uriUnescaped[indexC] === str) continue l;
+ }
+ try {
+ if (encodeURIComponent(str).toUpperCase() === "%" + decimalToHexString(index).substring(2)) continue l;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.2_T1.js
new file mode 100644
index 000000000..6d974c28f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A2.2_T1;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0x0080 - 0x07FF], return 2 octets (00000yyy yyzzzzzz -> 110yyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+l:
+for (index = 0x0080; index <= 0x07FF; index++) {
+ count++;
+ hex1 = decimalToHexString(0x0080 + (index & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x00C0 + (index & 0x07C0) / 0x0040).substring(2);
+ str = String.fromCharCode(index);
+ try {
+ if (encodeURIComponent(str).toUpperCase() === "%" + hex2 + "%" + hex1) continue;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.3_T1.js
new file mode 100644
index 000000000..b3cd1465d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.3_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A2.3_T1;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0x0800 - 0xD7FF], return 3 octets (xxxxyyyy yyzzzzzz -> 1110xxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0x0800; index <= 0xD7FF; index++) {
+ count++;
+ hex1 = decimalToHexString(0x0080 + (index & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x00E0 + (index & 0xF000) / 0x1000).substring(2);
+ str = String.fromCharCode(index);
+ try {
+ if (encodeURIComponent(str).toUpperCase() === "%" + hex3 + "%" + hex2 + "%" + hex1) continue;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.4_T1.js
new file mode 100644
index 000000000..c5955bda0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.4_T1.js
@@ -0,0 +1,88 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A2.4_T1;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.charAt(k+1) in [0xDC00 � 0xDFFF], return 4 octets (000wwwxx xxxxyyyy yyzzzzzz -> 11110www 10xxxxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629, string.charAt(k+1) in [0xDC00, 0xDDFF, 0xDFFF];
+*/
+
+chars = [0xDC00, 0xDDFF, 0xDFFF];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ res = true;
+ for (indexC = 0; indexC < chars.length; indexC++) {
+ index1 = (index - 0xD800) * 0x400 + (chars[indexC] - 0xDC00) + 0x10000;
+ hex1 = decimalToHexString(0x0080 + (index1 & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index1 & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x0080 + (index1 & 0x3F000) / 0x1000).substring(2);
+ hex4 = decimalToHexString(0x00F0 + (index1 & 0x1C0000) / 0x40000).substring(2);
+ str = String.fromCharCode(index, chars[indexC]);
+ try {
+ if (encodeURIComponent(str).toUpperCase() !== "%" + hex4 + "%" + hex3 + "%" + hex2 + "%" + hex1) {
+ res = false;
+ }
+ } catch(e) {res = false}
+ }
+ if (res !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.4_T2.js
new file mode 100644
index 000000000..70d60a55d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.4_T2.js
@@ -0,0 +1,88 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A2.4_T2;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.charAt(k+1) in [0xDC00 � 0xDFFF], return 4 octets (000wwwxx xxxxyyyy yyzzzzzz -> 11110www 10xxxxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629, string.charAt(k) in [0xD800, 0xDBFF, 0xD9FF];
+*/
+
+chars = [0xD800, 0xDBFF, 0xD9FF];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0xDC00; index <= 0xDFFF; index++) {
+ res = true;
+ for (indexC = 0; indexC < chars.length; indexC++) {
+ index1 = (chars[indexC] - 0xD800) * 0x400 + (index - 0xDC00) + 0x10000;
+ hex1 = decimalToHexString(0x0080 + (index1 & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index1 & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x0080 + (index1 & 0x3F000) / 0x1000).substring(2);
+ hex4 = decimalToHexString(0x00F0 + (index1 & 0x1C0000) / 0x40000).substring(2);
+ str = String.fromCharCode(chars[indexC], index);
+ try {
+ if (encodeURIComponent(str).toUpperCase() !== "%" + hex4 + "%" + hex3 + "%" + hex2 + "%" + hex1) {
+ res = false;
+ }
+ } catch(e) {res = false}
+ }
+ if (res !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.5_T1.js
new file mode 100644
index 000000000..c7ecd1938
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A2.5_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A2.5_T1;
+ * @section: 15.1.3.4;
+ * @assertion: If string.charAt(k) in [0xE000 - 0xFFFF], return 3 octets (xxxxyyyy yyzzzzzz -> 1110xxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0xE000; index <= 0xFFFF; index++) {
+ count++;
+ hex1 = decimalToHexString(0x0080 + (index & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x00E0 + (index & 0xF000) / 0x1000).substring(2);
+ str = String.fromCharCode(index);
+ try {
+ if (encodeURIComponent(str).toUpperCase() === "%" + hex3 + "%" + hex2 + "%" + hex1) continue;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.1_T1.js
new file mode 100644
index 000000000..c5bc7d2e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A3.1_T1;
+ * @section: 15.1.3.4;
+ * @assertion: unescapedURIComponentSet not containing uriReserved;
+ * @description: Complex tests;
+*/
+
+uriReserved = ["%3B", "%2F", "%3F", "%3A", "%40", "%26", "%3D", "%2B", "%24", "%2C"];
+uriReserved_ = [";", "/", "?", ":", "@", "&", "=", "+", "$", ","];
+for (indexC = 0; indexC < 10; indexC++) {
+ var str = uriReserved_[indexC];
+ if (encodeURIComponent(str) !== uriReserved[indexC]) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURIComponentSet not containing' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T1.js
new file mode 100644
index 000000000..8f930dd48
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A3.2_T1;
+ * @section: 15.1.3.4;
+ * @assertion: unescapedURIComponentSet containing one instance of each character valid in uriUnescaped;
+ * @description: Complex tests, uriUnescaped :: uriAlpha;
+*/
+
+uriAlpha = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (indexC = 0; indexC < uriAlpha.length; indexC++) {
+ var str = uriAlpha[indexC];
+ if (encodeURIComponent(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing ' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T2.js
new file mode 100644
index 000000000..7dafca448
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T2.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A3.2_T2;
+ * @section: 15.1.3.4;
+ * @assertion: unescapedURIComponentSet containing one instance of each character valid in uriUnescaped;
+ * @description: Complex tests, uriUnescaped :: DecimalDigit;
+*/
+
+DecimalDigit = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
+for (indexC = 0; indexC < DecimalDigit.length; indexC++) {
+ var str = DecimalDigit[indexC];
+ if (encodeURIComponent(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T3.js
new file mode 100644
index 000000000..1a1d003b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.2_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A3.2_T3;
+ * @section: 15.1.3.4;
+ * @assertion: unescapedURIComponentSet containing one instance of each character valid in uriUnescaped;
+ * @description: Complex tests, uriUnescaped :: uriMark;
+*/
+
+uriMark = ["-", "_", ".", "!", "~", "*", "'", "(", ")"];
+for (indexC = 0; indexC < uriMark.length; indexC++) {
+ var str = uriMark[indexC];
+ if (encodeURIComponent(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.3_T1.js
new file mode 100644
index 000000000..da0807f67
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A3.3_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A3.3_T1;
+ * @section: 15.1.3.4;
+ * @assertion: unescapedURIComponentSet not containing "#";
+ * @description: encodeURIComponent("#") === "%23";
+*/
+
+if (encodeURIComponent("#") !== "%23") {
+ $ERROR('#1: unescapedURIComponentSet not containing "%23"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T1.js
new file mode 100644
index 000000000..a2d6da123
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A4_T1;
+ * @section: 15.1.3.4;
+ * @assertion: URI tests;
+ * @description: Checking ENGLISH ALPHABET;
+*/
+
+//CHECK#1
+if (encodeURIComponent("http://unipro.ru/0123456789") !== "http%3A%2F%2Funipro.ru%2F0123456789") {
+ $ERROR('#1: http://unipro.ru/0123456789');
+}
+
+//CHECK#2
+if (encodeURIComponent("aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ") !== "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ") {
+ $ERROR('#2: aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ');
+}
+
+//CHECK#3
+if (encodeURIComponent(";/?:@&=+$,") !== "%3B%2F%3F%3A%40%26%3D%2B%24%2C") {
+ $ERROR('#3: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T2.js
new file mode 100644
index 000000000..7d0db943e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A4_T2;
+ * @section: 15.1.3.4;
+ * @assertion: URI tests;
+ * @description: Checking RUSSIAN ALPHABET;
+*/
+
+//CHECK#1
+if ((encodeURIComponent("http://ru.wikipedia.org/wiki/Юникод") !== "http%3A%2F%2Fru.wikipedia.org%2Fwiki%2F%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4") && (encodeURIComponent("http://ru.wikipedia.org/wiki/Юникод") !== "http%3A%2F%2Fru.wikipedia.org%2Fwiki%2F" + "%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4".toLowerCase())) {
+ $ERROR('#1: http://ru.wikipedia.org/wiki/Юникод');
+}
+
+//CHECK#2
+if ((encodeURIComponent("http://ru.wikipedia.org/wiki/Юникод#Ссылки") !== "http%3A%2F%2Fru.wikipedia.org%2Fwiki%2F%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%23%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8") && (encodeURIComponent("http://ru.wikipedia.org/wiki/Юникод#Ссылки") !== "http%3A%2F%2Fru.wikipedia.org%2Fwiki%2F" + "%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%23%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8".toLowerCase())) {
+ $ERROR('#2: http://ru.wikipedia.org/wiki/Юникод#Ссылки');
+}
+
+//CHECK#3
+if ((encodeURIComponent("http://ru.wikipedia.org/wiki/Юникод#Версии Юникода") !== "http%3A%2F%2Fru.wikipedia.org%2Fwiki%2F%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%23%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0") && ((encodeURIComponent("http://ru.wikipedia.org/wiki/Юникод%23Версии Юникода") !== "http%3A%2F%2Fru.wikipedia.org%2Fwiki%2F" + "%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0".toLowerCase()))) {
+ $ERROR('#3: http://ru.wikipedia.org/wiki/Юникод#Версии Юникода');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T3.js
new file mode 100644
index 000000000..e52810f6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A4_T3;
+ * @section: 15.1.3.4;
+ * @assertion: URI tests;
+ * @description: Checking URL with Line Terminator;
+*/
+
+//CHECK#1
+if ((encodeURIComponent("http://unipro.ru/\nabout") !== "http%3A%2F%2Funipro.ru%2F%0Aabout") && encodeURIComponent("http://unipro.ru/\nabout") !== "http%3A%2F%2Funipro.ru%2F%0aabout") {
+ $ERROR('#1: http://unipro.ru/\\nabout');
+}
+
+//CHECK#2
+if ((encodeURIComponent("http://unipro.ru/\vabout") !== "http%3A%2F%2Funipro.ru%2F%0Babout") && encodeURIComponent("http://unipro.ru/\vabout") !== "http%3A%2F%2Funipro.ru%2F%0babout") {
+ $ERROR('#2: http://unipro.ru/\\vabout');
+}
+
+//CHECK#3
+if ((encodeURIComponent("http://unipro.ru/\fabout") !== "http%3A%2F%2Funipro.ru%2F%0Cabout") && encodeURIComponent("http://unipro.ru/\fabout") !== "http%3A%2F%2Funipro.ru%2F%0cabout") {
+ $ERROR('#3: http://unipro.ru/\\fabout');
+}
+
+//CHECK#4
+if ((encodeURIComponent("http://unipro.ru/\rabout") !== "http%3A%2F%2Funipro.ru%2F%0Dabout") && encodeURIComponent("http://unipro.ru/\rabout") !== "http%3A%2F%2Funipro.ru%2F%0dabout") {
+ $ERROR('#4: http://unipro.ru/\\rabout');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T4.js
new file mode 100644
index 000000000..6a0459896
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A4_T4;
+ * @section: 15.1.3.4;
+ * @assertion: URI tests;
+ * @description: Test some url;
+*/
+
+//CHECK#1
+if (encodeURIComponent("") !== "") {
+ $ERROR('#1: ""');
+}
+
+//CHECK#2
+if (encodeURIComponent("http://unipro.ru") !== "http%3A%2F%2Funipro.ru") {
+ $ERROR('#2: http://unipro.ru');
+}
+
+//CHECK#3
+if (encodeURIComponent("http://www.google.ru/support/jobs/bin/static.py?page=why-ru.html&sid=liveandwork") !== "http%3A%2F%2Fwww.google.ru%2Fsupport%2Fjobs%2Fbin%2Fstatic.py%3Fpage%3Dwhy-ru.html%26sid%3Dliveandwork") {
+ $ERROR('#3: http://www.google.ru/support/jobs/bin/static.py?page=why-ru.html&sid=liveandwork"');
+}
+
+//CHECK#4
+if (encodeURIComponent("http://en.wikipedia.org/wiki/UTF-8#Description") !== "http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FUTF-8%23Description") {
+ $ERROR('#4: http://en.wikipedia.org/wiki/UTF-8#Description');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.1.js
new file mode 100644
index 000000000..08bc0319f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A5.1;
+ * @section: 15.1.3.4, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of encodeURIComponent has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (encodeURIComponent.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: encodeURIComponent.propertyIsEnumerable(\'length\') === false. Actual: ' + (encodeURIComponent.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+result = true;
+for (p in encodeURIComponent){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in encodeURIComponent) { if (p === "length") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.2.js
new file mode 100644
index 000000000..1708a83a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A5.2;
+ * @section: 15.1.3.4, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of encodeURIComponent has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+*/
+
+//CHECK#1
+if (encodeURIComponent.hasOwnProperty('length') !== true) {
+ $FAIL('#1: encodeURIComponent.hasOwnProperty(\'length\') === true. Actual: ' + (encodeURIComponent.hasOwnProperty('length')));
+}
+
+delete encodeURIComponent.length;
+
+//CHECK#2
+if (encodeURIComponent.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete encodeURIComponent.length; encodeURIComponent.hasOwnProperty(\'length\') === true. Actual: ' + (encodeURIComponent.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (encodeURIComponent.length === undefined) {
+ $ERROR('#3: delete encodeURIComponent.length; encodeURIComponent.length !== undefined');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.3.js
new file mode 100644
index 000000000..ad8abb9f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A5.3;
+ * @section: 15.1.3.4;
+ * @assertion: The length property of encodeURIComponent has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+*/
+
+//CHECK#1
+x = encodeURIComponent.length;
+encodeURIComponent.length = Infinity;
+if (encodeURIComponent.length !== x) {
+ $ERROR('#1: x = encodeURIComponent.length; encodeURIComponent.length = Infinity; encodeURIComponent.length === x. Actual: ' + (encodeURIComponent.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.4.js
new file mode 100644
index 000000000..2c01443c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A5.4;
+ * @section: 15.1.3.4;
+ * @assertion: The length property of encodeURIComponent is 1;
+ * @description: encodeURIComponent.length === 1;
+*/
+
+//CHECK#1
+if (encodeURIComponent.length !== 1) {
+ $ERROR('#1: encodeURIComponent.length === 1. Actual: ' + (encodeURIComponent.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.5.js
new file mode 100644
index 000000000..fe17d537b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A5.5;
+ * @section: 15.1.3.4, 15.2.4.7, 12.6.4;
+ * @assertion: The encodeURIComponent property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('encodeURIComponent') !== false) {
+ $ERROR('#1: this.propertyIsEnumerable(\'encodeURIComponent\') === false. Actual: ' + (this.propertyIsEnumerable('encodeURIComponent')));
+}
+
+//CHECK#2
+result = true;
+for (p in this){
+ if (p === "encodeURIComponent") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "encodeURIComponent") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.6.js
new file mode 100644
index 000000000..3705c27b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.3.4_A5.6;
+* @section: 15.1.3.4;
+* @assertion: The encodeURIComponent property has not prototype property;
+* @description: Checking encodeURIComponent.prototype;
+*/
+
+//CHECK#1
+if (encodeURIComponent.prototype !== undefined) {
+ $ERROR('#1: encodeURIComponent.prototype === undefined. Actual: ' + (encodeURIComponent.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.7.js
new file mode 100644
index 000000000..09bf8aa3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.3.4_A5.7;
+* @section: 15.1.3.4, 11.2.2;
+* @assertion: The encodeURIComponent property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new encodeURIComponent();
+ $ERROR('#1.1: new encodeURIComponent() throw TypeError. Actual: ' + (new encodeURIComponent()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new encodeURIComponent() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A6_T1.js
new file mode 100644
index 000000000..2023af5d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.4_encodeURIComponent/S15.1.3.4_A6_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.4_A6_T1;
+ * @section: 15.1.3.4, 9.8, 8.6.2.6;
+ * @assertion: Operator use ToString;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, String);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return "^"}};
+if (encodeURIComponent(object) !== "%5Bobject%20Object%5D") {
+ $ERROR('#1: var object = {valueOf: function() {return "^"}}; encodeURIComponent(object) === %5Bobject%20Object%5D. Actual: ' + (encodeURIComponent(object)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return ""}, toString: function() {return "^"}};
+if (encodeURIComponent(object) !== "%5E") {
+ $ERROR('#2: var object = {valueOf: function() {return ""}, toString: function() {return "^"}}; encodeURIComponent(object) === "%5E". Actual: ' + (encodeURIComponent(object)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return "^"}, toString: function() {return {}}};
+if (encodeURIComponent(object) !== "%5E") {
+ $ERROR('#3: var object = {valueOf: function() {return "^"}, toString: function() {return {}}}; encodeURIComponent(object) === "%5E". Actual: ' + (encodeURIComponent(object)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}};
+ if (encodeURIComponent(object) !== "%5E") {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}}; encodeURIComponent(object) === "%5E". Actual: ' + (encodeURIComponent(object)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}}; encodeURIComponent(object) not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}}; encodeURIComponent(object) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return "^"}};
+if (encodeURIComponent(object) !== "%5E") {
+ $ERROR('#5: var object = {toString: function() {return "^"}}; encodeURIComponent(object) === "%5E". Actual: ' + (encodeURIComponent(object)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return "^"}}
+if (encodeURIComponent(object) !== "%5E") {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return "^"}}; encodeURIComponent(object) === "%5E". Actual: ' + (encodeURIComponent(object)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return "^"}, toString: function() {throw "error"}};
+ encodeURIComponent(object);
+ $ERROR('#7.1: var object = {valueOf: function() {return "^"}, toString: function() {throw "error"}}; encodeURIComponent(object) throw "error". Actual: ' + (encodeURIComponent(object)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return "^"}, toString: function() {throw "error"}}; encodeURIComponent(object) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ encodeURIComponent(object);
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; encodeURIComponent(object) throw TypeError. Actual: ' + (encodeURIComponent(object)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; encodeURIComponent(object) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A1_T1.js
new file mode 100644
index 000000000..086b61bc5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.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.
+
+/**
+ * @name: S15.1_A1_T1;
+ * @section: 15.1;
+ * @assertion: The global object does not have a [[Construct]] property;
+ * @description: It is not possible to use the global object as a constructor
+ * with the new operator;
+ * @negative
+*/
+
+new this;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A1_T2.js
new file mode 100644
index 000000000..58a46e125
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_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.
+
+/**
+ * @name: S15.1_A1_T2;
+ * @section: 15.1;
+ * @assertion: The global object does not have a [[Construct]] property;
+ * @description: It is not possible to use the global object as a constructor
+ * with the new operator;
+ * @negative
+*/
+
+new this();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A2_T1.js
new file mode 100644
index 000000000..050e0a84c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/S15.1_A2_T1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1_A2_T1;
+ * @section: 15.1;
+ * @assertion: The global object does not have a [[Call]] property;
+ * @description: It is not possible to invoke the global object as a function;
+ * @negative
+*/
+
+this();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T1.js
new file mode 100644
index 000000000..de376c405
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A1_T1;
+* @section: 15.2.1.1, 15.2.2.1;
+* @assertion: When the Object(value) is called and the value is null, undefined or not supplied,
+* create and return a new Object object if the object constructor had been called with the same arguments (15.2.2.1);
+* @description: Creating Object(null) and checking its properties;
+*/
+
+var __obj = Object(null);
+
+var n__obj = new Object(null);
+
+if (__obj.toString() !== n__obj.toString()){
+ $ERROR('#1');
+}
+
+if (__obj.constructor !== n__obj.constructor) {
+ $ERROR('#2');
+}
+
+if (__obj.prototype !== n__obj.prototype) {
+ $ERROR('#3');
+}
+
+if (__obj.toLocaleString() !== n__obj.toLocaleString()) {
+ $ERROR('#4');
+}
+
+if (typeof __obj !== typeof n__obj) {
+ $ERROR('#5');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T2.js
new file mode 100644
index 000000000..325bc48c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A1_T2;
+* @section: 15.2.1.1, 15.2.2.1;
+* @assertion: When the Object(value) is called and the value is null, undefined or not supplied,
+* create and return a new Object object if the object constructor had been called with the same arguments (15.2.2.1);
+* @description: Creating Object(void 0) and checking its properties;
+*/
+
+//var y= void 0;
+
+var __obj = Object(void 0);
+
+var n__obj = new Object(void 0);
+
+
+if (__obj.toString() !== n__obj.toString()){
+ $ERROR('#1');
+}
+
+if (__obj.constructor !== n__obj.constructor) {
+ $ERROR('#2');
+}
+
+if (__obj.prototype !== n__obj.prototype) {
+ $ERROR('#3');
+}
+
+if (__obj.toLocaleString() !== n__obj.toLocaleString()) {
+ $ERROR('#4');
+}
+
+if (typeof __obj !== typeof n__obj) {
+ $ERROR('#5');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T3.js
new file mode 100644
index 000000000..beddc9d4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A1_T3;
+* @section: 15.2.1.1, 15.2.2.1;
+* @assertion: When the Object(value) is called and the value is null, undefined or not supplied,
+* create and return a new Object object if the object constructor had been called with the same arguments (15.2.2.1);
+* @description: Creating Object() and checking its properties;
+*/
+
+var __obj = Object();
+
+var n__obj = new Object();
+
+if (__obj.toString() !== n__obj.toString()){
+ $ERROR('#1');
+}
+
+if (__obj.constructor !== n__obj.constructor) {
+ $ERROR('#2');
+}
+
+if (__obj.prototype !== n__obj.prototype) {
+ $ERROR('#3');
+}
+
+if (__obj.toLocaleString() !== n__obj.toLocaleString()) {
+ $ERROR('#4');
+}
+
+if (typeof __obj !== typeof n__obj) {
+ $ERROR('#5');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T4.js
new file mode 100644
index 000000000..4bfe181d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T4.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A1_T4;
+* @section: 15.2.1.1, 15.2.2.1;
+* @assertion: When the Object(value) is called and the value is null, undefined or not supplied,
+* create and return a new Object object if the object constructor had been called with the same arguments (15.2.2.1);
+* @description: Creating Object(undefined) and checking its properties;
+*/
+
+var __obj = Object(undefined);
+
+var n__obj = new Object(undefined);
+
+if (__obj.toString() !== n__obj.toString()){
+ $ERROR('#1');
+}
+
+if (__obj.constructor !== n__obj.constructor) {
+ $ERROR('#2');
+}
+
+if (__obj.prototype !== n__obj.prototype) {
+ $ERROR('#3');
+}
+
+if (__obj.toLocaleString() !== n__obj.toLocaleString()) {
+ $ERROR('#4');
+}
+
+if (typeof __obj !== typeof n__obj) {
+ $ERROR('#5');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T5.js
new file mode 100644
index 000000000..bd7e24b3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A1_T5.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A1_T5;
+* @section: 15.2.1.1, 15.2.2.1;
+* @assertion: When the Object(value) is called and the value is null, undefined or not supplied,
+* create and return a new Object object if the object constructor had been called with the same arguments (15.2.2.1);
+* @description: Creating Object(x) and checking its properties;
+*/
+
+var __obj = Object(x);
+
+var n__obj = new Object(x);
+
+if (__obj.toString() !== n__obj.toString()){
+ $ERROR('#1');
+}
+
+if (__obj.constructor !== n__obj.constructor) {
+ $ERROR('#2');
+}
+
+if (__obj.prototype !== n__obj.prototype) {
+ $ERROR('#3');
+}
+
+if (__obj.toLocaleString() !== n__obj.toLocaleString()) {
+ $ERROR('#4');
+}
+
+if (typeof __obj !== typeof n__obj) {
+ $ERROR('#5');
+}
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T1.js
new file mode 100644
index 000000000..6a8a9a670
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T1;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with boolean argument value;
+*/
+
+var bool = true;
+
+if(typeof bool !== 'boolean'){
+ $FAIL('#1: bool should be boolean primitive');
+}
+
+var obj = Object(bool);
+
+if (obj.constructor !== Boolean) {
+ $ERROR('#2: Object(true) returns ToObject(true)');
+}
+
+if (typeof obj !== "object") {
+ $ERROR('#3: Object(true) returns ToObject(true)');
+}
+
+if (!obj) {
+ $ERROR('#4: Object(true) returns ToObject(true)');
+}
+
+if (obj === true) {
+ $ERROR('#5: Object(true) returns ToObject(true)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T10.js
new file mode 100644
index 000000000..a88347d19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T10;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with array of numbers as argument value;
+*/
+
+var arr = [1,2,3];
+
+//CHECK#1
+if (typeof arr !== 'object') {
+ $ERROR('#1: arr = [1,2,3] is NOT an object');
+}
+
+var n_obj = Object(arr);
+
+arr.push(4);
+
+//CHECK#2
+if ((n_obj !== arr)||(n_obj[3]!==4)) {
+ $ERROR('#2: Object([1,2,3]) returns ToObject([1,2,3])');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T11.js
new file mode 100644
index 000000000..ab67bedbb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T11.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T11;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with function declaration as argument value;
+*/
+
+//CHECK#1
+if (typeof func !== 'undefined') {
+ $ERROR('#1: function expression can\'t be declarated');
+}
+
+var n_obj = Object(function func(){return 1;});
+
+//CHECK#2
+if ((n_obj.constructor !== Function)||(n_obj()!==1)) {
+ $ERROR('#2: Object(function func(){return 1;}) returns function');
+}
+
+//CHECK#3
+if (typeof func !== 'undefined') {
+ $ERROR('#3: function expression can\'t be declarated');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T12.js
new file mode 100644
index 000000000..c3fe61e62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T12.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T12;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with numeric expression as argument value;
+*/
+
+var obj = Object(1.1*([].length+{q:1}["q"]));
+
+//CHECK#2
+if (typeof obj !== "object") {
+ $ERROR('#2: Object(expression) returns ToObject(expression)');
+}
+
+//CHECK#3
+if (obj.constructor !== Number) {
+ $ERROR('#3: Object(expression) returns ToObject(expression)');
+}
+
+//CHECK#4
+if ((obj != 1.1)||(obj === 1.1)) {
+ $ERROR('#4: Object(expression) returns ToObject(expression)');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T13.js
new file mode 100644
index 000000000..2e9624394
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T13.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T13;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with boolean expression as argument value;
+*/
+
+var obj = Object((1===1)&&(!false));
+
+//CHECK#1
+if (obj.constructor !== Boolean) {
+ $ERROR('#1: Object(expression) returns ToObject(expression)');
+}
+
+//CHECK#1.1
+if (typeof obj !== "object") {
+ $ERROR('#1.1: Object(expression) returns ToObject(expression)');
+}
+
+//CHECK#2
+if (!(obj)) {
+ $ERROR('#2: Object(expression) returns ToObject(expression)');
+}
+
+//CHECK#3
+if (obj===true) {
+ $ERROR('#3: Object(expression) returns ToObject(expression)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T14.js
new file mode 100644
index 000000000..fda7f0f26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T14.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T14;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with sum of empty string and a number as argument value;
+*/
+
+var obj = Object(""+1);
+
+//CHECK#2
+if (obj.constructor !== String) {
+ $ERROR('#2: Object(expression) returns ToObject(expression)');
+}
+
+//CHECK#3
+if (typeof obj !== "object") {
+ $ERROR('#3: Object(expression) returns ToObject(expression)');
+}
+
+//CHECK#4
+if ((obj != "1")||(obj === "1")) {
+ $ERROR('#4: Object(expression) returns ToObject(expression)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T2.js
new file mode 100644
index 000000000..0ad8a90f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T2;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with number argument value;
+*/
+
+var num = 1.1;
+
+// CHECK#1
+if(typeof num !== 'number'){
+ $ERROR('#1: num = 1.1 should be Number primitive');
+}
+
+var obj = Object(num);
+
+//CHECK#2
+if (typeof obj !== "object") {
+ $ERROR('#2: Object(1.1) returns ToObject(1.1)');
+}
+
+//CHECK#3
+if (obj.constructor !== Number) {
+ $ERROR('#3: Object(1.1) returns ToObject(1.1)');
+}
+
+//CHECK#4
+if ((obj != 1.1)||(obj === 1.1)) {
+ $ERROR('#4: Object(1.1) returns ToObject(1.1)');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T3.js
new file mode 100644
index 000000000..ba37c32e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T3;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with string argument value;
+*/
+
+var str = 'Luke Skywalker';
+
+// CHECK#1
+if (typeof str !== 'string') {
+ $ERROR('#1: "Luke Skywalker" should be a String primitive');
+}
+
+var obj = Object(str);
+
+//CHECK#2
+if (obj.constructor !== String) {
+ $ERROR('#2: Object("Luke Skywalker") returns ToObject("Luke Skywalker")');
+}
+
+//CHECK#3
+if (typeof obj !== "object") {
+ $ERROR('#3: Object("Luke Skywalker") returns ToObject("Luke Skywalker")');
+}
+
+//CHECK#4
+if ((obj != "Luke Skywalker")||(obj === "Luke Skywalker")) {
+ $ERROR('#4: Object("Luke Skywalker") returns ToObject("Luke Skywalker")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T4.js
new file mode 100644
index 000000000..d367e6f38
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T4;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with object argument value;
+*/
+
+var obj = {flag:true};
+
+//CHECK#1
+if (typeof(obj) !== 'object') {
+ $FAIL('#1: obj = {flag:true} should be an Object');
+}
+
+var n_obj = Object(obj);
+
+//CHECK#2
+if ((n_obj !== obj)||(!(n_obj['flag']))) {
+ $ERROR('#2: Object({flag:true}) returns ToObject({flag:true})');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T5.js
new file mode 100644
index 000000000..7c5597e36
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T5;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with NaN argument value;
+*/
+
+var num = NaN;
+
+// CHECK#1
+if(typeof num !== 'number'){
+ $ERROR('#1: num = NaN should have number type');
+}
+
+var obj = Object(num);
+
+//CHECK#2
+if (obj.constructor !== Number) {
+ $ERROR('#2: Object(NaN) returns ToObject(NaN)');
+}
+
+//CHECK#3
+if (typeof obj!=="object") {
+ $ERROR('#2: Object(NaN) returns ToObject(NaN)');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T6.js
new file mode 100644
index 000000000..df1a7fa3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T6.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T6;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with Infinity argument value;
+*/
+
+var num = Infinity;
+
+// CHECK#1
+if(typeof num !== 'number'){
+ $ERROR('#1: num = Infinity should be a Number primitive');
+}
+
+var obj = Object(num);
+
+//CHECK#2
+if (obj.constructor !== Number) {
+ $ERROR('#2: Object(Infinity) returns ToObject(Infinity)');
+}
+
+//CHECK#3
+if (typeof obj!=="object") {
+ $ERROR('#3: Object(Infinity) returns ToObject(Infinity)');
+}
+
+//CHECK#4
+if ((obj != Infinity)||(obj === Infinity)) {
+ $ERROR('#4: Object(Infinity) returns ToObject(Infinity)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T7.js
new file mode 100644
index 000000000..9931b79e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T7.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T7;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with empty string argument value;
+*/
+
+var str = '';
+
+// CHECK#1
+if (typeof(str) !== 'string') {
+ $FAIL('#1: "" is NOT a String');
+}
+
+var obj = Object(str);
+
+//CHECK#2
+if (obj.constructor !== String) {
+ $ERROR('#2: Object("") returns ToObject("")');
+}
+
+//CHECK#3
+if (typeof obj !== "object") {
+ $ERROR('#3: Object("") returns ToObject("")');
+}
+
+//CHECK#4
+if ((obj != "")||(obj === "")) {
+ $ERROR('#4: Object("") returns ToObject("")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T8.js
new file mode 100644
index 000000000..a4b9ecf16
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T8.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T8;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with function variable argument value;
+*/
+
+var func = function(){return 1;};
+
+//CHECK#1
+if (typeof func !== 'function') {
+ $ERROR('#1: func = function(){return 1;} is NOT an function');
+}
+
+var n_obj = Object(func);
+
+//CHECK#2
+if ((n_obj !== func)||(n_obj()!==1)) {
+ $ERROR('#2: Object(function) returns function');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T9.js
new file mode 100644
index 000000000..b21482d09
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A2_T9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A2_T9;
+* @section: 15.2.1.1;
+* @assertion: When the Object function is called with one argument value,
+* and the value neither is null nor undefined, and is supplied, return ToObject(value);
+* @description: Calling Object function with function argument value. The function is declared;
+*/
+
+//CHECK#1
+if (typeof func !== 'function') {
+ $ERROR('#1: func = function(){return 1;} is NOT an function');
+}
+
+var n_obj = Object(func);
+
+//CHECK#2
+if ((n_obj !== func)||(n_obj()!==1)) {
+ $ERROR('#2: Object(function) returns function');
+}
+
+function func(){return 1;};
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T1.js
new file mode 100644
index 000000000..0f25e1348
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A3_T1;
+* @section: 15.2.1.1;
+* @assertion: Since calling Object as a function is identical to calling a function, list of arguments bracketing is allowed;
+* @description: Creating an object with "Object(1,2,3)";
+*/
+
+var obj = Object(1,2,3);
+
+//CHECK#1
+if (obj.constructor !== Number) {
+ $ERROR('#1: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#2
+if (typeof obj !== "object") {
+ $ERROR('#2: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#3
+if ((obj != 1)||(obj === 1)) {
+ $ERROR('3#: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T2.js
new file mode 100644
index 000000000..eb20cf7a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A3_T2;
+* @section: 15.2.1.1;
+* @assertion: Since calling Object as a function is identical to calling a function, list of arguments bracketing is allowed;
+* @description: Creating an object with "Object(null,2,3)";
+*/
+
+var obj = Object(null,2,3);
+
+//CHECK#1
+if (obj.constructor !== Object) {
+ $ERROR('#1: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#2
+if (typeof obj !== "object") {
+ $ERROR('#2: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T3.js
new file mode 100644
index 000000000..6d38f3c71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.1_The_Object_Constructor_Called_as_a_Function/S15.2.1.1_A3_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.1.1_A3_T3;
+* @section: 15.2.1.1;
+* @assertion: Since calling Object as a function is identical to calling a function, list of arguments bracketing is allowed;
+* @description: Creating an object with "Object((null,2,3),1,2)";
+*/
+
+var obj = Object((null,2,3),1,2);
+
+//CHECK#1
+if (obj.constructor !== Number) {
+ $ERROR('#1: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#2
+if (typeof obj !== "object") {
+ $ERROR('#2: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#3
+if ((obj != 3)||(obj === 3)) {
+ $ERROR('3#: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T1.js
new file mode 100644
index 000000000..dbad075d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A1_T1;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with no arguments the following steps are taken:
+* (The argument value was not supplied or its type was Null or Undefined.)
+* i) Create a new native ECMAScript object.
+* ii) The [[Prototype]] property of the newly constructed object is set to the Object prototype object.
+* iii) The [[Class]] property of the newly constructed object is set to "Object".
+* iv) The newly constructed object has no [[Value]] property.
+* v) Return the newly created native object;
+* @description: Creating new Object() and checking its properties;
+*/
+
+var obj = new Object();
+
+// CHECK#0
+if (obj === undefined) {
+ $ERROR('#0: new Object() return the newly created native object.');
+}
+
+// CHECK#1
+if (obj.constructor !== Object) {
+ $ERROR('#1: new Object() create a new native ECMAScript object');
+}
+
+// CHECK#2
+if (!(Object.prototype.isPrototypeOf(obj))) {
+ $ERROR('#2: when new Object() calls the [[Prototype]] property of the newly constructed object is set to the Object prototype object.');
+}
+
+// CHECK#3
+var to_string_result = '[object '+ 'Object' +']';
+if (obj.toString() !== to_string_result) {
+ $ERROR('#3: when new Object() calls the [[Class]] property of the newly constructed object is set to "Object".');
+}
+
+// CHECK#4
+if (obj.valueOf().toString() !== to_string_result.toString()) {
+ $ERROR('#4: when new Object() calls the newly constructed object has no [[Value]] property.');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T2.js
new file mode 100644
index 000000000..e6e60588a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T2.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A1_T2;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with no arguments the following steps are taken:
+* (The argument value was not supplied or its type was Null or Undefined.)
+* i) Create a new native ECMAScript object.
+* ii) The [[Prototype]] property of the newly constructed object is set to the Object prototype object.
+* iii) The [[Class]] property of the newly constructed object is set to "Object".
+* iv) The newly constructed object has no [[Value]] property.
+* v) Return the newly created native object;
+* @description: Creating new Object(void 0) and checking its properties;
+*/
+
+//var foo = void 0;
+var obj = new Object(void 0);
+
+// CHECK#0
+if (obj === undefined) {
+ $ERROR('#0: new Object(undefined) return the newly created native object.');
+}
+
+// CHECK#1
+if (obj.constructor !== Object) {
+ $ERROR('#1: new Object(undefined) create a new native ECMAScript object');
+}
+
+// CHECK#2
+if (!(Object.prototype.isPrototypeOf(obj))) {
+ $ERROR('#2: when new Object(undefined) calls the [[Prototype]] property of the newly constructed object is set to the Object prototype object.');
+}
+
+// CHECK#3
+var to_string_result = '[object '+ 'Object' +']';
+if (obj.toString() !== to_string_result) {
+ $ERROR('#3: when new Object(undefined) calls the [[Class]] property of the newly constructed object is set to "Object".');
+}
+
+// CHECK#4
+if (obj.valueOf().toString() !== to_string_result.toString()) {
+ $ERROR('#4: when new Object(undefined) calls the newly constructed object has no [[Value]] property.');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T3.js
new file mode 100644
index 000000000..498e44ce8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T3.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A1_T3;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with no arguments the following steps are taken:
+* (The argument value was not supplied or its type was Null or Undefined.)
+* i) Create a new native ECMAScript object.
+* ii) The [[Prototype]] property of the newly constructed object is set to the Object prototype object.
+* iii) The [[Class]] property of the newly constructed object is set to "Object".
+* iv) The newly constructed object has no [[Value]] property.
+* v) Return the newly created native object;
+* @description: Creating new Object(null) and checking its properties;
+*/
+
+var obj = new Object(null);
+
+// CHECK#0
+if (obj === undefined) {
+ $ERROR('#0: new Object(null) return the newly created native object.');
+}
+
+// CHECK#1
+if (obj.constructor !== Object) {
+ $ERROR('#1: new Object(null) create a new native ECMAScript object');
+}
+
+// CHECK#2
+if (!(Object.prototype.isPrototypeOf(obj))) {
+ $ERROR('#2: when new Object(null) calls the [[Prototype]] property of the newly constructed object is set to the Object prototype object.');
+}
+
+// CHECK#3
+var to_string_result = '[object '+ 'Object' +']';
+if (obj.toString() !== to_string_result) {
+ $ERROR('#3: when new Object(null) calls the [[Class]] property of the newly constructed object is set to "Object".');
+}
+
+// CHECK#4
+if (obj.valueOf().toString() !== to_string_result.toString()) {
+ $ERROR('#4: when new Object(null) calls the newly constructed object has no [[Value]] property.');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T4.js
new file mode 100644
index 000000000..da6a92760
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T4.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A1_T4;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with no arguments the following steps are taken:
+* (The argument value was not supplied or its type was Null or Undefined.)
+* i) Create a new native ECMAScript object.
+* ii) The [[Prototype]] property of the newly constructed object is set to the Object prototype object.
+* iii) The [[Class]] property of the newly constructed object is set to "Object".
+* iv) The newly constructed object has no [[Value]] property.
+* v) Return the newly created native object;
+* @description: Creating new Object(undefined) and checking its properties;
+*/
+
+var obj = new Object(undefined);
+
+// CHECK#0
+if (obj === undefined) {
+ $ERROR('#0: new Object(undefined) return the newly created native object.');
+}
+
+// CHECK#1
+if (obj.constructor !== Object) {
+ $ERROR('#1: new Object(undefined) create a new native ECMAScript object');
+}
+
+// CHECK#2
+if (!(Object.prototype.isPrototypeOf(obj))) {
+ $ERROR('#2: when new Object(undefined) calls the [[Prototype]] property of the newly constructed object is set to the Object prototype object.');
+}
+
+// CHECK#3
+var to_string_result = '[object '+ 'Object' +']';
+if (obj.toString() !== to_string_result) {
+ $ERROR('#3: when new Object(undefined) calls the [[Class]] property of the newly constructed object is set to "Object".');
+}
+
+// CHECK#4
+if (obj.valueOf().toString() !== to_string_result.toString()) {
+ $ERROR('#4: when new Object(undefined) calls the newly constructed object has no [[Value]] property.');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T5.js
new file mode 100644
index 000000000..afd952766
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A1_T5.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A1_T5;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with no arguments the following steps are taken:
+* (The argument value was not supplied or its type was Null or Undefined.)
+* i) Create a new native ECMAScript object.
+* ii) The [[Prototype]] property of the newly constructed object is set to the Object prototype object.
+* iii) The [[Class]] property of the newly constructed object is set to "Object".
+* iv) The newly constructed object has no [[Value]] property.
+* v) Return the newly created native object;
+* @description: Creating new Object(x), where x is "undefined", and checking it properties;
+*/
+
+var obj = new Object(x);
+
+// CHECK#0
+if (obj === undefined) {
+ $ERROR('#0: new Object(undefined) return the newly created native object.');
+}
+
+// CHECK#1
+if (obj.constructor !== Object) {
+ $ERROR('#1: new Object(undefined) create a new native ECMAScript object');
+}
+
+// CHECK#2
+if (!(Object.prototype.isPrototypeOf(obj))) {
+ $ERROR('#2: when new Object(undefined) calls the [[Prototype]] property of the newly constructed object is set to the Object prototype object.');
+}
+
+// CHECK#3
+var to_string_result = '[object '+ 'Object' +']';
+if (obj.toString() !== to_string_result) {
+ $ERROR('#3: when new Object(undefined) calls the [[Class]] property of the newly constructed object is set to "Object".');
+}
+
+// CHECK#4
+if (obj.valueOf().toString() !== to_string_result.toString()) {
+ $ERROR('#4: when new Object(undefined) calls the newly constructed object has no [[Value]] property.');
+}
+
+var x;
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T1.js
new file mode 100644
index 000000000..6696c9e04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A2_T1;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with one argument value and
+* the value is a native ECMAScript object, do not create a new object but simply return value;
+* @description: The value is Object;
+*/
+
+var obj = {prop:1};
+
+var n_obj = new Object(obj);
+
+//CHECK#1
+if (n_obj !== obj) {
+ $ERROR('#1: When the Object constructor is called and if the value is an Object simply value returns.');
+}
+
+//CHECK#2
+if (n_obj['prop'] !== 1) {
+ $ERROR('#2: When the Object constructor is called and if the value is an Object simply value returns.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T2.js
new file mode 100644
index 000000000..632631202
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A2_T2;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with one argument value and
+* the value is a native ECMAScript object, do not create a new object but simply return value;
+* @description: The value is a function variable;
+*/
+
+var func = function(){return 1;};
+
+var n_obj = new Object(func);
+
+//CHECK#1
+if (n_obj !== func) {
+ $ERROR('#1: When the Object constructor is called and if the value is an Object simply value returns');
+}
+
+//CHECK#2
+if (n_obj() !== 1) {
+ $ERROR('When the Object constructor is called and if the value is an Object simply value returns');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T3.js
new file mode 100644
index 000000000..94a63320f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A2_T3;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with one argument value and
+* the value is a native ECMAScript object, do not create a new object but simply return value;
+* @description: The value is an array;
+*/
+
+var arr = [1,2,3];
+
+var n_obj = new Object(arr);
+
+arr.push(4);
+
+//CHECK#1
+if (n_obj !== arr) {
+ $ERROR('#1: When the Object constructor is called and if the value is an Object simply value returns.');
+}
+
+//CHECK#2
+if (n_obj[3] !== 4) {
+ $ERROR('#2: When the Object constructor is called and if the value is an Object simply value returns.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T4.js
new file mode 100644
index 000000000..b71905e38
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A2_T4;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with one argument value and
+* the value is a native ECMAScript object, do not create a new object but simply return value;
+* @description: The value is "this";
+*/
+
+var x=1;
+
+var obj = this;
+
+var n_obj = new Object(obj);
+
+//CHECK#1
+if (n_obj !== obj) {
+ $ERROR('#1: When the Object constructor is called and if the value is an Object simply value returns.');
+}
+
+//CHECK#2
+if (n_obj['x'] !== 1) {
+ $ERROR('#2: When the Object constructor is called and if the value is an Object simply value returns.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T5.js
new file mode 100644
index 000000000..03c98f039
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T5.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A2_T5;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with one argument value and
+* the value is a native ECMAScript object, do not create a new object but simply return value;
+* @description: The value is a Date object;
+*/
+
+var obj = new Date(1978,3);
+
+var n_obj = new Object(obj);
+
+//CHECK#1
+if (n_obj !== obj) {
+ $ERROR('#1: When the Object constructor is called and if the value is an Object simply value returns.');
+}
+
+//CHECK#2
+if ((n_obj.getYear() !== 78)||(n_obj.getMonth() !== 3)) {
+ $ERROR('#2: When the Object constructor is called and if the value is an Object simply value returns.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T6.js
new file mode 100644
index 000000000..b7cec3274
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T6.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A2_T6;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with one argument value and
+* the value is a native ECMAScript object, do not create a new object but simply return value;
+* @description: The value is a declared function;
+*/
+
+
+
+var n_obj = new Object(func);
+
+//CHECK#1
+if (n_obj !== func) {
+ $ERROR('#1: When the Object constructor is called and if the value is an Object simply value returns');
+}
+
+//CHECK#2
+if (n_obj() !== 1) {
+ $ERROR('When the Object constructor is called and if the value is an Object simply value returns');
+}
+
+function func(){return 1;};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T7.js
new file mode 100644
index 000000000..1f87507f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A2_T7.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A2_T7;
+* @section: 15.2.2.1;
+* @assertion: When the Object constructor is called with one argument value and
+* the value is a native ECMAScript object, do not create a new object but simply return value;
+* @description: The value is a function declaration;
+*/
+
+//CHECK#0
+if (typeof func !== 'undefined') {
+ $ERROR('#0: function expression can\'t be declarated');
+}
+
+var n_obj = new Object(function func(){return 1;});
+
+//CHECK#1
+if (n_obj.constructor !== Function) {
+ $ERROR('#1: When the Object constructor is called and if the value is an Object simply value returns');
+}
+
+//CHECK#2
+if (n_obj() !== 1) {
+ $ERROR('#2: When the Object constructor is called and if the value is an Object simply value returns');
+}
+
+//CHECK#3
+if (typeof func !== 'undefined') {
+ $ERROR('#3: function expression can\'t be declarated');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T1.js
new file mode 100644
index 000000000..5e3770286
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T1.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A3_T1;
+* @section: 15.2.2.1, 8.6;
+* @assertion: When the Object constructor is called with one argument value and
+* the type of value is String, return ToObject(string);
+* @description: Argument value is a nonempty string;
+*/
+
+var str = 'Obi-Wan Kenobi';
+
+//CHECK#1
+if (typeof str !== 'string') {
+ $FAIL('#1: "Obi-Wan Kenobi" is NOT a String');
+}
+
+
+var n_obj = new Object(str);
+
+//CHECK#2
+if (n_obj.constructor !== String) {
+ $ERROR('#2: When the Object constructor is called with String argument return ToObject(string)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with String argument return ToObject(string)');
+}
+
+//CHECK#4
+if ( n_obj != str) {
+ $ERROR('#4: When the Object constructor is called with String argument return ToObject(string)');
+}
+
+//CHECK#5
+if ( n_obj === str) {
+ $ERROR('#5: When the Object constructor is called with String argument return ToObject(string)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T2.js
new file mode 100644
index 000000000..5e06f01bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A3_T2;
+* @section: 15.2.2.1, 8.6;
+* @assertion: When the Object constructor is called with one argument value and
+* the type of value is String, return ToObject(string);
+* @description: Argument value is an empty string;
+*/
+
+var str = '';
+
+//CHECK#1
+if (typeof str !== 'string') {
+ $FAIL('#1: "" is NOT a String');
+}
+
+var n_obj = new Object(str);
+
+//CHECK#2
+if (n_obj.constructor !== String) {
+ $ERROR('#2: When the Object constructor is called with String argument return ToObject(string)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with String argument return ToObject(string)');
+}
+
+//CHECK#4
+if ( n_obj != str) {
+ $ERROR('#4: When the Object constructor is called with String argument return ToObject(string)');
+}
+
+//CHECK#5
+if ( n_obj === str) {
+ $ERROR('#5: When the Object constructor is called with String argument return ToObject(string)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T3.js
new file mode 100644
index 000000000..6bbcca7dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A3_T3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A3_T3;
+* @section: 15.2.2.1, 8.6;
+* @assertion: When the Object constructor is called with one argument value and
+* the type of value is String, return ToObject(string);
+* @description: Argument value is sum of empty string and number;
+*/
+
+var n_obj = new Object(""+1);
+
+//CHECK#2
+if (n_obj.constructor !== String) {
+ $ERROR('#2: When the Object constructor is called with String argument return ToObject(string)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with String argument return ToObject(string)');
+}
+
+//CHECK#4
+if ( n_obj != "1") {
+ $ERROR('#4: When the Object constructor is called with String argument return ToObject(string)');
+}
+
+//CHECK#5
+if ( n_obj === "1") {
+ $ERROR('#5: When the Object constructor is called with String argument return ToObject(string)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T1.js
new file mode 100644
index 000000000..e5c7d87a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A4_T1;
+* @section: 15.2.2.1, 8.6;
+* @assertion: When the Object constructor is called with one argument value and
+* the type of value is Boolean, return ToObject(boolean);
+* @description: Argument value is "true";
+*/
+
+
+var bool = true;
+
+//CHECK#1
+if (typeof bool !== 'boolean') {
+ $FAIL('#1: true is NOT a boolean');
+}
+
+var n_obj = new Object(bool);
+
+//CHECK#2
+if (n_obj.constructor !== Boolean) {
+ $ERROR('#2: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
+
+//CHECK#4
+if ( n_obj != bool) {
+ $ERROR('#4: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
+
+//CHECK#5
+if ( n_obj === bool) {
+ $ERROR('#5: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T2.js
new file mode 100644
index 000000000..5afa51df9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_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.
+
+/**
+* @name: S15.2.2.1_A4_T2;
+* @section: 15.2.2.1, 8.6;
+* @assertion: When the Object constructor is called with one argument value and
+* the type of value is Boolean, return ToObject(boolean);
+* @description: Argument value is "false";
+*/
+
+
+var bool = false;
+
+//CHECK#1
+if (typeof bool !== 'boolean') {
+ $FAIL('#1: false is NOT a boolean');
+}
+
+var n_obj = new Object(bool);
+
+//CHECK#2
+if (n_obj.constructor !== Boolean) {
+ $ERROR('#2: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
+
+//CHECK#4
+if ( n_obj != bool) {
+ $ERROR('#4: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
+
+//CHECK#5
+if ( n_obj === bool) {
+ $ERROR('#5: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T3.js
new file mode 100644
index 000000000..c4cfcd075
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A4_T3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A4_T3;
+* @section: 15.2.2.1, 8.6;
+* @assertion: When the Object constructor is called with one argument value and
+* the type of value is Boolean, return ToObject(boolean);
+* @description: Argument value is boolean expression;
+*/
+
+var n_obj = new Object((1===1)&&!(false));
+
+//CHECK#2
+if (n_obj.constructor !== Boolean) {
+ $ERROR('#2: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
+
+//CHECK#4
+if ( n_obj != true) {
+ $ERROR('#4: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
+
+//CHECK#5
+if ( n_obj === true) {
+ $ERROR('#5: When the Object constructor is called with Boolean argument return ToObject(boolean)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T1.js
new file mode 100644
index 000000000..e0e134bf2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A5_T1;
+* @section: 15.2.2.1, 8.6;
+* @assertion: When the Object constructor is called with one argument value and
+* the type of value is Number, return ToObject(number);
+* @description: Argument value is any number;
+*/
+
+var num = 1.0;
+
+//CHECK#1
+if (typeof num !== 'number') {
+ $FAIL('#1: 1.0 is NOT a number');
+}
+
+var n_obj = new Object(num);
+
+//CHECK#2
+if (n_obj.constructor !== Number) {
+ $ERROR('#2: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#4
+if ( n_obj != num) {
+ $ERROR('#4: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#5
+if ( n_obj === num) {
+ $ERROR('#5: When the Object constructor is called with Number argument return ToObject(number)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T2.js
new file mode 100644
index 000000000..f6c6fe521
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A5_T2;
+* @section: 15.2.2.1, 8.6;
+* @assertion: When the Object constructor is called with one argument value and
+* the type of value is Number, return ToObject(number);
+* @description: Argument value is NaN;
+*/
+
+var num = NaN;
+
+//CHECK#1
+if (typeof num !== 'number') {
+ $FAIL('#1: NaN is NOT a number');
+}
+
+var n_obj = new Object(num);
+
+//CHECK#2
+if (n_obj.constructor !== Number) {
+ $ERROR('#2: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with Number argument return ToObject(number)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T3.js
new file mode 100644
index 000000000..0fdc5f2b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A5_T3;
+* @section: 15.2.2.1, 8.6;
+* @assertion:When the Object constructor is called with one argument value and
+* the type of value is Number, return ToObject(number);
+* @description: Argument value is Infinity;
+*/
+
+var num = Infinity;
+
+//CHECK#1
+if (typeof num !== 'number') {
+ $FAIL('#1: Infinity is NOT a number');
+}
+
+var n_obj = new Object(num);
+
+//CHECK#2
+if (n_obj.constructor !== Number) {
+ $ERROR('#2: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#4
+if ( n_obj != num) {
+ $ERROR('#4: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#5
+if ( n_obj === num) {
+ $ERROR('#5: When the Object constructor is called with Number argument return ToObject(number)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A5_T4.js
new file mode 100644
index 000000000..fc4ca32ff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_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.
+
+/**
+* @name: S15.2.2.1_A5_T4;
+* @section: 15.2.2.1, 8.6;
+* @assertion: When the Object constructor is called with one argument value and
+* the type of value is Number, return ToObject(number);
+* @description: Argument value is numeric expression;
+*/
+
+var n_obj = new Object( 2*([].length + {q:1}["q"]));
+
+//CHECK#2
+if (n_obj.constructor !== Number) {
+ $ERROR('#2: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#3
+if (typeof n_obj !== 'object') {
+ $ERROR('#3: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#4
+if ( n_obj != 2) {
+ $ERROR('#4: When the Object constructor is called with Number argument return ToObject(number)');
+}
+
+//CHECK#5
+if ( n_obj === 2) {
+ $ERROR('#5: When the Object constructor is called with Number argument return ToObject(number)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T1.js
new file mode 100644
index 000000000..6b5c11126
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A6_T1;
+* @section: 15.2.2.1;
+* @assertion: Since calling Object as a function is identical to calling a function, list of arguments bracketing is allowed;
+* @description: Creating an object with "new Object(1,2,3)";
+*/
+
+var obj = new Object(1,2,3);
+
+//CHECK#1
+if (obj.constructor !== Number) {
+ $ERROR('#1: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#2
+if (typeof obj !== "object") {
+ $ERROR('#2: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#3
+if ((obj != 1)||(obj === 1)) {
+ $ERROR('3#: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T2.js
new file mode 100644
index 000000000..bc08329d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A6_T2;
+* @section: 15.2.2.1;
+* @assertion: Since calling Object as a function is identical to calling a function, list of arguments bracketing is allowed;
+* @description: Creating an object with "new Object(null,2,3)";
+*/
+
+var obj = new Object(null,2,3);
+
+//CHECK#1
+if (obj.constructor !== Object) {
+ $ERROR('#1: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#2
+if (typeof obj !== "object") {
+ $ERROR('#2: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T3.js
new file mode 100644
index 000000000..66420a923
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.2_The_Object_Constructor/S15.2.2.1_A6_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.2.1_A6_T3;
+* @section: 15.2.2.1;
+* @assertion: Since calling Object as a function is identical to calling a function, list of arguments bracketing is allowed;
+* @description: Creating an object with "new Object((null,2,3),2,3)";
+*/
+
+var obj = new Object((null,2,3),1,2);
+
+//CHECK#1
+if (obj.constructor !== Number) {
+ $ERROR('#1: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#2
+if (typeof obj !== "object") {
+ $ERROR('#2: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
+
+//CHECK#3
+if ((obj != 3)||(obj === 3)) {
+ $ERROR('3#: Since Object as a function calling is the same as function calling list of arguments can appears in braces;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A1.js
new file mode 100644
index 000000000..0e1f37e08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.3.1_A1;
+* @section: 15.2.3.1, 15.2.4;
+* @assertion: The Object.prototype property has the attribute ReadOnly;
+* @description: Checking if varying "Object.prototype" property fails;
+*/
+
+var obj = Object.prototype;
+Object.prototype = function(){return "shifted";};
+
+//CHECK#1
+if (Object.prototype !== obj) {
+ $ERROR('#1: the Object.prototype property has the attributes ReadOnly.');
+}
+
+//CHECK#2
+try {
+ Object.prototype();
+ $ERROR('#2: the Object.prototype property has the attributes ReadOnly');
+} catch (e) {
+ ;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A2.js
new file mode 100644
index 000000000..6c7233981
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.3.1_A2;
+* @section: 15.2.3.1, 15.2.4;
+* @assertion: The Object.prototype property has the attribute DontEnum;
+* @description: Checking if enumerating "Object.prototype" property fails;
+*/
+
+// CHECK#1
+if (Object.propertyIsEnumerable('prototype')) {
+ $ERROR('#1: the Object.prototype property has the attributes DontEnum');
+}
+
+// CHECK#2
+var cout=0;
+
+for (p in Object){
+ if (p==="prototype") cout++;
+}
+
+if (cout !== 0) {
+ $ERROR('#2: the Object.prototype property has the attributes DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A3.js
new file mode 100644
index 000000000..81abd5f86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/15.2.3.1_Object.prototype/S15.2.3.1_A3.js
@@ -0,0 +1,17 @@
+ // Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.3.1_A3;
+* @section: 15.2.3.1, 15.2.4;
+* @assertion: The Object.prototype property has the attribute DontDelete;
+* @description: Checking if deleting "Object.prototype" property fails;
+* @strict_mode_negative
+*/
+
+delete Object.prototype;
+
+//CHECK#2
+if (!(Object.hasOwnProperty('prototype'))) {
+ $ERROR('#2: the Object.prototype property has the attributes DontDelete.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A1.js
new file mode 100644
index 000000000..58233accf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.2.3_A1;
+ * @section: 15.2.3;
+ * @assertion: The Object constructor has the property "prototype";
+ * @description: Checking existence of the property "prototype";
+ */
+
+if(!Object.hasOwnProperty("prototype")){
+ $ERROR('#1: The Object constructor has the property "prototype"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A2.js
new file mode 100644
index 000000000..ebab688c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_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.
+
+/**
+* @name: S15.2.3_A2;
+* @section: 15.2.3, 15.2.4;
+* @assertion: The value of the internal [[Prototype]] property of the Object constructor
+* is the Function prototype object;
+* @description: Checking Function.prototype.isPrototypeOf(Object);
+*/
+
+// CHECK#
+if (!(Function.prototype.isPrototypeOf(Object))) {
+ $ERROR('#1: the value of the internal [[Prototype]] property of the Object constructor is the Function prototype object.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_A3.js
new file mode 100644
index 000000000..fa3ba100b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.3_Properties_of_the_Object_Constructor/S15.2.3_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.
+
+/**
+* @name: S15.2.3_A3;
+* @section: 15.2.3, 15.2.4;
+* @assertion: Object constructor has length property whose value is 1;
+* @description: Checking Object.length;
+*/
+
+//CHECK#1
+if(!Object.hasOwnProperty("length")){
+ $ERROR('#1: The Object constructor has the property "length"');
+}
+
+//CHECK#2
+if (Object.length !== 1) {
+ $ERROR('#2: Object.length property value should be 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A1.js
new file mode 100644
index 000000000..2ea370102
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A1;
+* @section: 15.2.4.2;
+* @assertion: When the toString method is called, the following steps are taken:
+* i) Get the [[Class]] property of this object
+* ii) Compute a string value by concatenating the three strings "[object ", Result(1), and "]"
+* iii) Return Result(2);
+* @description: Checking the type of Object.prototype.toString and the returned result;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.toString !== "function") {
+ $ERROR('#1: toString method defined');
+}
+
+//CHECK#2
+if (Object.prototype.toString() !=="[object "+"Object"+"]") {
+ $ERROR('#2: return a string value by concatenating the three strings "[object ", the [[Class]] property of this object, and "]"');
+}
+
+//CHECK#3
+if ({}.toString()!=="[object "+"Object"+"]") {
+ $ERROR('#3: return a string value by concatenating the three strings "[object ", the [[Class]] property of this object, and "]"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A10.js
new file mode 100644
index 000000000..b114e63c7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A10.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A10;
+* @section: 15.2.4.2;
+* @assertion: The Object.prototype.toString.length property has the attribute ReadOnly;
+* @description: Checking if varying the Object.prototype.toString.length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (!(Object.prototype.toString.hasOwnProperty('length'))) {
+ $FAIL('#1: the Object.prototype.toString has length property.');
+}
+
+var obj = Object.prototype.toString.length;
+
+Object.prototype.toString.length = function(){return "shifted";};
+
+//CHECK#2
+if (Object.prototype.toString.length !== obj) {
+ $ERROR('#2: the Object.prototype.toString length property has the attributes ReadOnly.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A11.js
new file mode 100644
index 000000000..9ee582285
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A11.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A11;
+* @section: 15.2.4.2;
+* @assertion: The length property of the toString method is 0;
+* @description: Checking the Object.prototype.toString.length property;
+*/
+
+//CHECK#1
+if (!(Object.prototype.toString.hasOwnProperty("length"))) {
+ $ERROR('#1: The length property of the toString method is 0');
+}
+
+//CHECK#2
+if (Object.prototype.toString.length !== 0) {
+ $ERROR('#2: The length property of the toString method is 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A12.js
new file mode 100644
index 000000000..466ae756a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A12.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A12;
+* @section: 15.2.4.2;
+* @assertion: If the this value is undefined, return "[object Undefined]".
+*/
+
+if (Object.prototype.toString.call(undefined) !== "[object Undefined]") {
+ $ERROR('If the this value is undefined, return "[object Undefined]".');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A13.js
new file mode 100644
index 000000000..f095a629b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A13.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A13;
+* @section: 15.2.4.2;
+* @assertion: If the this value is null, return "[object Null]".
+*/
+
+if (Object.prototype.toString.call(null) !== "[object Null]") {
+ $ERROR('If the this value is null, return "[object Null]".');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A14.js
new file mode 100644
index 000000000..0ac2023ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A14.js
@@ -0,0 +1,14 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A14;
+* @section: 15.2.4.2;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+*/
+
+if (Object.prototype.toString.call(33) !== "[object Number]") {
+ $ERROR('Let O be the result of calling ToObject passing the this ' +
+ 'value as the argument.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A15.js
new file mode 100644
index 000000000..2bcdb6bb9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A15.js
@@ -0,0 +1,14 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A15;
+* @section: 15.2.4.2;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+*/
+
+if (Object.prototype.toString.call(true) !== "[object Boolean]") {
+ $ERROR('Let O be the result of calling ToObject passing the this ' +
+ 'value as the argument.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A16.js
new file mode 100644
index 000000000..30e0ab548
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A16.js
@@ -0,0 +1,14 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A16;
+* @section: 15.2.4.2;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+*/
+
+if (Object.prototype.toString.call('foo') !== "[object String]") {
+ $ERROR('Let O be the result of calling ToObject passing the this ' +
+ 'value as the argument.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A6.js
new file mode 100644
index 000000000..73d75fb0f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A6;
+* @section: 15.2.4.2, 13.2;
+* @assertion: Object.prototype.toString has not prototype property;
+* @description: Checking if obtaining the prototype property of Object.prototype.toString fails;
+*/
+
+//CHECK#1
+if (Object.prototype.toString.prototype !== undefined) {
+ $ERROR('#1: Object.prototype.toString has not prototype property'+Object.prototype.toString.prototype);
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A7.js
new file mode 100644
index 000000000..3c182800a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A7;
+* @section: 15.2.4.2, 13.2;
+* @assertion: Object.prototype.toString can't be used as a constructor;
+* @description: Checking if creating "new Object.prototype.toString" fails;
+*/
+
+var FACTORY = Object.prototype.toString;
+
+try {
+ instance = new FACTORY;
+ $FAIL('#1: Object.prototype.toString can\'t be used as a constructor');
+} catch (e) {
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A8.js
new file mode 100644
index 000000000..a866545e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A8.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A8;
+* @section: 15.2.4.2;
+* @assertion: The Object.prototype.toString.length property has the attribute DontEnum;
+* @description: Checking if enumerating the Object.prototype.toString.length property fails;
+*/
+
+//CHECK#0
+if (!(Object.prototype.toString.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.toString has length property.');
+}
+
+
+// CHECK#1
+if (Object.prototype.toString.propertyIsEnumerable('length')) {
+ $ERROR('#1: the Object.prototype.toString.length property has the attributes DontEnum');
+}
+
+// CHECK#2
+for (var p in Object.prototype.toString){
+ if (p==="length")
+ $ERROR('#2: the Object.prototype.toString.length property has the attributes DontEnum');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A9.js
new file mode 100644
index 000000000..30dbfd64b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.2_Object.prototype.toString/S15.2.4.2_A9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.2_A9;
+* @section: 15.2.4.2;
+* @assertion: The Object.prototype.toString.length property has the attribute DontDelete;
+* @description: Checknig if deleting of the Object.prototype.toString.length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#0
+if (!(Object.prototype.toString.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.toString has length property');
+}
+
+//CHECK#1
+if (delete Object.prototype.toString.length) {
+ $ERROR('#1: The Object.prototype.toString.length property has the attributes DontDelete');
+}
+
+//CHECK#2
+if (!(Object.prototype.toString.hasOwnProperty('length'))) {
+ $FAIL('#2: The Object.prototype.toString.length property has the attributes DontDelete');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A1.js
new file mode 100644
index 000000000..3fcc09df1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.3_A1;
+* @section: 15.2.4.3;
+* @assertion: toLocaleString function returns the result of calling toString();
+* @description: Checking the type of Object.prototype.toLocaleString and the returned result;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.toLocaleString !== "function") {
+ $ERROR('#1: toLocaleString method defined');
+}
+
+//CHECK#2
+if (Object.prototype.toLocaleString() !== Object.prototype.toString()) {
+ $ERROR('#1: toLocaleString function returns the result of calling toString()');
+}
+
+//CHECK#2
+if ({}.toLocaleString()!=={}.toString()) {
+ $ERROR('#2: toLocaleString function returns the result of calling toString()');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A10.js
new file mode 100644
index 000000000..bf13be1fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.3_A10;
+* @section: 15.2.4.3;
+* @assertion: The Object.prototype.toLocaleString.length property has the attribute ReadOnly;
+* @description: Checking if varying the Object.prototype.toLocaleString.length property fails;
+*/
+
+//CHECK#1
+if (!(Object.prototype.toLocaleString.hasOwnProperty('length'))) {
+ $FAIL('#1: the Object.prototype.toLocaleString has length property.');
+}
+
+var obj = Object.prototype.toLocaleString.length;
+
+Object.prototype.toLocaleString.length = function(){return "shifted";};
+
+//CHECK#2
+if (Object.prototype.toLocaleString.length !== obj) {
+ $ERROR('#2: the Object.prototype.toLocaleString length property has the attributes ReadOnly.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A11.js
new file mode 100644
index 000000000..131dbff96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A11.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.3_A11;
+* @section: 15.2.4.3;
+* @assertion: The length property of the toLocaleString method is 0;
+* @description: Checking the Object.prototype.toLocaleString.length;
+*/
+
+//CHECK#1
+if (!(Object.prototype.toLocaleString.hasOwnProperty("length"))) {
+ $ERROR('#1: The length property of the toLocaleString method is 0');
+}
+
+//CHECK#2
+if (Object.prototype.toLocaleString.length !== 0) {
+ $ERROR('#2: The length property of the toLocaleString method is 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A12.js
new file mode 100644
index 000000000..bf78b1aa4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A12.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.3_A12;
+* @section: 15.2.4.3;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.toLocaleString.call(undefined);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A13.js
new file mode 100644
index 000000000..8bc052aaa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A13.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.3_A13;
+* @section: 15.2.4.3;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.toLocaleString.call(null);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A6.js
new file mode 100644
index 000000000..2073b3f4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.3_A6;
+* @section: 15.2.4.3, 13.2;
+* @assertion: Object.prototype.toLocaleString has not prototype property;
+* @description: Checking if obtaining the prototype property of Object.prototype.toLocaleString fails;
+*/
+
+//CHECK#1
+if (Object.prototype.toLocaleString.prototype !== undefined) {
+ $ERROR('#1: Object.prototype.toLocaleString has not prototype property'+Object.prototype.toLocaleString.prototype);
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A7.js
new file mode 100644
index 000000000..9300bed03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.3_A7;
+* @section: 15.2.4.3, 13.2;
+* @assertion: Object.prototype.toLocaleString can't be used as a constructor;
+* @description: Checking if creating "new Object.prototype.toLocaleString" fails;
+*/
+
+var FACTORY = Object.prototype.toLocaleString;
+
+try {
+ instance = new FACTORY;
+ $FAIL('#1: Object.prototype.toLocaleString can\'t be used as a constructor');
+} catch (e) {
+ $PRINT(e);
+
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A8.js
new file mode 100644
index 000000000..0e97341c7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A8.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.3_A8;
+* @section: 15.2.4.3;
+* @assertion: The Object.prototype.toLocaleString.length property has the attribute DontEnum;
+* @description: Checking if enumerating the Object.prototype.toLocaleString.length property fails;
+*/
+
+//CHECK#0
+if (!(Object.prototype.toLocaleString.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.toLocaleString has length property.');
+}
+
+
+// CHECK#1
+if (Object.prototype.toLocaleString.propertyIsEnumerable('length')) {
+ $ERROR('#1: the Object.prototype.toLocaleString.length property has the attributes DontEnum');
+}
+
+// CHECK#2
+for (p in Object.prototype.toLocaleString){
+ if (p==="length")
+ $ERROR('#2: the Object.prototype.toLocaleString.length property has the attributes DontEnum');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A9.js
new file mode 100644
index 000000000..ff4807496
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.3_A9;
+* @section: 15.2.4.3;
+* @assertion: The Object.prototype.toLocaleString.length property has the attribute DontDelete;
+* @description: Checknig if deleting of the Object.prototype.toLocaleString.length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#0
+if (!(Object.prototype.toLocaleString.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.toLocaleString has length property');
+}
+
+//CHECK#1
+if (delete Object.prototype.toLocaleString.length) {
+ $ERROR('#1: The Object.prototype.toLocaleString.length property has the attributes DontDelete');
+}
+
+//CHECK#2
+if (!(Object.prototype.toLocaleString.hasOwnProperty('length'))) {
+ $FAIL('#2: The Object.prototype.toLocaleString.length property has the attributes DontDelete');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A10.js
new file mode 100644
index 000000000..ade020841
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A10;
+* @section: 15.2.4.4;
+* @assertion: The Object.prototype.valueOf.length property has the attribute ReadOnly;
+* @description: Checking if varying the Object.prototype.valueOf.length property fails;
+*/
+
+//CHECK#1
+if (!(Object.prototype.valueOf.hasOwnProperty('length'))) {
+ $FAIL('#1: the Object.prototype.valueOf has length property.');
+}
+
+var obj = Object.prototype.valueOf.length;
+
+Object.prototype.valueOf.length = function(){return "shifted";};
+
+//CHECK#2
+if (Object.prototype.valueOf.length !== obj) {
+ $ERROR('#2: the Object.prototype.valueOf length property has the attributes ReadOnly.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A11.js
new file mode 100644
index 000000000..6e7b69825
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A11.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A11;
+* @section: 15.2.4.4;
+* @assertion: The length property of the valueOf method is 0;
+* @description: Checking the Object.prototype.valueOf.length;
+*/
+
+//CHECK#1
+if (!(Object.prototype.valueOf.hasOwnProperty("length"))) {
+ $ERROR('#1: The length property of the toObject method is 0');
+}
+
+//CHECK#2
+if (Object.prototype.valueOf.length !== 0) {
+ $ERROR('#2: The length property of the toObject method is 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A12.js
new file mode 100644
index 000000000..fa1de95ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A12.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A12;
+* @section: 15.2.4.4;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.valueOf.call(undefined);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A13.js
new file mode 100644
index 000000000..5094fed61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A13.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A13;
+* @section: 15.2.4.4;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.valueOf.call(null);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A14.js
new file mode 100644
index 000000000..268ae9e87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A14.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A14;
+* @section: 15.2.4.4;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+(1,Object.prototype.valueOf)();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T1.js
new file mode 100644
index 000000000..871e93a8e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A1_T1;
+* @section: 15.2.4.4;
+* @assertion: The valueOf method returns its "this" value;
+* @description: "this" value is a number;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.valueOf !== "function") {
+ $ERROR('#1: valueOf method defined');
+}
+
+var obj=new Object(1.1);
+
+//CHECK#2
+if (typeof obj.valueOf !== "function") {
+ $ERROR('#2: valueOf method accessed');
+}
+
+//CHECK#3
+if (obj.valueOf()!==1.1) {
+ $ERROR('#3: The valueOf method returns its this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T2.js
new file mode 100644
index 000000000..f66539019
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_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.
+
+/**
+* @name: S15.2.4.4_A1_T2;
+* @section: 15.2.4.4;
+* @assertion: The valueOf method returns its "this" value;
+* @description: "this" value is a boolean;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.valueOf !== "function") {
+ $ERROR('#1: valueOf method defined');
+}
+
+var obj=new Object(true);
+
+//CHECK#2
+if (typeof obj.valueOf !== "function") {
+ $ERROR('#2: valueOf method accessed');
+}
+
+//CHECK#3
+if (obj.valueOf()!==true) {
+ $ERROR('#3: The valueOf method returns its this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T3.js
new file mode 100644
index 000000000..b4b11c80f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A1_T3;
+* @section: 15.2.4.4;
+* @assertion: The valueOf method returns its "this" value;
+* @description: "this" value is a string;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.valueOf !== "function") {
+ $ERROR('#1: valueOf method defined');
+}
+
+var obj=new Object("greenfield");
+
+//CHECK#2
+if (typeof obj.valueOf !== "function") {
+ $ERROR('#2: valueOf method accessed');
+}
+
+//CHECK#3
+if (obj.valueOf()!=="greenfield") {
+ $ERROR('#3: The valueOf method returns its this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T4.js
new file mode 100644
index 000000000..509ceed98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T4.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A1_T4;
+* @section: 15.2.4.4;
+* @assertion: The valueOf method returns its "this" value;
+* @description: "this" value is an object;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.valueOf !== "function") {
+ $ERROR('#1: valueOf method defined');
+}
+
+var obj=new Object;
+
+//CHECK#2
+if (typeof obj.valueOf !== "function") {
+ $ERROR('#2: valueOf method accessed');
+}
+
+//CHECK#3
+if (obj.valueOf()!==obj) {
+ $ERROR('#3: The valueOf method returns its this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T5.js
new file mode 100644
index 000000000..7713ade0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A1_T5;
+* @section: 15.2.4.4;
+* @assertion: The valueOf method returns its "this" value;
+* @description: "this" value is "null";
+*/
+
+//CHECK#1
+if (typeof Object.prototype.valueOf !== "function") {
+ $ERROR('#1: valueOf method defined');
+}
+
+var obj=new Object(null);
+
+//CHECK#2
+if (typeof obj.valueOf !== "function") {
+ $ERROR('#2: valueOf method accessed');
+}
+
+//CHECK#3
+if (obj.valueOf()!==obj) {
+ $ERROR('#3: The valueOf method returns its this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T6.js
new file mode 100644
index 000000000..053e1ffac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T6.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A1_T6;
+* @section: 15.2.4.4;
+* @assertion: The valueOf method returns its "this" value;
+* @description: "this" value is "undefined";
+*/
+
+//CHECK#1
+if (typeof Object.prototype.valueOf !== "function") {
+ $ERROR('#1: valueOf method defined');
+}
+
+var obj=new Object(undefined);
+
+//CHECK#2
+if (typeof obj.valueOf !== "function") {
+ $ERROR('#2: valueOf method accessed');
+}
+
+//CHECK#3
+if (obj.valueOf()!==obj) {
+ $ERROR('#3: The valueOf method returns its this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T7.js
new file mode 100644
index 000000000..6c89c1777
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A1_T7.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A1_T7;
+* @section: 15.2.4.4;
+* @assertion: The valueOf method returns its "this" value;
+* @description: "this" value is "void 0";
+*/
+
+//CHECK#1
+if (typeof Object.prototype.valueOf !== "function") {
+ $ERROR('#1: valueOf method defined');
+}
+
+var obj=new Object(void 0);
+
+//CHECK#2
+if (typeof obj.valueOf !== "function") {
+ $ERROR('#2: valueOf method accessed');
+}
+
+//CHECK#3
+if (obj.valueOf()!==obj) {
+ $ERROR('#3: The valueOf method returns its this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A6.js
new file mode 100644
index 000000000..99049fecf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A6;
+* @section: 15.2.4.4, 13.2;
+* @assertion: Object.prototype.valueOf has not prototype property;
+* @description: Checking if obtaining the prototype property of Object.prototype.valueOf fails;
+*/
+
+//CHECK#1
+if (Object.prototype.valueOf.prototype !== undefined) {
+ $ERROR('#1: Object.prototype.valueOf has not prototype property'+Object.prototype.valueOf.prototype);
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A7.js
new file mode 100644
index 000000000..4e6d18ea4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A7;
+* @section: 15.2.4.4, 13.2;
+* @assertion: Object.prototype.valueOf can't be used as a constructor;
+* @description: Checking if creating "new Object.prototype.valueOf" fails;
+*/
+
+var FACTORY = Object.prototype.valueOf;
+
+try {
+ instance = new FACTORY;
+ $FAIL('#1: Object.prototype.valueOf can\'t be used as a constructor');
+} catch (e) {
+ $PRINT(e);
+
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A8.js
new file mode 100644
index 000000000..8eb8a85a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A8.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A8;
+* @section: 15.2.4.4;
+* @assertion: The Object.prototype.valueOf.length property has the attribute DontEnum;
+* @description: Checking if enumerating the Object.prototype.valueOf.length property fails;
+*/
+
+//CHECK#0
+if (!(Object.prototype.valueOf.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.valueOf has length property.');
+}
+
+
+// CHECK#1
+if (Object.prototype.valueOf.propertyIsEnumerable('length')) {
+ $ERROR('#1: the Object.prototype.valueOf.length property has the attributes DontEnum');
+}
+
+// CHECK#2
+for (p in Object.prototype.valueOf){
+ if (p==="length")
+ $ERROR('#2: the Object.prototype.valueOf.length property has the attributes DontEnum');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A9.js
new file mode 100644
index 000000000..3bb747ecb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.4_A9;
+* @section: 15.2.4.4;
+* @assertion: The Object.prototype.valueOf.length property has the attribute DontDelete;
+* @description: Checknig if deleting of the Object.prototype.valueOf.length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#0
+if (!(Object.prototype.valueOf.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.valueOf has length property');
+}
+
+//CHECK#1
+if (delete Object.prototype.valueOf.length) {
+ $ERROR('#1: The Object.prototype.valueOf.length property has the attributes DontDelete');
+}
+
+//CHECK#2
+if (!(Object.prototype.valueOf.hasOwnProperty('length'))) {
+ $FAIL('#2: The Object.prototype.valueOf.length property has the attributes DontDelete');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A10.js
new file mode 100644
index 000000000..80c36800b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A10;
+* @section: 15.2.4.5;
+* @assertion: The Object.prototype.hasOwnProperty.length property has the attribute ReadOnly;
+* @description: Checking if varying the Object.prototype.hasOwnProperty.length property fails;
+*/
+
+//CHECK#1
+if (!(Object.prototype.hasOwnProperty.hasOwnProperty('length'))) {
+ $FAIL('#1: the Object.prototype.hasOwnProperty has length property.');
+}
+
+var obj = Object.prototype.hasOwnProperty.length;
+
+Object.prototype.hasOwnProperty.length = function(){return "shifted";};
+
+//CHECK#2
+if (Object.prototype.hasOwnProperty.length !== obj) {
+ $ERROR('#2: the Object.prototype.hasOwnProperty length property has the attributes ReadOnly.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A11.js
new file mode 100644
index 000000000..dc1710bb3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A11.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A11;
+* @section: 15.2.4.5;
+* @assertion: The length property of the hasOwnProperty method is 1;
+* @description: Checking the Object.prototype.hasOwnProperty.length;
+*/
+
+//CHECK#1
+if (!(Object.prototype.hasOwnProperty.hasOwnProperty("length"))) {
+ $ERROR('#1: The length property of the toObject method is 1');
+}
+
+//CHECK#2
+if (Object.prototype.hasOwnProperty.length !== 1) {
+ $ERROR('#2: The length property of the toObject method is 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A12.js
new file mode 100644
index 000000000..321114150
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A12.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A12;
+* @section: 15.2.4.5;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.hasOwnProperty.call(undefined, 'foo');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A13.js
new file mode 100644
index 000000000..42a8861c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A13.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A13;
+* @section: 15.2.4.5;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.hasOwnProperty.call(null, 'foo');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T1.js
new file mode 100644
index 000000000..ef82eeca6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A1_T1;
+* @section: 15.2.4.5;
+* @assertion: When the hasOwnProperty method is called with argument V, the following steps are taken:
+* i) Let O be this object
+* ii) Call ToString(V)
+* iii) If O doesn't have a property with the name given by Result(ii), return false
+* iv) Return true;
+* @description: Checking type of the Object.prototype.hasOwnProperty and the returned result;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.hasOwnProperty !== "function") {
+ $ERROR('#1: hasOwnProperty method is defined');
+}
+
+//CHECK#2
+if (!(Object.prototype.hasOwnProperty("hasOwnProperty"))) {
+ $ERROR('#2: hasOwnProperty method works properly');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T2.js
new file mode 100644
index 000000000..c46d152a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T2.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A1_T2;
+* @section: 15.2.4.5;
+* @assertion: When the hasOwnProperty method is called with argument V, the following steps are taken:
+* i) Let O be this object
+* ii) Call ToString(V)
+* iii) If O doesn't have a property with the name given by Result(ii), return false
+* iv) Return true;
+* @description: Argument of the hasOwnProperty method is a custom boolean property;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.hasOwnProperty !== "function") {
+ $ERROR('#1: hasOwnProperty method is defined');
+}
+
+var obj = {the_property:true};
+
+//CHECK#2
+if (typeof obj.hasOwnProperty !== "function") {
+ $ERROR('#2: hasOwnProperty method is accessed');
+}
+
+//CHECK#3
+if (obj.hasOwnProperty("hasOwnProperty")) {
+ $ERROR('#3: hasOwnProperty method works properly');
+}
+
+//CHECK#4
+if (!(obj.hasOwnProperty("the_property"))) {
+ $ERROR('#4: hasOwnProperty method works properly');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T3.js
new file mode 100644
index 000000000..e1b91ba3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A1_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A1_T3;
+* @section: 15.2.4.5;
+* @assertion: When the hasOwnProperty method is called with argument V, the following steps are taken:
+* i) Let O be this object
+* ii) Call ToString(V)
+* iii) If O doesn't have a property with the name given by Result(ii), return false
+* iv) Return true;
+* @description: Argument of the hasOwnProperty method is a custom property of a function object;
+*/
+
+var FACTORY = function(){
+ this.aproperty = 1;
+};
+
+var instance = new FACTORY;
+
+//CHECK#1
+if (typeof Object.prototype.hasOwnProperty !== "function") {
+ $ERROR('#1: hasOwnProperty method is defined');
+}
+
+//CHECK#2
+if (typeof instance.hasOwnProperty !== "function") {
+ $ERROR('#2: hasOwnProperty method is accessed');
+}
+
+//CHECK#3
+if (instance.hasOwnProperty("toString")) {
+ $ERROR('#3: hasOwnProperty method works properly');
+}
+
+//CHECK#4
+if (!(instance.hasOwnProperty("aproperty"))) {
+ $ERROR('#4: hasOwnProperty method works properly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A6.js
new file mode 100644
index 000000000..c47f95a4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A6;
+* @section: 15.2.4.5, 13.2;
+* @assertion: Object.prototype.hasOwnProperty has not prototype property;
+* @description: Checking if obtaining the prototype property of Object.prototype.hasOwnProperty fails;
+*/
+
+//CHECK#1
+if (Object.prototype.hasOwnProperty.prototype !== undefined) {
+ $ERROR('#1: Object.prototype.hasOwnProperty has not prototype property'+Object.prototype.hasOwnProperty.prototype);
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A7.js
new file mode 100644
index 000000000..6dff59b6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A7;
+* @section: 15.2.4.5, 13.2;
+* @assertion: Object.prototype.hasOwnProperty can't be used as a constructor;
+* @description: Checking if creating "new Object.prototype.hasOwnProperty" fails;
+*/
+
+var FACTORY = Object.prototype.hasOwnProperty;
+
+try {
+ instance = new FACTORY;
+ $FAIL('#1: Object.prototype.hasOwnProperty can\'t be used as a constructor');
+} catch (e) {
+ $PRINT(e);
+
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A8.js
new file mode 100644
index 000000000..7992ae9ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A8.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A8;
+* @section: 15.2.4.5;
+* @assertion: The Object.prototype.hasOwnProperty.length property has the attribute DontEnum;
+* @description: Checking if enumerating the Object.prototype.hasOwnProperty.length property fails;
+*/
+
+//CHECK#0
+if (!(Object.prototype.hasOwnProperty.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.hasOwnProperty has length property.');
+}
+
+
+// CHECK#1
+if (Object.prototype.hasOwnProperty.propertyIsEnumerable('length')) {
+ $ERROR('#1: the Object.prototype.hasOwnProperty.length property has the attributes DontEnum');
+}
+
+// CHECK#2
+for (p in Object.prototype.hasOwnProperty){
+ if (p==="length")
+ $ERROR('#2: the Object.prototype.hasOwnProperty.length property has the attributes DontEnum');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A9.js
new file mode 100644
index 000000000..2a6d3769c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A9.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.5_A9;
+* @section: 15.2.4.5;
+* @assertion: The Object.prototype.hasOwnProperty.length property has the attribute DontDelete;
+* @description: Checking if deleting the Object.prototype.hasOwnProperty.length property fails;
+*/
+
+//CHECK#0
+if (!(Object.prototype.hasOwnProperty.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.hasOwnProperty has length property');
+}
+
+//CHECK#1
+if (delete Object.prototype.hasOwnProperty.length) {
+ $ERROR('#1: The Object.prototype.hasOwnProperty.length property has the attributes DontDelete');
+}
+
+//CHECK#2
+if (!(Object.prototype.hasOwnProperty.hasOwnProperty('length'))) {
+ $FAIL('#2: The Object.prototype.hasOwnProperty.length property has the attributes DontDelete');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A1.js
new file mode 100644
index 000000000..8d875934b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A1.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.2.4.6_A1;
+ * @section: 15.2.4.6;
+ * @assertion: When the isPrototypeOf method is called with argument V and when O and
+ * V refer to the same object or to objects joined to each other, return true;
+ * @description: Creating two objects with the same prototype;
+*/
+
+
+function USER_FACTORY( name ) {
+ this.name = name;
+ this.getName=function(){return name;};
+}
+
+
+function FORCEDUSER_FACTORY( name, grade ) {
+ this.name = name;
+ this.grade = grade;
+ this.getGrade=function(){return grade;};
+}
+
+var proto = new USER_FACTORY("noname");
+
+FORCEDUSER_FACTORY.prototype = proto;
+
+var luke = new FORCEDUSER_FACTORY("Luke Skywalker", 12);
+//////
+// CHECK#1
+if(proto.isPrototypeOf(luke)){
+ $PRINT('#1: Native ECMAScript objects have an internal property called [[Prototype]].');
+} else {
+ $ERROR('#1: native ECMAScript objects have an internal property called [[Prototype]].');
+}
+//
+/////////
+//////
+// CHECK#2
+if(USER_FACTORY.prototype.isPrototypeOf(luke)){
+ $PRINT('#2: Native ECMAScript objects have an internal property called [[Prototype]].');
+} else {
+ $ERROR('#2: native ECMAScript objects have an internal property called [[Prototype]].');
+}
+//
+/////////
+//////
+// CHECK#3
+if(Number.isPrototypeOf(luke)){
+ $ERROR('#2: Native ECMAScript objects have an internal property called [[Prototype]].');
+}
+//
+/////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A10.js
new file mode 100644
index 000000000..1c6196b33
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A10.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.6_A10;
+* @section: 15.2.4.6;
+* @assertion: The Object.prototype.isPrototypeOf.length property has the attribute ReadOnly;
+* @description: Checking if varying the Object.prototype.isPrototypeOf.length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (!(Object.prototype.isPrototypeOf.hasOwnProperty('length'))) {
+ $FAIL('#1: the Object.prototype.isPrototypeOf has length property');
+}
+
+var obj = Object.prototype.isPrototypeOf.length;
+
+Object.prototype.isPrototypeOf.length = function(){return "shifted";};
+
+//CHECK#2
+if (Object.prototype.isPrototypeOf.length !== obj) {
+ $ERROR('#2: the Object.prototype.isPrototypeOf length property has the attributes ReadOnly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A11.js
new file mode 100644
index 000000000..937977262
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A11.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.6_A11;
+* @section: 15.2.4.6;
+* @assertion: The length property of the hasOwnProperty method is 1;
+* @description: Checking the Object.prototype.hasOwnProperty.length;
+*/
+
+//CHECK#1
+if (!(Object.prototype.isPrototypeOf.hasOwnProperty("length"))) {
+ $ERROR('#1: the Object.prototype.isPrototypeOf has length property');
+}
+
+//CHECK#2
+if (Object.prototype.isPrototypeOf.length !== 1) {
+ $ERROR('#2: The length property of the toObject method is 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A12.js
new file mode 100644
index 000000000..8572d61fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A12.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.6_A12;
+* @section: 15.2.4.6;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.isPrototypeOf.call(undefined, {});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A13.js
new file mode 100644
index 000000000..d12da2aaa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A13.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.6_A13;
+* @section: 15.2.4.6;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.isPrototypeOf.call(null, {});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A6.js
new file mode 100644
index 000000000..3942fadbc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.6_A6;
+* @section: 15.2.4.6, 13.2;
+* @assertion: Object.prototype.isPrototypeOf has not prototype property;
+* @description: Checking if obtaining the prototype property of Object.prototype.isPrototypeOf fails;
+*/
+
+//CHECK#1
+if (Object.prototype.isPrototypeOf.prototype !== undefined) {
+ $ERROR('#1: Object.prototype.isPrototypeOf has not prototype property'+Object.prototype.isPrototypeOf.prototype);
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A7.js
new file mode 100644
index 000000000..15b97a67c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.6_A7;
+* @section: 15.2.4.6, 13.2;
+* @assertion: Object.prototype.isPrototypeOf can't be used as a constructor;
+* @description: Checking if creating new "Object.prototype.isPrototypeOf" fails;
+*/
+
+var FACTORY = Object.prototype.isPrototypeOf;
+
+try {
+ instance = new FACTORY;
+ $FAIL('#1: Object.prototype.isPrototypeOf can\'t be used as a constructor');
+} catch (e) {
+ $PRINT(e);
+
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A8.js
new file mode 100644
index 000000000..3e59c28d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A8.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.6_A8;
+* @section: 15.2.4.6;
+* @assertion: The Object.prototype.isPrototypeOf.length property has the attribute DontEnum;
+* @description: Checknig if enumerating the Object.prototype.isPrototypeOf.length property fails;
+*/
+
+//CHECK#0
+if (!(Object.prototype.isPrototypeOf.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.isPrototypeOf has length property');
+}
+
+
+// CHECK#1
+if (Object.prototype.isPrototypeOf.propertyIsEnumerable('length')) {
+ $ERROR('#1: the Object.prototype.isPrototypeOf.length property has the attributes DontEnum');
+}
+
+// CHECK#2
+for (p in Object.prototype.isPrototypeOf){
+ if (p==="length")
+ $ERROR('#2: the Object.prototype.isPrototypeOf.length property has the attributes DontEnum');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A9.js
new file mode 100644
index 000000000..f5d1fd989
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A9.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.6_A9;
+* @section: 15.2.4.6;
+* @assertion: The Object.prototype.isPrototypeOf.length property has the attribute DontDelete;
+* @description: Checking deleting the Object.prototype.isPrototypeOf.length property fails;
+*/
+
+//CHECK#0
+if (!(Object.prototype.isPrototypeOf.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.isPrototypeOf has length property');
+}
+
+//CHECK#1
+if (delete Object.prototype.isPrototypeOf.length) {
+ $ERROR('#1: The Object.prototype.isPrototypeOf.length property has the attributes DontDelete');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A10.js
new file mode 100644
index 000000000..f911baa3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A10.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A10;
+* @section: 15.2.4.7;
+* @assertion: The Object.prototype.propertyIsEnumerable.length property has the attribute ReadOnly;
+* @description: Checking if varying the Object.prototype.propertyIsEnumerable.length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (!(Object.prototype.propertyIsEnumerable.hasOwnProperty('length'))) {
+ $FAIL('#1: the Object.prototype.propertyIsEnumerable has length property');
+}
+
+var obj = Object.prototype.propertyIsEnumerable.length;
+
+Object.prototype.propertyIsEnumerable.length = function(){return "shifted";};
+
+//CHECK#2
+if (Object.prototype.propertyIsEnumerable.length !== obj) {
+ $ERROR('#2: the Object.prototype.propertyIsEnumerable length property has the attributes ReadOnly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A11.js
new file mode 100644
index 000000000..a7eac564a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A11.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A11;
+* @section: 15.2.4.7;
+* @assertion: The length property of the hasOwnProperty method is 1;
+* @description: Checking the value of Object.prototype.hasOwnProperty.length;
+*/
+
+//CHECK#1
+if (!(Object.prototype.propertyIsEnumerable.hasOwnProperty("length"))) {
+ $ERROR('#1: the Object.prototype.propertyIsEnumerable has length property');
+}
+
+//CHECK#2
+if (Object.prototype.propertyIsEnumerable.length !== 1) {
+ $ERROR('#2: The length property of the toObject method is 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A12.js
new file mode 100644
index 000000000..71f73443e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A12.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A12;
+* @section: 15.2.4.7;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.propertyIsEnumerable.call(undefined, 'foo');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A13.js
new file mode 100644
index 000000000..ee855bdd1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A13.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A13;
+* @section: 15.2.4.7;
+* @assertion: Let O be the result of calling ToObject passing the this
+* value as the argument.
+* @negative
+*/
+
+Object.prototype.propertyIsEnumerable.call(null, 'foo');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A1_T1.js
new file mode 100644
index 000000000..9c7816e8a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A1_T1;
+* @section: 15.2.4.7;
+* @assertion: The propertyIsEnumerable method does not consider objects in the prototype chain;
+* @description: Calling the propertyIsEnumerable method for object in the prototype chain;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.propertyIsEnumerable !== "function") {
+ $ERROR('#1: propertyIsEnumerable method is defined');
+}
+
+var proto={rootprop:"avis"};
+
+function AVISFACTORY(name){this.name=name};
+
+AVISFACTORY.prototype = proto;
+
+var seagull= new AVISFACTORY("seagull");
+
+//CHECK#2
+if (typeof seagull.propertyIsEnumerable !== "function") {
+ $ERROR('#2: propertyIsEnumerable method is accessed');
+}
+
+//CHECK#3
+if (!(seagull.propertyIsEnumerable("name"))) {
+ $ERROR('#3: propertyIsEnumerable method works properly');
+}
+
+//CHECK#4
+if (seagull.propertyIsEnumerable("rootprop")) {
+ $ERROR('#4: propertyIsEnumerable method does not consider objects in the prototype chain');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A2_T1.js
new file mode 100644
index 000000000..211b640e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A2_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A2_T1;
+* @section: 15.2.4.7;
+* @assertion: When the propertyIsEnumerable method is called with argument V, the following steps are taken:
+* i) Let O be this object
+* ii) Call ToString(V)
+* iii) If O doesn't have a property with the name given by Result(ii), return false
+* iv) If the property has the DontEnum attribute, return false
+* v) Return true;
+* @description: Checking the type of Object.prototype.propertyIsEnumerable and the returned result;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.propertyIsEnumerable !== "function") {
+ $ERROR('#1: hasOwnProperty method is defined');
+}
+
+//CHECK#2
+if (Object.prototype.propertyIsEnumerable("propertyIsEnumerable")) {
+ $ERROR('#2: hasOwnProperty method works properly');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A2_T2.js
new file mode 100644
index 000000000..8917a8d81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A2_T2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A2_T2;
+* @section: 15.2.4.7;
+* @assertion: When the propertyIsEnumerable method is called with argument V, the following steps are taken:
+* i) Let O be this object
+* ii) Call ToString(V)
+* iii) If O doesn't have a property with the name given by Result(ii), return false
+* iv) If the property has the DontEnum attribute, return false
+* v) Return true;
+* @description: Argument of the propertyIsEnumerable method is a custom boolean property;
+*/
+
+//CHECK#1
+if (typeof Object.prototype.propertyIsEnumerable !== "function") {
+ $ERROR('#1: propertyIsEnumerable method is defined');
+}
+
+var obj = {the_property:true};
+
+//CHECK#2
+if (typeof obj.propertyIsEnumerable !== "function") {
+ $ERROR('#2: propertyIsEnumerable method is accessed');
+}
+
+//CHECK#3
+if (!(obj.propertyIsEnumerable("the_property"))) {
+ $ERROR('#3: propertyIsEnumerable method works properly');
+}
+
+//CHECK#4
+var accum="";
+for(var prop in obj) {
+ accum+=prop;
+}
+if (accum.indexOf("the_property")!==0) {
+ $ERROR('#4: enumerating works properly');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A6.js
new file mode 100644
index 000000000..098bcbc0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A6;
+* @section: 15.2.4.7, 13.2;
+* @assertion: Object.prototype.propertyIsEnumerable has not prototype property;
+* @description: Checking if obtaining the prototype property of Object.prototype.propertyIsEnumerable fails;
+*/
+
+//CHECK#1
+if (Object.prototype.propertyIsEnumerable.prototype !== undefined) {
+ $ERROR('#1: Object.prototype.propertyIsEnumerable has not prototype property'+Object.prototype.propertyIsEnumerable.prototype);
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A7.js
new file mode 100644
index 000000000..df345a6f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A7;
+* @section: 15.2.4.7, 13.2;
+* @assertion: Object.prototype.propertyIsEnumerable can't be used as a constructor;
+* @description: Checking if creating "new Object.prototype.propertyIsEnumerable" fails;
+*/
+
+var FACTORY = Object.prototype.propertyIsEnumerable;
+
+try {
+ instance = new FACTORY;
+ $FAIL('#1: Object.prototype.propertyIsEnumerable can\'t be used as a constructor');
+} catch (e) {
+ $PRINT(e);
+
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A8.js
new file mode 100644
index 000000000..d7cfe60b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A8.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A8;
+* @section: 15.2.4.7;
+* @assertion: The Object.prototype.propertyIsEnumerable.length property has the attribute DontEnum;
+* @description: Checking if enumerating the Object.prototype.propertyIsEnumerable.length property fails;
+*/
+
+//CHECK#0
+if (!(Object.prototype.propertyIsEnumerable.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.propertyIsEnumerable has length property');
+}
+
+
+// CHECK#1
+if (Object.prototype.propertyIsEnumerable.propertyIsEnumerable('length')) {
+ $ERROR('#1: the Object.prototype.propertyIsEnumerable.length property has the attributes DontEnum');
+}
+
+// CHECK#2
+for (p in Object.prototype.propertyIsEnumerable){
+ if (p==="length")
+ $ERROR('#2: the Object.prototype.propertyIsEnumerable.length property has the attributes DontEnum');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A9.js
new file mode 100644
index 000000000..3da59e598
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A9.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.7_A9;
+* @section: 15.2.4.7;
+* @assertion: The Object.prototype.propertyIsEnumerable.length property has the attribute DontDelete;
+* @description: Checking if deleting the Object.prototype.propertyIsEnumerable.length property fails;
+*/
+
+//CHECK#0
+if (!(Object.prototype.propertyIsEnumerable.hasOwnProperty('length'))) {
+ $FAIL('#0: the Object.prototype.propertyIsEnumerable has length property');
+}
+
+//CHECK#1
+if (delete Object.prototype.propertyIsEnumerable.length) {
+ $ERROR('#1: The Object.prototype.propertyIsEnumerable.length property has the attributes DontDelete');
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4.1_A1_T1.js
new file mode 100644
index 000000000..f841e9add
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4.1_A1_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.1_A1_T1;
+* @section: 15.2.4.1;
+* @assertion: The initial value of Object.prototype.constructor is the built-in Object constructor;
+* @description: Checking the Object.prototype.constructor;
+*/
+
+//CHECK#1
+if (Object.prototype.constructor !== Object) {
+ $ERROR('#1: The initial value of Object.prototype.constructor is the built-in Object constructor');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4.1_A1_T2.js
new file mode 100644
index 000000000..35268038a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4.1_A1_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4.1_A1_T2;
+* @section: 15.2.4.1;
+* @assertion: The initial value of Object.prototype.constructor is the built-in Object constructor;
+* @description: Creating "new Object.prototype.constructor" and checking its properties;
+*/
+
+var constr = Object.prototype.constructor;
+
+var obj = new constr;
+
+// CHECK#0
+if (obj === undefined) {
+ $ERROR('#0: new Object() return the newly created native object.');
+}
+
+// CHECK#1
+if (obj.constructor !== Object) {
+ $ERROR('#1: new Object() create a new native ECMAScript object');
+}
+
+// CHECK#2
+if (!(Object.prototype.isPrototypeOf(obj))) {
+ $ERROR('#2: when new Object() calls the [[Prototype]] property of the newly constructed object is set to the Object prototype object.');
+}
+
+// CHECK#3
+var to_string_result = '[object '+ 'Object' +']';
+if (obj.toString() !== to_string_result) {
+ $ERROR('#3: when new Object() calls the [[Class]] property of the newly constructed object is set to "Object".');
+}
+
+// CHECK#4
+if (obj.valueOf().toString() !== to_string_result) {
+ $ERROR('#4: when new Object() calls the newly constructed object has no [[Value]] property.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A1_T1.js
new file mode 100644
index 000000000..81dc7902c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A1_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.2.4_A1_T1;
+ * @section: 15.2.4, 8.6.2;
+ * @assertion: Object prototype object has not prototype;
+ * @description: Checking if obtaining Object.prototype.prototype fails;
+*/
+
+// CHECK#1
+if (Object.prototype.prototype !== undefined) {
+ $ERROR('#1: Object prototype has not prototype');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A1_T2.js
new file mode 100644
index 000000000..cc0c62ba4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A1_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.
+
+/**
+ * @name: S15.2.4_A1_T2;
+ * @section: 15.2.4, 8.6.2;
+ * @assertion: Object prototype object has not prototype;
+ * @description: Since the Object prototype object has not prototype, deleted toString method can not be found in prototype chain;
+*/
+
+//CHECK#1
+if (Object.prototype.toString() == false) {
+ $ERROR('#1: Object prototype object has not prototype');
+}
+
+delete Object.prototype.toString;
+
+// CHECK#2
+try {
+ Object.prototype.toString();
+ $ERROR('#2: Object prototype object has not prototype');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.1: delete Object.prototype.toString; Object.prototype.toString() throw a TypeError. Actual: ' + (e));
+ }
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A2.js
new file mode 100644
index 000000000..1efba1760
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A2.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.
+
+/**
+* @name: S15.2.4_A2;
+* @section: 15.2.4;
+* @assertion: The value of the internal [[Class]] property of Object prototype object is "Object";
+* @description: Getting the value of the internal [[Class]] property with Object.prototype.toString() function;
+*/
+
+var tostr = Object.prototype.toString();
+
+//CHECK#1
+if (tostr !== "[object Object]") {
+ $ERROR('#1: the value of the internal [[Class]] property of Object prototype object is "Object"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A3.js
new file mode 100644
index 000000000..f0f5ace0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4_A3;
+* @section: 15.2.4;
+* @assertion: Since the Object prototype object is not a function, it has not [[call]] method;
+* @description: Checking if calling Object prototype as a function fails;
+*/
+
+
+//CHECK#1
+try {
+ Object.prototype();
+ $FAIL('#1: Since Object prototype object is not function it has not [[call]] method');
+} catch (e) {
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A4.js
new file mode 100644
index 000000000..b8ceeb998
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/15.2.4_Properties_of_the_Object_Prototype_Object/S15.2.4_A4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.2.4_A4;
+* @section: 15.2.4;
+* @assertion: Since the Object prototype object is not a function, it has not [[create]] method;
+* @description: Checking if creating "new Object.prototype" fails;
+*/
+
+
+//CHECK#1
+try {
+ instance = new Object.prototype;
+ $FAIL('#1: Since Object prototype object is not function it has not [[create]] method');
+} catch (e) {
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/S15.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/S15.2_A1.js
new file mode 100644
index 000000000..db3af06e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.2_Object_Objects/S15.2_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.
+
+/**
+* @name: S15.2_A1;
+* @section: 15.2;
+* @assertion: Object is the property of global;
+* @description: Checking if Object equals to this.Object;
+*/
+
+var obj=Object;
+
+var thisobj=this.Object;
+
+if(obj!==thisobj){
+ $ERROR('Object is the property of global');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T1.js
new file mode 100644
index 000000000..4682d0e3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T1;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: The body of the function is "{toString:function(){throw 7;}}";
+*/
+
+var body = {toString:function(){throw 7;}}
+
+//CHECK#1
+try {
+ var f = new Function(body);
+ $FAIL('#1: When the Function constructor is called with one argument then body be that argument the following step are taken: call ToString(body)');
+} catch (e) {
+ if (e !== 7) {
+ $ERROR('#1.1: When the Function constructor is called with one argument then body be that argument the following step are taken: call ToString(body)');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T10.js
new file mode 100644
index 000000000..b4080a6eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T10.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T10;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is "null";
+*/
+
+//CHECK#1
+try {
+ var f = new Function(null);
+} catch (e) {
+ $FAIL('#1: test fails with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f() !== undefined) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T11.js
new file mode 100644
index 000000000..5c5e152fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T11.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T11;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is "undefined";
+*/
+
+
+//CHECK#1
+try {
+ var f = new Function(undefined);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f() !== undefined) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T12.js
new file mode 100644
index 000000000..ae41df581
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T12.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T12;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is "void 0";
+*/
+
+
+//CHECK#1
+try {
+ var f = new Function(void 0);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==undefined) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T13.js
new file mode 100644
index 000000000..49bf7910b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T13.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T13;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is "{}";
+*/
+
+
+//CHECK#1
+try {
+ var f = new Function({});
+ $FAIL('#1: test failed with error '+e);
+} catch (e) {
+ if (!(e instanceof SyntaxError)) {
+ $ERROR('#1.1: If body is not parsable as FunctionBody then throw a SyntaxError exception');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T2.js
new file mode 100644
index 000000000..48113c840
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T2;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: The body of the function is "{toString:function(){return "return 1;";}}";
+*/
+
+var body={toString:function(){return "return 1;";}};
+
+//CHECK#1
+try {
+ var f = new Function(body);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==1) {
+ $ERROR('#3: hen the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T3.js
new file mode 100644
index 000000000..b1a789489
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T3.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T3;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is 1;
+*/
+
+
+//CHECK#1
+try {
+ var f = new Function(1);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==undefined) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T4.js
new file mode 100644
index 000000000..869b6e4bb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T4.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T4;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is x, where x is specified with "undefined";
+*/
+
+
+//CHECK#1
+try {
+ var f = new Function(x);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==undefined) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T5.js
new file mode 100644
index 000000000..1750357df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T5.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T5;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is "Object("return \'A\'")";
+*/
+
+var body = Object("return \'A\'");
+
+//CHECK#1
+try {
+ var f = new Function(body);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!=="\u0041") {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T6.js
new file mode 100644
index 000000000..5d8c69356
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T6.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T6;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is the string "return true;";
+*/
+
+//CHECK#1
+try {
+ var f = new Function("return true;");
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (!(f())) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T7.js
new file mode 100644
index 000000000..f5273bf3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T7.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T7;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is "Object(1)";
+*/
+
+var body = new Object(1);
+
+//CHECK#1
+try {
+ var f = new Function(body);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==undefined) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T8.js
new file mode 100644
index 000000000..aaad81f9e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T8.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T8;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is "var 1=1;";
+*/
+
+var body = "var 1=1;";
+
+//CHECK#1
+try {
+ var f = new Function(body);
+ $FAIL('#1: If body is not parsable as FunctionBody then throw a SyntaxError exception');
+} catch (e) {
+ if (!(e instanceof SyntaxError)) {
+ $ERROR('#1.1: If body is not parsable as FunctionBody then throw a SyntaxError exception');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T9.js
new file mode 100644
index 000000000..2484d2d13
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A1_T9.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A1_T9;
+* @section: 15.3.2.1;
+* @assertion: When the Function constructor is called with one argument then body be that argument and the following steps are taken:
+* i) Call ToString(body)
+* ii) If P is not parsable as a FormalParameterListopt then throw a SyntaxError exception
+* iii) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* iv) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody.
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* v) Return Result(iv);
+* @description: Value of the function constructor argument is "return arguments[0];";
+*/
+
+var f = new Function("return arguments[0];");
+
+//CHECK#1
+if (!(f instanceof Function)) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument and the following steps are taken...');
+}
+
+//CHECK#2
+if (f("A") !== "A") {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T1.js
new file mode 100644
index 000000000..f626e04e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A2_T1;
+* @section: 15.3.2.1;
+* @assertion: It is permissible but not necessary to have one argument for each formal parameter to be specified;
+* @description: Values of the function constructor arguments are "arg1", "arg2", "arg3", "return arg1+arg2+arg3;";
+*/
+
+//CHECK#1
+try {
+ var f = Function("arg1", "arg2", "arg3", "return arg1+arg2+arg3;");
+} catch (e) {
+ $FAIL('#1: test failed');
+}
+
+//CHECK#2
+if (!(f instanceof Function)){
+ $ERROR('#2: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
+
+//CHECK#3
+if (f(1,2,3) !== 6) {
+ $ERROR('#3: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T2.js
new file mode 100644
index 000000000..a657905e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A2_T2;
+* @section: 15.3.2.1;
+* @assertion: It is permissible but not necessary to have one argument for each formal parameter to be specified;
+* @description: Values of the function constructor arguments are "arg1, arg2", "arg3", "return arg1+arg2+arg3;";
+*/
+
+//CHECK#1
+try {
+ var f = Function("arg1, arg2", "arg3", "return arg1+arg2+arg3;");
+} catch (e) {
+ $FAIL('#1: test failed');
+}
+
+//CHECK#2
+if (!(f instanceof Function)){
+ $ERROR('#2: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
+
+//CHECK#3
+if (f("AB","BA",1) !== "ABBA1") {
+ $ERROR('#3: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T3.js
new file mode 100644
index 000000000..b604361f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A2_T3;
+* @section: 15.3.2.1;
+* @assertion: It is permissible but not necessary to have one argument for each formal parameter to be specified;
+* @description: Values of the function constructor arguments are "arg1, arg2, arg3", "return arg1+arg2+arg3;";
+*/
+
+//CHECK#1
+try {
+ var f = Function("arg1, arg2, arg3", "return arg1+arg2+arg3;");
+} catch (e) {
+ $FAIL('#1: test failed');
+}
+
+//CHECK#2
+if (!(f instanceof Function)){
+ $ERROR('#2: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
+
+//CHECK#3
+if (f(1,1,"ABBA") !== "2ABBA") {
+ $ERROR('#3: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T4.js
new file mode 100644
index 000000000..a8ca5309c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T4.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A2_T4;
+* @section: 15.3.2.1;
+* @assertion: It is permissible but not necessary to have one argument for each formal parameter to be specified;
+* @description: Values of the function constructor arguments are "return"-s of various results;
+*/
+
+var i=0;
+
+var p={toString:function(){return "arg"+(++i);}};
+
+//CHECK#1
+try {
+ var f = Function(p, p, p, "return arg1+arg2+arg3;");
+} catch (e) {
+ $FAIL('#1: test failed');
+}
+
+//CHECK#2
+if (!(f instanceof Function)){
+ $ERROR('#2: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
+
+//CHECK#3
+if (f(4,"2","QUESTION") !== "42QUESTION") {
+ $ERROR('#3: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
+ \ No newline at end of file
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T5.js
new file mode 100644
index 000000000..0cd819ee0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A2_T5;
+* @section: 15.3.2.1;
+* @assertion: It is permissible but not necessary to have one argument for each formal parameter to be specified;
+* @description: Values of the function constructor arguments are "return"-s of various results and a concotenation of strings;
+*/
+
+var i=0;
+
+var p={toString:function(){return "arg"+(++i)}};
+
+//CHECK#1
+try {
+ var f = Function(p+","+p,p, "return arg1+arg2+arg3;");
+} catch (e) {
+ $FAIL('#1: test failed');
+}
+
+//CHECK#2
+if (!(f instanceof Function)){
+ $ERROR('#2: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
+
+//CHECK#3
+if (f("",1,2) !== "12") {
+ $ERROR('#3: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T6.js
new file mode 100644
index 000000000..fa39274b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A2_T6.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A2_T6;
+* @section: 15.3.2.1;
+* @assertion: It is permissible but not necessary to have one argument for each formal parameter to be specified;
+* @description: Values of the function constructor arguments are "return"-s of various results and a concotenation of strings;
+*/
+
+var i=0;
+
+var p={toString:function(){return "arg"+(++i)}};
+
+//CHECK#1
+try {
+ var f = Function(p+","+p+","+p, "return arg1+arg2+arg3;");
+} catch (e) {
+ $FAIL('#1: test failed');
+}
+
+//CHECK#2
+if (!(f instanceof Function)){
+ $ERROR('#2: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
+
+//CHECK#3
+if (f("",1,p) !== "1arg4") {
+ $ERROR('#3: It is permissible but not necessary to have one argument for each formal parameter to be specified');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T1.js
new file mode 100644
index 000000000..10a7da8fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T1;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "{toString:function(){throw 1;}}" and "{toString:function(){throw 'body';}}";
+*/
+
+var p = {toString:function(){throw 1;}};
+var body = {toString:function(){throw "body";}};
+
+//CHECK#1
+try {
+ var f = new Function(p,body);
+ $FAIL('#1: test failed');
+} catch (e) {
+ if (e !== 1) {
+ $ERROR('#1.1: i) Let Result(i) be the first argument; ii) Let P be ToString(Result(i))');
+ }
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T10.js
new file mode 100644
index 000000000..ef3a5d903
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T10.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T10;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "{toString:function(){return "z;x"}}" and "return this;";
+*/
+
+var body = "return this;";
+var p={toString:function(){return "z;x"}};
+
+//CHECK#1
+try {
+ var f = new Function(p,body);
+ $FAIL('#1: If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception');
+} catch (e) {
+ if (!(e instanceof SyntaxError)) {
+ $ERROR('#1.1: If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T11.js
new file mode 100644
index 000000000..8b02b7d3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T11.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T11;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "a,b,c" and "void 0";
+*/
+
+var p = "a,b,c";
+
+//CHECK#1
+try {
+ var f = new Function(p, void 0);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with arguments p, body creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==undefined) {
+ $ERROR('#3: When the Function constructor is called with arguments p, body the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T12.js
new file mode 100644
index 000000000..8c934eb61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T12.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T12;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "a,b,c" and "undefined";
+*/
+
+var p = "a,b,c";
+
+//CHECK#1
+try {
+ var f = new Function(p, undefined);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with arguments p, body creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==undefined) {
+ $ERROR('#3: When the Function constructor is called with arguments p, body the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T13.js
new file mode 100644
index 000000000..d479742bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T13.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T13;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "a,b,c" and "null";
+*/
+
+var p = "a,b,c";
+
+//CHECK#1
+try {
+ var f = new Function(p, null);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with arguments p, body creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==undefined) {
+ $ERROR('#3: When the Function constructor is called with arguments p, body the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T14.js
new file mode 100644
index 000000000..813d1c2c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T14.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T14;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "a,b,c" and an undefined variable;
+*/
+
+var p = "a,b,c";
+
+//CHECK#1
+try {
+ var f = new Function(p, body);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with arguments p, body creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==undefined) {
+ $ERROR('#3: When the Function constructor is called with arguments p, body the following steps are taken...');
+}
+
+var body;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T15.js
new file mode 100644
index 000000000..9a7ba015c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T15.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T15;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are are two empty strings;
+*/
+
+//CHECK#1
+try {
+ var f = new Function("", "");
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with arguments p, body creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==undefined) {
+ $ERROR('#3: When the Function constructor is called with arguments p, body the following steps are taken...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T2.js
new file mode 100644
index 000000000..f91148cfa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T2;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "{toString:function(){return 'a';}}" and "return a;";
+*/
+
+var p = {toString:function(){return "a";}};
+var body = "return a;";
+
+//CHECK#1
+try {
+ var f = new Function(p,body);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with arguments p, body creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f(42)!==42) {
+ $ERROR('#3: When the Function constructor is called with arguments p, body creates a new Function object as specified in 13.2');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T3.js
new file mode 100644
index 000000000..53609833b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T3;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "{toString:function(){p=1;return "a";}}" and "{toString:function(){throw "body";}}";
+*/
+
+var p = {toString:function(){p=1;return "a";}};
+var body = {toString:function(){throw "body";}};
+
+//CHECK#1
+try {
+ var f = new Function(p,body);
+ $FAIL('#1: test failed');
+} catch (e) {
+ if (e !== "body") {
+ $ERROR('#1.1: i) Let Result(i) be the first argument; ii) Let P be ToString(Result(i))');
+ }
+}
+
+//CHECK#2
+if (p !== 1) {
+ $ERROR('#2: i) Let Result(i) be the first argument; ii) Let P be ToString(Result(i))');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T4.js
new file mode 100644
index 000000000..3db3e5008
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T4;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are an undefined variable and "return 1.1;";
+*/
+
+var body = "return 1.1;";
+
+//CHECK#1
+try {
+ var f = new Function(p,body);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==1.1) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
+
+var p; \ No newline at end of file
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T5.js
new file mode 100644
index 000000000..e81e97a4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T5.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T5;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "void 0" and "return \"A\";";
+*/
+
+
+var body = "return \"A\";";
+
+//CHECK#1
+try {
+ var f = new Function(void 0,body);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!=='\u0041') {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T6.js
new file mode 100644
index 000000000..6a8189d30
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T6.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T6;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "null" and "return true;";
+*/
+
+
+var body = "return true;";
+
+//CHECK#1
+try {
+ var f = new Function(null,body);
+ $FAIL('#1: If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception');
+} catch (e) {
+ if (!(e instanceof SyntaxError)) {
+ $ERROR('#1.1: If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception');
+ }
+} \ No newline at end of file
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T7.js
new file mode 100644
index 000000000..79b3c261c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T7.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T7;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "Object("a")" and "return a;";
+*/
+
+
+var body = "return a;";
+
+var p=Object("a");
+
+//CHECK#1
+try {
+ var f = new Function(p, body);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f(1)!==1) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+} \ No newline at end of file
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T8.js
new file mode 100644
index 000000000..6a0702872
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T8.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T8;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "undefined" and "return this;";
+*/
+
+
+var body = "return this;";
+
+//CHECK#1
+try {
+ var f = new Function(undefined,body);
+} catch (e) {
+ $FAIL('#1: test failed with error '+e);
+}
+
+//CHECK#2
+if (f.constructor !== Function) {
+ $ERROR('#2: When the Function constructor is called with one argument then body be that argument and creates a new Function object as specified in 13.2');
+}
+
+//CHECK#3
+if (f()!==this) {
+ $ERROR('#3: When the Function constructor is called with one argument then body be that argument the following steps are taken...');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T9.js
new file mode 100644
index 000000000..9fe7a2da3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2.1_A3_T9.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.2.1_A3_T9;
+* @section: 15.3.2.1, 13.2;
+* @assertion: When the Function constructor is called with arguments p, body the following steps are taken:
+* i) Let Result(i) be the first argument
+* ii) Let P be ToString(Result(i))
+* iii) Call ToString(body)
+* iv) If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception
+* v) If body is not parsable as FunctionBody then throw a SyntaxError exception
+* vi) Create a new Function object as specified in 13.2 with parameters specified by parsing P as a FormalParameterListopt and body specified by parsing body as a FunctionBody
+* Pass in a scope chain consisting of the global object as the Scope parameter
+* vii) Return Result(vi);
+* @description: Values of the function constructor arguments are "1,1" and "return this;";
+*/
+
+
+var body = "return this;";
+var p="1,1";
+
+//CHECK#1
+try {
+ var f = new Function(p,body);
+ $FAIL('#1: If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception');
+} catch (e) {
+ if (!(e instanceof SyntaxError)) {
+ $ERROR('#1.1: If P is not parsable as a FormalParameterList_opt then throw a SyntaxError exception');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2_A1.js
new file mode 100644
index 000000000..c04f6706b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.2_The_Function_Constructor/S15.3.2_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.
+
+/**
+* @name: S15.3.2_A1;
+* @section: 15.3.2;
+* @assertion: When Function is called as part of a new expression, it is a constructor: it initialises the newly created object;
+* @description: Checking the constuctor of the object that is created as a new Function;
+*/
+
+var f = new Function;
+
+//CHECK#1
+if (f.constructor !== Function) {
+ $ERROR('#1: When Function is called as part of a new expression, it is a constructor: it initialises the newly created object');
+}
+
+//CHECK#2
+if (f === undefined) {
+ $ERROR('#2: When Function is called as part of a new expression, it is a constructor: it initialises the newly created object');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A1.js
new file mode 100644
index 000000000..c734d032a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_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.
+
+/**
+* @name: S15.3.3.1_A1;
+* @section: 15.3.3.1, 15.3.4;
+* @assertion: The Function.prototype property has the attribute ReadOnly;
+* @description: Checking if varying the Function.prototype property fails;
+*/
+
+var obj = Function.prototype;
+Function.prototype = function(){return "shifted";};
+
+//CHECK#1
+if (Function.prototype !== obj) {
+ $ERROR('#1: the Function.prototype property has the attributes ReadOnly.');
+}
+
+//CHECK#2
+try {
+ if(Function.prototype()!==undefined){
+ $ERROR('#2: the Function.prototype property has the attributes ReadOnly');
+ }
+} catch (e) {
+ $ERROR('#2.1: the Function.prototype property has the attributes ReadOnly: '+e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A2.js
new file mode 100644
index 000000000..494c44a7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.3.1_A2;
+* @section: 15.3.3.1, 15.3.4;
+* @assertion: The Function.prototype property has the attribute DontEnum;
+* @description: Checking if enumerating the Function.prototype property fails;
+*/
+
+// CHECK#1
+if (Function.propertyIsEnumerable('prototype')) {
+ $ERROR('#1: the Function.prototype property has the attributes DontEnum');
+}
+
+// CHECK#2
+var count=0;
+
+for (p in Function){
+ if (p==="prototype") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: the Function.prototype property has the attributes DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.1_A3.js
new file mode 100644
index 000000000..a57d3d93c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/15.3.3.1_Function.prototype/S15.3.3.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.
+
+/**
+* @name: S15.3.3.1_A3;
+* @section: 15.3.3.1, 15.3.4;
+* @assertion: The Function.prototype property has the attribute DontDelete;
+* @description: Checking if deleting the Function.prototype property fails;
+*/
+
+delete Function.prototype;
+
+//CHECK#1
+if (!(Function.hasOwnProperty('prototype'))) {
+ $ERROR('#1: the Function.prototype property has the attributes DontDelete.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A1.js
new file mode 100644
index 000000000..d2c6070fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.3.3_A1;
+ * @section: 15.3.3;
+ * @assertion: The Function constructor has the property "prototype";
+ * @description: Checking existence of the property "prototype";
+ */
+
+if(!Function.hasOwnProperty("prototype")){
+ $ERROR('#1: The Function constructor has the property "prototype"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A2_T1.js
new file mode 100644
index 000000000..51841a666
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A2_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.3_A2_T1;
+* @section: 15.3.3, 15.3.4;
+* @assertion: The value of the internal [[Prototype]] property of the Function constructor
+* is the Function prototype object;
+* @description: Checking prototype of Function;
+*/
+
+// CHECK#
+if (!(Function.prototype.isPrototypeOf(Function))) {
+ $ERROR('#1: the value of the internal [[Prototype]] property of the Function constructor is the Function prototype object.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A2_T2.js
new file mode 100644
index 000000000..870684308
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A2_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.
+
+/**
+* @name: S15.3.3_A2_T2;
+* @section: 15.3.3, 15.3.4;
+* @assertion: The value of the internal [[Prototype]] property of the Function constructor
+* is the Function prototype object;
+* @description: Add new property to Function.prototype and check it;
+*/
+
+Function.prototype.indicator = 1;
+
+//CHECK#
+if (Function.indicator != 1) {
+ $ERROR('#1: the value of the internal [[Prototype]] property of the Function constructor is the Function prototype object.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_A3.js
new file mode 100644
index 000000000..50402370c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.3_Properties_of_the_Function_Constructor/S15.3.3_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.
+
+/**
+* @name: S15.3.3_A3;
+* @section: 15.3.3, 15.3.4;
+* @assertion: Function constructor has length property whose value is 1;
+* @description: Checking Function.length property;
+*/
+
+//CHECK#1
+if (!Function.hasOwnProperty("length")){
+ $ERROR('#1: Function constructor has length property');
+}
+
+//CHECK#2
+if (Function.length !== 1) {
+ $ERROR('#2: Function constructor length property value is 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A10.js
new file mode 100644
index 000000000..f44729e95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A10;
+* @section: 15.3.4.2;
+* @assertion: The Function.prototype.toString.length property has the attribute ReadOnly;
+* @description: Checking if varying the Function.prototype.toString.length property fails;
+*/
+
+//CHECK#1
+if (!(Function.prototype.toString.hasOwnProperty('length'))) {
+ $FAIL('#1: the Function.prototype.toString has length property.');
+}
+
+var obj = Function.prototype.toString.length;
+
+Function.prototype.toString.length = function(){return "shifted";};
+
+//CHECK#2
+if (Function.prototype.toString.length !== obj) {
+ $ERROR('#2: the Function.prototype.toString length property has the attributes ReadOnly.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A11.js
new file mode 100644
index 000000000..8c1c6fc7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A11.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A11;
+* @section: 15.3.4.2;
+* @assertion: The length property of the toString method is 0;
+* @description: Checking Function.prototype.toString.length;
+*/
+
+//CHECK#1
+if (!(Function.prototype.toString.hasOwnProperty("length"))) {
+ $ERROR('#1: The Function.prototype.toString has the length property');
+}
+
+//CHECK#2
+if (Function.prototype.toString.length !== 0) {
+ $ERROR('#2: The length property of the toString method is 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A12.js
new file mode 100644
index 000000000..6c26bd6a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A12.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A12;
+* @section: 15.3.4.2;
+* @assertion: The Function.prototype.toString function is not generic;
+* it throws a TypeError exception if its this value is not
+* a Function object.
+* @negative TypeError;
+*/
+
+Function.prototype.toString.call(undefined);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A13.js
new file mode 100644
index 000000000..32a391302
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A13.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A13;
+* @section: 15.3.4.2;
+* @assertion: The toString function is not generic; it throws a
+* TypeError exception if its this value is not a Function
+* object.
+* @negative TypeError;
+*/
+
+Function.prototype.toString.call(null);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A14.js
new file mode 100644
index 000000000..8ff48e6de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A14.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A14;
+* @section: 15.3.4.2;
+* @assertion: The toString function is not generic; it throws a
+* TypeError exception if its this value is not a Function
+* object.
+* @negative TypeError;
+*/
+
+Function.prototype.toString.call({});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A15.js
new file mode 100644
index 000000000..4dbd35928
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A15.js
@@ -0,0 +1,16 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A15;
+* @section: 15.3.4.2;
+* @assertion: The toString function is not generic; it throws a
+* TypeError exception if its this value is not a Function
+* object.
+* @description: Whether or not they are callable, RegExp objects are
+* not Function objects, so toString should throw a
+* TypeError.
+* @negative TypeError;
+*/
+
+Function.prototype.toString.call(/x/);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A16.js
new file mode 100644
index 000000000..6a51b0cee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A16.js
@@ -0,0 +1,18 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A16;
+* @section: 15.3.4.2;
+* @assertion: The toString function is not generic; it throws a
+* TypeError exception if its this value is not a Function
+* object.
+* @description: The String constructor, given an object, should invoke
+* that object's toString method as a method, i.e., with
+* its this value bound to that object.
+* @negative TypeError;
+*/
+
+var obj = {toString: Function.prototype.toString};
+
+String(obj);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A1_T1.js
new file mode 100644
index 000000000..7cc0d5bf8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A1_T1;
+* @section: 15.3.4.2;
+* @assertion: An implementation-dependent representation of the function is returned. This representation has the syntax of a FunctionDeclaration;
+* @description: For testing use Function.prototype.toString() function;
+*/
+
+var f = function(x) {
+ return x*x;
+};
+
+//CHECK#1
+if (eval(f.toString())(10) !== f(10)) {
+ $ERROR('#1: An implementation-dependent representation of the function is returned. This representation has the syntax of a FunctionDeclaration');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A6.js
new file mode 100644
index 000000000..810a3fdee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A6;
+* @section: 15.3.4.2, 13.2;
+* @assertion: Function.prototype.toString has not prototype property;
+* @description: Checking if obtaining the prototype property of Function.prototype.toString fails;
+*/
+
+//CHECK#1
+if (Function.prototype.toString.prototype !== undefined) {
+ $ERROR('#1: Function.prototype.toString has not prototype property'+Function.prototype.toString.prototype);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A7.js
new file mode 100644
index 000000000..9d15fe42f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A7;
+* @section: 15.3.4.2, 13.2;
+* @assertion: Function.prototype.toString can't be used as constructor;
+* @description: Checking if creating "new Function.prototype.toString" fails;
+*/
+
+var FACTORY = Function.prototype.toString;
+
+try {
+ var instance = new FACTORY;
+ $FAIL('#1: Function.prototype.toString can\'t be used as constructor');
+} catch (e) {
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A8.js
new file mode 100644
index 000000000..a86c9c77f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A8.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A8;
+* @section: 15.3.4.2;
+* @assertion: The Function.prototype.toString.length property has the attribute DontEnum;
+* @description: Checking if enumerating the Function.prototype.toString.length property fails;
+*/
+
+//CHECK#0
+if (!(Function.prototype.toString.hasOwnProperty('length'))) {
+ $FAIL('#0: the Function.prototype.toString has length property.');
+}
+
+
+// CHECK#1
+if (Function.prototype.toString.propertyIsEnumerable('length')) {
+ $ERROR('#1: the Function.prototype.toString.length property has the attributes DontEnum');
+}
+
+// CHECK#2
+for (p in Function.prototype.toString){
+ if (p==="length")
+ $ERROR('#2: the Function.prototype.toString.length property has the attributes DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A9.js
new file mode 100644
index 000000000..bbf4a7b20
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.2_Function.prototype.toString/S15.3.4.2_A9.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.2_A9;
+* @section: 15.3.4.2;
+* @assertion: The Function.prototype.toString.length property has the attribute DontDelete;
+* @description: Checking if deleting the Function.prototype.toString.length property fails;
+*/
+
+//CHECK#0
+if (!(Function.prototype.toString.hasOwnProperty('length'))) {
+ $FAIL('#0: the Function.prototype.toString has length property');
+}
+
+//CHECK#1
+if (delete Function.prototype.toString.length) {
+ $ERROR('#1: The Function.prototype.toString.length property has the attributes DontDelete');
+}
+
+//CHECK#2
+if (!(Function.prototype.toString.hasOwnProperty('length'))) {
+ $FAIL('#2: The Function.prototype.toString.length property has the attributes DontDelete');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A10.js
new file mode 100644
index 000000000..86fa9ad92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A10;
+* @section: 15.3.4.3;
+* @assertion: The Function.prototype.apply.length property has the attribute ReadOnly;
+* @description: Checking if varying the Function.prototype.apply.length property fails;
+*/
+
+//CHECK#1
+if (!(Function.prototype.apply.hasOwnProperty('length'))) {
+ $FAIL('#1: the Function.prototype.apply has length property.');
+}
+
+var obj = Function.prototype.apply.length;
+
+Function.prototype.apply.length = function(){return "shifted";};
+
+//CHECK#2
+if (Function.prototype.apply.length !== obj) {
+ $ERROR('#2: the Function.prototype.apply length property has the attributes ReadOnly.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A11.js
new file mode 100644
index 000000000..18664ef07
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A11.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A11;
+* @section: 15.3.4.3;
+* @assertion: The Function.prototype.apply.length property has the attribute DontEnum;
+* @description: TChecking if enumerating the Function.prototype.apply.length property fails;
+*/
+
+//CHECK#0
+if (!(Function.prototype.apply.hasOwnProperty('length'))) {
+ $FAIL('#0: the Function.prototype.apply has length property.');
+}
+
+
+// CHECK#1
+if (Function.prototype.apply.propertyIsEnumerable('length')) {
+ $ERROR('#1: the Function.prototype.apply.length property has the attributes DontEnum');
+}
+
+// CHECK#2
+for (var p in Function.prototype.apply){
+ if (p==="length")
+ $ERROR('#2: the Function.prototype.apply.length property has the attributes DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A12.js
new file mode 100644
index 000000000..3be50be81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A12.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A12;
+* @section: 15.3.4.3, 13.2;
+* @assertion: Function.prototype.apply has not prototype property;
+* @description: Checking if obtaining the prototype property of Function.prototype.apply fails;
+*/
+
+//CHECK#1
+if (Function.prototype.apply.prototype !== undefined) {
+ $ERROR('#1: Function.prototype.apply has not prototype property'+Function.prototype.apply.prototype);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A13.js
new file mode 100644
index 000000000..01196f9a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A13.js
@@ -0,0 +1,11 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A13;
+* @section: 15.3.4.3;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @negative TypeError;
+*/
+
+Function.prototype.apply.call(undefined, {}, []);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A14.js
new file mode 100644
index 000000000..c756e4c41
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A14.js
@@ -0,0 +1,11 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A14;
+* @section: 15.3.4.3;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @negative TypeError;
+*/
+
+Function.prototype.apply.call(null, {}, []);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A15.js
new file mode 100644
index 000000000..339d44689
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A15.js
@@ -0,0 +1,11 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A15;
+* @section: 15.3.4.3;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @negative TypeError;
+*/
+
+Function.prototype.apply.call({}, {}, []);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A16.js
new file mode 100644
index 000000000..08425ed70
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A16.js
@@ -0,0 +1,27 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A16;
+* @section: 15.3.4.3;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @description: A RegExp is not a function, but it may be
+* callable. Iff it is, it's typeof should be 'function',
+* in which case apply should accept it as a valid this
+* value.
+*/
+
+var re = (/x/);
+if (typeof re === 'function') {
+ Function.prototype.apply.call(re, undefined, ['x']);
+} else {
+ try {
+ Function.prototype.bind.call(re, undefined);
+ $FAIL('#1: If IsCallable(func) is false, ' +
+ 'then (bind should) throw a TypeError exception');
+ } catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1: TypeError expected. Actual: ' + e);
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A1_T1.js
new file mode 100644
index 000000000..d3dc9e0cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A1_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A1_T1;
+* @section: 15.3.4.3;
+* @assertion: The apply method performs a function call using the [[Call]] property of the object. If the object does not have a [[Call]] property, a TypeError exception is thrown;
+* @description: Calling "apply" method of the object that does not have a [[Call]] property.
+* Prototype of the object is Function();
+*/
+
+var proto=Function();
+
+function FACTORY(){};
+
+FACTORY.prototype=proto;
+
+var obj = new FACTORY;
+
+//CHECK#1
+if (typeof obj.apply !== "function") {
+ $ERROR('#1: apply method accessed');
+}
+
+//CHECK#2
+try {
+ obj.apply();
+ $FAIL('#2: If the object does not have a [[Call]] property, a TypeError exception is thrown');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2.1: If the object does not have a [[Call]] property, a TypeError exception is thrown');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A1_T2.js
new file mode 100644
index 000000000..04ea48b62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A1_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A1_T2;
+* @section: 15.3.4.3;
+* @assertion: The apply method performs a function call using the [[Call]] property of the object. If the object does not have a [[Call]] property, a TypeError exception is thrown;
+* @description: Calling "apply" method of the object that does not have a [[Call]] property.
+* Prototype of the object is Function.prototype;
+*/
+
+function FACTORY(){};
+
+FACTORY.prototype=Function.prototype;
+
+var obj = new FACTORY;
+
+//CHECK#1
+if (typeof obj.apply !== "function") {
+ $ERROR('#1: apply method accessed');
+}
+
+//CHECK#2
+try {
+ obj.apply();
+ $FAIL('#2: If the object does not have a [[Call]] property, a TypeError exception is thrown');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2.1: If the object does not have a [[Call]] property, a TypeError exception is thrown');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A2_T1.js
new file mode 100644
index 000000000..e7d375f3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A2_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A2_T1;
+* @section: 15.3.4.3;
+* @assertion: The length property of the apply method is 2;
+* @description: Checking Function.prototype.apply.length;
+*/
+
+//CHECK#1
+if (typeof Function.prototype.apply !== "function") {
+ $ERROR('#1: apply method defined');
+}
+
+//CHECK#2
+if (typeof Function.prototype.apply.length === "undefined") {
+ $ERROR('#2: length property of apply method defined');
+}
+
+//CHECK#3
+if (Function.prototype.apply.length !== 2) {
+ $ERROR('#3: The length property of the apply method is 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A2_T2.js
new file mode 100644
index 000000000..4ccc10353
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A2_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A2_T2;
+* @section: 15.3.4.3;
+* @assertion: The length property of the apply method is 2;
+* @description: Checking f.apply.length, where f is new Function;
+*/
+
+var f=new Function;
+
+//CHECK#1
+if (typeof f.apply !== "function") {
+ $ERROR('#1: apply method accessed');
+}
+
+//CHECK#2
+if (typeof f.apply.length === "undefined") {
+ $ERROR('#2: length property of apply method defined');
+}
+
+//CHECK#3
+if (f.apply.length !== 2) {
+ $ERROR('#3: The length property of the apply method is 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T1.js
new file mode 100644
index 000000000..194aee792
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A3_T1;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Not any arguments at apply function;
+*/
+
+Function("this.field=\"strawberry\"").apply();
+
+//CHECK#1
+if (this["field"] !== "strawberry") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T10.js
new file mode 100644
index 000000000..ee53b6bf9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T10.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.
+
+/**
+* @name: S15.3.4.3_A3_T10;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Checking by using eval, no any arguments at apply function;
+*/
+
+eval(" (function(){this.feat=1}).apply()");
+
+//CHECK#1
+if (this["feat"] !== 1) {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T2.js
new file mode 100644
index 000000000..2f4f0ebb8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A3_T2;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at apply function is null;
+*/
+
+Function("this.field=\"green\"").apply(null);
+
+//CHECK#1
+if (this["field"] !== "green") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T3.js
new file mode 100644
index 000000000..e13458a89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A3_T3;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at apply function is void 0;
+*/
+
+Function("this.field=\"battle\"").apply(void 0);
+
+//CHECK#1
+if (this["field"] !== "battle") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T4.js
new file mode 100644
index 000000000..8bb939e0b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A3_T4;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at apply function is undefined;
+*/
+
+Function("this.field=\"oil\"").apply(undefined);
+
+//CHECK#1
+if (this["field"] !== "oil") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T5.js
new file mode 100644
index 000000000..dd4f08dff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A3_T5;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: No any arguments at apply function and it called inside function declaration;
+*/
+
+function FACTORY(){
+ Function("this.feat=\"in da haus\"").apply();
+};
+
+var obj = new FACTORY;
+
+//CHECK#1
+if (this["feat"] !== "in da haus") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
+
+//CHECK#2
+if (typeof obj.feat !== "undefined") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T6.js
new file mode 100644
index 000000000..913903275
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A3_T6;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at apply function is null and it called inside function declaration;
+*/
+
+function FACTORY(){
+ (function(){this.feat="kamon beyba"}).apply(null);
+};
+
+var obj = new FACTORY;
+
+//CHECK#1
+if (this["feat"] !== "kamon beyba") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
+
+//CHECK#2
+if (typeof obj.feat !== "undefined") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T7.js
new file mode 100644
index 000000000..a7b469040
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A3_T7;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at apply function is void 0 and it called inside function declaration;
+*/
+
+(function FACTORY(){
+ Function("this.feat=\"in da haus\"").apply(void 0);
+})();
+
+
+//CHECK#1
+if (this["feat"] !== "in da haus") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T8.js
new file mode 100644
index 000000000..89e2627b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T8.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A3_T8;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at apply function is undefined and it called inside function declaration;
+*/
+
+(function FACTORY(){
+ (function(){this.feat="kamon beyba"}).apply(undefined);
+})();
+
+//CHECK#1
+if (this["feat"] !== "kamon beyba") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T9.js
new file mode 100644
index 000000000..dce9397a1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A3_T9.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A3_T9;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Checking by using eval, argument at apply function is void 0;
+*/
+
+eval( " Function(\"this.feat=1\").apply(void 0) " );
+
+//CHECK#1
+if (this["feat"] !== 1) {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T1.js
new file mode 100644
index 000000000..b20620174
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A5_T1;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is number;
+*/
+
+var obj=1;
+
+var retobj = Function("this.touched= true; return this;").apply(obj);
+
+//CHECK#1
+if (typeof obj.touched !== "undefined") {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+//CHECK#2
+if (!(retobj["touched"])) {
+ $ERROR('#2: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+} \ No newline at end of file
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T2.js
new file mode 100644
index 000000000..d7e191f5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A5_T2;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is boolean true;
+*/
+
+var obj=true;
+
+var retobj = new Function("this.touched= true; return this;").apply(obj);
+
+//CHECK#1
+if (typeof obj.touched !== "undefined") {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+//CHECK#2
+if (!(retobj["touched"])) {
+ $ERROR('#2: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T3.js
new file mode 100644
index 000000000..27c08ff88
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A5_T3;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is string;
+*/
+
+var obj="soap";
+
+var retobj = ( function(){this.touched= true; return this;} ).apply(obj);
+
+//CHECK#1
+if (typeof obj.touched !== "undefined") {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+//CHECK#2
+if (!(retobj["touched"])) {
+ $ERROR('#2: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T4.js
new file mode 100644
index 000000000..e01212846
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A5_T4;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is function variable that return this;
+*/
+
+f = function(){this.touched= true; return this;};
+
+retobj = f.apply(obj);
+
+//CHECK#1
+if (typeof obj !== "undefined") {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+//CHECK#2
+if (!(retobj["touched"])) {
+ $ERROR('#2: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+var obj;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T5.js
new file mode 100644
index 000000000..235a3d489
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A5_T5;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is function variable;
+*/
+
+var f = function(){this.touched= true;};
+
+var obj={};
+
+f.apply(obj);
+
+//CHECK#1
+if (!(obj.touched)) {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T6.js
new file mode 100644
index 000000000..ca64419b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T6.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A5_T6;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is new String();
+*/
+
+var obj=new String("soap");
+
+( function(){this.touched= true;}).apply(obj);
+
+//CHECK#1
+if (!(obj.touched)) {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T7.js
new file mode 100644
index 000000000..96a28fb31
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A5_T7;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is new Number();
+*/
+
+var obj=new Number(1);
+
+Function("this.touched= true;").apply(obj);
+
+//CHECK#1
+if (!(obj.touched)) {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T8.js
new file mode 100644
index 000000000..d3a814f81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A5_T8.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A5_T8;
+* @section: 15.3.4.3;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is Function();
+*/
+
+var obj=Function();
+
+new Function("this.touched= true; return this;").apply(obj);
+
+//CHECK#1
+if (!(obj.touched)) {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T1.js
new file mode 100644
index 000000000..66123546d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A6_T1;
+* @section: 15.3.4.3;
+* @assertion: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown;
+* @description: argArray is (1,{});
+*/
+
+//CHECK#1
+try {
+ Function().apply(1,{});
+ $FAIL('#1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T2.js
new file mode 100644
index 000000000..88ed4a692
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A6_T2;
+* @section: 15.3.4.3;
+* @assertion: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown;
+* @description: argArray is (null,1);
+*/
+
+//CHECK#1
+try {
+ Function().apply(null,1);
+ $FAIL('#1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T3.js
new file mode 100644
index 000000000..9049ae414
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A6_T3;
+* @section: 15.3.4.3;
+* @assertion: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown;
+* @description: argArray is (object,"1,3,4");
+*/
+
+obj={};
+
+//CHECK#1
+try {
+ Function().apply(obj,"1,3,4");
+ $FAIL('#1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T4.js
new file mode 100644
index 000000000..3fbb53935
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A6_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A6_T4;
+* @section: 15.3.4.3;
+* @assertion: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown;
+* @description: argArray is (this,function(){return arguments;});
+*/
+
+//CHECK#1
+try {
+ Function().apply(this,function(){return arguments;});
+ $FAIL('#1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T1.js
new file mode 100644
index 000000000..a83bfce0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T1;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (null,[1]);
+*/
+
+Function("a1,a2,a3","this.shifted=a1;").apply(null,[1]);
+
+//CHECK#1
+if (this["shifted"] !== 1) {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T10.js
new file mode 100644
index 000000000..11ffe978c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T10.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T10;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (empty object, arguments), inside function call without declaration used;
+*/
+
+var obj={};
+
+(function (){
+ Function("a1,a2,a3","this.shifted=a1+a2+a3;").apply(obj,arguments);
+})("",4,2);
+
+//CHECK#1
+if (obj["shifted"] !== "42") {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
+//CHECK#2
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#2: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T2.js
new file mode 100644
index 000000000..72ab307d2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T2;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (null,[1,2,3]);
+*/
+
+new Function("a1,a2","a3","this.shifted=a2;").apply(null,[1,2,3]);
+
+//CHECK#1
+if (this["shifted"] !== 2) {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T3.js
new file mode 100644
index 000000000..93afc2b0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T3;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (empty object, new Array("nine","inch","nails"));
+*/
+
+i=0;
+
+p={toString:function(){return "a"+(++i);}};
+
+obj={};
+
+Function(p,"a2,a3","this.shifted=a1;").apply(obj, new Array("nine","inch","nails"));
+
+//CHECK#1
+if (obj["shifted"] !== "nine") {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
+//CHECK#2
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#2: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T4.js
new file mode 100644
index 000000000..a56aea8aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T4;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (empty object, ( function(){return arguments;}) ("a","b","c"));
+*/
+
+i=0;
+
+p={toString:function(){return "a"+(++i);}};
+
+obj={};
+
+new Function(p,p,p, "this.shifted=a3;").apply( obj,( function(){return arguments;}) ("a","b","c") );
+
+//CHECK#1
+if (obj["shifted"] !== "c") {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
+//CHECK#2
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#2: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T5.js
new file mode 100644
index 000000000..342599129
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T5;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (null, arguments), inside function declaration used;
+*/
+
+function FACTORY(){
+ Function("a1,a2,a3","this.shifted=a1+a2+a3;").apply(null,arguments);
+}
+
+obj=new FACTORY("",1,2);
+
+//CHECK#1
+if (this["shifted"] !== "12") {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
+//CHECK#2
+if (typeof obj.shifted !== "undefined") {
+ $ERROR('#2: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T6.js
new file mode 100644
index 000000000..cd3a45c81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T6.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T6;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (this, arguments), inside function declaration used;
+*/
+
+function FACTORY(){
+ Function("a1,a2,a3","this.shifted=a1+a2+a3;").apply(this,arguments);
+}
+
+obj=new FACTORY("",4,2);
+
+//CHECK#1
+if (obj["shifted"] !== "42") {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
+//CHECK#2
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#2: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T7.js
new file mode 100644
index 000000000..a129184dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T7;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (null, arguments), inside function call without declaration used;
+*/
+
+(function (){
+ Function("a1,a2,a3","this.shifted=a1+a2+a3;").apply(null,arguments);
+})("",1,2);
+
+//CHECK#1
+if (this["shifted"] !== "12") {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T8.js
new file mode 100644
index 000000000..58428b72d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T8;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (this, arguments), inside function call without declaration used;
+*/
+
+(function (){
+ Function("a1,a2,a3","this.shifted=a1+a2+a3;").apply(this,arguments);
+})("",4,2);
+
+//CHECK#2
+if (this["shifted"] !== "42") {
+ $ERROR('#2: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T9.js
new file mode 100644
index 000000000..79dae88d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A7_T9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A7_T9;
+* @section: 15.3.4.3;
+* @assertion: If argArray is either an array or an arguments object,
+* the function is passed the (ToUint32(argArray.length)) arguments argArray[0], argArray[1],...,argArray[ToUint32(argArray.length)-1];
+* @description: argArray is (empty object, arguments), inside function declaration used;
+*/
+
+function FACTORY(){
+ var obj = {};
+ Function("a1,a2,a3","this.shifted=a1+a2+a3;").apply(obj,arguments);
+ return obj;
+}
+
+obj=new FACTORY("",1,2);
+
+//CHECK#1
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
+//CHECK#2
+if (obj.shifted !== "12") {
+ $ERROR('#2: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T1.js
new file mode 100644
index 000000000..4b2ec53e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A8_T1;
+* @section: 15.3.4.3;
+* @assertion: Function.prototype.apply can`t be used as [[create]] caller;
+* @description: Checking if creating "new Function.prototype.apply" fails;
+*/
+
+try {
+ obj = new Function.prototype.apply;
+ $ERROR('#1: Function.prototype.apply can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.apply can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T2.js
new file mode 100644
index 000000000..cf6e5a42c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A8_T2;
+* @section: 15.3.4.3;
+* @assertion: Function.prototype.apply can`t be used as [[create]] caller;
+* @description: Checking if creating "new Function.prototype.apply()" fails;
+*/
+
+try {
+ obj = new Function.prototype.apply();
+ $ERROR('#1: Function.prototype.apply can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.apply can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T3.js
new file mode 100644
index 000000000..d97d2c2d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A8_T3;
+* @section: 15.3.4.3;
+* @assertion: Function.prototype.apply can`t be used as [[create]] caller;
+* @description: Checking if creating "new Function.apply" fails;
+*/
+
+try {
+ obj = new Function.apply;
+ $ERROR('#1: Function.prototype.apply can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.apply can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T4.js
new file mode 100644
index 000000000..51a17f8fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A8_T4;
+* @section: 15.3.4.3;
+* @assertion: Function.prototype.apply can`t be used as [[create]] caller;
+* @description: Checking if creating "new (Function("this.p1=1").apply)" fails;
+*/
+
+try {
+ obj = new (Function("this.p1=1").apply);
+ $ERROR('#1: Function.prototype.apply can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.apply can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T5.js
new file mode 100644
index 000000000..37f65da29
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A8_T5;
+* @section: 15.3.4.3;
+* @assertion: Function.prototype.apply can`t be used as [[create]] caller;
+* @description: Checking if creating "new Function("this.p1=1").apply" fails;
+*/
+
+try {
+ FACTORY = Function("this.p1=1").apply;
+ obj = new FACTORY();
+ $ERROR('#1: Function.prototype.apply can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.apply can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T6.js
new file mode 100644
index 000000000..a1838190e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A8_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A8_T6;
+* @section: 15.3.4.3;
+* @assertion: Function.prototype.apply can`t be used as [[create]] caller;
+* @description: Checking if creating "new (Function("function f(){this.p1=1;};return f").apply())" fails;
+*/
+
+//CHECK#1
+try {
+ obj = new (Function("function f(){this.p1=1;};return f").apply());
+} catch (e) {
+ $ERROR('#1: Function.prototype.apply can\'t be used as [[create]] caller');
+}
+
+//CHECK#2
+if (obj.p1!== 1) {
+ $ERROR('#2: Function.prototype.apply can\'t be used as [[create]] caller');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A9.js
new file mode 100644
index 000000000..e5ce9fb89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.3_Function.prototype.apply/S15.3.4.3_A9.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.3_A9;
+* @section: 15.3.4.3;
+* @assertion: The Function.prototype.apply.length property has the attribute DontDelete;
+* @description: Checking if deleting the Function.prototype.apply.length property fails;
+*/
+
+//CHECK#0
+if (!(Function.prototype.apply.hasOwnProperty('length'))) {
+ $FAIL('#0: the Function.prototype.apply has length property');
+}
+
+//CHECK#1
+if (delete Function.prototype.apply.length) {
+ $ERROR('#1: The Function.prototype.apply.length property has the attributes DontDelete');
+}
+
+//CHECK#2
+if (!(Function.prototype.apply.hasOwnProperty('length'))) {
+ $FAIL('#2: The Function.prototype.apply.length property has the attributes DontDelete');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A10.js
new file mode 100644
index 000000000..fc8cdb2fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A10;
+* @section: 15.3.4.4;
+* @assertion: The Function.prototype.call.length property has the attribute ReadOnly;
+* @description: Checking if varying the Function.prototype.call.length property fails;
+*/
+
+//CHECK#1
+if (!(Function.prototype.call.hasOwnProperty('length'))) {
+ $FAIL('#1: the Function.prototype.call has length property.');
+}
+
+var obj = Function.prototype.call.length;
+
+Function.prototype.call.length = function(){return "shifted";};
+
+//CHECK#2
+if (Function.prototype.call.length !== obj) {
+ $ERROR('#2: the Function.prototype.call length property has the attributes ReadOnly.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A11.js
new file mode 100644
index 000000000..bcc981fe8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A11.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A11;
+* @section: 15.3.4.4;
+* @assertion: The Function.prototype.call.length property has the attribute DontEnum;
+* @description: Checking if enumerating the Function.prototype.call.length property fails;
+*/
+
+//CHECK#0
+if (!(Function.prototype.call.hasOwnProperty('length'))) {
+ $FAIL('#0: the Function.prototype.call has length property.');
+}
+
+
+// CHECK#1
+if (Function.prototype.call.propertyIsEnumerable('length')) {
+ $ERROR('#1: the Function.prototype.call.length property has the attributes DontEnum');
+}
+
+// CHECK#2
+for (p in Function.prototype.call){
+ if (p==="length")
+ $ERROR('#2: the Function.prototype.call.length property has the attributes DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A12.js
new file mode 100644
index 000000000..422eaf52a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A12.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A12;
+* @section: 15.3.4.4, 13.2;
+* @assertion: Function.prototype.call has not prototype property;
+* @description: Checking if obtaining the prototype property of Function.prototype.call fails;
+*/
+
+//CHECK#1
+if (Function.prototype.call.prototype !== undefined) {
+ $ERROR('#1: Function.prototype.call has not prototype property'+Function.prototype.call.prototype);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A13.js
new file mode 100644
index 000000000..6dcf1f960
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A13.js
@@ -0,0 +1,11 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A13;
+* @section: 15.3.4.4;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @negative TypeError;
+*/
+
+Function.prototype.call.call(undefined, {});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A14.js
new file mode 100644
index 000000000..88a8ae002
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A14.js
@@ -0,0 +1,11 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A14;
+* @section: 15.3.4.4;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @negative TypeError;
+*/
+
+Function.prototype.call.call(null, {});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A15.js
new file mode 100644
index 000000000..d337793eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A15.js
@@ -0,0 +1,11 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A15;
+* @section: 15.3.4.4;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @negative TypeError;
+*/
+
+Function.prototype.call.call({}, {});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A16.js
new file mode 100644
index 000000000..2333f4ec4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A16.js
@@ -0,0 +1,27 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A16;
+* @section: 15.3.4.4;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @description: A RegExp is not a function, but it may be
+* callable. Iff it is, it's typeof should be 'function',
+* in which case call should accept it as a valid this
+* value.
+*/
+
+var re = (/x/);
+if (typeof re === 'function') {
+ Function.prototype.call.call(re, undefined, 'x');
+} else {
+ try {
+ Function.prototype.bind.call(re, undefined);
+ $FAIL('#1: If IsCallable(func) is false, ' +
+ 'then (bind should) throw a TypeError exception');
+ } catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1: TypeError expected. Actual: ' + e);
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A1_T1.js
new file mode 100644
index 000000000..8e3ac5510
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A1_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A1_T1;
+* @section: 15.3.4.4;
+* @assertion: The call method performs a function call using the [[Call]] property of the object. If the object does not have a [[Call]] property, a TypeError exception is thrown;
+* @description: Call "call" method of the object that does not have a [[Call]] property.
+* Prototype of the object is Function();
+*/
+
+var proto=Function();
+
+function FACTORY(){};
+
+FACTORY.prototype=proto;
+
+var obj = new FACTORY;
+
+//CHECK#1
+if (typeof obj.call !== "function") {
+ $ERROR('#1: call method accessed');
+}
+
+//CHECK#2
+try {
+ obj.call();
+ $FAIL('#2: If the object does not have a [[Call]] property, a TypeError exception is thrown');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2.1: If the object does not have a [[Call]] property, a TypeError exception is thrown');
+ }
+}
+ \ No newline at end of file
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A1_T2.js
new file mode 100644
index 000000000..1c29bc248
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A1_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A1_T2;
+* @section: 15.3.4.4;
+* @assertion: The call method performs a function call using the [[Call]] property of the object. If the object does not have a [[Call]] property, a TypeError exception is thrown;
+* @description: Calling "call" method of the object that does not have a [[Call]] property.
+* Prototype of the object is Function.prototype;
+*/
+
+function FACTORY(){};
+
+FACTORY.prototype=Function.prototype;
+
+var obj = new FACTORY;
+
+//CHECK#1
+if (typeof obj.call !== "function") {
+ $ERROR('#1: call method accessed');
+}
+
+//CHECK#2
+try {
+ obj.call();
+ $FAIL('#2: If the object does not have a [[Call]] property, a TypeError exception is thrown');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2.1: If the object does not have a [[Call]] property, a TypeError exception is thrown');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A2_T1.js
new file mode 100644
index 000000000..2c81d7ad8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A2_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A2_T1;
+* @section: 15.3.4.4;
+* @assertion: The length property of the call method is 1;
+* @description: Checking Function.prototype.call.length;
+*/
+
+//CHECK#1
+if (typeof Function.prototype.call !== "function") {
+ $ERROR('#1: call method defined');
+}
+
+//CHECK#2
+if (typeof Function.prototype.call.length === "undefined") {
+ $ERROR('#2: length property of call method defined');
+}
+
+//CHECK#3
+if (Function.prototype.call.length !== 1) {
+ $ERROR('#3: The length property of the call method is 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A2_T2.js
new file mode 100644
index 000000000..bcf374c4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A2_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A2_T2;
+* @section: 15.3.4.4;
+* @assertion: The length property of the call method is 1;
+* @description: Checking f.call.length, where f is new Function;
+*/
+
+var f=new Function;
+
+//CHECK#1
+if (typeof f.call !== "function") {
+ $ERROR('#1: call method accessed');
+}
+
+//CHECK#2
+if (typeof f.call.length === "undefined") {
+ $ERROR('#2: length property of call method defined');
+}
+
+//CHECK#3
+if (f.call.length !== 1) {
+ $ERROR('#3: The length property of the call method is 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T1.js
new file mode 100644
index 000000000..07f3f2410
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A3_T1;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Not any arguments at call function;
+*/
+
+Function("this.field=\"strawberry\"").call();
+
+//CHECK#1
+if (this["field"] !== "strawberry") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T10.js
new file mode 100644
index 000000000..a6edd7b43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T10.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.
+
+/**
+* @name: S15.3.4.4_A3_T10;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Checking by using eval, no any arguments at call function;
+*/
+
+eval(" (function(){this.feat=1}).call()");
+
+//CHECK#1
+if (this["feat"] !== 1) {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T2.js
new file mode 100644
index 000000000..f43fd0231
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A3_T2;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at call function is null;
+*/
+
+Function("this.field=\"green\"").call(null);
+
+//CHECK#1
+if (this["field"] !== "green") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T3.js
new file mode 100644
index 000000000..1b9d2354e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A3_T3;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at call function is void 0;
+*/
+
+Function("this.field=\"battle\"").call(void 0);
+
+//CHECK#1
+if (this["field"] !== "battle") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T4.js
new file mode 100644
index 000000000..61252cd96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A3_T4;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at call function is undefined;
+*/
+
+Function("this.field=\"oil\"").call(undefined);
+
+//CHECK#1
+if (this["field"] !== "oil") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T5.js
new file mode 100644
index 000000000..7f0e331d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A3_T5;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: No any arguments at call function and it called inside function declaration;
+*/
+
+function FACTORY(){
+ Function("this.feat=\"in da haus\"").call();
+};
+
+var obj = new FACTORY;
+
+//CHECK#1
+if (this["feat"] !== "in da haus") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
+
+//CHECK#2
+if (typeof obj.feat !== "undefined") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T6.js
new file mode 100644
index 000000000..4b110aabc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A3_T6;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at call function is null and it called inside function declaration;
+*/
+
+function FACTORY(){
+ (function(){this.feat="kamon beyba"}).call(null);
+};
+
+var obj = new FACTORY;
+
+//CHECK#1
+if (this["feat"] !== "kamon beyba") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
+
+//CHECK#2
+if (typeof obj.feat !== "undefined") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T7.js
new file mode 100644
index 000000000..839a47849
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A3_T7;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at call function is void 0 and it called inside function declaration;
+*/
+
+(function FACTORY(){
+ Function("this.feat=\"in da haus\"").call(void 0);
+})();
+
+
+//CHECK#1
+if (this["feat"] !== "in da haus") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T8.js
new file mode 100644
index 000000000..e4ed5976e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A3_T8;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Argument at call function is undefined and it called inside function declaration;
+*/
+
+(function FACTORY(){
+ (function(){this.feat="kamon beyba"}).call(undefined);
+})();
+
+
+//CHECK#1
+if (this["feat"] !== "kamon beyba") {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T9.js
new file mode 100644
index 000000000..e1c681667
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A3_T9.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A3_T9;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is null or undefined, the called function is passed the global object as the this value;
+* @description: Checking by using eval, argument at call function is void 0;
+*/
+
+eval( " Function(\"this.feat=1\").call(void 0) " );
+
+
+//CHECK#1
+if (this["feat"] !== 1) {
+ $ERROR('#1: If thisArg is null or undefined, the called function is passed the global object as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T1.js
new file mode 100644
index 000000000..8a5e26dec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A5_T1;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is number;
+*/
+
+var obj=1;
+
+var retobj = Function("this.touched= true; return this;").call(obj);
+
+//CHECK#1
+if (typeof obj.touched !== "undefined") {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+//CHECK#2
+if (!(retobj["touched"])) {
+ $ERROR('#2: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T2.js
new file mode 100644
index 000000000..7ff019f87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A5_T2;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is boolean true;
+*/
+
+var obj=true;
+
+var retobj = new Function("this.touched= true; return this;").call(obj);
+
+//CHECK#1
+if (typeof obj.touched !== "undefined") {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+//CHECK#2
+if (!(retobj["touched"])) {
+ $ERROR('#2: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T3.js
new file mode 100644
index 000000000..d21b33354
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A5_T3;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is string;
+*/
+
+var obj="soap";
+
+var retobj = ( function(){this.touched= true; return this;} ).call(obj);
+
+//CHECK#1
+if (typeof obj.touched !== "undefined") {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+//CHECK#2
+if (!(retobj["touched"])) {
+ $ERROR('#2: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T4.js
new file mode 100644
index 000000000..d260fcb78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A5_T4;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is function variable that return this;
+*/
+
+var f = function(){this.touched= true; return this;};
+
+var retobj = f.call(obj);
+
+//CHECK#1
+if (typeof obj !== "undefined") {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+//CHECK#2
+if (!(retobj["touched"])) {
+ $ERROR('#2: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
+var obj;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T5.js
new file mode 100644
index 000000000..673246522
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A5_T5;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is function variable;
+*/
+
+var f = function(){this.touched= true;};
+
+var obj={};
+
+f.call(obj);
+
+//CHECK#1
+if (!(obj.touched)) {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T6.js
new file mode 100644
index 000000000..d25db0afe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T6.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A5_T6;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is new String();
+*/
+
+var obj=new String("soap");
+
+( function(){this.touched= true;}).call(obj);
+
+//CHECK#1
+if (!(obj.touched)) {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T7.js
new file mode 100644
index 000000000..04c59a854
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A5_T7;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is new Number();
+*/
+
+var obj=new Number(1);
+
+Function("this.touched= true;").call(obj);
+
+//CHECK#1
+if (!(obj.touched)) {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T8.js
new file mode 100644
index 000000000..12507ed86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A5_T8.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A5_T8;
+* @section: 15.3.4.4;
+* @assertion: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value;
+* @description: thisArg is Function();
+*/
+
+var obj=Function();
+
+new Function("this.touched= true; return this;").call(obj);
+
+//CHECK#1
+if (!(obj.touched)) {
+ $ERROR('#1: If thisArg is not null(defined) the called function is passed ToObject(thisArg) as the this value');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T1.js
new file mode 100644
index 000000000..6f0827965
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T1;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (null,[1]);
+*/
+
+Function("a1,a2,a3","this.shifted=a1;").call(null,[1]);
+
+//CHECK#1
+if (this["shifted"].constructor !== Array) {
+ $ERROR('#1: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
+//CHECK#2
+if (this["shifted"].length !== 1) {
+ $ERROR('#2: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
+//CHECK#3
+if (this["shifted"][0] !== 1) {
+ $ERROR('#3: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T10.js
new file mode 100644
index 000000000..bbeb26ee7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T10.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T10;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (empty object, "", arguments,2), inside function call without declaration used;
+*/
+
+var obj={};
+
+(function (){
+ Function("a1,a2,a3","this.shifted=a1.length+a2+a3;").call(obj,arguments,"","2");
+})("",4,2,"a");
+
+//CHECK#1
+if (obj["shifted"] !== "42") {
+ $ERROR('#1: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
+//CHECK#2
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#2: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T2.js
new file mode 100644
index 000000000..caa27dab4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T2;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (null,[3,2,1]);
+*/
+
+new Function("a1,a2","a3","this.shifted=a1;").call(null,[3,2,1]);
+
+//CHECK#1
+if (this["shifted"].length !== 3) {
+ $ERROR('#1: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
+//CHECK#2
+if ((this["shifted"][0] !== 3)||(this["shifted"][1] !== 2)||(this["shifted"][2] !== 1)) {
+ $ERROR('#2: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T3.js
new file mode 100644
index 000000000..ed536b764
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T3;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (empty object, new Array("nine","inch","nails"));
+*/
+
+var i=0;
+
+var p={toString:function(){return "a"+(++i);}};
+
+var obj={};
+
+Function(p,"a2,a3","this.shifted=a1;").call(obj, new Array("nine","inch","nails"));
+
+//CHECK#1
+if (obj["shifted"].length !== 3) {
+ $ERROR('#1: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
+//CHECK#2
+if ((obj["shifted"][0] !== "nine")||(obj["shifted"][1] !== "inch")||(obj["shifted"][2] !== "nails")) {
+ $ERROR('#2: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
+//CHECK#3
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#3: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T4.js
new file mode 100644
index 000000000..0cc34c670
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T4;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (empty object, ( function(){return arguments;})("a","b","c","d"),"",2);
+*/
+
+var i=0;
+
+var p={toString:function(){return "a"+(++i);}};
+
+var obj={};
+
+new Function(p,p,p, "this.shifted=a3+a2+a1.length;").call( obj,( function(){return arguments;})("a","b","c","d"),"",2 );
+
+//CHECK#1
+if (obj["shifted"] !== "24") {
+ $ERROR('#1: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
+//CHECK#2
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#2: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T5.js
new file mode 100644
index 000000000..6f38a8f28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T5;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (null, arguments,"",2), inside function declaration used;
+*/
+
+function FACTORY(){
+ Function("a1,a2,a3","this.shifted=a1.length+a2+a3;").call(null,arguments,"",2);
+}
+
+var obj=new FACTORY("",1,2,"A");
+
+//CHECK#1
+if (this["shifted"] !== "42") {
+ $ERROR('#1: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
+//CHECK#2
+if (typeof obj.shifted !== "undefined") {
+ $ERROR('#2: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T6.js
new file mode 100644
index 000000000..9dbd6d30b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T6.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T6;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (this, arguments,"",2), inside function declaration used;
+*/
+
+function FACTORY(){
+ Function("a1,a2,a3","this.shifted=a1.length+a2+a3;").call(this,arguments,"",2);
+}
+
+var obj=new FACTORY("",4,2,"A");
+
+//CHECK#1
+if (obj["shifted"] !== "42") {
+ $ERROR('#1: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
+//CHECK#2
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#2: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T7.js
new file mode 100644
index 000000000..ce45c6b75
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T7;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (null, arguments,"",2), inside function call without declaration used;
+*/
+
+(function (){
+ Function("a1,a2,a3","this.shifted=a1.length+a2+a3;").call(null,arguments,"",2);
+})("",1,2,true);
+
+//CHECK#1
+if (this["shifted"] !== "42") {
+ $ERROR('#1: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T8.js
new file mode 100644
index 000000000..2f6a5a782
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T8;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (this, arguments,"",2), inside function call without declaration used;
+*/
+
+(function (){
+ Function("a1,a2,a3","this.shifted=a1.length+a2+a3;").call(this,arguments,"",2);
+})("",4,2,null);
+
+//CHECK#2
+if (this["shifted"] !== "42") {
+ $ERROR('#2: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs a function call using the [[Call]] property of the object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T9.js
new file mode 100644
index 000000000..dbd38c381
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A6_T9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A6_T9;
+* @section: 15.3.4.4;
+* @assertion: The call method takes one or more arguments, thisArg and (optionally) arg1, arg2 etc, and performs
+* a function call using the [[Call]] property of the object;
+* @description: Argunemts of call function is (empty object, "", arguments,2), inside function declaration used;
+*/
+
+function FACTORY(){
+ var obj = {};
+ Function("a1,a2,a3","this.shifted=a1+a2.length+a3;").call(obj,"",arguments,2);
+ return obj;
+}
+
+var obj=new FACTORY("",1,2,void 0);
+
+//CHECK#1
+if (typeof this["shifted"] !== "undefined") {
+ $ERROR('#1: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
+//CHECK#2
+if (obj.shifted !== "42") {
+ $ERROR('#2: If argArray is either an array or an arguments object, the function is passed the...');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T1.js
new file mode 100644
index 000000000..c611ad46f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A7_T1;
+* @section: 15.3.4.4;
+* @assertion: Function.prototype.call can't be used as [[create]] caller;
+* @description: Checking if creating "new Function.prototype.call" fails;
+*/
+
+try {
+ var obj = new Function.prototype.call;
+ $ERROR('#1: Function.prototype.call can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.call can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T2.js
new file mode 100644
index 000000000..97bc288c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A7_T2;
+* @section: 15.3.4.4;
+* @assertion: Function.prototype.call can't be used as [[create]] caller;
+* @description: Checking if creating "new Function.prototype.call()" fails;
+*/
+
+try {
+ var FACTORY = Function.prototype.call;
+ var obj = new FACTORY();
+ $ERROR('#1: Function.prototype.call can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.call can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T3.js
new file mode 100644
index 000000000..cd79b9cef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A7_T3;
+* @section: 15.3.4.4;
+* @assertion: Function.prototype.call can't be used as [[create]] caller;
+* @description: Checking if creating "new Function.call" fails;
+*/
+
+try {
+ var obj = new Function.call;
+ $ERROR('#1: Function.prototype.call can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.call can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T4.js
new file mode 100644
index 000000000..7de3ac7de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A7_T4;
+* @section: 15.3.4.4;
+* @assertion: Function.prototype.call can't be used as [[create]] caller;
+* @description: Checking if creating "new (Function("this.p1=1").call)" fails;
+*/
+
+try {
+ var obj = new (Function("this.p1=1").call);
+ $ERROR('#1: Function.prototype.call can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.call can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T5.js
new file mode 100644
index 000000000..d55c9b9f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A7_T5;
+* @section: 15.3.4.4;
+* @assertion: Function.prototype.call can't be used as [[create]] caller;
+* @description: Checking if creating "new Function("this.p1=1").call" fails;
+*/
+
+try {
+ var FACTORY = Function("this.p1=1").call;
+ var obj = new FACTORY();
+ $ERROR('#1: Function.prototype.call can\'t be used as [[create]] caller');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Function.prototype.call can\'t be used as [[create]] caller');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T6.js
new file mode 100644
index 000000000..741d4e380
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A7_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A7_T6;
+* @section: 15.3.4.4;
+* @assertion: Function.prototype.call can't be used as [[create]] caller;
+* @description: Checking if creating "new (Function("function f(){this.p1=1;};return f").call())" fails;
+*/
+
+//CHECK#1
+try {
+ var obj = new (Function("function f(){this.p1=1;};return f").call());
+} catch (e) {
+ $ERROR('#1: Function.prototype.call can\'t be used as [[create]] caller');
+}
+
+//CHECK#2
+if (obj.p1!== 1) {
+ $ERROR('#2: Function.prototype.call can\'t be used as [[create]] caller');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A9.js
new file mode 100644
index 000000000..361788ae6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.4_Function.prototype.call/S15.3.4.4_A9.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.4_A9;
+* @section: 15.3.4.4;
+* @assertion: The Function.prototype.call.length property has the attribute DontDelete;
+* @description: Checking if deleting the Function.prototype.call.length property fails;
+*/
+
+//CHECK#0
+if (!(Function.prototype.call.hasOwnProperty('length'))) {
+ $FAIL('#0: the Function.prototype.call has length property');
+}
+
+//CHECK#1
+if (delete Function.prototype.call.length) {
+ $ERROR('#1: The Function.prototype.call.length property has the attributes DontDelete');
+}
+
+//CHECK#2
+if (!(Function.prototype.call.hasOwnProperty('length'))) {
+ $FAIL('#2: The Function.prototype.call.length property has the attributes DontDelete');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A1.js
new file mode 100644
index 000000000..c58334ba2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A1.js
@@ -0,0 +1,15 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.5_A1;
+* @section: 15.3.4.5;
+* @assertion: "caller" of bound function is poisoned (step 20);
+* @description A bound function should fail to find its "caller";
+* @negative TypeError;
+*/
+
+function foo() { return bar.caller; }
+var bar = foo.bind({});
+function baz() { return bar(); }
+baz();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A13.js
new file mode 100644
index 000000000..9b677d8cd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A13.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.5_A13;
+* @section: 15.3.4.5;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @negative TypeError;
+*/
+
+Function.prototype.bind.call(undefined, {});
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A14.js
new file mode 100644
index 000000000..f3b209f24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A14.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.5_A14;
+* @section: 15.3.4.5;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @negative TypeError;
+*/
+
+Function.prototype.bind.call(null, {});
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A15.js
new file mode 100644
index 000000000..281983a64
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A15.js
@@ -0,0 +1,12 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.5_A15;
+* @section: 15.3.4.5;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @negative TypeError;
+*/
+
+Function.prototype.bind.call({}, {});
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A16.js
new file mode 100644
index 000000000..c0d57b81a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A16.js
@@ -0,0 +1,27 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.5_A16;
+* @section: 15.3.4.5;
+* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
+* @description: A RegExp is not a function, but it may be
+* callable. Iff it is, it's typeof should be 'function',
+* in which case bind should accept it as a valid this
+* value.
+*/
+
+var re = (/x/);
+if (typeof re === 'function') {
+ Function.prototype.bind.call(re, undefined);
+} else {
+ try {
+ Function.prototype.bind.call(re, undefined);
+ $FAIL('#1: If IsCallable(func) is false, ' +
+ 'then (bind should) throw a TypeError exception');
+ } catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1: TypeError expected. Actual: ' + e);
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A2.js
new file mode 100644
index 000000000..08e3489a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/15.3.4.5_Function.prototype.bind/S15.3.4.5_A2.js
@@ -0,0 +1,16 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.5_A1;
+* @section: 15.3.4.5;
+* @assertion: "arguments" of bound function is poisoned (step 21);
+* @description a bound function should fail to find the bound function
+* "arguments";
+* @negative TypeError;
+*/
+
+function foo() { return bar.arguments; }
+var bar = foo.bind({});
+function baz() { return bar(); }
+baz();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4.1_A1_T1.js
new file mode 100644
index 000000000..48a39100e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4.1_A1_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.1_A1_T1;
+* @section: 15.3.4.1;
+* @assertion: The initial value of Function.prototype.constructor is the built-in Function constructor;
+* @description: Checking Function.prototype.constructor;
+*/
+
+//CHECK#1
+if (Function.prototype.constructor !== Function) {
+ $ERROR('#1: The initial value of Function.prototype.constructor is the built-in Function constructor');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4.1_A1_T2.js
new file mode 100644
index 000000000..673c323ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4.1_A1_T2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4.1_A1_T2;
+* @section: 15.3.4.1;
+* @assertion: The initial value of Function.prototype.constructor is the built-in Function constructor;
+* @description: Create new Function.prototype.constructor object;
+*/
+
+var constr = Function.prototype.constructor;
+
+var f = new constr;
+
+// CHECK#0
+if (f === undefined) {
+ $ERROR('#0: new Function() return the newly created function object.');
+}
+
+// CHECK#1
+if (f.constructor !== Function) {
+ $ERROR('#1: new Function() create a new function object');
+}
+
+// CHECK#2
+if (!(Function.prototype.isPrototypeOf(f))) {
+ $ERROR('#2: when new Function() calls the [[Prototype]] property of the newly constructed object is set to the Function prototype object.');
+}
+
+// CHECK#3
+var to_string_result = '[object '+ 'Function' +']';
+
+delete Function.prototype.toString;
+
+if (f.toString() !== to_string_result) {
+ $ERROR('#3: when new Function() calls the [[Class]] property of the newly constructed object is set to "Function"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A1.js
new file mode 100644
index 000000000..4f4639648
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4_A1;
+* @section: 15.3.4;
+* @assertion: The Function prototype object is itself a Function
+* object (its [[Class]] is "Function");
+* @description: Object.prototype.toString returns [object+[[Class]]+];
+*/
+
+if (Object.prototype.toString.call(Function.prototype) !== "[object Function]") {
+ $ERROR('#2: The Function prototype object is itself a Function ' +
+ 'object (its [[Class]] is "Function") (15.3.4)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T1.js
new file mode 100644
index 000000000..f86f88460
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4_A2_T1;
+* @section: 15.3.4;
+* @assertion: The Function prototype object is itself a Function object that, when invoked, accepts any arguments and returns undefined;
+* @description: Call Function.prototype();
+*/
+
+//CHECK#1
+try {
+ if (Function.prototype() !== undefined) {
+ $ERROR('#1: The Function prototype object is itself a Function object that, when invoked, accepts any arguments and returns undefined');
+ }
+} catch (e) {
+ $ERROR('#1.1: The Function prototype object is itself a Function object that, when invoked, accepts any arguments and returns undefined: '+e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T2.js
new file mode 100644
index 000000000..5229e5e7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4_A2_T2;
+* @section: 15.3.4;
+* @assertion: The Function prototype object is itself a Function object that, when invoked, accepts any arguments and returns undefined;
+* @description: Call Function.prototype(null,void 0);
+*/
+
+//CHECK#1
+try {
+ if (Function.prototype(null,void 0) !== undefined) {
+ $ERROR('#1: The Function prototype object is itself a Function object that, when invoked, accepts any arguments and returns undefined');
+ }
+} catch (e) {
+ $ERROR('#1.1: The Function prototype object is itself a Function object that, when invoked, accepts any arguments and returns undefined: '+e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T3.js
new file mode 100644
index 000000000..255d2dc23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A2_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4_A2_T3;
+* @section: 15.3.4;
+* @assertion: The Function prototype object is itself a Function object that, when invoked, accepts any arguments and returns undefined;
+* @description: Call Function.prototype(x), where x is undefined variable;
+*/
+
+//CHECK#1
+try {
+ if (Function.prototype(x) !== undefined) {
+ var x;
+ $ERROR('#1: The Function prototype object is itself a Function object that, when invoked, accepts any arguments and returns undefined');
+ }
+} catch (e) {
+ $ERROR('#1.1: The Function prototype object is itself a Function object that, when invoked, accepts any arguments and returns undefined: '+e);
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A3_T1.js
new file mode 100644
index 000000000..423bf92f1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A3_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4_A3_T1;
+* @section: 15.3.4;
+* @assertion: The value of the internal [[Prototype]] property of the
+* Function prototype object is the Object prototype object
+* (15.3.4);
+* @description: Checking prototype of Function.prototype;
+*/
+
+if (Object.getPrototypeOf(Function.prototype) !== Object.prototype) {
+ $ERROR('#1: The value of the internal [[Prototype]] property of ' +
+ 'the Function prototype object is the Object prototype ' +
+ 'object (15.3.4)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A3_T2.js
new file mode 100644
index 000000000..25f8380b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A3_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4_A3_T2;
+* @section: 15.3.4, 15.3.2.1;
+* @assertion: The value of the internal [[Prototype]] property of the Function prototype object is the Object prototype object (15.3.2.1);
+* @description: Add new property to Object.prototype and check it at Function.prototype;
+*/
+
+Object.prototype.indicator = 1;
+
+//CHECK#1
+if (Function.prototype.indicator!==1) {
+ $ERROR('#1: The value of the internal [[Prototype]] property of the Function prototype object is the Object prototype object (15.3.2.1)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A4.js
new file mode 100644
index 000000000..06bd162fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_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.
+
+/**
+* @name: S15.3.4_A4;
+* @section: 15.3.4;
+* @assertion: The Function prototype object does not have a valueOf property of its own. however, it inherits the valueOf property from the Object prototype Object;
+* @description: Checking valueOf property at Function.prototype;
+*/
+
+//CHECK#1
+if (Function.prototype.hasOwnProperty("valueOf") !== false) {
+ $ERROR('#1: The Function prototype object does not have a valueOf property of its own');
+}
+
+//CHECK#2
+if (typeof Function.prototype.valueOf === "undefined") {
+ $ERROR('#2: however, it inherits the valueOf property from the Object prototype Object');
+}
+
+//CHECK#3
+if (Function.prototype.valueOf !== Object.prototype.valueOf) {
+ $ERROR('#3: however, it inherits the valueOf property from the Object prototype Object');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A5.js
new file mode 100644
index 000000000..ce73a635e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.4_Properties_of_the_Function_Prototype_Object/S15.3.4_A5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.4_A5;
+* @section: 15.3.4;
+* @assertion: The Function prototype object is itself a Function object without [[create]] property;
+* @description: Checking if creating "new Function.prototype object" fails;
+*/
+
+//CHECK#
+try {
+ var obj = new Function.prototype;
+ $FAIL('#1: The Function prototype object is itself a Function object without [[create]] property: '+e);
+} catch (e) {
+ $PRINT("#1.1: The Function prototype object is itself a Function object without [[create]] property "+e);
+
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T1.js
new file mode 100644
index 000000000..9f23a6efc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A1_T1;
+* @section: 15.3.5.1;
+* @assertion: The value of the length property is usually an integer
+* that indicates the 'typical' number of arguments
+* expected by the function;
+* @description: Checking length property of Function("arg1,arg2,arg3", null);
+*/
+
+f = new Function("arg1,arg2,arg3", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+//CHECK#2
+if (f.length !== 3) {
+ $ERROR('#2: The value of the length property is usually an integer that indicates the "typical" number of arguments expected by the function');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T2.js
new file mode 100644
index 000000000..96fa90f62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A1_T2;
+* @section: 15.3.5.1;
+* @assertion: The value of the length property is usually an integer that indicates the 'typical' number of arguments expected by the function;
+* @description: Checking length property of Function("arg1,arg2,arg3","arg4,arg5", null);
+*/
+
+f = Function("arg1,arg2,arg3","arg4,arg5", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+//CHECK#2
+if (f.length !== 5) {
+ $ERROR('#2: The value of the length property is usually an integer that indicates the "typical" number of arguments expected by the function');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T3.js
new file mode 100644
index 000000000..aa74b24d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A1_T3;
+* @section: 15.3.5.1;
+* @assertion: The value of the length property is usually an integer that indicates the 'typical' number of arguments expected by the function;
+* @description: Checking length property of Function("arg1,arg2,arg3","arg1,arg2","arg3", null);
+*/
+
+f = new Function("arg1,arg2,arg3","arg1,arg2","arg3", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+//CHECK#2
+if (f.length !== 6) {
+ $ERROR('#2: The value of the length property is usually an integer that indicates the "typical" number of arguments expected by the function');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T1.js
new file mode 100644
index 000000000..26985283a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A2_T1;
+* @section: 15.3.5.1;
+* @assertion: the length property has the attributes { DontDelete };
+* @description: Checking if deleting the length property of Function("arg1,arg2,arg3", null) fails;
+*/
+
+f = new Function("arg1,arg2,arg3", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+//CHECK#2
+if(delete f.length){
+ $ERROR('#2: the function.length property has the attributes DontDelete.');
+}
+
+//CHECK#3
+if (!(f.hasOwnProperty('length'))) {
+ $ERROR('#3: the function.length property has the attributes DontDelete.');
+}
+
+//CHECK#4
+if (f.length !== 3) {
+ $ERROR('#4: the length property has the attributes { DontDelete }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T2.js
new file mode 100644
index 000000000..2520357bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_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.
+
+/**
+* @name: S15.3.5.1_A2_T2;
+* @section: 15.3.5.1;
+* @assertion: the length property has the attributes { DontDelete };
+* @description: Checking if deleting the length property of Function("arg1,arg2,arg3","arg4,arg5", null) fails;
+*/
+
+f = Function("arg1,arg2,arg3","arg4,arg5", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+delete f.length;
+
+//CHECK#2
+if (!(f.hasOwnProperty('length'))) {
+ $ERROR('#2: the function.length property has the attributes DontDelete.');
+}
+
+//CHECK#3
+if (f.length !== 5) {
+ $ERROR('#3: the length property has the attributes { DontDelete }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T3.js
new file mode 100644
index 000000000..e5f878318
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A2_T3.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A2_T3;
+* @section: 15.3.5.1;
+* @assertion: the length property has the attributes { DontDelete };
+* @description: Checking if deleting the length property of Function("arg1,arg2,arg3","arg1,arg2","arg3", null) fails;
+*/
+
+f = new Function("arg1,arg2,arg3","arg1,arg2","arg3", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+delete f.length;
+
+//CHECK#2
+if (!(f.hasOwnProperty('length'))) {
+ $ERROR('#2: the function.length property has the attributes DontDelete.');
+}
+
+//CHECK#3
+if (f.length !== 6) {
+ $ERROR('#3: the length property has the attributes { DontDelete }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T1.js
new file mode 100644
index 000000000..0763b71f1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A3_T1;
+* @section: 15.3.5.1;
+* @assertion: the length property has the attributes { ReadOnly };
+* @description: Checking if varying the length property of Function("arg1,arg2,arg3","arg4,arg5", null) fails;
+*/
+
+f = new Function("arg1,arg2,arg3","arg4,arg5", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+length = f.length;
+
+f.length = function(){};
+
+//CHECK#2
+if (f.length !== length) {
+ $ERROR('#2: the function.length property has the attributes ReadOnly');
+}
+
+//CHECK#3
+try {
+ f.length();
+ $ERROR('#3: the function.length property has the attributes ReadOnly');
+} catch (e) {
+ ;
+}
+
+//CHECK#4
+if (f.length !== 5) {
+ $ERROR('#4: the length property has the attributes { ReadOnly }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T2.js
new file mode 100644
index 000000000..76c90d8ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_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.
+
+/**
+* @name: S15.3.5.1_A3_T2;
+* @section: 15.3.5.1;
+* @assertion: the length property has the attributes { ReadOnly };
+* @description: Checking if varying the length property of Function("arg1,arg2,arg3", null) fails;
+*/
+
+f = Function("arg1,arg2,arg3", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+length = f.length;
+
+f.length = function(){};
+
+//CHECK#2
+if (f.length !== length) {
+ $ERROR('#2: the function.length property has the attributes ReadOnly');
+}
+
+//CHECK#3
+try {
+ f.length();
+ $ERROR('#3: the function.length property has the attributes ReadOnly');
+} catch (e) {
+ ;
+}
+
+//CHECK#4
+if (f.length !== 3) {
+ $ERROR('#4: the length property has the attributes { ReadOnly }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T3.js
new file mode 100644
index 000000000..94ca3cf2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A3_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A3_T3;
+* @section: 15.3.5.1;
+* @assertion: the length property has the attributes { ReadOnly };
+* @description: Checking if varying the length property of Function("arg1,arg2,arg3","arg1,arg2","arg3", null) fails;
+*/
+
+f = new Function("arg1,arg2,arg3","arg1,arg2","arg3", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+length = f.length;
+
+f.length = function(){};
+
+//CHECK#2
+if (f.length !== length) {
+ $ERROR('#2: the function.length property has the attributes ReadOnly');
+}
+
+//CHECK#3
+try {
+ f.length();
+ $ERROR('#3: the function.length property has the attributes ReadOnly');
+} catch (e) {
+ ;
+}
+
+//CHECK#4
+if (f.length !== 6) {
+ $ERROR('#4: the length property has the attributes { ReadOnly }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T1.js
new file mode 100644
index 000000000..6dab79af5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A4_T1;
+* @section: 15.3.5.1;
+* @assertion: the length property has the attributes { DontEnum };
+* @description: Checking if enumerating the length property of Function("arg1,arg2,arg3", null) fails;
+*/
+
+f = new Function("arg1,arg2,arg3", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+for(key in f)
+ if(key=="length")
+ var lengthenumed=true;
+
+//CHECK#2
+if (lengthenumed) {
+ $ERROR('#2: the length property has the attributes { DontEnum }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T2.js
new file mode 100644
index 000000000..5fbc8190c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A4_T2;
+* @section: 15.3.5.1;
+* @assertion: the length property has the attributes { DontEnum };
+* @description: Checking if enumerating the length property of Function("arg1,arg2,arg3","arg4,arg5", null) fails;
+*/
+
+f = Function("arg1,arg2,arg3","arg5,arg4", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+for(key in f)
+ if(key=="length")
+ var lengthenumed=true;
+
+//CHECK#2
+if (lengthenumed) {
+ $ERROR('#2: the length property has the attributes { DontEnum }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T3.js
new file mode 100644
index 000000000..fe658c658
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.1_A4_T3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.1_A4_T3;
+* @section: 15.3.5.1;
+* @assertion: the length property has the attributes { DontEnum };
+* @description: Checking if enumerating the length property of Function("arg1,arg2,arg3","arg1,arg2","arg3", null) fails;
+*/
+
+f = new Function("arg1,arg2,arg3","arg1,arg2","arg3", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('length'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+for(key in f)
+ if(key=="length")
+ var lengthenumed=true;
+
+//CHECK#2
+if (lengthenumed) {
+ $ERROR('#2: the length property has the attributes { DontEnum }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.2_A1_T1.js
new file mode 100644
index 000000000..4892494a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.2_A1_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.2_A1_T1;
+* @section: 15.3.5.2;
+* @assertion: the prototype property has the attributes { DontDelete };
+* @description: Checking if deleting the prototype property of Function("", null) fails;
+*/
+
+f = new Function("", null);
+
+//CHECK#1
+if (!(f.hasOwnProperty('prototype'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+fproto = f.prototype;
+
+//CHECK#2
+if (delete f.prototype) {
+ $ERROR('#2: the prototype property has the attributes { DontDelete }');
+}
+
+//CHECK#3
+if (f.prototype !== fproto) {
+ $ERROR('#3: the prototype property has the attributes { DontDelete }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.2_A1_T2.js
new file mode 100644
index 000000000..a682d3c5b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.2_A1_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.2_A1_T2;
+* @section: 15.3.5.2;
+* @assertion: the prototype property has the attributes { DontDelete };
+* @description: Checking if deleting the prototype property of Function(void 0, "") fails;
+*/
+
+f = Function(void 0, "");
+
+//CHECK#1
+if (!(f.hasOwnProperty('prototype'))) {
+ $FAIL('#1: the function has length property.');
+}
+
+fproto = f.prototype;
+
+//CHECK#2
+if (delete f.prototype) {
+ $ERROR('#2: the prototype property has the attributes { DontDelete }');
+}
+
+//CHECK#3
+if (f.prototype !== fproto) {
+ $ERROR('#3: the prototype property has the attributes { DontDelete }');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T1.js
new file mode 100644
index 000000000..e091fed70
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A1_T1;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false;
+* @description: V is number;
+*/
+
+FACTORY = Function("name","this.name=name;");
+
+//CHECK#1
+if ((1 instanceof FACTORY)!==false) {
+ $ERROR('#1: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T2.js
new file mode 100644
index 000000000..0975e8ade
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A1_T2;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false;
+* @description: V is string;
+*/
+
+FACTORY = Function("name","this.name=name;");
+
+//CHECK#1
+if (("1" instanceof FACTORY)!==false) {
+ $ERROR('#1: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T3.js
new file mode 100644
index 000000000..9c98b88cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A1_T3;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false;
+* @description: V is boolean true;
+*/
+
+FACTORY = Function("name","this.name=name;");
+
+//CHECK#1
+if ((true instanceof FACTORY)!==false) {
+ $ERROR('#1: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T4.js
new file mode 100644
index 000000000..5b74752f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A1_T4;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false;
+* @description: V is boolean false;
+*/
+
+FACTORY = Function("name","this.name=name;");
+
+//CHECK#1
+if ((false instanceof FACTORY)!==false) {
+ $ERROR('#1: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T5.js
new file mode 100644
index 000000000..110439ddd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T5.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A1_T5;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false;
+* @description: V is void 0;
+*/
+
+FACTORY = Function("name","this.name=name;");
+
+//CHECK#1
+if ((void 0 instanceof FACTORY)!==false) {
+ $ERROR('#1: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T6.js
new file mode 100644
index 000000000..e2a3c5ce0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T6.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A1_T6;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false;
+* @description: V is null;
+*/
+
+FACTORY = Function("name","this.name=name;");
+
+//CHECK#1
+if ((null instanceof FACTORY)!==false) {
+ $ERROR('#1: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T7.js
new file mode 100644
index 000000000..14319f1da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T7.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A1_T7;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false;
+* @description: V is undefined;
+*/
+
+FACTORY = Function("name","this.name=name;");
+
+//CHECK#1
+if ((undefined instanceof FACTORY)!==false) {
+ $ERROR('#1: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T8.js
new file mode 100644
index 000000000..067459c86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A1_T8.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A1_T8;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false;
+* @description: V is undefined variable;
+*/
+
+FACTORY = Function("name","this.name=name;");
+
+//CHECK#1
+if ((x instanceof FACTORY)!==false) {
+ $ERROR('#1: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V, the following steps are taken: i) If V is not an object, return false');
+}
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T2.js
new file mode 100644
index 000000000..1e555f5d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A2_T2;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V and V is an object, the following steps are taken:
+* i) Call the [[Get]] method of F with property name "prototype".
+* ii) Let O be Result(i).
+* iii) O is not an object, throw a TypeError exception;
+* @description: F.prototype is undefined, and V is empty object;
+*/
+
+FACTORY = new Function;
+
+FACTORY.prototype = undefined;
+
+obj={};
+
+//CHECK#1
+try {
+ obj instanceof FACTORY;
+ $FAIL('#1: O is not an object, throw a TypeError exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: O is not an object, throw a TypeError exception');
+ }
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T5.js
new file mode 100644
index 000000000..373c81efd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T5.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.3.5.3_A2_T5;
+ * @section: 15.3.5.3, 11.8.6;
+ * @assertion: Assume F is a Function object. When the [[HasInstance]] method of
+ * F is called with value V and V is an object, the following steps
+ * are taken: i) Call the [[Get]] method of F with property name
+ * "prototype". ii) Let O be Result(i). iii) O is not an object,
+ * throw a TypeError exception;
+ * @description: F.prototype is void 0, and V is new F;
+ */
+
+FACTORY = Function("this.prop=1;");
+
+FACTORY.prototype.name = "fairy";
+
+instance = new FACTORY;
+
+FACTORY.prototype = void 0;
+
+// CHECK#1
+try {
+ instance instanceof FACTORY;
+ $FAIL('#1: O is not an object, throw a TypeError exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: O is not an object, throw a TypeError exception');
+ }
+}
+
+// CHECK#2
+if ((instance.constructor !== FACTORY) || (instance.name !== "fairy")) {
+ $ERROR('#2: instance.constructor === FACTORY');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T6.js
new file mode 100644
index 000000000..eacf10907
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A2_T6.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.3.5.3_A2_T6;
+ * @section: 15.3.5.3, 11.8.6;
+ * @assertion: Assume F is a Function object. When the [[HasInstance]] method of
+ * F is called with value V and V is an object, the following steps
+ * are taken: i) Call the [[Get]] method of F with property name
+ * "prototype". ii) Let O be Result(i). iii) O is not an object,
+ * throw a TypeError exception;
+ * @description: F.prototype is string, and V is function;
+ */
+
+FACTORY = new Function;
+
+FACTORY.prototype = "error";
+
+// CHECK#1
+try {
+ ( function() {
+ }) instanceof FACTORY;
+ $FAIL('#1: O is not an object, throw a TypeError exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: O is not an object, throw a TypeError exception');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A3_T1.js
new file mode 100644
index 000000000..0be22da8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A3_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A3_T1;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V and V is an object, the following steps are taken:
+* i) Call the [[Get]] method of F with property name "prototype".
+* ii) Let O be Result(i) and O is an object.
+* iii) Let V be the value of the [[Prototype]] property of V.
+* iv) If V is null, return false.
+* v) If O and V refer to the same object or if they refer to objects joined to each other (13.1.2), return true.
+* vi) Go to step iii);
+* @description: F.prototype.type is 1, and V is new F;
+*/
+
+FACTORY = Function("this.name=\"root\"");
+
+FACTORY.prototype.type=1;
+
+instance = new FACTORY;
+
+//CHECK#1
+if (!(instance instanceof FACTORY)) {
+ $ERROR('#1: If O and V refer to the same object or if they refer to objects joined to each other (13.1.2), return true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A3_T2.js
new file mode 100644
index 000000000..865a1dd7d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5.3_A3_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5.3_A3_T2;
+* @section: 15.3.5.3, 11.8.6;
+* @assertion: Assume F is a Function object. When the [[HasInstance]] method of F is called with value V and V is an object, the following steps are taken:
+* i) Call the [[Get]] method of F with property name "prototype".
+* ii) Let O be Result(i) and O is an object.
+* iii) Let V be the value of the [[Prototype]] property of V.
+* iv) If V is null, return false.
+* v) If O and V refer to the same object or if they refer to objects joined to each other (13.1.2), return true.
+* vi) Go to step iii);
+* @description: F.prototype is Object.prototype, and V is empty object;
+*/
+
+FAKEFACTORY = Function();
+
+fakeinstance = {};
+
+//CHECK#1
+if (fakeinstance instanceof FAKEFACTORY) {
+ $ERROR('#1: If O and V refer to the same object or if they refer to objects joined to each other (13.1.2), return true');
+}
+
+FAKEFACTORY.prototype=Object.prototype;
+
+//CHECK#2
+if (!(fakeinstance instanceof FAKEFACTORY)) {
+ $ERROR('#2: If O and V refer to the same object or if they refer to objects joined to each other (13.1.2), return true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A1_T1.js
new file mode 100644
index 000000000..51444367a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A1_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5_A1_T1;
+* @section: 15.3.5;
+* @assertion: The value of the [[Class]] property is "Function";
+* @description: For testing use variable f = new Function;
+*/
+
+var f = new Function;
+
+if (Object.prototype.toString.call(f) !== "[object Function]") {
+ $ERROR('#1: The value of the [[Class]] property is "Function"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A1_T2.js
new file mode 100644
index 000000000..893dbc3ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5_A1_T2;
+* @section: 15.3.5;
+* @assertion: The value of the [[Class]] property is "Function" ;
+* @description: For testing use variable f = Function();
+*/
+
+var f = Function();
+
+if (Object.prototype.toString.call(f) !== "[object Function]") {
+ $ERROR('#1: The value of the [[Class]] property is "Function"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A2_T1.js
new file mode 100644
index 000000000..d012d07c7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A2_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5_A2_T1;
+* @section: 15.3.5;
+* @assertion: Every function instance has a [[Call]] property ;
+* @description: For testing call Function("var x =1; this.y=2;return \"OK\";")();
+*/
+
+//CHECK#1
+if (Function("var x =1; this.y=2;return \"OK\";")() !== "OK") {
+ $ERROR('#1: Every function instance has a [[Call]] property');
+}
+
+//CHECK#2
+if (typeof x !== "undefined") {
+ $ERROR('#2: Every function instance has a [[Call]] property');
+}
+
+//CHECK#3
+if (y !== 2) {
+ $ERROR('#3: Every function instance has a [[Call]] property');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A2_T2.js
new file mode 100644
index 000000000..c4cbe77d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A2_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5_A2_T2;
+* @section: 15.3.5;
+* @assertion: Every function instance has a [[Call]] property ;
+* @description: For testing call (new Function("arg1,arg2","var x =arg1; this.y=arg2;return arg1+arg2;"))("1",2);
+*/
+
+//CHECK#1
+if ((new Function("arg1,arg2","var x =arg1; this.y=arg2;return arg1+arg2;"))("1",2) !== "12") {
+ $ERROR('#1: Every function instance has a [[Call]] property');
+}
+
+//CHECK#2
+if (typeof x !== "undefined") {
+ $ERROR('#2: Every function instance has a [[Call]] property');
+}
+
+//CHECK#3
+if (y !== 2) {
+ $ERROR('#3: Every function instance has a [[Call]] property');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A3_T1.js
new file mode 100644
index 000000000..e8e49477f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A3_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5_A3_T1;
+* @section: 15.3.5;
+* @assertion: every function instance has a [[Construct]] property ;
+* @description: As constructor use Function("var x =1; this.y=2;return \"OK\";");
+*/
+
+FACTORY = Function("var x =1; this.y=2;return \"OK\";");
+obj = new FACTORY;
+
+//CHECK#1
+if (typeof obj !== "object") {
+ $ERROR('#1: every function instance has a [[Construct]] property');
+}
+
+//CHECK#2
+if (obj.constructor !== FACTORY) {
+ $ERROR('#2: every function instance has a [[Construct]] property');
+}
+
+//CHECK#3
+if (obj.y !== 2) {
+ $ERROR('#3: every function instance has a [[Construct]] property');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A3_T2.js
new file mode 100644
index 000000000..a8fba239e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/15.3.5_Properties_of_Function_Instances/S15.3.5_A3_T2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.5_A3_T2;
+* @section: 15.3.5;
+* @assertion: every function instance has a [[Construct]] property ;
+* @description: As constructor use new Function("arg1,arg2","var x =1; this.y=arg1+arg2;return \"OK\";");
+*/
+
+FACTORY = new Function("arg1,arg2","var x =1; this.y=arg1+arg2;return \"OK\";");
+obj = new FACTORY("1",2);
+
+//CHECK#1
+if (typeof obj !== "object") {
+ $ERROR('#1: every function instance has a [[Construct]] property');
+}
+
+//CHECK#2
+if (obj.constructor !== FACTORY) {
+ $ERROR('#2: every function instance has a [[Construct]] property');
+}
+
+//CHECK#3
+if (obj.y !== "12") {
+ $ERROR('#3: every function instance has a [[Construct]] property');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3.1_A1_T1.js
new file mode 100644
index 000000000..d9d3e9269
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3.1_A1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3.1_A1_T1;
+* @section: 15.3.1;
+* @assertion: The function call Function(…) is equivalent to the object creation expression
+* new Function(…) with the same arguments.
+* @description: Create simple functions and check returned values;
+*/
+
+var f = Function("return arguments[0];");
+
+//CHECK#1
+if (!(f instanceof Function)){
+ $ERROR('#1: f instanceof Function');
+}
+
+//CHECK#2
+if (f(1) !== 1) {
+ $ERROR('#2: f(1) !== 1');
+}
+
+var g = new Function("return arguments[0];");
+
+
+//CHECK#3
+if (!(g instanceof Function)) {
+ $ERROR('#3: g instanceof Function');
+}
+
+//CHECK#4
+if (g("A") !== "A") {
+ $ERROR('#4: g("A") !== "A"');
+}
+
+//CHECK#5
+if (g("A") !== f("A")) {
+ $ERROR('#5: g("A") !== f("A")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A1.js
new file mode 100644
index 000000000..49a9ad72b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_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.
+
+/**
+ * @name: S15.3_A1;
+ * @section: 15.3;
+ * @assertion: Function is the property of global;
+ * @description: Compare Function with this.Function;
+ */
+
+var obj = Function;
+
+var thisobj = this.Function;
+
+if (obj !== thisobj) {
+ $ERROR('Function is the property of global');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A2_T1.js
new file mode 100644
index 000000000..d69c14cac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3_A2_T1;
+* @section: 15.3, 10.2.3, 15.3.2.1;
+* @assertion: Since applying the "call" method to Function constructor themself leads to creating a new function instance, the second argument must be a valid function body;
+* @description: Checking if executing "Function.call(this, "var x / = 1;")" fails;
+*/
+
+//CHECK#
+try{
+ Function.call(this, "var x / = 1;");
+} catch(e){
+ if (!(e instanceof SyntaxError)) {
+ $ERROR('#1: function body must be valid');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A2_T2.js
new file mode 100644
index 000000000..4d3933dce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A2_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3_A2_T2;
+* @section: 15.3, 10.2.3, 15.3.2.1;
+* @assertion: Since applying the "call" method to Function constructor themself leads to creating a new function instance, the second argument must be a valid function body;
+* @description: Checking if executing "Function.call(this, "var #x = 1;")" fails;
+*/
+
+//CHECK#
+try{
+ Function.call(this, "var #x = 1;");
+} catch(e){
+ if (!(e instanceof SyntaxError)) {
+ $ERROR('#1: function body must be valid');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T1.js
new file mode 100644
index 000000000..814d09620
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_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.
+
+/**
+* @name: S15.3_A3_T1;
+* @section: 15.3;
+* @assertion: Since when call is used for Function constructor themself new function instance creates
+* and then first argument(thisArg) should be ignored;
+* @description: First argument is object;
+*/
+
+//CHECK#1
+try{
+ var f = Function.call(mars, "return name;");
+ $ERROR('#1: When applied to the Function object itself, thisArg should be ignored');
+} catch(e){
+ if (!(e instanceof ReferenceError)) {
+ $ERROR('#1.1: When applied to the Function object itself, thisArg should be ignored');
+ }
+}
+
+var mars={name:"mars", color:"red", number:4};
+
+var f = Function.call(mars, "this.godname=\"ares\"; return this.color;");
+
+var about_mars = f();
+
+//CHECK#2
+if (about_mars !== undefined) {
+ $ERROR('#2: When applied to the Function object itself, thisArg should be ignored');
+}
+
+//CHECK#3
+if (this.godname !== "ares") {
+ $ERROR('#3: When applied to the Function object itself, thisArg should be ignored');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T2.js
new file mode 100644
index 000000000..cd05c0025
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_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.
+
+/**
+* @name: S15.3_A3_T2;
+* @section: 15.3;
+* @assertion: Since when call is used for Function constructor themself new function instance creates
+* and then first argument(thisArg) should be ignored;
+* @description: First argument is string and null;
+*/
+
+this.color="red";
+var name="mars";
+
+var f = Function.call("blablastring", "return this.color;");
+
+//CHECK#1
+if (f() !== "red") {
+ $ERROR('#1: ');
+}
+
+var g = Function.call(null, "return this.name;");
+
+//CHECK#2
+if (g() !== "mars") {
+ $ERROR('#2: ');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T3.js
new file mode 100644
index 000000000..571656f5b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3_A3_T3;
+* @section: 15.3, 10.2.3;
+* @assertion: Since when call is used for Function constructor themself new function instance creates
+* and then first argument(thisArg) should be ignored;
+* @description: First argument is this, and this don`t have needed variable;
+*/
+
+var f=Function.call(this, "return planet;");
+var g=Function.call(this, "return color;");
+
+//CHECK#1
+try{
+ f();
+ $ERROR('#1: ');
+} catch(e){
+ if (!(e instanceof ReferenceError))
+ $ERROR('#1.1: ');
+}
+
+var planet="mars";
+
+//CHECK#2
+if (f() !== "mars") {
+ $ERROR('#2: ');
+}
+
+//CHECK#3
+try{
+ g();
+ $ERROR('#3: ');
+} catch(e){
+ if (!(e instanceof ReferenceError))
+ $ERROR('#3.1: ');
+}
+
+this.color="red";
+
+//CHECK#4
+if (g() !== "red") {
+ $ERROR('#4: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T4.js
new file mode 100644
index 000000000..a785a114a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T4.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3_A3_T4;
+* @section: 15.3, 10.2.3;
+* @assertion: Since when call is used for Function constructor themself new function instance creates
+* and then first argument(thisArg) should be ignored;
+* @description: First argument is this, and this have needed variable;
+*/
+
+var f=Function.call(this, "return planet;");
+
+//CHECK#1
+if (f() !== undefined) {
+ $ERROR('#1: ');
+}
+
+var planet="mars";
+
+//CHECK#2
+if (f() !== "mars") {
+ $ERROR('#2: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T5.js
new file mode 100644
index 000000000..4ee75c149
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T5.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3_A3_T5;
+* @section: 15.3, 10.2.3;
+* @assertion: Since when call is used for Function constructor themself new function instance creates
+* and then first argument(thisArg) should be ignored;
+* @description: First argument is this, and this don`t have needed variable. Function return this.var_name;
+*/
+
+var f=Function.call(this, "return this.planet;");
+var g=Function.call(this, "return this.color;");
+
+//CHECK#1
+if (f() !== undefined) {
+ $ERROR('#2: ');
+}
+
+var planet="mars";
+
+//CHECK#2
+if (f() !== "mars") {
+ $ERROR('#2: ');
+}
+
+//CHECK#3
+if (g() !== undefined) {
+ $ERROR('#3: ');
+}
+
+this.color="red";
+
+//CHECK#4
+if (g() !== "red") {
+ $ERROR('#4: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T6.js
new file mode 100644
index 000000000..f9e21e5a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.3_Function_Objects/S15.3_A3_T6.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.3_A3_T6;
+* @section: 15.3, 10.2.3;
+* @assertion: Since when call is used for Function constructor themself new function instance creates
+* and then first argument(thisArg) should be ignored;
+* @description: First argument is this, and this have needed variable. Function return this.var_name;
+*/
+
+var f=Function.call(this, "return this.planet;");
+
+//CHECK#1
+if (f() !== undefined) {
+ $ERROR('#1: ');
+}
+
+var planet="mars";
+
+//CHECK#2
+if (f() !== "mars") {
+ $ERROR('#2: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T1.js
new file mode 100644
index 000000000..f692a4d13
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.1_A1.1_T1;
+ * @section: 15.4.1, 15.2.4.5;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Array prototype object, the one that
+ * is the initial value of Array.prototype;
+ * @description: Create new property of Array.prototype. When new Array object has this property;
+*/
+
+//CHECK#1
+Array.prototype.myproperty = 1;
+var x = Array();
+if (x.myproperty !== 1) {
+ $ERROR('#1: Array.prototype.myproperty = 1; var x = Array(); x.myproperty === 1. Actual: ' + (x.myproperty));
+}
+
+//CHECK#2
+if (x.hasOwnProperty('myproperty') !== false) {
+ $ERROR('#2: Array.prototype.myproperty = 1; var x = Array(); x.hasOwnProperty(\'myproperty\') === false. Actual: ' + (x.hasOwnProperty('myproperty')));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T2.js
new file mode 100644
index 000000000..dcbb73902
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.1_A1.1_T2;
+ * @section: 15.4.1, 15.2.4.2;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Array prototype object, the one that
+ * is the initial value of Array.prototype;
+ * @description: Array.prototype.toString = Object.prototype.toString;
+*/
+
+//CHECK#1
+Array.prototype.toString = Object.prototype.toString;
+var x = Array();
+if (x.toString() !== "[object " + "Array" + "]") {
+ $ERROR('#1: Array.prototype.toString = Object.prototype.toString; var x = Array(); x.toString() === "[object " + "Array" + "]". Actual: ' + (x.toString()));
+}
+
+//CHECK#2
+Array.prototype.toString = Object.prototype.toString;
+var x = Array(0,1,2);
+if (x.toString() !== "[object " + "Array" + "]") {
+ $ERROR('#2: Array.prototype.toString = Object.prototype.toString; var x = Array(0,1,2); x.toString() === "[object " + "Array" + "]". Actual: ' + (x.toString()));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T3.js
new file mode 100644
index 000000000..d2a2135fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.1_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.1_A1.1_T3;
+ * @section: 15.4.1, 15.2.4.6;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Array prototype object, the one that
+ * is the initial value of Array.prototype;
+ * @description: Checking use isPrototypeOf;
+*/
+
+//CHECK#1
+if (Array.prototype.isPrototypeOf(Array()) !== true) {
+ $ERROR('#1: Array.prototype.isPrototypeOf(Array()) === true. Actual: ' + (Array.prototype.isPrototypeOf(Array())));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.2_T1.js
new file mode 100644
index 000000000..ef812f651
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.2_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.1_A1.2_T1;
+ * @section: 15.4.1, 15.2.4.2;
+ * @assertion: The [[Class]] property of the newly constructed object is set to "Array";
+ * @description: Checking use Object.prototype.toString;
+*/
+
+//CHECK#1
+var x = Array();
+x.getClass = Object.prototype.toString;
+if (x.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = Array(); x.getClass = Object.prototype.toString; x is Array object. Actual: ' + (x.getClass()));
+}
+
+//CHECK#2
+var x = Array(0,1,2);
+x.getClass = Object.prototype.toString;
+if (x.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#2: var x = Array(0,1,2); x.getClass = Object.prototype.toString; x is Array object. Actual: ' + (x.getClass()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.3_T1.js
new file mode 100644
index 000000000..da1ab5b89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A1.3_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.1_A1.3_T1;
+ * @section: 15.4.1;
+ * @assertion: This description of Array constructor applies if and only if
+ * the Array constructor is given no arguments or at least two arguments;
+ * @description: Checking case when Array constructor is given one argument;
+*/
+
+var x = Array(2);
+
+//CHECK#1
+if (x.length === 1) {
+ $ERROR('#1: var x = Array(2); x.length !== 1');
+}
+
+//CHECK#2
+if (x[0] === 2) {
+ $ERROR('#2: var x = Array(2); x[0] !== 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A2.1_T1.js
new file mode 100644
index 000000000..6654d6023
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A2.1_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.1_A2.1_T1;
+ * @section: 15.4.1;
+ * @assertion: The length property of the newly constructed object;
+ * is set to the number of arguments;
+ * @description: Array constructor is given no arguments or at least two arguments
+*/
+
+//CHECK#1
+if (Array().length !== 0) {
+ $ERROR('#1: (Array().length === 0. Actual: ' + (Array().length));
+}
+
+//CHECK#2
+if (Array(0,1,0,1).length !== 4) {
+ $ERROR('#2: (Array(0,1,0,1).length === 4. Actual: ' + (Array(0,1,0,1).length));
+}
+
+//CHECK#3
+if (Array(undefined, undefined).length !== 2) {
+ $ERROR('#3: (Array(undefined, undefined).length === 2. Actual: ' + (Array(undefined, undefined).length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A2.2_T1.js
new file mode 100644
index 000000000..57cd5db92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A2.2_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.1_A2.2_T1;
+ * @section: 15.4.1;
+ * @assertion: The 0 property of the newly constructed object is set to item0
+ * (if supplied); the 1 property of the newly constructed object is set to item1
+ * (if supplied); and, in general, for as many arguments as there are, the k property
+ * of the newly constructed object is set to argument k, where the first argument is
+ * considered to be argument number 0;
+ * @description: Checking correct work this algorithm;
+*/
+
+//CHECK#
+var x = Array(
+0,1,2,3,4,5,6,7,8,9,
+10,11,12,13,14,15,16,17,18,19,
+20,21,22,23,24,25,26,27,28,29,
+30,31,32,33,34,35,36,37,38,39,
+40,41,42,43,44,45,46,47,48,49,
+50,51,52,53,54,55,56,57,58,59,
+60,61,62,63,64,65,66,67,68,69,
+70,71,72,73,74,75,76,77,78,79,
+80,81,82,83,84,85,86,87,88,89,
+90,91,92,93,94,95,96,97,98,99
+);
+
+for (var i = 0; i < 100; i++) {
+ var result = true;
+ if (x[i] !== i) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: x[i] === i. Actual: ' + (x[i]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A3.1_T1.js
new file mode 100644
index 000000000..ef652efac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.1_The_Array_Constructor_Called_as_a_Function/S15.4.1_A3.1_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.1_A3.1_T1;
+ * @section: 15.4.1, 11.4.3, 11.8.6;
+ * @assertion: When Array is called as a function rather than as a constructor,
+ * it creates and initialises a new Array object;
+ * @description: Checking use typeof, instanceof;
+*/
+
+//CHECK#1
+if (typeof Array() !== "object") {
+ $ERROR('#1: typeof Array() === "object". Actual: ' + (typeof Array()));
+}
+
+//CHECK#2
+if ((Array() instanceof Array) !== true) {
+ $ERROR('#2: (Array() instanceof Array) === true. Actual: ' + (Array() instanceof Array));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T1.js
new file mode 100644
index 000000000..f975303cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.1_A1.1_T1;
+ * @section: 15.4.2.1, 15.2.4.5;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Array prototype object, the one that
+ * is the initial value of Array.prototype;
+ * @description: Create new property of Array.prototype. When new Array object has this property;
+*/
+
+//CHECK#1
+Array.prototype.myproperty = 1;
+var x = new Array();
+if (x.myproperty !== 1) {
+ $ERROR('#1: Array.prototype.myproperty = 1; var x = new Array(); x.myproperty === 1. Actual: ' + (x.myproperty));
+}
+
+//CHECK#2
+if (x.hasOwnProperty('myproperty') !== false) {
+ $ERROR('#2: Array.prototype.myproperty = 1; var x = new Array(); x.hasOwnProperty(\'myproperty\') === false. Actual: ' + (x.hasOwnProperty('myproperty')));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T2.js
new file mode 100644
index 000000000..6b284f725
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.1_A1.1_T2;
+ * @section: 15.4.2.1, 15.2.4.2;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Array prototype object, the one that
+ * is the initial value of Array.prototype;
+ * @description: Array.prototype.toString = Object.prototype.toString;
+*/
+
+//CHECK#1
+Array.prototype.toString = Object.prototype.toString;
+var x = new Array();
+if (x.toString() !== "[object " + "Array" + "]") {
+ $ERROR('#1: Array.prototype.toString = Object.prototype.toString; var x = new Array(); x.toString() === "[object " + "Array" + "]". Actual: ' + (x.toString()));
+}
+
+//CHECK#2
+Array.prototype.toString = Object.prototype.toString;
+var x = new Array(0,1,2);
+if (x.toString() !== "[object " + "Array" + "]") {
+ $ERROR('#2: Array.prototype.toString = Object.prototype.toString; var x = new Array(0,1,2); x.toString() === "[object " + "Array" + "]". Actual: ' + (x.toString()));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T3.js
new file mode 100644
index 000000000..c4099b2f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.1_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.1_A1.1_T3;
+ * @section: 15.4.2.1, 15.2.4.6;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Array prototype object, the one that
+ * is the initial value of Array.prototype;
+ * @description: Checking use isPrototypeOf;
+*/
+
+//CHECK#1
+if (Array.prototype.isPrototypeOf(new Array()) !== true) {
+ $ERROR('#1: Array.prototype.isPrototypeOf(new Array()) === true. Actual: ' + (Array.prototype.isPrototypeOf(new Array())));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.2_T1.js
new file mode 100644
index 000000000..b43371859
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.2_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.1_A1.2_T1;
+ * @section: 15.4.2.1, 15.2.4.2;
+ * @assertion: The [[Class]] property of the newly constructed object is set to "Array";
+ * @description: Checking use Object.prototype.toString;
+*/
+
+//CHECK#1
+var x = new Array();
+x.getClass = Object.prototype.toString;
+if (x.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = new Array(); x.getClass = Object.prototype.toString; x is Array object. Actual: ' + (x.getClass()));
+}
+
+//CHECK#2
+var x = new Array(0,1,2);
+x.getClass = Object.prototype.toString;
+if (x.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#2: var x = new Array(0,1,2); x.getClass = Object.prototype.toString; x is Array object. Actual: ' + (x.getClass()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.3_T1.js
new file mode 100644
index 000000000..38f7041f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A1.3_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.1_A1.3_T1;
+ * @section: 15.4.2.1;
+ * @assertion: This description of Array constructor applies if and only if
+ * the Array constructor is given no arguments or at least two arguments;
+ * @description: Checking case when Array constructor is given one argument;
+*/
+
+var x = new Array(2);
+
+//CHECK#1
+if (x.length === 1) {
+ $ERROR('#1: var x = new Array(2); x.length !== 1');
+}
+
+//CHECK#2
+if (x[0] === 2) {
+ $ERROR('#2: var x = new Array(2); x[0] !== 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A2.1_T1.js
new file mode 100644
index 000000000..4be411725
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A2.1_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.1_A2.1_T1;
+ * @section: 15.4.2.1;
+ * @assertion: The length property of the newly constructed object;
+ * is set to the number of arguments;
+ * @description: Array constructor is given no arguments or at least two arguments
+*/
+
+//CHECK#1
+if (new Array().length !== 0) {
+ $ERROR('#1: new Array().length === 0. Actual: ' + (new Array().length));
+}
+
+//CHECK#2
+if (new Array(0,1,0,1).length !== 4) {
+ $ERROR('#2: new Array(0,1,0,1).length === 4. Actual: ' + (new Array(0,1,0,1).length));
+}
+
+//CHECK#3
+if (new Array(undefined, undefined).length !== 2) {
+ $ERROR('#3: new Array(undefined, undefined).length === 2. Actual: ' + (new Array(undefined, undefined).length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A2.2_T1.js
new file mode 100644
index 000000000..d2906eed2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.1_new_Array/S15.4.2.1_A2.2_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.1_A2.2_T1;
+ * @section: 15.4.2.1;
+ * @assertion: The 0 property of the newly constructed object is set to item0
+ * (if supplied); the 1 property of the newly constructed object is set to item1
+ * (if supplied); and, in general, for as many arguments as there are, the k property
+ * of the newly constructed object is set to argument k, where the first argument is
+ * considered to be argument number 0;
+ * @description: Checking correct work this algorithm;
+*/
+
+//CHECK#
+var x = new Array(
+0,1,2,3,4,5,6,7,8,9,
+10,11,12,13,14,15,16,17,18,19,
+20,21,22,23,24,25,26,27,28,29,
+30,31,32,33,34,35,36,37,38,39,
+40,41,42,43,44,45,46,47,48,49,
+50,51,52,53,54,55,56,57,58,59,
+60,61,62,63,64,65,66,67,68,69,
+70,71,72,73,74,75,76,77,78,79,
+80,81,82,83,84,85,86,87,88,89,
+90,91,92,93,94,95,96,97,98,99
+);
+
+for (var i = 0; i < 100; i++) {
+ var result = true;
+ if (x[i] !== i) {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: x[i] === i. Actual: ' + (x[i]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T1.js
new file mode 100644
index 000000000..b84ac54a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A1.1_T1;
+ * @section: 15.4.2.2;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Array prototype object, the one that
+ * is the initial value of Array.prototype;
+ * @description: Create new property of Array.prototype. When new Array object has this property;
+*/
+
+//CHECK#1
+Array.prototype.myproperty = 1;
+var x = new Array(0);
+if (x.myproperty !== 1) {
+ $ERROR('#1: Array.prototype.myproperty = 1; var x = new Array(0); x.myproperty === 1. Actual: ' + (x.myproperty));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T2.js
new file mode 100644
index 000000000..0aa74fa81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A1.1_T2;
+ * @section: 15.4.2.2, 15.2.4.2;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Array prototype object, the one that
+ * is the initial value of Array.prototype;
+ * @description: Array.prototype.toString = Object.prototype.toString;
+*/
+
+//CHECK#1
+Array.prototype.toString = Object.prototype.toString;
+var x = new Array(0);
+if (x.toString() !== "[object " + "Array" + "]") {
+ $ERROR('#1: Array.prototype.toString = Object.prototype.toString; var x = new Array(0); x.toString() === "[object " + "Array" + "]". Actual: ' + (x.toString()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T3.js
new file mode 100644
index 000000000..88a698fff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.1_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A1.1_T3;
+ * @section: 15.4.2.2, 15.2.4.6;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Array prototype object, the one that
+ * is the initial value of Array.prototype;
+ * @description: Checking use isPrototypeOf;
+*/
+
+//CHECK#1
+if (Array.prototype.isPrototypeOf(new Array(0)) !== true) {
+ $ERROR('#1: Array.prototype.isPrototypeOf(new Array(0)) === true. Actual: ' + (Array.prototype.isPrototypeOf(new Array(0))));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.2_T1.js
new file mode 100644
index 000000000..38acf93be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A1.2_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A1.2_T1;
+ * @section: 15.4.2.2, 15.2.4.2;
+ * @assertion: The [[Class]] property of the newly constructed object is set to "Array";
+ * @description: Checking use Object.prototype.toString;
+*/
+
+//CHECK#1
+var x = new Array(0);
+x.getClass = Object.prototype.toString;
+if (x.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = new Array(0); x.getClass = Object.prototype.toString; x is Array object. Actual: ' + (x.getClass()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.1_T1.js
new file mode 100644
index 000000000..c0df8b9b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.1_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A2.1_T1;
+ * @section: 15.4.2.2;
+ * @assertion: If the argument len is a Number and ToUint32(len) is equal to len,
+ * then the length property of the newly constructed object is set to ToUint32(len);
+ * @description: Array constructor is given one argument;
+*/
+
+//CHECK#1
+var x = new Array(0);
+if (x.length !== 0) {
+ $ERROR('#1: var x = new Array(0); x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#2
+var x = new Array(1);
+if (x.length !== 1) {
+ $ERROR('#2: var x = new Array(1); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#3
+var x = new Array(4294967295);
+if (x.length !== 4294967295) {
+ $ERROR('#3: var x = new Array(4294967295); x.length === 4294967295. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T1.js
new file mode 100644
index 000000000..e55e47a04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A2.2_T1;
+ * @section: 15.4.2.2, 12.14;
+ * @assertion: If the argument len is a Number and ToUint32(len) is not equal to len,
+ * a RangeError exception is thrown;
+ * @description: Use try statement. len = -1, 4294967296, 4294967297;
+*/
+
+//CHECK#1
+try {
+ new Array(-1);
+ $ERROR('#1.1: new Array(-1) throw RangeError. Actual: ' + (new Array(-1)));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#1.2: new Array(-1) throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ new Array(4294967296);
+ $ERROR('#2.1: new Array(4294967296) throw RangeError. Actual: ' + (new Array(4294967296)));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#2.2: new Array(4294967296) throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#3
+try {
+ new Array(4294967297);
+ $ERROR('#3.1: new Array(4294967297) throw RangeError. Actual: ' + (new Array(4294967297)));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#3.2: new Array(4294967297) throw RangeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T2.js
new file mode 100644
index 000000000..b1d27ad32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_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.
+
+/**
+ * @name: S15.4.2.2_A2.2_T2;
+ * @section: 15.4.2.2;
+ * @assertion: If the argument len is a Number and ToUint32(len) is not equal to len,
+ * a RangeError exception is thrown;
+ * @description: Use try statement. len = NaN, +/-Infinity;
+*/
+
+//CHECK#1
+try {
+ new Array(NaN);
+ $ERROR('#1.1: new Array(NaN) throw RangeError. Actual: ' + (new Array(NaN)));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#1.2: new Array(NaN) throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ new Array(Number.POSITIVE_INFINITY);
+ $ERROR('#2.1: new Array(Number.POSITIVE_INFINITY) throw RangeError. Actual: ' + (new Array(Number.POSITIVE_INFINITY)));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#2.2: new Array(Number.POSITIVE_INFINITY) throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#3
+try {
+ new Array(Number.NEGATIVE_INFINITY);
+ $ERROR('#3.1: new Array(Number.NEGATIVE_INFINITY) throw RangeError. Actual: ' + (new Array(Number.NEGATIVE_INFINITY)));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#3.2: new Array(Number.NEGATIVE_INFINITY) throw RangeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T3.js
new file mode 100644
index 000000000..2ee66e80b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.2_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A2.2_T3;
+ * @section: 15.4.2.2;
+ * @assertion: If the argument len is a Number and ToUint32(len) is not equal to len,
+ * a RangeError exception is thrown;
+ * @description: Use try statement. len = 1.5, Number.MAX_VALUE, Number.MIN_VALUE;
+*/
+
+//CHECK#1
+try {
+ new Array(1.5);
+ $ERROR('#1.1: new Array(1.5) throw RangeError. Actual: ' + (new Array(1.5)));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#1.2: new Array(1.5) throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ new Array(Number.MAX_VALUE);
+ $ERROR('#2.1: new Array(Number.MAX_VALUE) throw RangeError. Actual: ' + (new Array(Number.MAX_VALUE)));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#2.2: new Array(Number.MAX_VALUE) throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#3
+try {
+ new Array(Number.MIN_VALUE);
+ $ERROR('#3.1: new Array(Number.MIN_VALUE) throw RangeError. Actual: ' + (new Array(Number.MIN_VALUE)));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#3.2: new Array(Number.MIN_VALUE) throw RangeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T1.js
new file mode 100644
index 000000000..38a8a59e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A2.3_T1;
+ * @section: 15.4.2.2;
+ * @assertion: If the argument len is not a Number, then the length property of
+ * the newly constructed object is set to 1 and the 0 property of
+ * the newly constructed object is set to len;
+ * @description: Checking for null and undefined;
+*/
+
+var x = new Array(null);
+
+//CHECK#1
+if (x.length !== 1) {
+ $ERROR('#1: var x = new Array(null); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== null) {
+ $ERROR('#2: var x = new Array(null); x[0] === null. Actual: ' + (x[0]));
+}
+
+var x = new Array(undefined);
+
+//CHECK#3
+if (x.length !== 1) {
+ $ERROR('#3: var x = new Array(undefined); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#4
+if (x[0] !== undefined) {
+ $ERROR('#4: var x = new Array(undefined); x[0] === undefined. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T2.js
new file mode 100644
index 000000000..5d350a814
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T2.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A2.3_T2;
+ * @section: 15.4.2.2;
+ * @assertion: If the argument len is not a Number, then the length property of
+ * the newly constructed object is set to 1 and the 0 property of
+ * the newly constructed object is set to len;
+ * @description: Checking for boolean primitive and Boolean object;
+*/
+
+var x = new Array(true);
+
+//CHECK#1
+if (x.length !== 1) {
+ $ERROR('#1: var x = new Array(true); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== true) {
+ $ERROR('#2: var x = new Array(true); x[0] === true. Actual: ' + (x[0]));
+}
+
+var obj = new Boolean(false);
+var x = new Array(obj);
+
+//CHECK#3
+if (x.length !== 1) {
+ $ERROR('#3: var obj = new Boolean(false); var x = new Array(obj); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#4
+if (x[0] !== obj) {
+ $ERROR('#4: var obj = new Boolean(false); var x = new Array(obj); x[0] === obj. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T3.js
new file mode 100644
index 000000000..abf1b06c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T3.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A2.3_T3;
+ * @section: 15.4.2.2;
+ * @assertion: If the argument len is not a Number, then the length property of
+ * the newly constructed object is set to 1 and the 0 property of
+ * the newly constructed object is set to len;
+ * @description: Checking for boolean primitive and Boolean object;
+*/
+
+var x = new Array("1");
+
+//CHECK#1
+if (x.length !== 1) {
+ $ERROR('#1: var x = new Array("1"); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== "1") {
+ $ERROR('#2: var x = new Array("1"); x[0] === "1". Actual: ' + (x[0]));
+}
+
+var obj = new String("0");
+var x = new Array(obj);
+
+//CHECK#3
+if (x.length !== 1) {
+ $ERROR('#3: var obj = new String("0"); var x = new Array(obj); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#4
+if (x[0] !== obj) {
+ $ERROR('#4: var obj = new String("0"); var x = new Array(obj); x[0] === obj. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T4.js
new file mode 100644
index 000000000..252c53bb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T4.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A2.3_T4;
+ * @section: 15.4.2.2;
+ * @assertion: If the argument len is not a Number, then the length property of
+ * the newly constructed object is set to 1 and the 0 property of
+ * the newly constructed object is set to len;
+ * @description: Checking for Number object;
+*/
+
+var obj = new Number(0);
+var x = new Array(obj);
+
+//CHECK#1
+if (x.length !== 1) {
+ $ERROR('#1: var obj = new Number(0); var x = new Array(obj); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== obj) {
+ $ERROR('#2: var obj = new Number(0); var x = new Array(obj); x[0] === obj. Actual: ' + (x[0]));
+}
+
+var obj = new Number(1);
+var x = new Array(obj);
+
+//CHECK#3
+if (x.length !== 1) {
+ $ERROR('#3: var obj = new Number(1); var x = new Array(obj); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#4
+if (x[0] !== obj) {
+ $ERROR('#4: var obj = new Number(1); var x = new Array(obj); x[0] === obj. Actual: ' + (x[0]));
+}
+
+var obj = new Number(4294967295);
+var x = new Array(obj);
+
+//CHECK#5
+if (x.length !== 1) {
+ $ERROR('#5: var obj = new Number(4294967295); var x = new Array(obj); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#6
+if (x[0] !== obj) {
+ $ERROR('#6: var obj = new Number(4294967295); var x = new Array(obj); x[0] === obj. Actual: ' + (x[0]));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T5.js
new file mode 100644
index 000000000..914905bf7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.2_The_Array_Constructor/15.4.2.2_new_Array_len/S15.4.2.2_A2.3_T5.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.2.2_A2.3_T5;
+ * @section: 15.4.2.2;
+ * @assertion: If the argument len is not a Number, then the length property of
+ * the newly constructed object is set to 1 and the 0 property of
+ * the newly constructed object is set to len;
+ * @description: Checking for Number object;
+*/
+
+var obj = new Number(-1);
+var x = new Array(obj);
+
+//CHECK#1
+if (x.length !== 1) {
+ $ERROR('#1: var obj = new Number(-1); var x = new Array(obj); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== obj) {
+ $ERROR('#2: var obj = new Number(-1); var x = new Array(obj); x[0] === obj. Actual: ' + (x[0]));
+}
+
+var obj = new Number(4294967296);
+var x = new Array(obj);
+
+//CHECK#3
+if (x.length !== 1) {
+ $ERROR('#3: var obj = new Number(4294967296); var x = new Array(obj); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#4
+if (x[0] !== obj) {
+ $ERROR('#4: var obj = new Number(4294967296); var x = new Array(obj); x[0] === obj. Actual: ' + (x[0]));
+}
+
+var obj = new Number(4294967297);
+var x = new Array(obj);
+
+//CHECK#5
+if (x.length !== 1) {
+ $ERROR('#5: var obj = new Number(4294967297); var x = new Array(obj); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#6
+if (x[0] !== obj) {
+ $ERROR('#6: var obj = new Number(4294967297); var x = new Array(obj); x[0] === obj. Actual: ' + (x[0]));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A1.js
new file mode 100644
index 000000000..4706be045
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.3.1_A1;
+ * @section: 15.4.3.1, 15.2.4.5;
+ * @assertion: The Array has property prototype;
+ * @description: Checking use hasOwnProperty;
+*/
+
+//CHECK#1
+if (Array.hasOwnProperty('prototype') !== true) {
+ $FAIL('#1: Array.hasOwnProperty(\'prototype\') === true. Actual: ' + (Array.hasOwnProperty('prototype')));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A2.js
new file mode 100644
index 000000000..738ba7338
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_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.
+
+/**
+* @name: S15.4.3.1_A2;
+* @section: 15.4.3.1;
+* @assertion: The Array.prototype property has the attribute DontEnum;
+* @description: Checking if enumerating the Array.prototype property fails;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('prototype') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'prototype\') === false. Actual: ' + (Array.propertyIsEnumerable('prototype')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "prototype") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "prototype") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A3.js
new file mode 100644
index 000000000..a79b6dd02
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_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.
+
+/**
+* @name: S15.4.3.1_A3;
+* @section: 15.4.3.1, 15.2.4.5;
+* @assertion: The Array.prototype property has the attribute DontDelete;
+* @description: Checking if deleting the Array.prototype property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.hasOwnProperty('prototype') !== true) {
+ $FAIL('#1: Array.hasOwnProperty(\'prototype\') === true. Actual: ' + (Array.hasOwnProperty('prototype')));
+}
+
+delete Array.prototype;
+
+//CHECK#2
+if (Array.hasOwnProperty('prototype') !== true) {
+ $ERROR('#2: delete Array.prototype; Array.hasOwnProperty(\'prototype\') === true. Actual: ' + (Array.hasOwnProperty('prototype')));
+}
+
+//CHECK#3
+if (Array.prototype === undefined) {
+ $ERROR('#3: delete Array.prototype; Array.prototype !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A4.js
new file mode 100644
index 000000000..3f32c7217
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.3.1_A4;
+* @section: 15.4.3.1;
+* @assertion: The Array.prototype property has the attribute ReadOnly;
+* @description: Checking if varying the Array.prototype property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype;
+Array.prototype = 1;
+if (Array.prototype !== x) {
+ $ERROR('#1: x = Array.prototype; Array.prototype = 1; Array.prototype === x. Actual: ' + (Array.prototype));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A5.js
new file mode 100644
index 000000000..ee2ec31e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/15.4.3.1_Array_prototype/S15.4.3.1_A5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.3.1_A5;
+ * @section: 15.4.3.1;
+ * @assertion: The length property of Array.prototype is 0;
+ * @description: Array.prototype.length === 0;
+*/
+
+//CHECK#1
+if (Array.prototype.length !== 0) {
+ $ERROR('#1.1: Array.prototype.length === 0. Actual: ' + (Array.prototype.length));
+} else {
+ if (1 / Array.prototype.length !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Array.prototype.length === +0. Actual: -' + (Array.prototype.length));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T1.js
new file mode 100644
index 000000000..9b511613d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.3_A1.1_T1;
+ * @section: 15.4.3, 15.2.4.5;
+ * @assertion: The value of the internal [[Prototype]] property of
+ * the Array constructor is the Function prototype object;
+ * @description: Create new property of Function.prototype. When Array constructor has this property;
+*/
+
+Function.prototype.myproperty = 1;
+
+//CHECK#1
+if (Array.myproperty !== 1) {
+ $ERROR('#1: Function.prototype.myproperty = 1; Array.myproperty === 1. Actual: ' + (Array.myproperty));
+}
+
+//CHECK#2
+if (Array.hasOwnProperty('myproperty') !== false) {
+ $ERROR('#2: Function.prototype.myproperty = 1; Array.hasOwnProperty(\'myproperty\') === false. Actual: ' + (Array.hasOwnProperty('myproperty')));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T2.js
new file mode 100644
index 000000000..4d6e3ffff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.3_A1.1_T2;
+ * @section: 15.4.3, 15.2.4.2;
+ * @assertion: The value of the internal [[Prototype]] property of
+ * the Array constructor is the Function prototype object;
+ * @description: Function.prototype.toString = Object.prototype.toString;
+*/
+
+//CHECK#1
+Function.prototype.toString = Object.prototype.toString;
+if (Array.toString() !== "[object " + "Function" + "]") {
+ $ERROR('#1: Function.prototype.toString = Object.prototype.toString; Array.toString() === "[object " + "Function" + "]". Actual: ' + (Array.toString()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T3.js
new file mode 100644
index 000000000..68f3c8745
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A1.1_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.3_A1.1_T3;
+ * @section: 15.4.3, 15.2.4.6;
+ * @assertion: The value of the internal [[Prototype]] property of
+ * the Array constructor is the Function prototype object;
+ * @description: Checking use isPrototypeOf;
+*/
+
+//CHECK#1
+if (Function.prototype.isPrototypeOf(Array) !== true) {
+ $ERROR('#1: Function.prototype.isPrototypeOf(Array) === true. Actual: ' + (Function.prototype.isPrototypeOf(Array)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.1.js
new file mode 100644
index 000000000..1fb90c21d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.3_A2.1;
+ * @section: 15.4.3, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of Array has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+result = true;
+for (p in Array){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.slice) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.2.js
new file mode 100644
index 000000000..dd12bfc17
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.3_A2.2;
+ * @section: 15.4.3, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of Array has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+*/
+
+//CHECK#1
+if (Array.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.hasOwnProperty(\'length\') === true. Actual: ' + (Array.hasOwnProperty('length')));
+}
+
+delete Array.length;
+
+//CHECK#2
+if (Array.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.length; Array.hasOwnProperty(\'length\') === true. Actual: ' + (Array.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.length === undefined) {
+ $ERROR('#3: delete Array.length; Array.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.3.js
new file mode 100644
index 000000000..33e70bc4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.3_A2.3;
+ * @section: 15.4.3;
+ * @assertion: The length property of Array has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+*/
+
+//CHECK#1
+x = Array.length;
+Array.length = Infinity;
+if (Array.length !== x) {
+ $ERROR('#1: x = Array.length; Array.length = Infinity; Array.length === x. Actual: ' + (Array.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.4.js
new file mode 100644
index 000000000..f25c4afa4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.3_Properties_of_the_Array_Constructor/S15.4.3_A2.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.3_A2.4;
+ * @section: 15.4.3;
+ * @assertion: The length property of Array is 1;
+ * @description: Array.length === 1;
+*/
+
+//CHECK#1
+if (Array.length !== 1) {
+ $ERROR('#1: Array.length === 1. Actual: ' + (Array.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T1.js
new file mode 100644
index 000000000..123dfc05f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.1_T1;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is positive, use min(end, length);
+ * @description: length > end > start = 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(0,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T2.js
new file mode 100644
index 000000000..63d1b852e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.1_T2;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is positive, use min(end, length);
+ * @description: length > end = start > 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(3,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(3,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(3,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(3,3); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T3.js
new file mode 100644
index 000000000..ccecc6585
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.1_T3;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is positive, use min(end, length);
+ * @description: length > start > end > 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(4,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(4,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(4,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(4,3); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T4.js
new file mode 100644
index 000000000..e8a0fe05a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.1_T4;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is positive, use min(end, length);
+ * @description: length = end = start > 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(5,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(5,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(5,5); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(5,5); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T5.js
new file mode 100644
index 000000000..28e7f0b22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T5.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.1_T5;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is positive, use min(end, length);
+ * @description: length = end > start > 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(3,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 2) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr.length === 2. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 3) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr[0] === 3. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 4) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr[1] === 4. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[3] !== undefined) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T6.js
new file mode 100644
index 000000000..710cf15da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.1_T6;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is positive, use min(end, length);
+ * @description: length > end > start > 0;
+ *
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(2,4);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 2) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr.length === 2. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 2) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr[0] === 2. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 3) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr[1] === 3. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[3] !== undefined) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T7.js
new file mode 100644
index 000000000..a42f7e1fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.1_T7.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.1_T7;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is positive, use min(end, length);
+ * @description: end > length > start > 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(3,6);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 2) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr.length === 2. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 3) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr[0] === 3. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 4) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr[1] === 4. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[3] !== undefined) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T1.js
new file mode 100644
index 000000000..06aa4d3d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.2_T1;
+ * @section: 15.4.4.10;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If end is positive, use min(end, length);
+ * @description: length > end = abs(start), start < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(-3,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-3,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 1) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-3,3); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 2) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-3,3); arr[0] === 2. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== undefined) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-3,3); arr[1] === undefined. Actual: ' + (arr[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T2.js
new file mode 100644
index 000000000..0bf4eb496
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.2_T2;
+ * @section: 15.4.4.10;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If end is positive, use min(end, length);
+ * @description: length = end > abs(start), start < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(-1,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-1,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 1) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-1,5); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 4) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-1,5); arr[0] === 4. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== undefined) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-1,5); arr[1] === undefined. Actual: ' + (arr[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T3.js
new file mode 100644
index 000000000..53049294b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.2_T3;
+ * @section: 15.4.4.10;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If end is positive, use min(end, length);
+ * @description: abs(start) = length > end > 0, start < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(-5,1);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-5,1); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 1) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-5,1); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-5,1); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== undefined) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-5,1); arr[1] === undefined. Actual: ' + (arr[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T4.js
new file mode 100644
index 000000000..cc70aa9d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.2_T4.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.2_T4;
+ * @section: 15.4.4.10;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If end is positive, use min(end, length);
+ * @description: abs(start) > length = end > 0, start < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(-9,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 5) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr.length === 5. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== 3) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[3] === 3. Actual: ' + (arr[3]));
+}
+
+//CHECK#7
+if (arr[4] !== 4) {
+ $ERROR('#7: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[4] === 4. Actual: ' + (arr[4]));
+}
+
+//CHECK#8
+if (arr[5] !== undefined) {
+ $ERROR('#8: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[5] === undefined. Actual: ' + (arr[5]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T1.js
new file mode 100644
index 000000000..414352ce8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.3_T1;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is negative, use max(end + length, 0);
+ * @description: length > abs(end) > start = 0, end < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(0,-2);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T2.js
new file mode 100644
index 000000000..93b010c45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.3_T2;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is negative, use max(end + length, 0);
+ * @description: length > abs(end) > start > 0, end < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(1,-4);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(1,-4); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(1,-4); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(1,-4); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T3.js
new file mode 100644
index 000000000..3ec1f1fa6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.3_T3;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is negative, use max(end + length, 0);
+ * @description: length = abs(end) > start = 0, end < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(0,-5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,-5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,-5); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,-5); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T4.js
new file mode 100644
index 000000000..a3a1fdb7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.3_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.3_T4;
+ * @section: 15.4.4.10;
+ * @assertion: If start is positive, use min(start, length).
+ * If end is negative, use max(end + length, 0);
+ * @description: abs(end) > length > start > 0, end < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(4,-9);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(4,-9); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(4,-9); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(4,-9); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T1.js
new file mode 100644
index 000000000..575f435cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.4_T1;
+ * @section: 15.4.4.10;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If end is negative, use max(end + length, 0);
+ * @description: -length = start < end < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(-5,-2);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T2.js
new file mode 100644
index 000000000..58463b997
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.4_T2;
+ * @section: 15.4.4.10;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If end is negative, use max(end + length, 0);
+ * @description: -length < start < end < 0;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(-3,-1);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 2) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr.length === 2. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 2) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr[0] === 2. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 3) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr[1] === 3. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== undefined) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr[2] === undefined. Actual: ' + (arr[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T3.js
new file mode 100644
index 000000000..1fa2b1f56
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T3.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.4_T3;
+ * @section: 15.4.4.10;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If end is negative, use max(end + length, 0);
+ * @description: start < -length < end < 0;
+*/
+
+
+var x = [0,1,2,3,4];
+var arr = x.slice(-9,-1);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 4) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr.length === 4. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== 3) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[3] === 3. Actual: ' + (arr[3]));
+}
+
+//CHECK#7
+if (arr[4] !== undefined) {
+ $ERROR('#7: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[4] === undefined. Actual: ' + (arr[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T4.js
new file mode 100644
index 000000000..b5e066ddc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.4_T4;
+ * @section: 15.4.4.10;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If end is negative, use max(end + length, 0);
+ * @description: start = end < -length;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(-6,-6);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-6,-6); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-6,-6); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-6,-6); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.5_T1.js
new file mode 100644
index 000000000..cc85371d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.5_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A1.5_T1;
+ * @section: 15.4.4.10;
+ * @assertion: If end is undefined use length;
+ * @description: end === undefined;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(3, undefined);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 2) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr.length === 2. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 3) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr[0] === 3. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 4) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr[1] === 4. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== undefined) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr[2] === undefined. Actual: ' + (arr[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.5_T2.js
new file mode 100644
index 000000000..ee6d41129
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A1.5_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.
+
+/**
+ * @name: S15.4.4.10_A1.5_T2;
+ * @section: 15.4.4.10;
+ * @assertion: If end is undefined use length;
+ * @description: end is absent;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(-2);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 2) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr.length === 2. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 3) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr[0] === 3. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 4) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr[1] === 4. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== undefined) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr[2] === undefined. Actual: ' + (arr[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T1.js
new file mode 100644
index 000000000..8eb1c1397
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.1_T1;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from start;
+ * @description: start is not integer;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(2.5,4);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 2) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr.length === 2. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 2) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr[0] === 2. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 3) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr[1] === 3. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[3] !== undefined) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T2.js
new file mode 100644
index 000000000..894e50dd6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T2.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.1_T2;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from start;
+ * @description: start = NaN;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(NaN,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T3.js
new file mode 100644
index 000000000..b8fe8a091
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T3.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.1_T3;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from start;
+ * @description: start = Infinity;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(Number.POSITIVE_INFINITY,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(Number.POSITIVE_INFINITY,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(Number.POSITIVE_INFINITY,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(Number.POSITIVE_INFINITY,3); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T4.js
new file mode 100644
index 000000000..75b9c9525
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T4.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.1_T4;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from start;
+ * @description: start = -Infinity;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(Number.NEGATIVE_INFINITY,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T5.js
new file mode 100644
index 000000000..dddc5c630
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.1_T5.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.1_T5;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from start;
+ * @description: ToInteger use ToNumber;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T1.js
new file mode 100644
index 000000000..9a4997d7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.2_T1;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from end;
+ * @description: end is not integer;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(2,4.5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 2) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr.length === 2. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 2) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr[0] === 2. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 3) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr[1] === 3. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[3] !== undefined) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T2.js
new file mode 100644
index 000000000..740a9e8af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.2_T2;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from end;
+ * @description: end = NaN;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(0,NaN);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,NaN); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,NaN); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,NaN); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T3.js
new file mode 100644
index 000000000..0fd7cc242
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T3.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.2_T3;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from end;
+ * @description: end = Infinity;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(0,Number.POSITIVE_INFINITY);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 5) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr.length === 5. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== 3) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[3] === 3. Actual: ' + (arr[3]));
+}
+
+//CHECK#7
+if (arr[4] !== 4) {
+ $ERROR('#7: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[4] === 4. Actual: ' + (arr[4]));
+}
+
+//CHECK#8
+if (arr[5] !== undefined) {
+ $ERROR('#8: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[5] === undefined. Actual: ' + (arr[5]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T4.js
new file mode 100644
index 000000000..7a8b9fbd8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T4.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.2_T4;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from end;
+ * @description: end = -Infinity;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(0,Number.NEGATIVE_INFINITY);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.NEGATIVE_INFINITY); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.NEGATIVE_INFINITY); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== undefined) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.NEGATIVE_INFINITY); arr[0] === undefined. Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T5.js
new file mode 100644
index 000000000..d47420c59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2.2_T5.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2.2_T5;
+ * @section: 15.4.4.10;
+ * @assertion: Operator use ToInteger from end;
+ * @description: ToInteger use ToNumber;
+*/
+
+var x = [0,1,2,3,4];
+var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}});
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T1.js
new file mode 100644
index 000000000..2a744d8ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2_T1;
+ * @section: 15.4.4.10;
+ * @assertion: The slice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If start is positive, use min(start, length).
+ * If end is positive, use min(end, length);
+*/
+
+var obj = {};
+obj.slice = Array.prototype.slice;
+obj[0] = 0;
+obj[1] = 1;
+obj[2] = 2;
+obj[3] = 3;
+obj[4] = 4;
+obj.length = 5;
+var arr = obj.slice(0,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T2.js
new file mode 100644
index 000000000..27ea34de5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T2.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2_T2;
+ * @section: 15.4.4.10;
+ * @assertion: The slice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If start is negative, use max(start + length, 0).
+ * If end is positive, use min(end, length);
+*/
+
+var obj = {};
+obj.slice = Array.prototype.slice;
+obj[0] = 0;
+obj[1] = 1;
+obj[2] = 2;
+obj[3] = 3;
+obj[4] = 4;
+obj.length = 5;
+var arr = obj.slice(-5,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T3.js
new file mode 100644
index 000000000..458c70320
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T3.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2_T3;
+ * @section: 15.4.4.10;
+ * @assertion: The slice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If start is positive, use min(start, length).
+ * If end is negative, use max(end + length, 0);
+*/
+
+var obj = {};
+obj.slice = Array.prototype.slice;
+obj[0] = 0;
+obj[1] = 1;
+obj[2] = 2;
+obj[3] = 3;
+obj[4] = 4;
+obj.length = 5;
+var arr = obj.slice(0,-2);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T4.js
new file mode 100644
index 000000000..90912c6d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T4.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2_T4;
+ * @section: 15.4.4.10;
+ * @assertion: The slice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If start is negative, use max(start + length, 0).
+ * If end is negative, use max(end + length, 0);
+*/
+
+var obj = {};
+obj.slice = Array.prototype.slice;
+obj[0] = 0;
+obj[1] = 1;
+obj[2] = 2;
+obj[3] = 3;
+obj[4] = 4;
+obj.length = 5;
+var arr = obj.slice(-5,-2);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T5.js
new file mode 100644
index 000000000..2ed85ac9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T5.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2_T5;
+ * @section: 15.4.4.10;
+ * @assertion: The slice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If end is undefined use length;
+*/
+
+var obj = {};
+obj.slice = Array.prototype.slice;
+obj[0] = 0;
+obj[1] = 1;
+obj[2] = 2;
+obj[3] = 3;
+obj[4] = 4;
+obj.length = 5;
+var arr = obj.slice(2);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 2) {
+ $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr[0] === 2. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 3) {
+ $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr[1] === 3. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 4) {
+ $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr[2] === 4. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T6.js
new file mode 100644
index 000000000..9ffbb48d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A2_T6.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A2_T6;
+ * @section: 15.4.4.10;
+ * @assertion: The slice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If end is undefined use length;
+*/
+
+var obj = {};
+obj.slice = Array.prototype.slice;
+obj[0] = 0;
+obj[1] = 1;
+obj[2] = 2;
+obj[3] = 3;
+obj[4] = 4;
+obj.length = 5;
+var arr = obj.slice(2, undefined);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 2) {
+ $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr[0] === 2. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 3) {
+ $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr[1] === 3. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 4) {
+ $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr[2] === 4. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== undefined) {
+ $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr[3] === undefined. Actual: ' + (arr[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T1.js
new file mode 100644
index 000000000..019c7abbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A3_T1;
+ * @section: 15.4.4.10;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967296;
+*/
+
+var obj = {};
+obj.slice = Array.prototype.slice;
+obj[0] = "x";
+obj[4294967295] = "y";
+obj.length = 4294967296;
+var arr = obj.slice(0,4294967296);
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; var arr = obj.slice(0,4294967296); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (arr[0] !== undefined) {
+ $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; var arr = obj.slice(0,4294967296); arr[0] === undefined. Actual: ' + (arr[0]));
+}
+
+//CHECK#3
+if (arr[4294967295] !== undefined) {
+ $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; var arr = obj.slice(0,4294967296); arr[4294967295] === undefined. Actual: ' + (arr[4294967295]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T2.js
new file mode 100644
index 000000000..691b389db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A3_T2;
+ * @section: 15.4.4.10;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967297;
+*/
+
+var obj = {};
+obj.slice = Array.prototype.slice;
+obj[0] = "x";
+obj[4294967296] = "y";
+obj.length = 4294967297;
+var arr = obj.slice(0,4294967297);
+
+//CHECK#1
+if (arr.length !== 1) {
+ $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = "x"; obj[4294967296] = "y"; obj.length = 4294967297; var arr = obj.slice(0,4294967297); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (arr[0] !== "x") {
+ $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = "x"; obj[4294967296] = "y"; obj.length = 4294967297; var arr = obj.slice(0,4294967297); arr[0] === "x". Actual: ' + (arr[0]));
+}
+
+//CHECK#3
+if (arr[4294967296] !== undefined) {
+ $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = "x"; obj[4294967296] = "y"; obj.length = 4294967297; var arr = obj.slice(0,4294967297); arr[4294967296] === undefined. Actual: ' + (arr[4294967296]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T3.js
new file mode 100644
index 000000000..4e42e684f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A3_T3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.10_A3_T3;
+ * @section: 15.4.4.10;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = -1;
+*/
+
+var obj = {};
+obj.slice = Array.prototype.slice;
+obj[4294967294] = "x";
+obj.length = -1;
+var arr = obj.slice(4294967294,4294967295);
+
+//CHECK#1
+if (arr.length !== 1) {
+ $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[4294967294] = "x"; obj.length = 4294967295; var arr = obj.slice(4294967294,4294967295); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[4294967294] = "x"; obj.length = 4294967295; var arr = obj.slice(4294967294,4294967295); arr[0] === "x". Actual: ' + (arr[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A4_T1.js
new file mode 100644
index 000000000..f6028058a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A4_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.
+
+/**
+ * @name: S15.4.4.10_A4_T1;
+ * @section: 15.4.4.10, 8.6.2.1, 15.2.4.5;
+ * @assertion: [[Get]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype;
+*/
+
+
+Array.prototype[1] = 1;
+var x = [0];
+x.length = 2;
+var arr = x.slice();
+
+//CHECK#1
+if (arr[0] !== 0) {
+ $ERROR('#1: Array.prototype[1] = 1; x = [0]; x.length = 2; var arr = x.slice(); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#2
+if (arr[1] !== 1) {
+ $ERROR('#2: Array.prototype[1] = 1; x = [0]; x.length = 2; var arr = x.slice(); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#3
+if (arr.hasOwnProperty('1') !== true) {
+ $ERROR('#3: Array.prototype[1] = 1; x = [0]; x.length = 2; var arr = x.slice(); arr.hasOwnProperty(\'1\') === true. Actual: ' + (arr.hasOwnProperty('1')));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.1.js
new file mode 100644
index 000000000..c7ff2f42c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.10_A5.1;
+* @section: 15.4.4.10, 15.2.4.7, 12.6.4;
+* @assertion: The length property of slice has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.slice.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.slice.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.slice.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.slice){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.slice) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.2.js
new file mode 100644
index 000000000..a590a4f40
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.10_A5.2;
+* @section: 15.4.4.10, 15.2.4.5, 11.4.1;
+* @assertion: The length property of slice has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+*/
+
+//CHECK#1
+if (Array.prototype.slice.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.slice.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.slice.hasOwnProperty('length')));
+}
+
+delete Array.prototype.slice.length;
+
+//CHECK#2
+if (Array.prototype.slice.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.slice.length; Array.prototype.slice.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.slice.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.slice.length === undefined) {
+ $ERROR('#3: delete Array.prototype.slice.length; Array.prototype.slice.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.3.js
new file mode 100644
index 000000000..177c68450
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.10_A5.3;
+* @section: 15.4.4.10;
+* @assertion: The length property of slice has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.slice.length;
+Array.prototype.slice.length = Infinity;
+if (Array.prototype.slice.length !== x) {
+ $ERROR('#1: x = Array.prototype.slice.length; Array.prototype.slice.length = Infinity; Array.prototypeslice.length === x. Actual: ' + (Array.prototypeslice.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.4.js
new file mode 100644
index 000000000..a6323a86f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.10_A5.4;
+* @section: 15.4.4.10;
+* @assertion: The length property of slice is 2;
+* @description: slice.length === 2;
+*/
+
+//CHECK#1
+if (Array.prototype.slice.length !== 2) {
+ $ERROR('#1: Array.prototype.slice.length === 2. Actual: ' + (Array.prototype.slice.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.5.js
new file mode 100644
index 000000000..668b980da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.10_A5.5;
+* @section: 15.4.4.10, 15.2.4.7, 12.6.4;
+* @assertion: The slice property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('slice') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'slice\') === false. Actual: ' + (Array.propertyIsEnumerable('slice')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "slice") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "slice") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.6.js
new file mode 100644
index 000000000..119ff79d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.10_A5.6;
+* @section: 15.4.4.10;
+* @assertion: The slice property of Array has not prototype property;
+* @description: Checking Array.prototype.slice.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.slice.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.slice.prototype === undefined. Actual: ' + (Array.prototype.slice.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.7.js
new file mode 100644
index 000000000..e04a41214
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.10_Array_prototype_slice/S15.4.4.10_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.10_A5.7;
+* @section: 15.4.4.10, 11.2.2;
+* @assertion: The slice property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.slice();
+ $ERROR('#1.1: new Array.prototype.slice() throw TypeError. Actual: ' + (new Array.prototype.slice()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.slice() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.1_T1.js
new file mode 100644
index 000000000..63e485e28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.1_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A1.1_T1;
+ * @section: 15.4.4.11;
+ * @assertion: If this object does not have a property named by ToString(j),
+ * and this object does not have a property named by ToString(k), return +0;
+ * @description: If comparefn is undefined, use SortCompare operator;
+*/
+
+var x = new Array(2);
+x.sort();
+
+//CHECK#1
+if (x.length !== 2) {
+ $ERROR('#1: var x = new Array(2); x.sort(); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== undefined) {
+ $ERROR('#2: var x = new Array(2); x.sort(); x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== undefined) {
+ $ERROR('#3: var x = new Array(2); x.sort(); x[1] === undefined. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.2_T1.js
new file mode 100644
index 000000000..01114e3c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.2_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A1.2_T1;
+ * @section: 15.4.4.11;
+ * @assertion: If this object does not have a property named by
+ * ToString(j), return 1. If this object does not have a property
+ * named by ToString(k), return -1;
+ * @description: If comparefn is undefined, use SortCompare operator;
+*/
+
+var x = new Array(2);
+x[1] = 1;
+x.sort();
+
+//CHECK#1
+if (x.length !== 2) {
+ $ERROR('#1: var x = new Array(2); x[1] = 1; x.sort(); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== 1) {
+ $ERROR('#2: var x = new Array(2); x[1] = 1; x.sort(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== undefined) {
+ $ERROR('#3: var x = new Array(2); x[1] = 1; x.sort(); x[1] === undefined. Actual: ' + (x[1]));
+}
+
+var x = new Array(2);
+x[0] = 1;
+x.sort();
+
+//CHECK#4
+if (x.length !== 2) {
+ $ERROR('#4: var x = new Array(2); x[0] = 1; x.sort(); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#5
+if (x[0] !== 1) {
+ $ERROR('#5: var x = new Array(2); x[0] = 1; x.sort(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== undefined) {
+ $ERROR('#6: var x = new Array(2); x[0] = 1; x.sort(); x[1] === undefined. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.2_T2.js
new file mode 100644
index 000000000..5875e8422
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.2_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A1.2_T2;
+ * @section: 15.4.4.11;
+ * @assertion: If this object does not have a property named by
+ * ToString(j), return 1. If this object does not have a property
+ * named by ToString(k), return -1;
+ * @description: If comparefn is not undefined;
+*/
+
+var myComparefn = function(x,y) {
+ if (x === undefined) return -1;
+ if (y === undefined) return 1;
+ return 0;
+}
+
+var x = new Array(2);
+x[1] = 1;
+x.sort(myComparefn);
+
+//CHECK#1
+if (x.length !== 2) {
+ $ERROR('#1: var x = new Array(2); x[1] = 1; x.sort(myComparefn); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== 1) {
+ $ERROR('#2: var x = new Array(2); x[1] = 1; x.sort(myComparefn); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== undefined) {
+ $ERROR('#3: var x = new Array(2); x[1] = 1; x.sort(myComparefn); x[1] === undefined. Actual: ' + (x[1]));
+}
+
+var x = new Array(2);
+x[0] = 1;
+x.sort(myComparefn);
+
+//CHECK#4
+if (x.length !== 2) {
+ $ERROR('#4: var x = new Array(2); x[0] = 1; x.sort(myComparefn); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#5
+if (x[0] !== 1) {
+ $ERROR('#5: var x = new Array(2); x[0] = 1; x.sort(myComparefn); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== undefined) {
+ $ERROR('#6: var x = new Array(2); x[0] = 1; x.sort(myComparefn); x[1] === undefined. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.3_T1.js
new file mode 100644
index 000000000..ef19564cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.3_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A1.3_T1;
+ * @section: 15.4.4.11;
+ * @assertion: If [[Get]] ToString(j) and [[Get]] ToString(k)
+ * are both undefined, return +0;
+ * @description: If comparefn is undefined, use SortCompare operator;
+*/
+
+var x = new Array(undefined, undefined);
+x.sort();
+
+//CHECK#1
+if (x.length !== 2) {
+ $ERROR('#1: var x = new Array(undefined, undefined); x.sort(); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== undefined) {
+ $ERROR('#2: var x = new Array(undefined, undefined); x.sort(); x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== undefined) {
+ $ERROR('#3: var x = new Array(undefined, undefined); x.sort(); x[1] === undefined. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.4_T1.js
new file mode 100644
index 000000000..35b48a554
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.4_T1.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A1.4_T1;
+ * @section: 15.4.4.11;
+ * @assertion: If [[Get]] ToString(j) is undefined, return 1.
+ * If [[]Get] ToString(k) is undefined, return -1;
+ * @description: If comparefn is undefined, use SortCompare operator;
+*/
+
+var x = new Array(undefined, 1);
+x.sort();
+
+//CHECK#1
+if (x.length !== 2) {
+ $ERROR('#1: var x = new Array(undefined, 1); x.sort(); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== 1) {
+ $ERROR('#2: var x = new Array(undefined, 1); x.sort(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== undefined) {
+ $ERROR('#3: var x = new Array(undefined, 1); x.sort(); x[1] === undefined. Actual: ' + (x[1]));
+}
+
+var x = new Array(1, undefined);
+x.sort();
+
+//CHECK#4
+if (x.length !== 2) {
+ $ERROR('#4: var x = new Array(1, undefined); x.sort(); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#5
+if (x[0] !== 1) {
+ $ERROR('#5: var x = new Array(1, undefined); x.sort(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== undefined) {
+ $ERROR('#6: var x = new Array(1, undefined); x.sort(); x[1] === undefined. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.4_T2.js
new file mode 100644
index 000000000..9fba05147
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.4_T2.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A1.4_T2;
+ * @section: 15.4.4.11;
+ * @assertion: If [[Get]] ToString(j) is undefined, return 1.
+ * If [[]Get] ToString(k) is undefined, return -1;
+ * @description: If comparefn is not undefined;
+*/
+
+var myComparefn = function(x,y) {
+ if (x === undefined) return -1;
+ if (y === undefined) return 1;
+ return 0;
+}
+
+var x = new Array(undefined, 1);
+x.sort(myComparefn);
+
+//CHECK#1
+if (x.length !== 2) {
+ $ERROR('#1: var x = new Array(undefined, 1); x.sort(myComparefn); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== 1) {
+ $ERROR('#2: var x = new Array(undefined, 1); x.sort(myComparefn); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== undefined) {
+ $ERROR('#3: var x = new Array(undefined, 1); x.sort(myComparefn); x[1] === undefined. Actual: ' + (x[1]));
+}
+
+var x = new Array(1, undefined);
+x.sort(myComparefn);
+
+//CHECK#4
+if (x.length !== 2) {
+ $ERROR('#4: var x = new Array(1, undefined); x.sort(myComparefn); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#5
+if (x[0] !== 1) {
+ $ERROR('#5: var x = new Array(1, undefined); x.sort(myComparefn); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== undefined) {
+ $ERROR('#6: var x = new Array(1, undefined); x.sort(myComparefn); x[1] === undefined. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.5_T1.js
new file mode 100644
index 000000000..43a1ffd51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A1.5_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A1.5_T1;
+ * @section: 15.4.4.11;
+ * @assertion: If comparefn is undefined, use SortCompare operator;
+ * @description: Checking sort() and sort(undefined);
+*/
+
+var x = new Array(1,0);
+x.sort();
+
+//CHECK#1
+if (x.length !== 2) {
+ $ERROR('#1: var x = new Array(1,0); x.sort(); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[0] !== 0) {
+ $ERROR('#2: var x = new Array(1,0); x.sort(); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== 1) {
+ $ERROR('#3: var x = new Array(1,0); x.sort(); x[1] === 1. Actual: ' + (x[1]));
+}
+
+var x = new Array(1,0);
+x.sort(undefined);
+
+//CHECK#4
+if (x.length !== 2) {
+ $ERROR('#4: var x = new Array(1,0); x.sort(undefined); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#5
+if (x[0] !== 0) {
+ $ERROR('#5: var x = new Array(1,0); x.sort(undefined); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== 1) {
+ $ERROR('#6: var x = new Array(1,0); x.sort(undefined); x[1] === 1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T1.js
new file mode 100644
index 000000000..6bb97776d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A2.1_T1;
+ * @section: 15.4.4.11;
+ * @assertion:
+ * If ToString([[Get]] ToString(j)) < ToString([[Get]] ToString(k)), return -1.
+ * If ToString([[Get]] ToString(j)) > ToString([[Get]] ToString(k)), return 1;
+ * return -1
+ * @description: Checking ENGLISH ALPHABET;
+*/
+
+
+var alphabetR = ["z", "y", "x", "w", "v", "u", "t", "s", "r", "q", "p", "o", "n", "M", "L", "K", "J", "I", "H", "G", "F", "E", "D", "C", "B", "A"];
+var alphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+
+//CHECK#1
+alphabetR.sort();
+var result = true;
+for (var i = 0; i < 26; i++) {
+ if (alphabetR[i] !== alphabet[i]) result = false;
+}
+
+if (result !== true) {
+ $ERROR('#1: CHECK ENGLISH ALPHABET');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T2.js
new file mode 100644
index 000000000..63d218c9e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A2.1_T2;
+ * @section: 15.4.4.11;
+ * @assertion:
+ * If ToString([[Get]] ToString(j)) < ToString([[Get]] ToString(k)), return -1.
+ * If ToString([[Get]] ToString(j)) > ToString([[Get]] ToString(k)), return 1;
+ * return -1
+ * @description: Checking RUSSIAN ALPHABET;
+*/
+
+var alphabetR = ["ё", "я", "ю", "э", "ь", "ы", "ъ", "щ", "ш", "ч", "ц", "х", "ф", "у", "т", "с", "р", "П", "О", "Н", "М", "Л", "К", "Й", "И", "З", "Ж", "Е", "Д", "Г", "В", "Б", "А"];
+var alphabet = ["А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", "ё"];
+
+//CHECK#1
+alphabetR.sort();
+var result = true;
+for (var i = 0; i < 26; i++) {
+ if (alphabetR[i] !== alphabet[i]) result = false;
+}
+
+if (result !== true) {
+ $ERROR('#1: CHECK RUSSIAN ALPHABET');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T3.js
new file mode 100644
index 000000000..2baae9b9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.1_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A2.1_T3;
+ * @section: 15.4.4.11;
+ * @assertion:
+ * If ToString([[Get]] ToString(j)) < ToString([[Get]] ToString(k)), return -1.
+ * If ToString([[Get]] ToString(j)) > ToString([[Get]] ToString(k)), return 1;
+ * return -1
+ * @description: Checking ToString operator;
+*/
+
+var obj = {valueOf: function() {return 1}, toString: function() {return -2}};
+var alphabetR = [undefined, 2, 1, "X", -1, "a", true, obj, NaN, Infinity];
+var alphabet = [-1, obj, 1, 2, Infinity, NaN, "X", "a", true, undefined];
+
+//CHECK#1
+alphabetR.sort();
+var result = true;
+for (var i = 0; i < 10; i++) {
+ if (!(isNaN(alphabetR[i]) && isNaN(alphabet[i]))) {
+ if (alphabetR[i] !== alphabet[i]) result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: Check ToString operator');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T1.js
new file mode 100644
index 000000000..9daf50dcf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A2.2_T1;
+ * @section: 15.4.4.11;
+ * @assertion: My comparefn is inverse implementation comparefn;
+ * @description: Checking ENGLISH ALPHABET;
+*/
+
+var alphabetR = ["z", "y", "x", "w", "v", "u", "t", "s", "r", "q", "p", "o", "n", "M", "L", "K", "J", "I", "H", "G", "F", "E", "D", "C", "B", "A"];
+var alphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+
+var myComparefn = function(x,y) {
+ var xS = String(x);
+ var yS = String(y);
+ if (xS < yS) return 1
+ if (xS > yS) return -1;
+ return 0;
+}
+
+//CHECK#1
+alphabet.sort(myComparefn);
+var result = true;
+for (var i = 0; i < 26; i++) {
+ if (alphabetR[i] !== alphabet[i]) result = false;
+}
+
+if (result !== true) {
+ $ERROR('#1: CHECK ENGLISH ALPHABET');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T2.js
new file mode 100644
index 000000000..5f99da67a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A2.2_T2;
+ * @section: 15.4.4.11;
+ * @assertion: My comparefn is inverse implementation comparefn;
+ * @description: Checking RUSSIAN ALPHABET;
+*/
+
+var alphabetR = ["ё", "я", "ю", "э", "ь", "ы", "ъ", "щ", "ш", "ч", "ц", "х", "ф", "у", "т", "с", "р", "П", "О", "Н", "М", "Л", "К", "Й", "И", "З", "Ж", "Е", "Д", "Г", "В", "Б", "А"];
+var alphabet = ["А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", "ё"];
+
+var myComparefn = function(x,y) {
+ var xS = String(x);
+ var yS = String(y);
+ if (xS < yS) return 1
+ if (xS > yS) return -1;
+ return 0;
+}
+
+//CHECK#1
+alphabet.sort(myComparefn);
+var result = true;
+for (var i = 0; i < 26; i++) {
+ if (alphabetR[i] !== alphabet[i]) result = false;
+}
+
+if (result !== true) {
+ $ERROR('#1: CHECK RUSSIAN ALPHABET');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T3.js
new file mode 100644
index 000000000..634555759
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A2.2_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A2.2_T3;
+ * @section: 15.4.4.11;
+ * @assertion: My comparefn is inverse implementation comparefn;
+ * @description: Checking ToString operator;
+*/
+
+var obj = {valueOf: function() {return 1}, toString: function() {return -2}};
+var alphabetR = [undefined, 2, 1, "X", -1, "a", true, obj, NaN, Infinity];
+var alphabet = [true, "a", "X", NaN, Infinity, 2, 1, obj, -1, undefined];
+
+var myComparefn = function(x,y) {
+ var xS = String(x);
+ var yS = String(y);
+ if (xS < yS) return 1
+ if (xS > yS) return -1;
+ return 0;
+}
+
+//CHECK#1
+alphabetR.sort(myComparefn);
+var result = true;
+for (var i = 0; i < 10; i++) {
+ if (!(isNaN(alphabetR[i]) && isNaN(alphabet[i]))) {
+ if (alphabetR[i] !== alphabet[i]) result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: Check ToString operator');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A3_T1.js
new file mode 100644
index 000000000..eccbd02c7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A3_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.
+
+/**
+ * @name: S15.4.4.11_A3_T1;
+ * @section: 15.4.4.11;
+ * @assertion: The sort function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If comparefn is undefined, use SortCompare operator;
+*/
+
+
+var obj = {valueOf: function() {return 1}, toString: function() {return -2}};
+var alphabetR = {0:undefined, 1:2, 2:1, 3:"X", 4:-1, 5:"a", 6:true, 7:obj, 8:NaN, 9:Infinity};
+alphabetR.sort = Array.prototype.sort;
+alphabetR.length = 10;
+var alphabet = [-1, obj, 1, 2, Infinity, NaN, "X", "a", true, undefined];
+
+alphabetR.sort();
+
+ //CHECK#0
+alphabetR.getClass = Object.prototype.toString;
+if (alphabetR.getClass() !== "[object " + "Object" + "]") {
+ $ERROR('#0: alphabetR.sort() is Object object, not Array object');
+}
+
+//CHECK#1
+var result = true;
+for (var i = 0; i < 10; i++) {
+ if (!(isNaN(alphabetR[i]) && isNaN(alphabet[i]))) {
+ if (alphabetR[i] !== alphabet[i]) result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: Check ToString operator');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A3_T2.js
new file mode 100644
index 000000000..a5cb70873
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A3_T2.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A3_T2;
+ * @section: 15.4.4.11;
+ * @assertion: The sort function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If comparefn is not undefined;
+*/
+
+
+var obj = {valueOf: function() {return 1}, toString: function() {return -2}};
+var alphabetR = {0:undefined, 1:2, 2:1, 3:"X", 4:-1, 5:"a", 6:true, 7:obj, 8:NaN, 9:Infinity};
+alphabetR.sort = Array.prototype.sort;
+alphabetR.length = 10;
+var alphabet = [true, "a", "X", NaN, Infinity, 2, 1, obj, -1, undefined];
+
+ var myComparefn = function(x,y) {
+ var xS = String(x);
+ var yS = String(y);
+ if (xS < yS) return 1
+ if (xS > yS) return -1;
+ return 0;
+}
+
+alphabetR.sort(myComparefn);
+
+ //CHECK#0
+alphabetR.getClass = Object.prototype.toString;
+if (alphabetR.getClass() !== "[object " + "Object" + "]") {
+ $ERROR('#0: alphabetR.sort() is Object object, not Array object');
+}
+
+//CHECK#1
+var result = true;
+for (var i = 0; i < 10; i++) {
+ if (!(isNaN(alphabetR[i]) && isNaN(alphabet[i]))) {
+ if (alphabetR[i] !== alphabet[i]) result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#1: Check ToString operator');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T1.js
new file mode 100644
index 000000000..4ca5ba757
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A4_T1;
+ * @section: 15.4.4.11;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967296;
+*/
+
+var obj = {};
+obj.sort = Array.prototype.sort;
+obj[0] = "x";
+obj[4294967295] = "y";
+obj.length = 4294967296;
+
+//CHECK#1
+if (obj.sort() !== obj) {
+ $ERROR('#1: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.sort() === obj. Actual: ' + (obj.sort()));
+}
+
+//CHECK#2
+if (obj.length !== 4294967296) {
+ $ERROR('#2: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.sort(); obj.length === 4294967296. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.sort(); obj[0] == "x"');
+}
+
+//CHECK#4
+if (obj[4294967295] !== "y") {
+ $ERROR('#4: var obj = {}; obj.sort = Array.prototype.sort; obj[] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.sort(); obj[4294967295] == "y"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T2.js
new file mode 100644
index 000000000..5cc1714ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A4_T2;
+ * @section: 15.4.4.11;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967298;
+*/
+
+var obj = {};
+obj.sort = Array.prototype.sort;
+obj[0] = "z";
+obj[1] = "y";
+obj[4294967297] = "x";
+obj.length = 4294967298;
+
+//CHECK#1
+if (obj.sort() !== obj) {
+ $ERROR('#1: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[4294967297] = "x"; obj.length = 4294967298; obj.sort() === obj. Actual: ' + (obj.sort()));
+}
+
+//CHECK#2
+if (obj.length !== 4294967298) {
+ $ERROR('#2: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[4294967297] = "x"; obj.length = 4294967298; obj.sort(); obj.length === 4294967298. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "y") {
+ $ERROR('#3: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[4294967297] = "x"; obj.length = 4294967298; obj.sort(); obj[0] === "y". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== "z") {
+ $ERROR('#4: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[4294967297] = "x"; obj.length = 4294967298; obj.sort(); obj[1] === "z". Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[4294967297] !== "x") {
+ $ERROR('#5: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[4294967297] = "x"; obj.length = 4294967298; obj.sort(); obj[4294967297] === "x". Actual: ' + (obj[4294967297]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T3.js
new file mode 100644
index 000000000..20300e3c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T3.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A4_T3;
+ * @section: 15.4.4.11;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = -4294967294;
+*/
+
+var obj = {};
+obj.sort = Array.prototype.sort;
+obj[0] = "z";
+obj[1] = "y";
+obj[2] = "x";
+obj.length = -4294967294;
+
+//CHECK#1
+if (obj.sort() !== obj) {
+ $ERROR('#1: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[2] = "x"; obj.length = -4294967294; obj.sort() === obj. Actual: ' + (obj.sort()));
+}
+
+//CHECK#2
+if (obj.length !== -4294967294) {
+ $ERROR('#2: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[2] = "x"; obj.length = -4294967294; obj.sort(); obj.length === -4294967294. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "y") {
+ $ERROR('#3: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[2] = "x"; obj.length = -4294967294; obj.sort(); obj[0] === "y". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== "z") {
+ $ERROR('#4: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[2] = "x"; obj.length = -4294967294; obj.sort(); obj[1] === "z". Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[2] !== "x") {
+ $ERROR('#5: var obj = {}; obj.sort = Array.prototype.sort; obj[0] = "z"; obj[1] = "y"; obj[2] = "x"; obj.length = -4294967294; obj.sort(); obj[2] === "x". Actual: ' + (obj[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A5_T1.js
new file mode 100644
index 000000000..a1784629e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A5_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A5_T1;
+ * @section: 15.4.4.11;
+ * @assertion: Array.sort should not eat exceptions;
+ * @description: comparefn function throw "error";
+*/
+
+//CHECK#1
+var myComparefn = function(x,y) {
+ throw "error";
+}
+var x = [1,0];
+try {
+ x.sort(myComparefn)
+ $ERROR('#1.1: Array.sort should not eat exceptions');
+} catch(e) {
+ if (e !== "error") {
+ $ERROR('#1.2: Array.sort should not eat exceptions');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A6_T2.js
new file mode 100644
index 000000000..daca89499
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A6_T2.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.11_A6_T2;
+ * @section: 15.4.4.11, 8.6.2.1, 8.6.2.5;
+ * @assertion: [[Get]], [[Delete]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[1] = -1;
+var x = [1,0];
+x.length = 2;
+x.sort();
+
+//CHECK#1
+if (x[0] !== 0) {
+ $ERROR('#1: Array.prototype[1] = -1; x = [1,0]; x.length = 2; x.sort(); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+if (x[1] !== 1) {
+ $ERROR('#2: Array.prototype[1] = -1; x = [1,0]; x.length = 2; x.sort(); x[1] === 1. Actual: ' + (x[1]));
+}
+
+x.length = 0;
+
+//CHECK#3
+if (x[0] !== undefined) {
+ $ERROR('#3: Array.prototype[1] = -1; x = [1,0]; x.length = 2; x.sort(); x.length = 0; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== -1) {
+ $ERROR('#4: Array.prototype[1] = -1; x = [1,0]; x.length = 2; x.sort(); x.length = 0; x[1] === -1. Actual: ' + (x[1]));
+}
+
+Object.prototype[1] = -1;
+Object.prototype.length = 2;
+Object.prototype.sort = Array.prototype.sort;
+x = {0:1,1:0};
+x.sort();
+
+//CHECK#5
+if (x[0] !== 0) {
+ $ERROR('#5: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.sort = Array.prototype.sort; x = {0:1,1:0}; x.sort(); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== 1) {
+ $ERROR('#6: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.sort = Array.prototype.sort; x = {0:1,1:0}; x.sort(); x[1] === 1. Actual: ' + (x[1]));
+}
+
+delete x[0];
+delete x[1];
+
+//CHECK#7
+if (x[0] !== undefined) {
+ $ERROR('#7: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.sort = Array.prototype.sort; x = {0:1,1:0}; x.sort(); delete x[0]; delete x[1]; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#8
+if (x[1] !== -1) {
+ $ERROR('#8: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.sort = Array.prototype.sort; x = {0:1,1:0}; x.sort(); delete x[0]; delete x[1]; x[1] === -1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.1.js
new file mode 100644
index 000000000..c7b8d3161
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.11_A7.1;
+* @section: 15.4.4.11, 15.2.4.7, 12.6.4;
+* @assertion: The length property of sort has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.sort.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.sort.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.sort.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.sort){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.sort) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.2.js
new file mode 100644
index 000000000..5cf97c68a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.11_A7.2;
+* @section: 15.4.4.11, 15.2.4.5, 11.4.1;
+* @assertion: The length property of sort has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.prototype.sort.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.sort.prototype.hasOwnProperty(\'length\') === true. Actual: ' + (Array.sort.prototype.hasOwnProperty('length')));
+}
+
+delete Array.prototype.sort.length;
+
+//CHECK#2
+if (Array.prototype.sort.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.sort.length; Array.prototype.sort.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.sort.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.sort.length === undefined) {
+ $ERROR('#3: delete Array.prototype.sort.length; Array.prototype.sort.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.3.js
new file mode 100644
index 000000000..e415d9988
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.11_A7.3;
+* @section: 15.4.4.11;
+* @assertion: The length property of sort has the attribute ReadOnly;
+* @description: Checking if varying the length fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.sort.length;
+Array.prototype.sort.length = Infinity;
+if (Array.prototype.sort.length !== x) {
+ $ERROR('#1: x = Array.prototype.sort.length; Array.prototype.sort.length = Infinity; Array.prototype.sort.length === x. Actual: ' + (Array.prototype.sort.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.4.js
new file mode 100644
index 000000000..6c64171d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.11_A7.4;
+* @section: 15.4.4.11;
+* @assertion: The length property of sort is 1;
+* @description: sort.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.sort.length !== 1) {
+ $ERROR('#1: Array.prototype.sort.length === 1. Actual: ' + (Array.prototype.sort.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.5.js
new file mode 100644
index 000000000..f3c388d4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.11_A7.5;
+* @section: 15.4.4.11, 15.2.4.7, 12.6.4;
+* @assertion: The sort property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('sort') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'sort\') === false. Actual: ' + (Array.propertyIsEnumerable('sort')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "sort") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "sort") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.6.js
new file mode 100644
index 000000000..8d8192e72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.11_A7.6;
+* @section: 15.4.4.11;
+* @assertion: The sort property of Array has not prototype property;
+* @description: Checking Array.prototype.sort.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.sort.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.sort.prototype === undefined. Actual: ' + (Array.prototype.sort.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.7.js
new file mode 100644
index 000000000..fa60764bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A7.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.11_A7.7;
+* @section: 15.4.4.11, 11.2.2;
+* @assertion: The sort property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.sort();
+ $ERROR('#1.1: new Array.prototype.sort() throw TypeError. Actual: ' + (new Array.prototype.sort()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.sort() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A8.js
new file mode 100644
index 000000000..b32842a7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.11_Array_prototype_sort/S15.4.4.11_A8.js
@@ -0,0 +1,24 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.11_A8;
+* @section: 15.4.4.11;
+* @assertion: Call the comparefn passing undefined as the this value
+* (step 13b);
+* @description: comparefn tests that its this value is undefined;
+*/
+
+var global = this;
+[2,3].sort(function(x,y) {
+ "use strict";
+
+ if (this === global) {
+ $FAIL('#1: Sort leaks global');
+ }
+ if (this !== undefined) {
+ $FAIL('#2: Sort comparefn should be called with this===undefined. ' +
+ 'Actual: ' + this);
+ }
+ return x - y;
+});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T1.js
new file mode 100644
index 000000000..b14ab1dee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.1_T1;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: length > deleteCount > start = 0, itemCount = 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(0,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(0,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(0,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(0,3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(0,3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(0,3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(0,3); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(0,3); x[0] === 3. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T2.js
new file mode 100644
index 000000000..079512559
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.1_T2;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: length > deleteCount > start = 0, itemCount > 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(0,3,4,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(0,3,4,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(0,3,4,5); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(0,3,4,5); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(0,3,4,5); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(0,3,4,5); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(0,3,4,5); x.length === 3. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 4) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(0,3,4,5); x[0] === 4. Actual: ' + (x[0]));
+}
+
+//CHECK#8
+if (x[1] !== 5) {
+ $ERROR('#8: var x = [0,1,2,3]; var arr = x.splice(0,3,4,5); x[1] === 5. Actual: ' + (x[1]));
+}
+
+//CHECK#9
+if (x[2] !== 3) {
+ $ERROR('#9: var x = [0,1,2,3]; var arr = x.splice(0,3,4,5); x[2] === 3. Actual: ' + (x[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T3.js
new file mode 100644
index 000000000..7d081f357
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T3.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.1_T3;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: length = deleteCount > start = 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(0,4);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(0,4); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 4) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(0,4); arr.length === 4. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(0,4); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(0,4); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(0,4); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(0,4); arr[3] === 3. Actual: ' + (arr[3]));
+}
+
+//CHECK#7
+if (x.length !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(0,4); x.length === 0. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T4.js
new file mode 100644
index 000000000..7ffc2ebe2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.1_T4;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: length > deleteCount > start > 0, itemCount > 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(1,3,4,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(1,3,4,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(1,3,4,5); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 1) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(1,3,4,5); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 2) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(1,3,4,5); arr[1] === 2. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 3) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(1,3,4,5); arr[2] === 3. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(1,3,4,5); x.length === 3. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(1,3,4,5); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#8
+if (x[1] !== 4) {
+ $ERROR('#8: var x = [0,1,2,3]; var arr = x.splice(1,3,4,5); x[1] === 4. Actual: ' + (x[1]));
+}
+
+//CHECK#9
+if (x[2] !== 5) {
+ $ERROR('#9: var x = [0,1,2,3]; var arr = x.splice(1,3,4,5); x[2] === 5. Actual: ' + (x[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T5.js
new file mode 100644
index 000000000..1d9d6a7fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.1_T5;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: deleteCount > length > start = 0, itemCount = 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(0,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(0,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 4) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(0,5); arr.length === 4. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(0,5); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(0,5); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(0,5); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(0,5); arr[3] === 3. Actual: ' + (arr[3]));
+}
+
+//CHECK#7
+if (x.length !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(0,5); x.length === 0. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T6.js
new file mode 100644
index 000000000..4040557cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.1_T6.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.1_T6;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: length = deleteCount > start > 0, itemCount > 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(1,4,4,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(1,4,4,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(1,4,4,5); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 1) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(1,4,4,5); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 2) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(1,4,4,5); arr[1] === 2. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 3) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(1,4,4,5); arr[2] === 3. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(1,4,4,5); x.length === 3. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(1,4,4,5); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#8
+if (x[1] !== 4) {
+ $ERROR('#8: var x = [0,1,2,3]; var arr = x.splice(1,4,4,5); x[1] === 4. Actual: ' + (x[1]));
+}
+
+//CHECK#9
+if (x[2] !== 5) {
+ $ERROR('#9: var x = [0,1,2,3]; var arr = x.splice(1,4,4,5); x[2] === 5. Actual: ' + (x[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T1.js
new file mode 100644
index 000000000..f8c69de2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.2_T1;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is negative, use 0;
+ * @description: -length = start < deleteCount < 0, itemCount = 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(-2,-1);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(-2,-1); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(-2,-1); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 2) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(-2,-1); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(-2,-1); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(-2,-1); x[1] === 1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T2.js
new file mode 100644
index 000000000..166ac9f95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.2_T2;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is negative, use 0;
+ * @description: -length < start = deleteCount < 0, itemCount = 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(-1,-1);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(-1,-1); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(-1,-1); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 2) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(-1,-1); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(-1,-1); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(-1,-1); x[1] === 1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T3.js
new file mode 100644
index 000000000..9ffeb7aed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T3.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.2_T3;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is negative, use 0;
+ * @description: -length = start < deleteCount < 0, itemCount > 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(-2,-1,2,3);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(-2,-1,2,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(-2,-1,2,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 4) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(-2,-1,2,3); x.length === 4. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 2) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(-2,-1,2,3); x[0] === 2. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 3) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(-2,-1,2,3); x[1] === 3. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+if (x[2] !== 0) {
+ $ERROR('#5: var x = [0,1]; var arr = x.splice(-2,-1,2,3); x[2] === 0. Actual: ' + (x[2]));
+}
+
+//CHECK#6
+if (x[3] !== 1) {
+ $ERROR('#6: var x = [0,1]; var arr = x.splice(-2,-1,2,3); x[3] === 1. Actual: ' + (x[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T4.js
new file mode 100644
index 000000000..9f6cb0aac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T4.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.2_T4;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is negative, use 0;
+ * @description: -length < start = deleteCount < 0, itemCount > 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(-1,-1,2,3);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(-1,-1,2,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(-1,-1,2,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 4) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(-1,-1,2,3); x.length === 4. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(-1,-1,2,3); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 2) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(-1,-1,2,3); x[1] === 2. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+if (x[2] !== 3) {
+ $ERROR('#5: var x = [0,1]; var arr = x.splice(-1,-1,2,3); x[2] === 3. Actual: ' + (x[2]));
+}
+
+//CHECK#6
+if (x[3] !== 1) {
+ $ERROR('#6: var x = [0,1]; var arr = x.splice(-1,-1,2,3); x[3] === 1. Actual: ' + (x[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T5.js
new file mode 100644
index 000000000..017b5184b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.2_T5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.2_T5;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is negative, use 0;
+ * @description: start < -length < deleteCount < 0, itemCount > 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(-3,-1,2,3);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(-3,-1,2,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(-3,-1,2,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 4) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(-3,-1,2,3); x.length === 4. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 2) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(-3,-1,2,3); x[0] === 2. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 3) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(-3,-1,2,3); x[1] === 3. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+if (x[2] !== 0) {
+ $ERROR('#5: var x = [0,1]; var arr = x.splice(-3,-1,2,3); x[2] === 0. Actual: ' + (x[2]));
+}
+
+//CHECK#6
+if (x[3] !== 1) {
+ $ERROR('#6: var x = [0,1]; var arr = x.splice(-3,-1,2,3); x[3] === 1. Actual: ' + (x[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T1.js
new file mode 100644
index 000000000..edcb25d11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.3_T1;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is negative, use 0;
+ * @description: -length < deleteCount < start = 0, itemCount = 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(0,-1);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(0,-1); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(0,-1); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 2) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(0,-1); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(0,-1); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(0,-1); x[1] === 1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T2.js
new file mode 100644
index 000000000..969c68458
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.3_T2;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is negative, use 0;
+ * @description: -length = -start < deleteCount < 0, itemCount = 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(2,-1);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(2,-1); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(2,-1); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 2) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(2,-1); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(2,-1); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(2,-1); x[1] === 1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T3.js
new file mode 100644
index 000000000..10e7c77c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T3.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.3_T3;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is negative, use 0;
+ * @description: -length < deleteCount < start = 0, itemCount > 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(0,-1,2,3);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(0,-1,2,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(0,-1,2,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 4) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(0,-1,2,3); x.length === 4. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 2) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(0,-1,2,3); x[0] === 2. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 3) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(0,-1,2,3); x[1] === 3. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+if (x[2] !== 0) {
+ $ERROR('#5: var x = [0,1]; var arr = x.splice(0,-1,2,3); x[2] === 0. Actual: ' + (x[2]));
+}
+
+//CHECK#6
+if (x[3] !== 1) {
+ $ERROR('#6: var x = [0,1]; var arr = x.splice(0,-1,2,3); x[3] === 1. Actual: ' + (x[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T4.js
new file mode 100644
index 000000000..edf565843
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T4.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.3_T4;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is negative, use 0;
+ * @description: -length = -start < deleteCount < 0, itemCount > 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(2,-1,2,3);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(2,-1,2,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(2,-1,2,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 4) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(2,-1,2,3); x.length === 4. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(2,-1,2,3); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(2,-1,2,3); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+if (x[2] !== 2) {
+ $ERROR('#5: var x = [0,1]; var arr = x.splice(2,-1,2,3); x[2] === 2. Actual: ' + (x[2]));
+}
+
+//CHECK#6
+if (x[3] !== 3) {
+ $ERROR('#6: var x = [0,1]; var arr = x.splice(2,-1,2,3); x[3] === 3. Actual: ' + (x[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T5.js
new file mode 100644
index 000000000..2062edb1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.3_T5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.3_T5;
+ * @section: 15.4.4.12;
+ * @assertion: If start is positive, use min(start, length).
+ * If deleteCount is negative, use 0;
+ * @description: -start < -length < deleteCount < 0, itemCount > 0;
+*/
+
+var x = [0,1];
+var arr = x.splice(3,-1,2,3);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(3,-1,2,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(3,-1,2,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 4) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(3,-1,2,3); x.length === 4. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(3,-1,2,3); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(3,-1,2,3); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+if (x[2] !== 2) {
+ $ERROR('#5: var x = [0,1]; var arr = x.splice(3,-1,2,3); x[2] === 2. Actual: ' + (x[2]));
+}
+
+//CHECK#6
+if (x[3] !== 3) {
+ $ERROR('#6: var x = [0,1]; var arr = x.splice(3,-1,2,3); x[3] === 3. Actual: ' + (x[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T1.js
new file mode 100644
index 000000000..134eb8c8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.4_T1;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: length = -start > deleteCount > 0, itemCount = 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(-4,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(-4,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(-4,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(-4,3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(-4,3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(-4,3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(-4,3); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(-4,3); x[0] === 3. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T2.js
new file mode 100644
index 000000000..5f6976cc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.4_T2;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: length = -start > deleteCount > 0, itemCount > 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(-4,3,4,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(-4,3,4,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(-4,3,4,5); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(-4,3,4,5); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(-4,3,4,5); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(-4,3,4,5); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(-4,3,4,5); x.length === 3. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 4) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(-4,3,4,5); x[0] === 4. Actual: ' + (x[0]));
+}
+
+//CHECK#8
+if (x[1] !== 5) {
+ $ERROR('#8: var x = [0,1,2,3]; var arr = x.splice(-4,3,4,5); x[1] === 5. Actual: ' + (x[1]));
+}
+
+//CHECK#9
+if (x[2] !== 3) {
+ $ERROR('#9: var x = [0,1,2,3]; var arr = x.splice(-4,3,4,5); x[2] === 3. Actual: ' + (x[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T3.js
new file mode 100644
index 000000000..6e5d59912
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T3.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.4_T3;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: -start > length = deleteCount > 0, itemCount = 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(-5,4);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(-5,4); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 4) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(-5,4); arr.length === 4. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(-5,4); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(-5,4); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(-5,4); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(-5,4); arr[3] === 3. Actual: ' + (arr[3]));
+}
+
+//CHECK#7
+if (x.length !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(-5,4); x.length === 0. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T4.js
new file mode 100644
index 000000000..cd2417bf7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.4_T4;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: length > -start = deleteCount > 0, itemCount > 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(-3,3,4,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(-3,3,4,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(-3,3,4,5); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 1) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(-3,3,4,5); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 2) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(-3,3,4,5); arr[1] === 2. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 3) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(-3,3,4,5); arr[2] === 3. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(-3,3,4,5); x.length === 3. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(-3,3,4,5); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#8
+if (x[1] !== 4) {
+ $ERROR('#8: var x = [0,1,2,3]; var arr = x.splice(-3,3,4,5); x[1] === 4. Actual: ' + (x[1]));
+}
+
+//CHECK#9
+if (x[2] !== 5) {
+ $ERROR('#9: var x = [0,1,2,3]; var arr = x.splice(-3,3,4,5); x[2] === 5. Actual: ' + (x[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T5.js
new file mode 100644
index 000000000..baaba3faa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.4_T5;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: -start > deleteCount > length > 0, itemCount = 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(-9,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(-9,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 4) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(-9,5); arr.length === 4. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(-9,5); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(-9,5); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(-9,5); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(-9,5); arr[3] === 3. Actual: ' + (arr[3]));
+}
+
+//CHECK#7
+if (x.length !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(-9,5); x.length === 0. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T6.js
new file mode 100644
index 000000000..fee2e7463
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.4_T6.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.4_T6;
+ * @section: 15.4.4.12;
+ * @assertion: If start is negative, use max(start + length, 0).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+ * @description: length = deleteCount > -start > 0, itemCount > 0;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(-3,4,4,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(-3,4,4,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(-3,4,4,5); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 1) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(-3,4,4,5); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 2) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(-3,4,4,5); arr[1] === 2. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 3) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(-3,4,4,5); arr[2] === 3. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(-3,4,4,5); x.length === 3. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(-3,4,4,5); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#8
+if (x[1] !== 4) {
+ $ERROR('#8: var x = [0,1,2,3]; var arr = x.splice(-3,4,4,5); x[1] === 4. Actual: ' + (x[1]));
+}
+
+//CHECK#9
+if (x[2] !== 5) {
+ $ERROR('#9: var x = [0,1,2,3]; var arr = x.splice(-3,4,4,5); x[2] === 5. Actual: ' + (x[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.5_T1.js
new file mode 100644
index 000000000..dbb61c191
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.5_T1.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.5_T1;
+ * @section: 15.4.4.12;
+ * @assertion: Splice with undefined arguments;
+ * @description: start === undefined, end === undefined;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(undefined, undefined);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(undefined, undefined); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(undefined, undefined); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (x.length !== 4) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(undefined, undefined); x.length === 4. Actual: ' + (x.length));
+}
+
+//CHECK#4
+if (x[0] !== 0) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(undefined, undefined); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#5
+if (x[1] !== 1) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(undefined, undefined); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#6
+if (x[2] !== 2) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(undefined, undefined); x[2] === 2. Actual: ' + (x[2]));
+}
+
+//CHECK#7
+if (x[3] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(undefined, undefined); x[3] === 3. Actual: ' + (x[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.5_T2.js
new file mode 100644
index 000000000..039393669
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A1.5_T2.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A1.5_T2;
+ * @section: 15.4.4.12;
+ * @assertion: Splice with undefined arguments;
+ * @description: end === undefined;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(1,undefined);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(1,undefined); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(1,undefined); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (x.length !== 4) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(1,undefined); x.length === 4. Actual: ' + (x.length));
+}
+
+//CHECK#4
+if (x[0] !== 0) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(1,undefined); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#5
+if (x[1] !== 1) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(1,undefined); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#6
+if (x[2] !== 2) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(1,undefined); x[2] === 2. Actual: ' + (x[2]));
+}
+
+//CHECK#7
+if (x[3] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(1,undefined); x[3] === 3. Actual: ' + (x[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T1.js
new file mode 100644
index 000000000..7f72adc4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T1.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2.1_T1;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from start;
+ * @description: start is not integer;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(1.5,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(1.5,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(1.5,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 1) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(1.5,3); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 2) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(1.5,3); arr[1] === 2. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 3) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(1.5,3); arr[2] === 3. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(1.5,3); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(1.5,3); x[0] === 0. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T2.js
new file mode 100644
index 000000000..cb2d9bc08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T2.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2.1_T2;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from start;
+ * @description: start = NaN;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(NaN,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(NaN,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(NaN,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(NaN,3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(NaN,3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(NaN,3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(NaN,3); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(NaN,3); x[0] === 3. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T3.js
new file mode 100644
index 000000000..d33433849
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T3.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2.1_T3;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from start;
+ * @description: start = Infinity;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(Number.POSITIVE_INFINITY,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(Number.POSITIVE_INFINITY,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(Number.POSITIVE_INFINITY,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var x = x.splice(Number.POSITIVE_INFINITY,3); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var x = x.splice(Number.POSITIVE_INFINITY,3); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+if (x[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var x = x.splice(Number.POSITIVE_INFINITY,3); x[2] === 2. Actual: ' + (x[2]));
+}
+
+//CHECK#6
+if (x[3] !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var x = x.splice(Number.POSITIVE_INFINITY,3); x[3] === 3. Actual: ' + (x[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T4.js
new file mode 100644
index 000000000..8ece1cad0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T4.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2.1_T4;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from start;
+ * @description: start = -Infinity;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(Number.NEGATIVE_INFINITY,3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(Number.NEGATIVE_INFINITY,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(Number.NEGATIVE_INFINITY,3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(Number.NEGATIVE_INFINITY,3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(Number.NEGATIVE_INFINITY,3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(Number.NEGATIVE_INFINITY,3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(Number.NEGATIVE_INFINITY,3); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(Number.NEGATIVE_INFINITY,3); x[0] === 3. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T5.js
new file mode 100644
index 000000000..ddd3c6ae8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.1_T5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2.1_T5;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from start;
+ * @description: ToInteger use ToNumber;
+ * @description: ToInteger use ToNumber;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice({valueOf: function() {return 0}, toString: function() {return 3}},3);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice({valueOf: function() {return 0}, toString: function() {return 3}},3); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice({valueOf: function() {return 0}, toString: function() {return 3}},3); x[0] === 3. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T1.js
new file mode 100644
index 000000000..6f7ed48da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T1.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2.2_T1;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from deleteCount;
+ * @description: deleteCount is not integer;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(1,3.5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(1,3.5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(1,3.5); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 1) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(1,3.5); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 2) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(1,3.5); arr[1] === 2. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 3) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(1,3.5); arr[2] === 3. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(1,3.5); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(1,3.5); x[0] === 0. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T2.js
new file mode 100644
index 000000000..6d6f782fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_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.
+
+/**
+ * @name: S15.4.4.12_A2.2_T2;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from deleteCount;
+ * @description: deleteCount = NaN;
+*/
+
+var x = [0,1];
+var arr = x.splice(0,NaN);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(0,NaN); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(0,NaN); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 2) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(0,NaN); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(0,NaN); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(0,NaN); x[1] === 1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T3.js
new file mode 100644
index 000000000..4446d254c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T3.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2.2_T3;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from deleteCount;
+ * @description: deleteCount = Infinity;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(0,Number.POSITIVE_INFINITY);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(0,Number.POSITIVE_INFINITY); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 4) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(0,Number.POSITIVE_INFINITY); arr.length === 4. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(0,Number.POSITIVE_INFINITY); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(0,Number.POSITIVE_INFINITY); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(0,Number.POSITIVE_INFINITY); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (arr[3] !== 3) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(0,Number.POSITIVE_INFINITY); arr[3] === 3. Actual: ' + (arr[3]));
+}
+
+//CHECK#7
+if (x.length !== 0) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(0,Number.POSITIVE_INFINITY); x.length === 0. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T4.js
new file mode 100644
index 000000000..401f55545
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2.2_T4;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from deleteCount;
+ * @description: deleteCount = -Infinity;
+*/
+
+var x = [0,1];
+var arr = x.splice(0,Number.NEGATIVE_INFINITY);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.splice(0,Number.NEGATIVE_INFINITY); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.splice(0,Number.NEGATIVE_INFINITY); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (x.length !== 2) {
+ $ERROR('#2: var x = [0,1]; var arr = x.splice(0,Number.NEGATIVE_INFINITY); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: var x = [0,1]; var arr = x.splice(0,Number.NEGATIVE_INFINITY); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: var x = [0,1]; var arr = x.splice(0,Number.NEGATIVE_INFINITY); x[1] === 1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T5.js
new file mode 100644
index 000000000..556f65d6d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2.2_T5.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2.2_T5;
+ * @section: 15.4.4.12;
+ * @assertion: Operator use ToInteger from deleteCount;
+ * @description: ToInteger use ToNumber;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(0,{valueOf: function() {return 3}, toString: function() {return 0}});
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+if (x[0] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); x[0] === 3. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T1.js
new file mode 100644
index 000000000..3d3ed443d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T1.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2_T1;
+ * @section: 15.4.4.12;
+ * @assertion: The splice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If start is positive, use min(start, length).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+*/
+
+var obj = {0:0,1:1,2:2,3:3};
+obj.length = 4;
+obj.splice = Array.prototype.splice;
+var arr = obj.splice(0,3,4,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (obj.length !== 3) {
+ $ERROR('#6: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); obj.length === 3. Actual: ' + (obj.length));
+}
+
+//CHECK#7
+if (obj[0] !== 4) {
+ $ERROR('#7: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); obj[0] === 4. Actual: ' + (obj[0]));
+}
+
+//CHECK#8
+if (obj[1] !== 5) {
+ $ERROR('#8: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); obj[1] === 5. Actual: ' + (obj[1]));
+}
+
+//CHECK#9
+if (obj[2] !== 3) {
+ $ERROR('#9: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); obj[2] === 3. Actual: ' + (obj[2]));
+}
+
+//CHECK#10
+if (obj[3] !== undefined) {
+ $ERROR('#10: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(0,3,4,5); obj[3] === undefined. Actual: ' + (obj[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T2.js
new file mode 100644
index 000000000..59b066368
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2_T2;
+ * @section: 15.4.4.12;
+ * @assertion: The splice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If start is negative, use max(start + length, 0).
+ * If deleteCount is negative, use 0;
+*/
+
+var obj = {0:0,1:1};
+obj.length = 2;
+obj.splice = Array.prototype.splice;
+var arr = obj.splice(-2,-1,2,3);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(-2,-1,2,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(-2,-1,2,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (obj.length !== 4) {
+ $ERROR('#2: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(-2,-1,2,3); obj.length === 4. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== 2) {
+ $ERROR('#3: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(-2,-1,2,3); obj[0] === 2. Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== 3) {
+ $ERROR('#4: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(-2,-1,2,3); obj[1] === 3. Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[2] !== 0) {
+ $ERROR('#5: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(-2,-1,2,3); obj[2] === 0. Actual: ' + (obj[2]));
+}
+
+//CHECK#6
+if (obj[3] !== 1) {
+ $ERROR('#6: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(-2,-1,2,3); obj[3] === 1. Actual: ' + (obj[3]));
+}
+
+//CHECK#7
+if (obj[4] !== undefined) {
+ $ERROR('#7: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(-2,-1,2,3); obj[4] === undefined. Actual: ' + (obj[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T3.js
new file mode 100644
index 000000000..8e6d0402d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T3.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2_T3;
+ * @section: 15.4.4.12;
+ * @assertion: The splice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If start is positive, use min(start, length).
+ * If deleteCount is negative, use 0;
+*/
+
+var obj = {0:0,1:1};
+obj.length = 2;
+obj.splice = Array.prototype.splice;
+var arr = obj.splice(0,-1,2,3);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(0,-1,2,3); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(0,-1,2,3); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (obj.length !== 4) {
+ $ERROR('#2: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(0,-1,2,3); obj.length === 4. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== 2) {
+ $ERROR('#3: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(0,-1,2,3); obj[0] === 2. Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== 3) {
+ $ERROR('#4: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(0,-1,2,3); obj[1] === 3. Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[2] !== 0) {
+ $ERROR('#5: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(0,-1,2,3); obj[2] === 0. Actual: ' + (obj[2]));
+}
+
+//CHECK#6
+if (obj[3] !== 1) {
+ $ERROR('#6: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(0,-1,2,3); obj[3] === 1. Actual: ' + (obj[3]));
+}
+
+//CHECK#7
+if (obj[4] !== undefined) {
+ $ERROR('#7: var obj = {0:0,1:1}; obj.length = 2; obj.splice = Array.prototype.splice; var arr = obj.splice(0,-1,2,3); obj[4] === undefined. Actual: ' + (obj[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T4.js
new file mode 100644
index 000000000..6443c4db4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A2_T4.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A2_T4;
+ * @section: 15.4.4.12;
+ * @assertion: The splice function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If start is negative, use max(start + length, 0).
+ * If deleteCount is positive, use min(deleteCount, length - start);
+*/
+
+var obj = {0:0,1:1,2:2,3:3};
+obj.length = 4;
+obj.splice = Array.prototype.splice;
+var arr = obj.splice(-4,3,4,5);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#2
+if (arr.length !== 3) {
+ $ERROR('#2: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); arr.length === 3. Actual: ' + (arr.length));
+}
+
+//CHECK#3
+if (arr[0] !== 0) {
+ $ERROR('#3: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (arr[1] !== 1) {
+ $ERROR('#4: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#5
+if (arr[2] !== 2) {
+ $ERROR('#5: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#6
+if (obj.length !== 3) {
+ $ERROR('#6: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); obj.length === 3. Actual: ' + (obj.length));
+}
+
+//CHECK#7
+if (obj[0] !== 4) {
+ $ERROR('#7: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); obj[0] === 4. Actual: ' + (obj[0]));
+}
+
+//CHECK#8
+if (obj[1] !== 5) {
+ $ERROR('#8: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); obj[1] === 5. Actual: ' + (obj[1]));
+}
+
+//CHECK#9
+if (obj[2] !== 3) {
+ $ERROR('#9: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); obj[2] === 3. Actual: ' + (obj[2]));
+}
+
+//CHECK#10
+if (obj[3] !== undefined) {
+ $ERROR('#10: var obj = {0:0,1:1,2:2,3:3}; obj.length = 4; obj.splice = Array.prototype.splice; var arr = obj.splice(-4,3,4,5); obj[3] === undefined. Actual: ' + (obj[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T1.js
new file mode 100644
index 000000000..5bd93a57b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_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.
+
+/**
+ * @name: S15.4.4.12_A3_T1;
+ * @section: 15.4.4.12;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length is arbitrarily;
+*/
+
+var obj = {};
+obj.splice = Array.prototype.splice;
+obj[0] = "x";
+obj[4294967295] = "y";
+obj.length = 4294967296;
+var arr = obj.splice(4294967295, 1);
+
+//CHECK#1
+if (arr.length !== 0) {
+ $ERROR('#1: var obj = {}; obj.splice = Array.prototype.splice; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; var arr = obj.splice(4294967295,1); arr.length === 0. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (obj.length !== 0) {
+ $ERROR('#2: var obj = {}; obj.splice = Array.prototype.splice; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; var arr = obj.splice(4294967295,1); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.splice = Array.prototype.splice; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; var arr = obj.splice(4294967295,1); obj[0] === "x". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[4294967295] !== "y") {
+ $ERROR('#4: var obj = {}; obj.splice = Array.prototype.splice; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; var arr = obj.splice(4294967295,1); obj[4294967295] === "y". Actual: ' + (obj[4294967295]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T2.js
new file mode 100644
index 000000000..bac99a252
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A3_T2;
+ * @section: 15.4.4.12;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length is arbitrarily;
+*/
+
+var obj = {};
+obj.splice = Array.prototype.splice;
+obj[0] = "x";
+obj.length = 4294967297;
+var arr = obj.splice(0,1);
+
+//CHECK#1
+if (arr.length !== 1) {
+ $ERROR('#1: var obj = {}; obj.splice = Array.prototype.splice; obj[0] = "x"; obj[0] = "y"; obj.length = 4294967297; var arr = obj.splice(0,1); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (arr[0] !== "x") {
+ $ERROR('#2: var obj = {}; obj.splice = Array.prototype.splice; obj[0] = "x"; obj[0] = "y"; obj.length = 1; var arr = obj.splice(0,1); arr[0] === "x". Actual: ' + (arr[0]));
+}
+
+//CHECK#3
+if (obj.length !== 0) {
+ $ERROR('#3: var obj = {}; obj.splice = Array.prototype.splice; obj[0] = "x"; obj[0] = "y"; obj.length = 1; var arr = obj.splice(0,1); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#4
+if (obj[0] !== undefined) {
+ $ERROR('#4: var obj = {}; obj.splice = Array.prototype.splice; obj[0] = "x"; obj[0] = "y"; obj.length = 1; var arr = obj.splice(0,1); obj[0] === undefined. Actual: ' + (obj[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T3.js
new file mode 100644
index 000000000..1b66eed28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A3_T3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A3_T3;
+ * @section: 15.4.4.12;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length is arbitrarily;
+*/
+
+var obj = {};
+obj.splice = Array.prototype.splice;
+obj[4294967294] = "x";
+obj.length = -1;
+var arr = obj.splice(4294967294,1);
+
+//CHECK#1
+if (arr.length !== 1) {
+ $ERROR('#1: var obj = {}; obj.splice = Array.prototype.splice; obj[4294967294] = "x"; obj.length = -1; var arr = obj.splice(4294967294,1); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (arr[0] !== "x") {
+ $ERROR('#2: var obj = {}; obj.splice = Array.prototype.splice; obj[4294967294] = "x"; obj.length = 1; var arr = obj.splice(4294967294,1); arr[0] === "x". Actual: ' + (arr[0]));
+}
+
+//CHECK#3
+if (obj.length !== 4294967294) {
+ $ERROR('#3: var obj = {}; obj.splice = Array.prototype.splice; obj[4294967294] = "x"; obj.length = 1; var arr = obj.splice(4294967294,1); obj.length === 4294967294. Actual: ' + (obj.length));
+}
+
+//CHECK#4
+if (obj[4294967294] !== undefined) {
+ $ERROR('#4: var obj = {}; obj.splice = Array.prototype.splice; obj[4294967294] = "x"; obj.length = 1; var arr = obj.splice(4294967294,1); obj[4294967294] === undefined. Actual: ' + (obj[4294967294]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T1.js
new file mode 100644
index 000000000..3e3e3a427
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T1.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A4_T1;
+ * @section: 15.4.4.12, 8.6.2.1;
+ * @assertion: [[Get]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[1] = -1;
+var x = [0,1];
+var arr = x.splice(1,1);
+
+//CHECK#1
+if (arr.length !== 1) {
+ $ERROR('#1: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (arr[0] !== 1) {
+ $ERROR('#2: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#3
+if (arr[1] !== -1) {
+ $ERROR('#3: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1); arr[1] === -1. Actual: ' + (arr[1]));
+}
+
+//CHECK#4
+if (x.length !== 1) {
+ $ERROR('#4: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#5
+if (x[0] !== 0) {
+ $ERROR('#5: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== -1) {
+ $ERROR('#6: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1); x[1] === -1. Actual: ' + (x[1]));
+}
+
+
+Object.prototype[1] = -1;
+Object.prototype.length = 2;
+Object.prototype.splice = Array.prototype.splice;
+x = {0:0, 1:1};
+var arr = x.splice(1,1);
+
+//CHECK#7
+if (arr.length !== 1) {
+ $ERROR('#7: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#8
+if (arr[0] !== 1) {
+ $ERROR('#8: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#9
+if (arr[1] !== -1) {
+ $ERROR('#9: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1); arr[1] === -1. Actual: ' + (arr[1]));
+}
+
+//CHECK#10
+if (x.length !== 1) {
+ $ERROR('#10: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#11
+if (x[0] !== 0) {
+ $ERROR('#11: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#12
+if (x[1] !== -1) {
+ $ERROR('#12: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1); x[1] === -1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T2.js
new file mode 100644
index 000000000..dd6a814bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A4_T2;
+ * @section: 15.4.4.12, 8.6.2.1;
+ * @assertion: [[Get]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[1] = -1;
+var x = [0,1];
+var arr = x.splice(1,1,2);
+
+//CHECK#1
+if (arr.length !== 1) {
+ $ERROR('#1: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1,2); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (arr[0] !== 1) {
+ $ERROR('#2: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1,2); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#3
+if (arr[1] !== -1) {
+ $ERROR('#3: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1,2); arr[1] === -1. Actual: ' + (arr[1]));
+}
+
+//CHECK#4
+if (x.length !== 2) {
+ $ERROR('#4: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1,2); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#5
+if (x[0] !== 0) {
+ $ERROR('#5: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1,2); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== 2) {
+ $ERROR('#6: Array.prototype[1] = -1; x = [0,1]; var arr = x.splice(1,1,2); x[1] === 2. Actual: ' + (x[1]));
+}
+
+
+Object.prototype[1] = -1;
+Object.prototype.length = 2;
+Object.prototype.splice = Array.prototype.splice;
+x = {0:0, 1:1};
+var arr = x.splice(1,1,2);
+
+//CHECK#7
+if (arr.length !== 1) {
+ $ERROR('#7: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1,2); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#8
+if (arr[0] !== 1) {
+ $ERROR('#8: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1,2); arr[0] === 1. Actual: ' + (arr[0]));
+}
+
+//CHECK#9
+if (arr[1] !== -1) {
+ $ERROR('#9: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1,2); arr[1] === -1. Actual: ' + (arr[1]));
+}
+
+//CHECK#10
+if (x.length !== 2) {
+ $ERROR('#10: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1,2); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#11
+if (x[0] !== 0) {
+ $ERROR('#11: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1,2); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#12
+if (x[1] !== 2) {
+ $ERROR('#12: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.splice = Array.prototype.splice; x = {0:0, 1:1}; var arr = x.splice(1,1,2); x[1] === 2. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T3.js
new file mode 100644
index 000000000..aa1dd3cb2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A4_T3.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_A4_T3;
+ * @section: 15.4.4.12, 8.6.2.1;
+ * @assertion: [[Get]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[0] = -1;
+var x = [];
+x.length = 1;
+var arr = x.splice(0,1);
+
+//CHECK#1
+if (arr.length !== 1) {
+ $ERROR('#1: Array.prototype[0] = -1; x = []; x.length = 1; var arr = x.splice(0,1); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#2
+if (arr[0] !== -1) {
+ $ERROR('#2: Array.prototype[0] = -1; x = []; x.length = 1; var arr = x.splice(0,1); arr[0] === -1. Actual: ' + (arr[0]));
+}
+
+delete arr[0];
+
+//CHECK#3
+if (arr[0] !== -1) {
+ $ERROR('#3: Array.prototype[0] = -1; x = []; x.length = 1; var arr = x.splice(0,1); delete arr[0]; arr[0] === -1. Actual: ' + (arr[0]));
+}
+
+//CHECK#4
+if (x.length !== 0) {
+ $ERROR('#4: Array.prototype[0] = -1; x = []; x.length = 1; var arr = x.splice(0,1); x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#5
+if (x[0] !== -1) {
+ $ERROR('#5: Array.prototype[0] = -1; x = []; x.length = 1; var arr = x.splice(0,1); x[0] === -1. Actual: ' + (x[0]));
+}
+
+Object.prototype[0] = -1;
+Object.prototype.length = 1;
+Object.prototype.splice = Array.prototype.splice;
+x = {};
+var arr = x.splice(0,1);
+
+//CHECK#6
+if (arr.length !== 1) {
+ $ERROR('#6: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.splice = Array.prototype.splice; x = {}; var arr = x.splice(0,1); arr.length === 1. Actual: ' + (arr.length));
+}
+
+//CHECK#7
+if (arr[0] !== -1) {
+ $ERROR('#7: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.splice = Array.prototype.splice; x = {}; var arr = x.splice(0,1); arr[0] === -1. Actual: ' + (arr[0]));
+}
+
+delete arr[0];
+
+//CHECK#8
+if (arr[0] !== -1) {
+ $ERROR('#8: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.splice = Array.prototype.splice; x = {}; var arr = x.splice(0,1); delete arr[0]; arr[0] === -1. Actual: ' + (arr[0]));
+}
+
+//CHECK#9
+if (x.length !== 0) {
+ $ERROR('#9: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.splice = Array.prototype.splice; x = {}; var arr = x.splice(0,1); x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#10
+if (x[0] !== -1) {
+ $ERROR('#10: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.splice = Array.prototype.splice; x = {}; var arr = x.splice(0,1); x[0] === -1. Actual: ' + (x[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.1.js
new file mode 100644
index 000000000..9705624ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.12_A5.1;
+* @section: 15.4.4.12, 15.2.4.7, 12.6.4;
+* @assertion: The length property of splice has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.splice.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.splice.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.splice.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.splice){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.splice) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.2.js
new file mode 100644
index 000000000..952eb2354
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.12_A5.2;
+* @section: 15.4.4.12, 15.2.4.5, 11.4.1;
+* @assertion: The length property of splice has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.prototype.splice.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.splice.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.splice.hasOwnProperty('length')));
+}
+
+delete Array.prototype.splice.length;
+
+//CHECK#2
+if (Array.prototype.splice.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.splice.length; Array.prototype.splice.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.splice.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.splice.length === undefined) {
+ $ERROR('#3: delete Array.prototype.splice.length; Array.prototype.splice.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.3.js
new file mode 100644
index 000000000..2e42e6454
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.12_A5.3;
+* @section: 15.4.4.12;
+* @assertion: The length property of splice has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.splice.length;
+Array.prototype.splice.length = Infinity;
+if (Array.prototype.splice.length !== x) {
+ $ERROR('#1: x = Array.prototype.splice.length; Array.prototype.splice.length = Infinity; Array.prototype.splice.length === x. Actual: ' + (Array.prototype.splice.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.4.js
new file mode 100644
index 000000000..17db862fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.12_A5.4;
+* @section: 15.4.4.12;
+* @assertion: The length property of splice is 2;
+* @description: splice.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.splice.length !== 2) {
+ $ERROR('#1: Array.prototype.splice.length === 2. Actual: ' + (Array.prototype.splice.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.5.js
new file mode 100644
index 000000000..43e473cbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.12_A5.5;
+* @section: 15.4.4.12, 15.2.4.7, 12.6.4;
+* @assertion: The splice property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('splice') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'splice\') === false. Actual: ' + (Array.propertyIsEnumerable('splice')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "splice") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "splice") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.6.js
new file mode 100644
index 000000000..9b4aef82d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.12_A5.6;
+* @section: 15.4.4.12;
+* @assertion: The splice property of Array has not prototype property;
+* @description: Checking Array.prototype.splice.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.splice.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.splice.prototype === undefined. Actual: ' + (Array.prototype.splice.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.7.js
new file mode 100644
index 000000000..26e419e5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.12_Array_prototype_splice/S15.4.4.12_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.12_A5.7;
+* @section: 15.4.4.12, 11.2.2;
+* @assertion: The splice property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.splice();
+ $ERROR('#1.1: new Array.prototype.splice() throw TypeError. Actual: ' + (new Array.prototype.splice()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.splice() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A1_T1.js
new file mode 100644
index 000000000..60d3dc9b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A1_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.13_A1_T1;
+ * @section: 15.4.4.13;
+ * @assertion: The arguments are prepended to the start of the array, such that
+ * their order within the array is the same as the order in which they appear in
+ * the argument list;
+ * @description: Checking case when unsift is given no arguments or one argument;
+*/
+
+//CHECK#1
+var x = new Array();
+var unshift = x.unshift(1);
+if (unshift !== 1) {
+ $ERROR('#1: x = new Array(); x.unshift(1) === 1. Actual: ' + (unshift));
+}
+
+//CHECK#2
+if (x[0] !== 1) {
+ $ERROR('#2: x = new Array(); x.unshift(1); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+var unshift = x.unshift();
+if (unshift !== 1) {
+ $ERROR('#3: x = new Array(); x.unshift(1); x.unshift() === 1. Actual: ' + (unshift));
+}
+
+//CHECK#4
+if (x[1] !== undefined) {
+ $ERROR('#4: x = new Array(); x.unshift(1); x.unshift(); x[1] === unedfined. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+var unshift = x.unshift(-1);
+if (unshift !== 2) {
+ $ERROR('#5: x = new Array(); x.unshift(1); x.unshift(); x.unshift(-1) === 2. Actual: ' + (unshift));
+}
+
+//CHECK#6
+if (x[0] !== -1) {
+ $ERROR('#6: x = new Array(); x.unshift(1); x.unshift(-1); x[0] === -1. Actual: ' + (x[0]));
+}
+
+//CHECK#7
+if (x[1] !== 1) {
+ $ERROR('#7: x = new Array(); x.unshift(1); x.unshift(-1); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#8
+if (x.length !== 2) {
+ $ERROR('#8: x = new Array(); x.unshift(1); x.unshift(); x.unshift(-1); x.length === 2. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A1_T2.js
new file mode 100644
index 000000000..05b32b9c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A1_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.13_A1_T2;
+ * @section: 15.4.4.13;
+ * @assertion: The arguments are prepended to the start of the array, such that
+ * their order within the array is the same as the order in which they appear in
+ * the argument list;
+ * @description: Checking case when unsift is given many arguments;
+*/
+
+//CHECK#1
+var x = [];
+if (x.length !== 0) {
+ $ERROR('#1: x = []; x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#2
+x[0] = 0;
+var unshift = x.unshift(true, Number.POSITIVE_INFINITY, "NaN", "1", -1);
+if (unshift !== 6) {
+ $ERROR('#2: x = []; x[0] = 0; x.unshift(true, Number.POSITIVE_INFINITY, "NaN", "1", -1) === 6. Actual: ' + (unshift));
+}
+
+//CHECK#3
+if (x[5] !== 0) {
+ $ERROR('#3: x = []; x[0] = 0; x.unshift(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[5] === 0. Actual: ' + (x[5]));
+}
+
+//CHECK#4
+if (x[0] !== true) {
+ $ERROR('#4: x = []; x[0] = 0; x.unshift(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[0] === true. Actual: ' + (x[0]));
+}
+
+//CHECK#5
+if (x[1] !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5: x = []; x[0] = 0; x.unshift(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[1] === Number.POSITIVE_INFINITY. Actual: ' + (x[1]));
+}
+
+//CHECK#6
+if (x[2] !== "NaN") {
+ $ERROR('#6: x = []; x[0] = 0; x.unshift(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[2] === "NaN". Actual: ' + (x[2]));
+}
+
+//CHECK#7
+if (x[3] !== "1") {
+ $ERROR('#7: x = []; x[0] = 0; x.unshift(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[3] === "1". Actual: ' + (x[3]));
+}
+
+//CHECK#8
+if (x[4] !== -1) {
+ $ERROR('#8: x = []; x[0] = 0; x.unshift(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[4] === -1. Actual: ' + (x[4]));
+}
+
+//CHECK#9
+if (x.length !== 6) {
+ $ERROR('#9: x = []; x[0] = 0; x.unshift(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x.length === 6. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T1.js
new file mode 100644
index 000000000..abb88dba6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T1.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.13_A2_T1;
+ * @section: 15.4.4.13;
+ * @assertion: The unshift function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: The arguments are prepended to the start of the array, such that
+ * their order within the array is the same as the order in which they appear in
+ * the argument list;
+*/
+
+var obj = {};
+obj.unshift = Array.prototype.unshift;
+
+if (obj.length !== undefined) {
+ $ERROR('#0: var obj = {}; obj.length === undefined. Actual: ' + (obj.length));
+} else {
+ //CHECK#1
+ var unshift = obj.unshift(-1);
+ if (unshift !== 1) {
+ $ERROR('#1: var obj = {}; obj.unshift = Array.prototype.unshift; obj.unshift(-1) === 1. Actual: ' + (unshift));
+ }
+ //CHECK#2
+ if (obj.length !== 1) {
+ $ERROR('#2: var obj = {}; obj.unshift = Array.prototype.unshift; obj.unshift(-1); obj.length === 1. Actual: ' + (obj.length));
+ }
+ //CHECK#3
+ if (obj["0"] !== -1) {
+ $ERROR('#3: var obj = {}; obj.unshift = Array.prototype.unshift; obj.unshift(-1); obj["0"] === -1. Actual: ' + (obj["0"]));
+ }
+}
+
+//CHECK#4
+obj.length = undefined;
+var unshift = obj.unshift(-4);
+if (unshift !== 1) {
+ $ERROR('#4: var obj = {}; obj.length = undefined; obj.unshift = Array.prototype.unshift; obj.unshift(-4) === 1. Actual: ' + (unshift));
+}
+
+//CHECK#5
+if (obj.length !== 1) {
+ $ERROR('#5: var obj = {}; obj.length = undefined; obj.unshift = Array.prototype.unshift; obj.unshift(-4); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#6
+if (obj["0"] !== -4) {
+ $ERROR('#6: var obj = {}; obj.length = undefined; obj.unshift = Array.prototype.unshift; obj.unshift(-4); obj["0"] === -4. Actual: ' + (obj["0"]));
+}
+
+//CHECK#7
+obj.length = null
+var unshift = obj.unshift(-7);
+if (unshift !== 1) {
+ $ERROR('#7: var obj = {}; obj.length = null; obj.unshift = Array.prototype.unshift; obj.unshift(-7) === 1. Actual: ' + (unshift));
+}
+
+//CHECK#8
+if (obj.length !== 1) {
+ $ERROR('#8: var obj = {}; obj.length = null; obj.unshift = Array.prototype.unshift; obj.unshift(-7); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#9
+if (obj["0"] !== -7) {
+ $ERROR('#9: var obj = {}; obj.length = null; obj.unshift = Array.prototype.unshift; obj.unshift(-7); obj["0"] === -7. Actual: ' + (obj["0"]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T2.js
new file mode 100644
index 000000000..5c6fa0ccb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T2.js
@@ -0,0 +1,117 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.13_A2_T2;
+ * @section: 15.4.4.13;
+ * @assertion: The unshift function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: The arguments are prepended to the start of the array, such that
+ * their order within the array is the same as the order in which they appear in
+ * the argument list;
+*/
+
+var obj = {};
+obj.unshift = Array.prototype.unshift;
+
+//CHECK#1
+obj.length = NaN;
+var unshift = obj.unshift(-1);
+if (unshift !== 1) {
+ $ERROR('#1: var obj = {}; obj.length = NaN; obj.unshift = Array.prototype.unshift; obj.unshift(-1) === 1. Actual: ' + (unshift));
+}
+
+//CHECK#2
+if (obj.length !== 1) {
+ $ERROR('#2: var obj = {}; obj.length = NaN; obj.unshift = Array.prototype.unshift; obj.unshift(-1); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj["0"] !== -1) {
+ $ERROR('#3: var obj = {}; obj.length = NaN; obj.unshift = Array.prototype.unshift; obj.unshift(-1); obj["0"] === -1. Actual: ' + (obj["0"]));
+}
+
+//CHECK#4
+obj.length = Number.POSITIVE_INFINITY;
+var unshift = obj.unshift(-4);
+if (unshift !== 1) {
+ $ERROR('#4: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.unshift = Array.prototype.unshift; obj.unshift(-4) === 1. Actual: ' + (unshift));
+}
+
+//CHECK#5
+if (obj.length !== 1) {
+ $ERROR('#6: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.unshift = Array.prototype.unshift; obj.unshift(-4); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#6
+if (obj["0"] !== -4) {
+ $ERROR('#6: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.unshift = Array.prototype.unshift; obj.unshift(-4); obj["0"] === -4. Actual: ' + (obj["0"]));
+}
+
+//CHECK#7
+obj.length = Number.NEGATIVE_INFINITY;
+var unshift = obj.unshift(-7);
+if (unshift !== 1) {
+ $ERROR('#7: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.unshift = Array.prototype.unshift; obj.unshift(-7) === 1. Actual: ' + (unshift));
+}
+
+//CHECK#8
+if (obj.length !== 1) {
+ $ERROR('#8: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.unshift = Array.prototype.unshift; obj.unshift(-7); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#9
+if (obj["0"] !== -7) {
+ $ERROR('#9: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.unshift = Array.prototype.unshift; obj.unshift(-7); obj["0"] === -7. Actual: ' + (obj["0"]));
+}
+
+//CHECK#10
+obj.length = 0.5;
+var unshift = obj.unshift(-10);
+if (unshift !== 1) {
+ $ERROR('#10: var obj = {}; obj.length = 0.5; obj.unshift = Array.prototype.unshift; obj.unshift(-10) === 1. Actual: ' + (unshift));
+}
+
+//CHECK#11
+if (obj.length !== 1) {
+ $ERROR('#11: var obj = {}; obj.length = 0.5; obj.unshift = Array.prototype.unshift; obj.unshift(-10); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#12
+if (obj["0"] !== -10) {
+ $ERROR('#12: var obj = {}; obj.length = 0.5; obj.unshift = Array.prototype.unshift; obj.unshift(-10); obj["0"] === -10. Actual: ' + (obj["0"]));
+}
+
+//CHECK#13
+obj.length = 1.5;
+var unshift = obj.unshift(-13);
+if (unshift !== 2) {
+ $ERROR('#13: var obj = {}; obj.length = 1.5; obj.unshift = Array.prototype.unshift; obj.unshift(-13) === 2. Actual: ' + (unshift));
+}
+
+//CHECK#14
+if (obj.length !== 2) {
+ $ERROR('#14: var obj = {}; obj.length = 1.5; obj.unshift = Array.prototype.unshift; obj.unshift(-13); obj.length === 2. Actual: ' + (obj.length));
+}
+
+//CHECK#15
+if (obj["0"] !== -13) {
+ $ERROR('#15: var obj = {}; obj.length = 1.5; obj.unshift = Array.prototype.unshift; obj.unshift(-13); obj["0"] === -13. Actual: ' + (obj["0"]));
+}
+
+//CHECK#16
+obj.length = new Number(0);
+var unshift = obj.unshift(-16);
+if (unshift !== 1) {
+ $ERROR('#16: var obj = {}; obj.length = new Number(0); obj.unshift = Array.prototype.unshift; obj.unshift(-16) === 1. Actual: ' + (unshift));
+}
+
+//CHECK#17
+if (obj.length !== 1) {
+ $ERROR('#17: var obj = {}; obj.length = new Number(0); obj.unshift = Array.prototype.unshift; obj.unshift(-16); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#18
+if (obj["0"] !== -16) {
+ $ERROR('#18: var obj = {}; obj.length = new Number(0); obj.unshift = Array.prototype.unshift; obj.unshift(-16); obj["0"] === -16. Actual: ' + (obj["0"]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T3.js
new file mode 100644
index 000000000..02b6b989d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A2_T3.js
@@ -0,0 +1,91 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.13_A2_T3;
+ * @section: 15.4.4.13;
+ * @assertion: The unshift function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Operator use ToNumber from length.
+ * If Type(value) is Object, evaluate ToPrimitive(value, Number);
+*/
+
+var obj = {};
+obj.unshift = Array.prototype.unshift;
+
+//CHECK#1
+obj.length = {valueOf: function() {return 3}};
+var unshift = obj.unshift();
+if (unshift !== 3) {
+ $ERROR('#1: obj.length = {valueOf: function() {return 3}} obj.unshift() === 3. Actual: ' + (unshift));
+}
+
+//CHECK#2
+obj.length = {valueOf: function() {return 3}, toString: function() {return 1}};
+var unshift = obj.unshift();
+if (unshift !== 3) {
+ $ERROR('#0: obj.length = {valueOf: function() {return 3}, toString: function() {return 1}} obj.unshift() === 3. Actual: ' + (unshift));
+}
+
+//CHECK#3
+obj.length = {valueOf: function() {return 3}, toString: function() {return {}}};
+var unshift = obj.unshift();
+if (unshift !== 3) {
+ $ERROR('#1: obj.length = {valueOf: function() {return 3}, toString: function() {return {}}} obj.unshift() === 3. Actual: ' + (unshift));
+}
+
+//CHECK#4
+try {
+ obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}};
+ var unshift = obj.unshift();
+ if (unshift !== 3) {
+ $ERROR('#4.1: obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}}; obj.unshift() === ",". Actual: ' + (unshift));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}}; obj.unshift() not throw "error"');
+ } else {
+ $ERROR('#4.3: obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}}; obj.unshift() not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+obj.length = {toString: function() {return 1}};
+var unshift = obj.unshift();
+if (unshift !== 1) {
+ $ERROR('#5: obj.length = {toString: function() {return 1}} obj.unshift() === 1. Actual: ' + (unshift));
+}
+
+//CHECK#6
+obj.length = {valueOf: function() {return {}}, toString: function() {return 1}}
+var unshift = obj.unshift();
+if (unshift !== 1) {
+ $ERROR('#6: obj.length = {valueOf: function() {return {}}, toString: function() {return 1}} obj.unshift() === 1. Actual: ' + (unshift));
+}
+
+//CHECK#7
+try {
+
+ obj.length = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ var unshift = obj.unshift();
+ $ERROR('#7.1: obj.length = {valueOf: function() {throw "error"}, toString: function() {return 1}}; obj.unshift() throw "error". Actual: ' + (unshift));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: obj.length = {valueOf: function() {throw "error"}, toString: function() {return 1}}; obj.unshift() throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+
+ obj.length = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var unshift = obj.unshift();
+ $ERROR('#8.1: obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.unshift() throw TypeError. Actual: ' + (unshift));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.unshift() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T1.js
new file mode 100644
index 000000000..1b38b6af8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_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.
+
+/**
+ * @name: S15.4.4.13_A3_T1;
+ * @section: 15.4.4.13;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967296;
+*/
+
+var obj = {};
+obj.unshift = Array.prototype.unshift;
+obj.length = 4294967296;
+
+//CHECK#1
+var unshift = obj.unshift("x", "y", "z");
+if (unshift !== 3) {
+ $ERROR('#1: var obj = {}; obj.unshift = Array.prototype.unshift; obj.length = 4294967296; obj.unshift("x", "y", "z") === 3. Actual: ' + (unshift));
+}
+
+//CHECK#2
+if (obj.length !== 3) {
+ $ERROR('#2: var obj = {}; obj.unshift = Array.prototype.unshift; obj.length = 4294967296; obj.unshift("x", "y", "z"); obj.length === 3. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.unshift = Array.prototype.unshift; obj.length = 4294967296; obj.unshift("x", "y", "z"); obj[0] === "x". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== "y") {
+ $ERROR('#4: var obj = {}; obj.unshift = Array.prototype.unshift; obj.length = 4294967296; obj.unshift("x", "y", "z"); obj[1] === "y". Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[2] !== "z") {
+ $ERROR('#5: var obj = {}; obj.unshift = Array.prototype.unshift; obj.length = 4294967296; obj.unshift("x", "y", "z"); obj[2] === "z". Actual: ' + (obj[2]));
+}
+
+var obj = {};
+obj.unshift = Array.prototype.unshift;
+obj.length = 4294967296;
+
+//CHECK#6
+var unshift = obj.unshift();
+if (unshift !== 0) {
+ $ERROR('#6: var obj = {}; obj.unshift = Array.prototype.unshift; obj.length = 4294967296; obj.unshift() === 0. Actual: ' + (unshift));
+}
+
+//CHECK#7
+if (obj.length !== 0) {
+ $ERROR('#7: var obj = {}; obj.unshift = Array.prototype.unshift; obj.length = 4294967296; obj.unshift(); obj.length === 0. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T2.js
new file mode 100644
index 000000000..c747947b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T2.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.13_A3_T2;
+ * @section: 15.4.4.13;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = -4294967295;
+*/
+
+var obj = {};
+obj.unshift = Array.prototype.unshift;
+obj[0] = "";
+obj.length = -4294967295;
+
+//CHECK#1
+var unshift = obj.unshift("x", "y", "z");
+if (unshift !== 4) {
+ $ERROR('#1: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = -4294967295; obj.unshift("x", "y", "z") === 4. Actual: ' + (unshift));
+}
+
+//CHECK#2
+if (obj.length !== 4) {
+ $ERROR('#2: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = -4294967295; obj.unshift("x", "y", "z"); obj.length === 4. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = -4294967295; obj.unshift("x", "y", "z"); obj[0] === "x". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== "y") {
+ $ERROR('#4: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = -4294967295; obj.unshift("x", "y", "z"); obj[1] === "y". Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[2] !== "z") {
+ $ERROR('#5: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = -4294967295; obj.unshift("x", "y", "z"); obj[2] === "z". Actual: ' + (obj[2]));
+}
+
+//CHECK#6
+if (obj[3] !== "") {
+ $ERROR('#6: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = -4294967295; obj.unshift("x", "y", "z"); obj[3] === "". Actual: ' + (obj[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T3.js
new file mode 100644
index 000000000..3bb0058e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A3_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.13_A3_T3;
+ * @section: 15.4.4.13;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967297;
+*/
+
+var obj = {};
+obj.unshift = Array.prototype.unshift;
+obj[0] = "";
+obj.length = 4294967297;
+
+//CHECK#1
+var unshift = obj.unshift("x", "y", "z");
+if (unshift !== 4) {
+ $ERROR('#1: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = 4294967297; obj.unshift("x", "y", "z") === 4. Actual: ' + (unshift));
+}
+
+//CHECK#2
+if (obj.length !== 4) {
+ $ERROR('#2: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = 4294967297; obj.unshift("x", "y", "z"); obj.length === 4. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = 4294967297; obj.unshift("x", "y", "z"); obj[0] === "x". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== "y") {
+ $ERROR('#4: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = 4294967297; obj.unshift("x", "y", "z"); obj[1] === "y". Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[2] !== "z") {
+ $ERROR('#5: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = 4294967297; obj.unshift("x", "y", "z"); obj[2] === "z". Actual: ' + (obj[2]));
+}
+
+//CHECK#6
+if (obj[3] !== "") {
+ $ERROR('#6: var obj = {}; obj.unshift = Array.prototype.unshift; obj[0] = ""; obj.length = 4294967297; obj.unshift("x", "y", "z"); obj[3] === "". Actual: ' + (obj[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A4_T1.js
new file mode 100644
index 000000000..a8b869395
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A4_T1.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.13_A4_T1;
+ * @section: 15.4.4.13, 8.6.2.1, 8.6.2.5;
+ * @assertion: [[Get]], [[Delete]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[0] = -1;
+x = [1];
+x.length = 1;
+
+//CHECK#1
+var unshift = x.unshift(0);
+if (unshift !== 2) {
+ $ERROR('#1: Array.prototype[0] = -1; x = [1]; x.length = 1; x.unshift(0) === 2. Actual: ' + (unshift));
+}
+
+//CHECK#2
+if (x[0] !== 0) {
+ $ERROR('#2: Array.prototype[0] = -1; x = [1]; x.length = 1; x.unshift(0); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== 1) {
+ $ERROR('#3: Array.prototype[0] = -1; x = [1]; x.length = 1; x.unshift(0); x[1] === 1. Actual: ' + (x[1]));
+}
+
+delete x[0];
+
+//CHECK#4
+if (x[0] !== -1) {
+ $ERROR('#4: Array.prototype[0] = -1; x = [1]; x.length = 1; x.unshift(0); delete x[0]; x[0] === -1. Actual: ' + (x[0]));
+}
+
+Object.prototype[0] = -1;
+Object.prototype.length = 1;
+Object.prototype.unshift = Array.prototype.unshift;
+x = {0:1};
+
+//CHECK#5
+var unshift = x.unshift(0);
+if (unshift !== 2) {
+ $ERROR('#5: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {0:0}; x.unshift(0) === 2. Actual: ' + (unshift));
+}
+
+//CHECK#6
+if (x[0] !== 0) {
+ $ERROR('#6: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {0:0}; x.unshift(0); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#7
+if (x[1] !== 1) {
+ $ERROR('#7: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {0:0}; x.unshift(0); x[1] === 1. Actual: ' + (x[1]));
+}
+
+delete x[0];
+
+//CHECK#8
+if (x[0] !== -1) {
+ $ERROR('#8: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {0:0}; x.unshift(0); delete x[0]; x[0] === -1. Actual: ' + (x[0]));
+}
+
+//CHECK#9
+if (x.length !== 2) {
+ $ERROR('#9: Object.prototype[0] = -1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {0:0}; x.unshift(0); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#10
+delete x.length;
+if (x.length !== 1) {
+ $ERROR('#10: Object.prototype[1] = -1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {0:0}; x.unshift(0); delete x; x.length === 1. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A4_T2.js
new file mode 100644
index 000000000..7da9941d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A4_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.
+
+/**
+ * @name: S15.4.4.13_A4_T2;
+ * @section: 15.4.4.13, 8.6.2.1, 8.6.2.5;
+ * @assertion: [[Get]], [[Delete]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[0] = 1;
+var x = [];
+x.length = 1;
+
+//CHECK#1
+var unshift = x.unshift(0);
+if (unshift !== 2) {
+ $ERROR('#1: Array.prototype[0] = 1; x = []; x.length = 1; x.unshift(0) === 2. Actual: ' + (unshift));
+}
+
+//CHECK#2
+if (x[0] !== 0) {
+ $ERROR('#2: Array.prototype[0] = 1; x = []; x.length = 1; x.unshift(0); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== 1) {
+ $ERROR('#3: Array.prototype[0] = 1; x = []; x.length = 1; x.unshift(0); x[1] === 1. Actual: ' + (x[1]));
+}
+
+delete x[0];
+
+//CHECK#4
+if (x[0] !== 1) {
+ $ERROR('#4: Array.prototype[0] = 1; x = [1]; x.length = 1; x.unshift(0); delete x[0]; x[0] === 1. Actual: ' + (x[0]));
+}
+
+Object.prototype[0] = 1;
+Object.prototype.length = 1;
+Object.prototype.unshift = Array.prototype.unshift;
+x = {};
+
+//CHECK#5
+var unshift = x.unshift(0);
+if (unshift !== 2) {
+ $ERROR('#5: Object.prototype[0] = 1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {}; x.unshift(0) === 2. Actual: ' + (unshift));
+}
+
+//CHECK#6
+if (x[0] !== 0) {
+ $ERROR('#6: Object.prototype[0] = 1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {}; x.unshift(0); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#7
+if (x[1] !== 1) {
+ $ERROR('#7: Object.prototype[0] = 1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {}; x.unshift(0); x[1] === 1. Actual: ' + (x[1]));
+}
+
+delete x[0];
+
+//CHECK#8
+if (x[0] !== 1) {
+ $ERROR('#8: Object.prototype[0] = 1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {}; x.unshift(0); delete x[0]; x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#9
+if (x.length !== 2) {
+ $ERROR('#9: Object.prototype[0] = 1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {}; x.unshift(0); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#10
+delete x.length;
+if (x.length !== 1) {
+ $ERROR('#10: Object.prototype[1] = 1; Object.prototype.length = 1; Object.prototype.unshift = Array.prototype.unshift; x = {}; x.unshift(0); delete x; x.length === 1. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.1.js
new file mode 100644
index 000000000..28197972b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.13_A5.1;
+* @section: 15.4.4.13, 15.2.4.7, 12.6.4;
+* @assertion: The length property of unshift has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.unshift.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.unshift.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.unshift.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.unshift){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.unshift) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.2.js
new file mode 100644
index 000000000..9eee6322a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.13_A5.2;
+* @section: 15.4.4.13, 15.2.4.5, 11.4.1;
+* @assertion: The length property of unshift has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.prototype.unshift.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.unshift.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.unshift.hasOwnProperty('length')));
+}
+
+delete Array.prototype.unshift.length;
+
+//CHECK#2
+if (Array.prototype.unshift.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.unshift.length; Array.prototype.unshift.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.unshift.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.unshift.length === undefined) {
+ $ERROR('#3: delete Array.prototype.unshift.length; Array.prototype.unshift.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.3.js
new file mode 100644
index 000000000..e7ba45c69
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.13_A5.3;
+* @section: 15.4.4.13;
+* @assertion: The length property of unshift has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.unshift.length;
+Array.prototype.unshift.length = Infinity;
+if (Array.prototype.unshift.length !== x) {
+ $ERROR('#1: x = Array.prototype.unshift.length; Array.prototype.unshift.length = Infinity; Array.prototype.unshift.length === x. Actual: ' + (Array.prototype.unshift.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.4.js
new file mode 100644
index 000000000..c12d17fdf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.13_A5.4;
+* @section: 15.4.4.13;
+* @assertion: The length property of unshift is 1;
+* @description: unshift.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.unshift.length !== 1) {
+ $ERROR('#1: Array.prototype.unshift.length === 1. Actual: ' + (Array.prototype.unshift.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.5.js
new file mode 100644
index 000000000..60faf1371
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.13_A5.5;
+* @section: 15.4.4.13, 15.2.4.7, 12.6.4;
+* @assertion: The unshift property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('unshift') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'unshift\') === false. Actual: ' + (Array.propertyIsEnumerable('unshift')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "unshift") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "unshift") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.6.js
new file mode 100644
index 000000000..7075afe70
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.13_A5.6;
+* @section: 15.4.4.13;
+* @assertion: The unshift property of Array has not prototype property;
+* @description: Checking Array.prototype.unshift.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.unshift.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.unshift.prototype === undefined. Actual: ' + (Array.prototype.unshift.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.7.js
new file mode 100644
index 000000000..8f66c8e17
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.13_Array_prototype_unshift/S15.4.4.13_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.13_A5.7;
+* @section: 15.4.4.13, 11.2.2;
+* @assertion: The unshift property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.unshift();
+ $ERROR('#1.1: new Array.prototype.unshift() throw TypeError. Actual: ' + (new Array.prototype.unshift()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.unshift() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.18_Array_prototype_forEach/S15.4.4.18_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.18_Array_prototype_forEach/S15.4.4.18_A1.js
new file mode 100644
index 000000000..8497a0cdc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.18_Array_prototype_forEach/S15.4.4.18_A1.js
@@ -0,0 +1,11 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.18_A1;
+ * @section: 15.4.4.18;
+ * @assertion: array.forEach can be frozen while in progress
+ * @description: Freezes array.forEach during a forEach to see if it works
+*/
+
+['z'].forEach(function(){ Object.freeze(Array.prototype.forEach); });
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.18_Array_prototype_forEach/S15.4.4.18_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.18_Array_prototype_forEach/S15.4.4.18_A2.js
new file mode 100644
index 000000000..e22dc1fbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.18_Array_prototype_forEach/S15.4.4.18_A2.js
@@ -0,0 +1,14 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.18_A2;
+ * @section: 15.4.4.18;
+ * @assertion: array.forEach can be frozen while in progress
+ * @description: Freezes array.forEach during a forEach to see if it works
+*/
+
+function foo() {
+ ['z'].forEach(function(){ Object.freeze(Array.prototype.forEach); });
+}
+foo();
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.1_Array_prototype_constructor/S15.4.4.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.1_Array_prototype_constructor/S15.4.4.1_A1_T1.js
new file mode 100644
index 000000000..5c00509a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.1_Array_prototype_constructor/S15.4.4.1_A1_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.1_A1_T1;
+ * @section: 15.4.4.1;
+ * @assertion: The initial value of Array.prototype.constructor is
+ * the built-in Array constructor;
+ * @description: Array.prototype.constructor === Array;
+*/
+
+//CHECK#1
+if (Array.prototype.constructor !== Array) {
+ $ERROR('#1: Array.prototype.constructor === Array. Actual: ' + (Array.prototype.constructor));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.1_Array_prototype_constructor/S15.4.4.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.1_Array_prototype_constructor/S15.4.4.1_A2.js
new file mode 100644
index 000000000..8f90436d2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.1_Array_prototype_constructor/S15.4.4.1_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.
+
+/**
+ * @name: S15.4.4.1_A2;
+ * @section: 15.4.4.1, 15.2.4.7, 12.6.4;
+ * @assertion: The constructor property of Array has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('constructor') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'constructor\') === false. Actual: ' + (Array.propertyIsEnumerable('constructor')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "constructor") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "constructor") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T1.js
new file mode 100644
index 000000000..64c982a94
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.2_A1_T1;
+ * @section: 15.4.4.2;
+ * @assertion: The result of calling this function is the same as if
+ * the built-in join method were invoked for this object with no argument;
+ * @description: If Result(2) is zero, return the empty string;
+*/
+
+//CHECK#1
+var x = new Array();
+if (x.toString() !== x.join()) {
+ $ERROR('#1.1: x = new Array(); x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "") {
+ $ERROR('#1.2: x = new Array(); x.toString() === "". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#2
+x = [];
+x[0] = 1;
+x.length = 0;
+if (x.toString() !== x.join()) {
+ $ERROR('#2.1: x = []; x[0] = 1; x.length = 0; x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "") {
+ $ERROR('#2.2: x = []; x[0] = 1; x.length = 0; x.toString() === "". Actual: ' + (x.toString()));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T2.js
new file mode 100644
index 000000000..7db166513
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.2_A1_T2;
+ * @section: 15.4.4.2;
+ * @assertion: The result of calling this function is the same as if
+ * the built-in join method were invoked for this object with no argument;
+ * @description: The elements of the array are converted to strings, and these strings are
+ * then concatenated, separated by occurrences of the separator. If no separator is provided,
+ * a single comma is used as the separator;
+*/
+
+//CHECK#1
+var x = new Array(0,1,2,3);
+if (x.toString() !== x.join()) {
+ $ERROR('#1.1: x = new Array(0,1,2,3); x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "0,1,2,3") {
+ $ERROR('#1.2: x = new Array(0,1,2,3); x.toString() === "0,1,2,3". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#2
+x = [];
+x[0] = 0;
+x[3] = 3;
+if (x.toString() !== x.join()) {
+ $ERROR('#2.1: x = []; x[0] = 0; x[3] = 3; x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "0,,,3") {
+ $ERROR('#2.2: x = []; x[0] = 0; x[3] = 3; x.toString() === "0,,,3". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#3
+x = Array(undefined,1,null,3);
+if (x.toString() !== x.join()) {
+ $ERROR('#3.1: x = Array(undefined,1,null,3); x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== ",1,,3") {
+ $ERROR('#3.2: x = Array(undefined,1,null,3); x.toString() === ",1,,3". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#4
+x = [];
+x[0] = 0;
+if (x.toString() !== x.join()) {
+ $ERROR('#4.1: x = []; x[0] = 0; x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "0") {
+ $ERROR('#4.2: x = []; x[0] = 0; x.toString() === "0". Actual: ' + (x.toString()));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T3.js
new file mode 100644
index 000000000..2b80d6e5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T3.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.2_A1_T3;
+ * @section: 15.4.4.2;
+ * @assertion: The result of calling this function is the same as if
+ * the built-in join method were invoked for this object with no argument;
+ * @description: Operator use ToString from array arguments;
+*/
+
+//CHECK#0
+var x = new Array("","","");
+if (x.toString() !== x.join()) {
+ $ERROR('#0.1: var x = new Array("","",""); x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== ",,") {
+ $ERROR('#0.2: var x = new Array("","",""); x.toString() === ",,". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#1
+var x = new Array("\\","\\","\\");
+if (x.toString() !== x.join()) {
+ $ERROR('#1.1: var x = new Array("\\","\\","\\"); x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "\\,\\,\\") {
+ $ERROR('#1.2: var x = new Array("\\","\\","\\"); x.toString() === "\\,\\,\\". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#2
+var x = new Array("&", "&", "&");
+if (x.toString() !== x.join()) {
+ $ERROR('#2.1: var x = new Array("&", "&", "&"); x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "&,&,&") {
+ $ERROR('#2.2: var x = new Array("&", "&", "&"); x.toString() === "&,&,&". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#3
+var x = new Array(true,true,true);
+if (x.toString() !== x.join()) {
+ $ERROR('#3.1: var x = new Array(true,true,true); x.toString(true,true,true) === x.join(). Actual: ' + (x.toString(true,true,true)));
+} else {
+ if (x.toString() !== "true,true,true") {
+ $ERROR('#3.2: var x = new Array(true,true,true); x.toString(true,true,true) === "true,true,true". Actual: ' + (x.toString(true,true,true)));
+ }
+}
+
+//CHECK#4
+var x = new Array(null,null,null);
+if (x.toString() !== x.join()) {
+ $ERROR('#4.1: var x = new Array(null,null,null); x.toString(null,null,null) === x.join(). Actual: ' + (x.toString(null,null,null)));
+} else {
+ if (x.toString() !== ",,") {
+ $ERROR('#4.2: var x = new Array(null,null,null); x.toString(null,null,null) === ",,". Actual: ' + (x.toString(null,null,null)));
+ }
+}
+
+//CHECK#5
+var x = new Array(undefined,undefined,undefined);
+if (x.toString() !== x.join()) {
+ $ERROR('#5.1: var x = new Array(undefined,undefined,undefined); x.toString(undefined,undefined,undefined) === x.join(). Actual: ' + (x.toString(undefined,undefined,undefined)));
+} else {
+ if (x.toString() !== ",,") {
+ $ERROR('#5.2: var x = new Array(undefined,undefined,undefined); x.toString(undefined,undefined,undefined) === ",,". Actual: ' + (x.toString(undefined,undefined,undefined)));
+ }
+}
+
+//CHECK#6
+var x = new Array(Infinity,Infinity,Infinity);
+if (x.toString() !== x.join()) {
+ $ERROR('#6.1: var x = new Array(Infinity,Infinity,Infinity); x.toString(Infinity,Infinity,Infinity) === x.join(). Actual: ' + (x.toString(Infinity,Infinity,Infinity)));
+} else {
+ if (x.toString() !== "Infinity,Infinity,Infinity") {
+ $ERROR('#6.2: var x = new Array(Infinity,Infinity,Infinity); x.toString(Infinity,Infinity,Infinity) === "Infinity,Infinity,Infinity". Actual: ' + (x.toString(Infinity,Infinity,Infinity)));
+ }
+}
+
+//CHECK#7
+var x = new Array(NaN,NaN,NaN);
+if (x.toString() !== x.join()) {
+ $ERROR('#7.1: var x = new Array(NaN,NaN,NaN); x.toString(NaN,NaN,NaN) === x.join(). Actual: ' + (x.toString(NaN,NaN,NaN)));
+} else {
+ if (x.toString() !== "NaN,NaN,NaN") {
+ $ERROR('#7.2: var x = new Array(NaN,NaN,NaN); x.toString(NaN,NaN,NaN) === "NaN,NaN,NaN". Actual: ' + (x.toString(NaN,NaN,NaN)));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T4.js
new file mode 100644
index 000000000..19407b391
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A1_T4.js
@@ -0,0 +1,111 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.2_A1_T4;
+ * @section: 15.4.4.2;
+ * @assertion: The result of calling this function is the same as if
+ * the built-in join method were invoked for this object with no argument;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, String);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return "+"}};
+var x = new Array(object);
+if (x.toString() !== x.join()) {
+ $ERROR('#1.1: var object = {valueOf: function() {return "+"}} var x = new Array(object); x.toString() === x.join(). Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "[object Object]") {
+ $ERROR('#1.2: var object = {valueOf: function() {return "+"}} var x = new Array(object); x.toString() === "[object Object]". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#2
+var object = {valueOf: function() {return "+"}, toString: function() {return "*"}};
+var x = new Array(object);
+if (x.toString() !== x.join()) {
+ $ERROR('#2.1: var object = {valueOf: function() {return "+"}, toString: function() {return x.join()}} var x = new Array(object); x.toString() === "*". Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "*") {
+ $ERROR('#2.2: var object = {valueOf: function() {return "+"}, toString: function() {return "*"}} var x = new Array(object); x.toString() === "*". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#3
+var object = {valueOf: function() {return "+"}, toString: function() {return {}}};
+var x = new Array(object);
+if (x.toString() !== x.join()) {
+ $ERROR('#3.1: var object = {valueOf: function() {return x.join()}, toString: function() {return {}}} var x = new Array(object); x.toString() === "+". Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "+") {
+ $ERROR('#3.2: var object = {valueOf: function() {return "+"}, toString: function() {return {}}} var x = new Array(object); x.toString() === "+". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}};
+ var x = new Array(object);
+ if (x.toString() !== x.join()) {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return x.join()}} var x = new Array(object); x.toString() === "*". Actual: ' + (x.toString()));
+ } else {
+ if (x.toString() !== "*") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}} var x = new Array(object); x.toString() === "*". Actual: ' + (x.toString()));
+ }
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}} var x = new Array(object); x.toString() not throw "error"');
+ } else {
+ $ERROR('#4.4: var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}} var x = new Array(object); x.toString() not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return "*"}};
+var x = new Array(object);
+if (x.toString() !== x.join()) {
+ $ERROR('#5.1: var object = {toString: function() {return x.join()}} var x = new Array(object); x.toString() === "*". Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "*") {
+ $ERROR('#5.2: var object = {toString: function() {return "*"}} var x = new Array(object); x.toString() === "*". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return "*"}}
+var x = new Array(object);
+if (x.toString() !== x.join()) {
+ $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return x.join()}} var x = new Array(object); x.toString() === "*". Actual: ' + (x.toString()));
+} else {
+ if (x.toString() !== "*") {
+ $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return "*"}} var x = new Array(object); x.toString() === "*". Actual: ' + (x.toString()));
+ }
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}};
+ var x = new Array(object);
+ x.toString();
+ $ERROR('#7.1: var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}} var x = new Array(object); x.toString() throw "error". Actual: ' + (x.toString()));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}} var x = new Array(object); x.toString() throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var x = new Array(object);
+ x.toString();
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}} var x = new Array(object); x.toString() throw TypeError. Actual: ' + (x.toString()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}} var x = new Array(object); x.toString() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A2_T1.js
new file mode 100644
index 000000000..0c0ed9229
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_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.
+
+/**
+ * @name: S15.4.4.2_A2_T1;
+ * @section: 15.4.4.2;
+ * @assertion: The toString function is not generic.
+ * it throws a TypeError exception if its this value is not an Array object;
+ * @description: {}.toString = Array.prototype.toString;
+*/
+
+var obj = {};
+obj.toString = Array.prototype.toString;
+
+//CHECK#1
+try {
+ obj.toString();
+ $ERROR('#1.1: var obj = {}; obj.toString = Array.prototype.toString; obj.toString() throw TypeError. Actual: ' + (obj.toString()));
+} catch(e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: var obj = {}; obj.toString = Array.prototype.toString; obj.toString() throw TypeError. Actual: ' + (e));
+ }
+}
+
+obj[0] = 1;
+obj.length = 1;
+
+//CHECK#2
+try {
+ obj.toString();
+ $ERROR('#2.1: var obj = {}; obj.toString = Array.prototype.toString; obj[0] = 1; obj.length = 1; obj.toString() throw TypeError. Actual: ' + (obj.toString()));
+} catch(e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var obj = {}; obj.toString = Array.prototype.toString; obj[0] = 1; obj.length = 1; obj.toString() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A3_T1.js
new file mode 100644
index 000000000..eb1e9c15f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A3_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.2_A3_T1;
+ * @section: 15.4.4.2, 8.6.2.1;
+ * @assertion: [[Get]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype;
+*/
+
+//CHECK#1
+Array.prototype[1] = 1;
+var x = [0];
+x.length = 2;
+if (x.toString() !== "0,1") {
+ $ERROR('#1: Array.prototype[1] = 1; x = [0]; x.length = 2; x.toString() === "0,1". Actual: ' + (x.toString()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.1.js
new file mode 100644
index 000000000..d38236622
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.2_A4.1;
+* @section: 15.4.4.2, 15.2.4.7, 12.6.4;
+* @assertion: The length property of toString has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.toString.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.toString.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.toString.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.toString){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.toString) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.2.js
new file mode 100644
index 000000000..7ef56bba2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.2_A4.2;
+* @section: 15.4.4.2, 15.2.4.5, 11.4.1;
+* @assertion: The length property of toString has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.prototype.toString.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.toString.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.toString.hasOwnProperty('length')));
+}
+
+delete Array.prototype.toString.length;
+
+//CHECK#2
+if (Array.prototype.toString.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.toString.length; Array.prototype.toString.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.toString.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.toString.length === undefined) {
+ $ERROR('#3: delete Array.prototype.toString.length; Array.prototype.toString.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.3.js
new file mode 100644
index 000000000..5e9fe9024
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.2_A4.3;
+* @section: 15.4.4.2;
+* @assertion: The length property of toString has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.toString.length;
+Array.prototype.toString.length = Infinity;
+if (Array.prototype.toString.length !== x) {
+ $ERROR('#1: x = Array.prototype.toString.length; Array.prototype.toString.length = Infinity; Array.prototype.toString.length === x. Actual: ' + (Array.prototype.toString.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.4.js
new file mode 100644
index 000000000..b71982e5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.2_A4.4;
+* @section: 15.4.4.2;
+* @assertion: The length property of toString is 0;
+* @description: toString.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.toString.length !== 0) {
+ $ERROR('#1: Array.prototype.toString.length === 0. Actual: ' + (Array.prototype.toString.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.5.js
new file mode 100644
index 000000000..53d314a85
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.2_A4.5;
+* @section: 15.4.4.2, 15.2.4.7, 12.6.4;
+* @assertion: The toString property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('toString') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'toString\') === false. Actual: ' + (Array.propertyIsEnumerable('toString')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "toString") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "toString") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.6.js
new file mode 100644
index 000000000..2db972559
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.2_A4.6;
+* @section: 15.4.4.2;
+* @assertion: The toString property of Array has not prototype property;
+* @description: Checking Array.prototype.toString.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.toString.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.toString.prototype === undefined. Actual: ' + (Array.prototype.toString.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.7.js
new file mode 100644
index 000000000..77a13cf02
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.2_Array_prototype_toString/S15.4.4.2_A4.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.2_A4.7;
+* @section: 15.4.4.2, 11.2.2;
+* @assertion: The toString property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.toString();
+ $ERROR('#1.1: new Array.prototype.toString() throw TypeError. Actual: ' + (new Array.prototype.toString()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.toString() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A1_T1.js
new file mode 100644
index 000000000..0b801aae3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A1_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.3_A1_T1;
+ * @section: 15.4.4.3;
+ * @assertion: The elements of the array are converted to strings using their
+ * toLocaleString methods, and these strings are then concatenated, separated
+ * by occurrences of a separator string that has been derived in an
+ * implementation-defined locale-specific way;
+ * @description: it is the function that should be invoked;
+*/
+
+var n = 0;
+var obj = {toLocaleString: function() {n++}};
+var arr = [undefined, obj, null, obj, obj];
+arr.toLocaleString();
+
+//CHECK#1
+if (n !== 3) {
+ $ERROR('#1: var n = 0; var obj = {toLocaleString: function() {n++}}; var arr = [undefined, obj, null, obj, obj]; arr.toLocaleString(); n === 3. Actual: ' + (n));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A2_T1.js
new file mode 100644
index 000000000..7891e118e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_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.
+
+/**
+ * @name: S15.4.4.3_A2_T1;
+ * @section: 15.4.4.3;
+ * @assertion: The toLocalString function is not generic.
+ * it throws a TypeError exception if its this value is not an Array object;
+ * @description: {}.toLocaleString = Array.prototype.toLocaleString;
+*/
+
+var obj = {};
+obj.toLocaleString = Array.prototype.toLocaleString;
+
+//CHECK#1
+try {
+ obj.toLocaleString();
+ $ERROR('#1.1: var obj = {}; obj.toLocaleString = Array.prototype.toLocaleString; obj.toLocaleString() throw TypeError. Actual: ' + (obj.toLocaleString()));
+} catch(e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: var obj = {}; obj.toLocaleString = Array.prototype.toLocaleString; obj.toLocaleString() throw TypeError. Actual: ' + (e));
+ }
+}
+
+obj[0] = 1;
+obj.length = 1;
+
+//CHECK#2
+try {
+ obj.toLocaleString();
+ $ERROR('#2.1: var obj = {}; obj.toLocaleString = Array.prototype.toLocaleString; obj[0] = 1; obj.length = 1; obj.toLocaleString() throw TypeError. Actual: ' + (obj.toLocaleString()));
+} catch(e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var obj = {}; obj.toLocaleString = Array.prototype.toLocaleString; obj[0] = 1; obj.length = 1; obj.toLocaleString() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A3_T1.js
new file mode 100644
index 000000000..24044287b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A3_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.3_A3_T1;
+ * @section: 15.4.4.3, 8.6.2.1;
+ * @assertion: [[Get]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype;
+*/
+
+//CHECK#1
+var n = 0;
+var obj = {toLocaleString: function() {n++}};
+Array.prototype[1] = obj;
+var x = [obj];
+x.length = 2;
+x.toLocaleString();
+if (n !== 2) {
+ $ERROR('#1: var n = 0; var obj = {toLocaleString: function() {n++}}; Array.prototype[1] = obj; x = [obj]; x.length = 2; x.toLocaleString(); n === 2. Actual: ' + (n));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.1.js
new file mode 100644
index 000000000..875cd9a5c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.3_A4.1;
+* @section: 15.4.4.3, 15.2.4.7, 12.6.4;
+* @assertion: The length property of toLocaleString has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.toLocaleString.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.toLocaleString.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.toLocaleString.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.toLocaleString){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.toLocaleString) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.2.js
new file mode 100644
index 000000000..3be6927d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.3_A4.2;
+* @section: 15.4.4.3, 15.2.4.5, 11.4.1;
+* @assertion: The length property of toLocaleString has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+*/
+
+//CHECK#1
+if (Array.prototype.toLocaleString.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.toLocaleString.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.toLocaleString.hasOwnProperty('length')));
+}
+
+delete Array.prototype.toLocaleString.length;
+
+//CHECK#2
+if (Array.prototype.toLocaleString.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.toLocaleString.length; Array.prototype.toLocaleString.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.toLocaleString.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.toLocaleString.length === undefined) {
+ $ERROR('#3: delete Array.prototype.toLocaleString.length; Array.prototype.toLocaleString.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.3.js
new file mode 100644
index 000000000..c770101fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.3_A4.3;
+* @section: 15.4.4.3;
+* @assertion: The length property of toLocaleString has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.toLocaleString.length;
+Array.prototype.toLocaleString.length = Infinity;
+if (Array.prototype.toLocaleString.length !== x) {
+ $ERROR('#1: x = Array.prototype.toLocaleString.length; Array.prototype.toLocaleString.length = Infinity; Array.prototype.toLocaleString.length === x. Actual: ' + (Array.prototype.toLocaleString.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.4.js
new file mode 100644
index 000000000..167ce3aed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.3_A4.4;
+* @section: 15.4.4.3;
+* @assertion: The length property of toLocaleString is 0;
+* @description: toLocaleString.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.toLocaleString.length !== 0) {
+ $ERROR('#1: Array.prototype.toLocaleString.length === 0. Actual: ' + (Array.prototype.toLocaleString.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.5.js
new file mode 100644
index 000000000..6ee30e468
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.3_A4.5;
+* @section: 15.4.4.3, 15.2.4.7, 12.6.4;
+* @assertion: The toLocaleString property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('toLocaleString') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'toLocaleString\') === false. Actual: ' + (Array.propertyIsEnumerable('toLocaleString')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "toLocaleString") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "toLocaleString") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.6.js
new file mode 100644
index 000000000..ef2f4f56f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.3_A4.6;
+* @section: 15.4.4.3;
+* @assertion: The toLocaleString property of Array has not prototype property;
+* @description: Checking Array.prototype.toLocaleString.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.toLocaleString.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.toLocaleString.prototype === undefined. Actual: ' + (Array.prototype.toLocaleString.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.7.js
new file mode 100644
index 000000000..a2f2ba163
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A4.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.3_A4.7;
+* @section: 15.4.4.3, 11.2.2;
+* @assertion: The toLocaleString property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.toLocaleString();
+ $ERROR('#1.1: new Array.prototype.toLocaleString() throw TypeError. Actual: ' + (new Array.prototype.toLocaleString()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.toLocaleString() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T1.js
new file mode 100644
index 000000000..8457f0ae1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.4_A1_T1;
+ * @section: 15.4.4.4;
+ * @assertion: When the concat method is called with zero or more arguments item1, item2,
+ * etc., it returns an array containing the array elements of the object followed by
+ * the array elements of each argument in order;
+ * @description: Checking this algorithm, items are Array object;
+*/
+
+var x = new Array();
+var y = new Array(0,1);
+var z = new Array(2,3,4);
+var arr = x.concat(y,z);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = new Array(); var y = new Array(0,1); var z = new Array(2,3,4); var arr = x.concat(y,z); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr[0] !== 0) {
+ $ERROR('#1: var x = new Array(); var y = new Array(0,1); var z = new Array(2,3,4); var arr = x.concat(y,z); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#2
+if (arr[1] !== 1) {
+ $ERROR('#2: var x = new Array(); var y = new Array(0,1); var z = new Array(2,3,4); var arr = x.concat(y,z); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#3
+if (arr[2] !== 2) {
+ $ERROR('#3: var x = new Array(); var y = new Array(0,1); var z = new Array(2,3,4); var arr = x.concat(y,z); arr[2] === 2. Actual: ' + (arr[2]));
+}
+
+//CHECK#4
+if (arr[3] !== 3) {
+ $ERROR('#4: var x = new Array(); var y = new Array(0,1); var z = new Array(2,3,4); var arr = x.concat(y,z); arr[3] === 3. Actual: ' + (arr[3]));
+}
+
+//CHECK#5
+if (arr[4] !== 4) {
+ $ERROR('#5: var x = new Array(); var y = new Array(0,1); var z = new Array(2,3,4); var arr = x.concat(y,z); arr[4] === 4. Actual: ' + (arr[4]));
+}
+
+//CHECK#6
+if (arr.length !== 5) {
+ $ERROR('#6: var x = new Array(); var y = new Array(0,1); var z = new Array(2,3,4); var arr = x.concat(y,z); arr.length === 5. Actual: ' + (arr.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T2.js
new file mode 100644
index 000000000..c5bd24f46
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_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.
+
+/**
+ * @name: S15.4.4.4_A1_T2;
+ * @section: 15.4.4.4;
+ * @assertion: When the concat method is called with zero or more arguments item1, item2,
+ * etc., it returns an array containing the array elements of the object followed by
+ * the array elements of each argument in order;
+ * @description: Checking this algorithm, items are objects and primitives;
+*/
+
+var x = [0];
+var y = new Object();
+var z = new Array(1,2);
+var arr = x.concat(y,z, -1, true, "NaN");
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0]; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr[0] !== 0) {
+ $ERROR('#1: var x = [0]; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#2
+if (arr[1] !== y) {
+ $ERROR('#2: var x = [0]; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[1] === y. Actual: ' + (arr[1]));
+}
+
+//CHECK#3
+if (arr[2] !== 1) {
+ $ERROR('#3: var x = [0]; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[2] === 1. Actual: ' + (arr[2]));
+}
+
+//CHECK#4
+if (arr[3] !== 2) {
+ $ERROR('#4: var x = [0]; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[3] === 2. Actual: ' + (arr[3]));
+}
+
+//CHECK#5
+if (arr[4] !== -1) {
+ $ERROR('#5: var x = [0]; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[4] === -1. Actual: ' + (arr[4]));
+}
+
+//CHECK#6
+if (arr[5] !== true) {
+ $ERROR('#6: var x = [0]; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[5] === true. Actual: ' + (arr[5]));
+}
+
+//CHECK#7
+if (arr[6] !== "NaN") {
+ $ERROR('#7: var x = [0]; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[6] === "NaN". Actual: ' + (arr[6]));
+}
+
+//CHECK#8
+if (arr.length !== 7) {
+ $ERROR('#8: var x = [0]; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr.length === 7. Actual: ' + (arr.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T3.js
new file mode 100644
index 000000000..05a361e3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.4_A1_T3;
+ * @section: 15.4.4.4;
+ * @assertion: When the concat method is called with zero or more arguments item1, item2,
+ * etc., it returns an array containing the array elements of the object followed by
+ * the array elements of each argument in order;
+ * @description: Checking this algorithm with no items;
+*/
+
+var x = [0,1];
+var arr = x.concat();
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [0,1]; var arr = x.concat(); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr[0] !== 0) {
+ $ERROR('#1: var x = [0,1]; var arr = x.concat(); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#2
+if (arr[1] !== 1) {
+ $ERROR('#2: var x = [0,1]; var arr = x.concat(); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#3
+if (arr.length !== 2) {
+ $ERROR('#3: var x = [0,1]; var arr = x.concat(); arr.length === 2. Actual: ' + (arr.length));
+}
+
+//CHECK#4
+if (arr === x) {
+ $ERROR('#4: var x = [0,1]; var arr = x.concat(); arr !== x');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T4.js
new file mode 100644
index 000000000..d1c66a61d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A1_T4.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.4_A1_T4;
+ * @section: 15.4.4.4;
+ * @assertion: When the concat method is called with zero or more arguments item1, item2,
+ * etc., it returns an array containing the array elements of the object followed by
+ * the array elements of each argument in order;
+ * @description: Checking this algorithm, items are [], [,];
+*/
+
+var x = [,1];
+var arr = x.concat([], [,]);
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = [,1]; var arr = x.concat([], [,]); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr[0] !== undefined) {
+ $ERROR('#1: var x = [,1]; var arr = x.concat([], [,]); arr[0] === undefined. Actual: ' + (arr[0]));
+}
+
+//CHECK#2
+if (arr[1] !== 1) {
+ $ERROR('#2: var x = [,1]; var arr = x.concat([], [,]); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#2
+if (arr[2] !== undefined) {
+ $ERROR('#2: var x = [,1]; var arr = x.concat([], [,]); arr[2] === undefined. Actual: ' + (arr[2]));
+}
+
+//CHECK#4
+if (arr.length !== 3) {
+ $ERROR('#4: var x = [,1]; var arr = x.concat([], [,]); arr.length === 3. Actual: ' + (arr.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A2_T1.js
new file mode 100644
index 000000000..e951ab8e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A2_T1.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.
+
+/**
+ * @name: S15.4.4.4_A2_T1;
+ * @section: 15.4.4.4;
+ * @assertion: The concat function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Checking this for Object object, items are objects and primitives;
+*/
+
+var x = {};
+x.concat = Array.prototype.concat;
+var y = new Object();
+var z = new Array(1,2);
+var arr = x.concat(y,z, -1, true, "NaN");
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = {}; x.concat = Array.prototype.concat; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr[0] !== x) {
+ $ERROR('#1: var x = {}; x.concat = Array.prototype.concat; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[0] === x. Actual: ' + (arr[0]));
+}
+
+//CHECK#2
+if (arr[1] !== y) {
+ $ERROR('#2: var x = {}; x.concat = Array.prototype.concat; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[1] === y. Actual: ' + (arr[1]));
+}
+
+//CHECK#3
+if (arr[2] !== 1) {
+ $ERROR('#3: var x = {}; x.concat = Array.prototype.concat; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[2] === 1. Actual: ' + (arr[2]));
+}
+
+//CHECK#4
+if (arr[3] !== 2) {
+ $ERROR('#4: var x = {}; x.concat = Array.prototype.concat; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[3] === 2. Actual: ' + (arr[3]));
+}
+
+//CHECK#5
+if (arr[4] !== -1) {
+ $ERROR('#5: var x = {}; x.concat = Array.prototype.concat; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[4] === -1. Actual: ' + (arr[4]));
+}
+
+//CHECK#6
+if (arr[5] !== true) {
+ $ERROR('#6: var x = {}; x.concat = Array.prototype.concat; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[5] === true. Actual: ' + (arr[5]));
+}
+
+//CHECK#7
+if (arr[6] !== "NaN") {
+ $ERROR('#7: var x = {}; x.concat = Array.prototype.concat; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr[6] === "NaN". Actual: ' + (arr[6]));
+}
+
+//CHECK#8
+if (arr.length !== 7) {
+ $ERROR('#8: var x = {}; x.concat = Array.prototype.concat; var y = new Object(); var z = new Array(1,2); var arr = x.concat(y,z, -1, true, "NaN"); arr.length === 7. Actual: ' + (arr.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A2_T2.js
new file mode 100644
index 000000000..2e382eab7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A2_T2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.4_A2_T2;
+ * @section: 15.4.4.4;
+ * @assertion: The concat function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Checking this for Object object with no items;
+*/
+
+var x = {};
+x.concat = Array.prototype.concat;
+var arr = x.concat();
+
+//CHECK#0
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#0: var x = {}; x.concat = Array.prototype.concat; var arr = x.concat() arr is Array object. Actual: ' + (arr.getClass()));
+}
+
+//CHECK#1
+if (arr[0] !== x) {
+ $ERROR('#1: var x = {}; x.concat = Array.prototype.concat; var arr = x.concat(); arr[0] === x. Actual: ' + (arr[0]));
+}
+
+//CHECK#2
+if (arr.length !== 1) {
+ $ERROR('#2: var x = {}; x.concat = Array.prototype.concat; var arr = x.concat(); arr.length === 1. Actual: ' + (arr.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A3_T1.js
new file mode 100644
index 000000000..23e58a0bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A3_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.4_A3_T1;
+ * @section: 15.4.4.4, 8.6.2.1, 15.2.4.5;
+ * @assertion: [[Get]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+
+Array.prototype[1] = 1;
+var x = [0];
+x.length = 2;
+var arr = x.concat();
+
+//CHECK#1
+if (arr[0] !== 0) {
+ $ERROR('#1: Array.prototype[1] = 1; x = [0]; x.length = 2; var arr = x.concat(); arr[0] === 0. Actual: ' + (arr[0]));
+}
+
+//CHECK#2
+if (arr[1] !== 1) {
+ $ERROR('#2: Array.prototype[1] = 1; x = [0]; x.length = 2; var arr = x.concat(); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#3
+if (arr.hasOwnProperty('1') !== true) {
+ $ERROR('#3: Array.prototype[1] = 1; x = [0]; x.length = 2; var arr = x.concat(); arr.hasOwnProperty(\'1\') === true. Actual: ' + (arr.hasOwnProperty('1')));
+}
+
+Object.prototype[1] = 1;
+Object.prototype.length = 2;
+Object.prototype.concat = Array.prototype.concat;
+x = {0:0};
+var arr = x.concat();
+
+//CHECK#4
+if (arr[0] !== x) {
+ $ERROR('#4: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.concat = Array.prototype.concat; x = {0:0}; var arr = x.concat(); arr[0] === x. Actual: ' + (arr[0]));
+}
+
+//CHECK#5
+if (arr[1] !== 1) {
+ $ERROR('#5: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.concat = Array.prototype.concat; x = {0:0}; var arr = x.concat(); arr[1] === 1. Actual: ' + (arr[1]));
+}
+
+//CHECK#6
+if (arr.hasOwnProperty('1') !== false) {
+ $ERROR('#6: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.concat = Array.prototype.concat; x = {0:0}; var arr = x.concat(); arr.hasOwnProperty(\'1\') === false. Actual: ' + (arr.hasOwnProperty('1')));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.1.js
new file mode 100644
index 000000000..6d3ca6cc2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.4_A4.1;
+* @section: 15.4.4.4, 15.2.4.7, 12.6.4;
+* @assertion: The length property of concat has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.concat.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.concat.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.concat.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.concat){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.concat) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.2.js
new file mode 100644
index 000000000..d14785507
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.4_A4.2;
+* @section: 15.4.4.4, 15.2.4.5, 11.4.1;
+* @assertion: The length property of concat has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.prototype.concat.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.concat.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.concat.hasOwnProperty('length')));
+}
+
+delete Array.prototype.concat.length;
+
+//CHECK#2
+if (Array.prototype.concat.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.concat.length; Array.prototype.concat.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.concat.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.concat.length === undefined) {
+ $ERROR('#3: delete Array.prototype.concat.length; Array.prototype.concat.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.3.js
new file mode 100644
index 000000000..07dfbc5c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.4_A4.3;
+* @section: 15.4.4.4;
+* @assertion: The length property of concat has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.concat.length;
+Array.prototype.concat.length = Infinity;
+if (Array.prototype.concat.length !== x) {
+ $ERROR('#1: x = Array.prototype.concat.length; Array.prototype.concat.length = Infinity; Array.prototype.concat.length === x. Actual: ' + (Array.prototype.concat.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.4.js
new file mode 100644
index 000000000..878442ea5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.4_A4.4;
+* @section: 15.4.4.4;
+* @assertion: The length property of concat is 1;
+* @description: concat.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.concat.length !== 1) {
+ $ERROR('#1: Array.prototype.concat.length === 1. Actual: ' + (Array.prototype.concat.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.5.js
new file mode 100644
index 000000000..7d29cb9c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.4_A4.5;
+* @section: 15.4.4.4, 15.2.4.7, 12.6.4;
+* @assertion: The concat property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('concat') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'concat\') === false. Actual: ' + (Array.propertyIsEnumerable('concat')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "concat") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "concat") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.6.js
new file mode 100644
index 000000000..222b33b65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.4_A4.6;
+* @section: 15.4.4.4;
+* @assertion: The concat property of Array has not prototype property;
+* @description: Checking Array.prototype.concat.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.concat.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.concat.prototype === undefined. Actual: ' + (Array.prototype.concat.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.7.js
new file mode 100644
index 000000000..ec2fcdbc8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.4_Array_prototype_concat/S15.4.4.4_A4.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.4_A4.7;
+* @section: 15.4.4.4, 11.2.2;
+* @assertion: The concat property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.concat();
+ $ERROR('#1.1: new Array.prototype.concat() throw TypeError. Actual: ' + (new Array.prototype.concat()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.concat() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.1_T1.js
new file mode 100644
index 000000000..7bfda1e59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.1_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A1.1_T1;
+ * @section: 15.4.4.5;
+ * @assertion: If length is zero, return the empty string;
+ * @description: Checking this use new Array() and [];
+*/
+
+//CHECK#1
+var x = new Array();
+if (x.join() !== "") {
+ $ERROR('#1: x = new Array(); x.join() === "". Actual: ' + (x.join()));
+}
+
+//CHECK#2
+x = [];
+x[0] = 1;
+x.length = 0;
+if (x.join() !== "") {
+ $ERROR('#2: x = []; x[0] = 1; x.length = 0; x.join() === "". Actual: ' + (x.join()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.2_T1.js
new file mode 100644
index 000000000..70446bc19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.2_T1.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A1.2_T1;
+ * @section: 15.4.4.5;
+ * @assertion: If separator is undefined, a single comma is used as the separator;
+ * @description: Checking this use new Array() and [];
+*/
+
+//CHECK#1
+var x = new Array(0,1,2,3);
+if (x.join() !== "0,1,2,3") {
+ $ERROR('#1: x = new Array(0,1,2,3); x.join() === "0,1,2,3". Actual: ' + (x.join()));
+}
+
+//CHECK#2
+x = [];
+x[0] = 0;
+x[3] = 3;
+if (x.join() !== "0,,,3") {
+ $ERROR('#2: x = []; x[0] = 0; x[3] = 3; x.join() === "0,,,3". Actual: ' + (x.join()));
+}
+
+//CHECK#3
+x = [];
+x[0] = 0;
+if (x.join() !== "0") {
+ $ERROR('#3: x = []; x[0] = 0; x.join() === "0". Actual: ' + (x.join()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.2_T2.js
new file mode 100644
index 000000000..cf8963918
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.2_T2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A1.2_T2;
+ * @section: 15.4.4.5;
+ * @assertion: If separator is undefined, a single comma is used as the separator;
+ * @description: Checking this use new Array() and [];
+*/
+
+//CHECK#1
+var x = new Array(0,1,2,3);
+if (x.join(undefined) !== "0,1,2,3") {
+ $ERROR('#1: x = new Array(0,1,2,3); x.join(undefined) === "0,1,2,3". Actual: ' + (x.join(undefined)));
+}
+
+//CHECK#2
+x = [];
+x[0] = 0;
+x[3] = 3;
+if (x.join(undefined) !== "0,,,3") {
+ $ERROR('#2: x = []; x[0] = 0; x[3] = 3; x.join(undefined) === "0,,,3". Actual: ' + (x.join(undefined)));
+}
+
+//CHECK#3
+x = [];
+x[0] = 0;
+if (x.join(undefined) !== "0") {
+ $ERROR('#3: x = []; x[0] = 0; x.join(undefined) === "0". Actual: ' + (x.join(undefined)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.3_T1.js
new file mode 100644
index 000000000..1643566db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A1.3_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A1.3_T1;
+ * @section: 15.4.4.5;
+ * @assertion: If array element is undefined or null, use the empty string;
+ * @description: Checking this use new Array() and [];
+*/
+
+//CHECK#1
+var x = [];
+x[0] = undefined;
+if (x.join() !== "") {
+ $ERROR('#1: x = []; x[0] = undefined; x.join() === "". Actual: ' + (x.join()));
+}
+
+//CHECK#2
+x = [];
+x[0] = null;
+if (x.join() !== "") {
+ $ERROR('#2: x = []; x[0] = null; x.join() === "". Actual: ' + (x.join()));
+}
+
+//CHECK#3
+x = Array(undefined,1,null,3);
+if (x.join() !== ",1,,3") {
+ $ERROR('#3: x = Array(undefined,1,null,3); x.join() === ",1,,3". Actual: ' + (x.join()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T1.js
new file mode 100644
index 000000000..f5e3542e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T1.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A2_T1;
+ * @section: 15.4.4.5;
+ * @assertion: The join function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If ToUint32(length) is zero, return the empty string;
+*/
+
+var obj = {};
+obj.join = Array.prototype.join;
+
+if (obj.length !== undefined) {
+ $ERROR('#0: var obj = {}; obj.length === undefined. Actual: ' + (obj.length));
+} else {
+ //CHECK#1
+ if (obj.join() !== "") {
+ $ERROR('#1: var obj = {}; obj.join = Array.prototype.join; obj.join() === "". Actual: ' + (obj.join()));
+ }
+ //CHECK#2
+ if (obj.length !== undefined) {
+ $ERROR('#2: var obj = {}; obj.join = Array.prototype.join; obj.join(); obj.length === undefined. Actual: ' + (obj.length));
+ }
+}
+
+//CHECK#3
+obj.length = undefined;
+if (obj.join() !== "") {
+ $ERROR('#3: var obj = {}; obj.length = undefined; obj.join = Array.prototype.join; obj.join() === ". Actual: ' + (obj.join()));
+}
+
+//CHECK#4
+if (obj.length !== undefined) {
+ $ERROR('#4: var obj = {}; obj.length = undefined; obj.join = Array.prototype.join; obj.join(); obj.length === undefined. Actual: ' + (obj.length));
+}
+
+//CHECK#5
+obj.length = null
+if (obj.join() !== "") {
+ $ERROR('#5: var obj = {}; obj.length = null; obj.join = Array.prototype.join; obj.join() === "". Actual: ' + (obj.join()));
+}
+
+//CHECK#6
+if (obj.length !== null) {
+ $ERROR('#6: var obj = {}; obj.length = null; obj.join = Array.prototype.join; obj.join(); obj.length === null. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T2.js
new file mode 100644
index 000000000..c42d51a97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T2.js
@@ -0,0 +1,84 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A2_T2;
+ * @section: 15.4.4.5;
+ * @assertion: The join function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If ToUint32(length) is zero, return the empty string;
+*/
+
+var obj = {};
+obj.join = Array.prototype.join;
+
+//CHECK#1
+obj.length = NaN;
+if (obj.join() !== "") {
+ $ERROR('#1: var obj = {}; obj.length = NaN; obj.join = Array.prototype.join; obj.join() === "". Actual: ' + (obj.join()));
+}
+
+//CHECK#2
+if (isNaN(obj.length) !== true) {
+ $ERROR('#2: var obj = {}; obj.length = NaN; obj.join = Array.prototype.join; obj.join(); obj.length === Not-a-Number. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+obj.length = Number.POSITIVE_INFINITY;
+if (obj.join() !== "") {
+ $ERROR('#3: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.join = Array.prototype.join; obj.join() === "". Actual: ' + (obj.join()));
+}
+
+//CHECK#4
+if (obj.length !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.join = Array.prototype.join; obj.join(); obj.length === Number.POSITIVE_INFINITY. Actual: ' + (obj.length));
+}
+
+//CHECK#5
+obj.length = Number.NEGATIVE_INFINITY;
+if (obj.join() !== "") {
+ $ERROR('#5: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.join = Array.prototype.join; obj.join() === "". Actual: ' + (obj.join()));
+}
+
+//CHECK#6
+if (obj.length !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#6: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.join = Array.prototype.join; obj.join(); obj.length === Number.NEGATIVE_INFINITY. Actual: ' + (obj.length));
+}
+
+//CHECK#7
+obj.length = -0;
+if (obj.join() !== "") {
+ $ERROR('#7: var obj = {}; obj.length = -0; obj.join = Array.prototype.join; obj.join() === "". Actual: ' + (obj.join()));
+}
+
+//CHECK#8
+if (obj.length !== -0) {
+ $ERROR('#8: var obj = {}; obj.length = -0; obj.join = Array.prototype.join; obj.join(); obj.length === 0. Actual: ' + (obj.length));
+} else {
+ if (1/obj.length !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#8: var obj = {}; obj.length = -0; obj.join = Array.prototype.join; obj.join(); obj.length === -0. Actual: ' + (obj.length));
+ }
+}
+
+//CHECK#9
+obj.length = 0.5;
+if (obj.join() !== "") {
+ $ERROR('#9: var obj = {}; obj.length = 0.5; obj.join = Array.prototype.join; obj.join() === "". Actual: ' + (obj.join()));
+}
+
+//CHECK#10
+if (obj.length !== 0.5) {
+ $ERROR('#10: var obj = {}; obj.length = 0.5; obj.join = Array.prototype.join; obj.join(); obj.length === 0.5. Actual: ' + (obj.length));
+}
+
+//CHECK#11
+var x = new Number(0);
+obj.length = x;
+if (obj.join() !== "") {
+ $ERROR('#11: var x = new Number(0); var obj = {}; obj.length = x; obj.join = Array.prototype.join; obj.join() === "". Actual: ' + (obj.join()));
+}
+
+//CHECK#12
+if (obj.length !== x) {
+ $ERROR('#12: var x = new Number(0); var obj = {}; obj.length = x; obj.join = Array.prototype.join; obj.join(); obj.length === x. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T3.js
new file mode 100644
index 000000000..a530d0752
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T3.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A2_T3;
+ * @section: 15.4.4.5;
+ * @assertion: The join function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If ToUint32(length) is zero, return the empty string;
+*/
+
+var obj = {};
+obj.join = Array.prototype.join;
+
+//CHECK#1
+obj.length = 4.5;
+if (obj.join() !== ",,,") {
+ $ERROR('#1: var obj = {}; obj.length = 4.5; obj.join = Array.prototype.join; obj.join() === ",,,". Actual: ' + (obj.join()));
+}
+
+//CHECK#2
+obj[0] = undefined;
+obj[1] = 1;
+obj[2] = null;
+if (obj.join() !== ",1,,") {
+ $ERROR('#1: var obj = {}; obj.length = 4.5; obj[0] = undefined; obj[1] = 1; obj[2] = null; obj.join = Array.prototype.join; obj.join() === ",1,,". Actual: ' + (obj.join()));
+}
+
+//CHECK#3
+if (obj.length !== 4.5) {
+ $ERROR('#1: var obj = {}; obj.length = 4.5; obj[0] = undefined; obj[1] = 1; obj[2] = null; obj.join = Array.prototype.join; obj.join(); obj.length === 4.5. Actual: ' + (obj.length));
+}
+
+var obj = {};
+obj.join = Array.prototype.join;
+
+//CHECK#4
+var x = new Number(4.5);
+obj.length = x;
+if (obj.join() !== ",,,") {
+ $ERROR('#4: var obj = {}; var x = new Number(4.5); obj.length = x; obj.join = Array.prototype.join; obj.join() === ",,,". Actual: ' + (obj.join()));
+}
+
+//CHECK#5
+obj[0] = undefined;
+obj[1] = 1;
+obj[2] = null;
+if (obj.join() !== ",1,,") {
+ $ERROR('#5: var obj = {}; var x = new Number(4.5); obj.length = x; obj[0] = undefined; obj[1] = 1; obj[2] = null; obj.join = Array.prototype.join; obj.join() === ",1,,". Actual: ' + (obj.join()));
+}
+
+//CHECK#6
+if (obj.length !== x) {
+ $ERROR('#6: var obj = {}; var x = new Number(4.5); obj.length = x; obj[0] = undefined; obj[1] = 1; obj[2] = null; obj.join = Array.prototype.join; obj.join(); obj.length === x. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T4.js
new file mode 100644
index 000000000..e724be785
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A2_T4.js
@@ -0,0 +1,83 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A2_T4;
+ * @section: 15.4.4.5;
+ * @assertion: The join function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Operator use ToNumber from length.
+ * If Type(value) is Object, evaluate ToPrimitive(value, Number);
+*/
+
+var obj = {};
+obj.join = Array.prototype.join;
+
+//CHECK#1
+obj.length = {valueOf: function() {return 3}};
+if (obj.join() !== ",,") {
+ $ERROR('#1: obj.length = {valueOf: function() {return 3}} obj.join() === ",,". Actual: ' + (obj.join()));
+}
+
+//CHECK#2
+obj.length = {valueOf: function() {return 3}, toString: function() {return 2}};
+if (obj.join() !== ",,") {
+ $ERROR('#2: obj.length = {valueOf: function() {return 3}, toString: function() {return 2}} obj.join() === ",,". Actual: ' + (obj.join()));
+}
+
+//CHECK#3
+obj.length = {valueOf: function() {return 3}, toString: function() {return {}}};
+if (obj.join() !== ",,") {
+ $ERROR('#3: obj.length = {valueOf: function() {return 3}, toString: function() {return {}}} obj.join() === ",,". Actual: ' + (obj.join()));
+}
+
+//CHECK#4
+try {
+ obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}};
+ if (obj.join() !== ",,") {
+ $ERROR('#4.1: obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}}; obj.join() === ",". Actual: ' + (obj.join()));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}}; obj.join() not throw "error"');
+ } else {
+ $ERROR('#4.3: obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}}; obj.join() not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+obj.length = {toString: function() {return 2}};
+if (obj.join() !== ",") {
+ $ERROR('#5: obj.length = {toString: function() {return 2}} obj.join() === ",". Actual: ' + (obj.join()));
+}
+
+//CHECK#6
+obj.length = {valueOf: function() {return {}}, toString: function() {return 2}}
+if (obj.join() !== ",") {
+ $ERROR('#6: obj.length = {valueOf: function() {return {}}, toString: function() {return 2}} obj.join() === ",". Actual: ' + (obj.join()));
+}
+
+//CHECK#7
+try {
+ obj.length = {valueOf: function() {throw "error"}, toString: function() {return 2}};
+ obj.join();
+ $ERROR('#7.1: obj.length = {valueOf: function() {throw "error"}, toString: function() {return 2}}; obj.join() throw "error". Actual: ' + (obj.join()));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: obj.length = {valueOf: function() {throw "error"}, toString: function() {return 2}}; obj.join() throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ obj.length = {valueOf: function() {return {}}, toString: function() {return {}}};
+ obj.join();
+ $ERROR('#8.1: obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.join() throw TypeError. Actual: ' + (obj.join()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8,2: obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.join() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.1_T1.js
new file mode 100644
index 000000000..ad51944a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.1_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A3.1_T1;
+ * @section: 15.4.4.5;
+ * @assertion: Operator use ToString from separator;
+ * @description: Checking separator in ["", "\\", "&", true, Infinity, null, undefind, NaN];
+*/
+
+//CHECK#0
+var x = new Array(0,1,2,3);
+if (x.join("") !== "0123") {
+ $ERROR('#0: x = new Array(0,1,2,3); x.join("") === "0123". Actual: ' + (x.join("")));
+}
+
+//CHECK#1
+x = new Array(0,1,2,3);
+if (x.join("\\") !== "0\\1\\2\\3") {
+ $ERROR('#1: x = new Array(0,1,2,3); x.join("\\") === "0\\1\\2\\3". Actual: ' + (x.join("\\")));
+}
+
+//CHECK#2
+if (x.join("&") !== "0&1&2&3") {
+ $ERROR('#2: x = new Array(0,1,2,3); x.join("&") === "0&1&2&3". Actual: ' + (x.join("&")));
+}
+
+//CHECK#3
+if (x.join(true) !== "0true1true2true3") {
+ $ERROR('#3: x = new Array(0,1,2,3); x.join(true) === "0true1true2true3". Actual: ' + (x.join(true)));
+}
+
+//CHECK#4
+if (x.join(Infinity) !== "0Infinity1Infinity2Infinity3") {
+ $ERROR('#4: x = new Array(0,1,2,3); x.join(Infinity) === "0Infinity1Infinity2Infinity3". Actual: ' + (x.join(Infinity)));
+}
+
+//CHECK#5
+if (x.join(null) !== "0null1null2null3") {
+ $ERROR('#3: 5 = new Array(0,1,2,3); x.join(null) === "0null1null2null3". Actual: ' + (x.join(null)));
+}
+
+//CHECK#6
+if (x.join(undefined) !== "0,1,2,3") {
+ $ERROR('#6: x = new Array(0,1,2,3); x.join(undefined) === "0,1,2,3". Actual: ' + (x.join(undefined)));
+}
+
+//CHECK#7
+if (x.join(NaN) !== "0NaN1NaN2NaN3") {
+ $ERROR('#7: x = new Array(0,1,2,3); x.join("NaN") === "0NaN1NaN2NaN3". Actual: ' + (x.join("NaN")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.1_T2.js
new file mode 100644
index 000000000..5f9b80677
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.1_T2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A3.1_T2;
+ * @section: 15.4.4.5;
+ * @assertion: Operator use ToString from separator;
+ * @description: If Type(separator) is Object, evaluate ToPrimitive(separator, String);
+*/
+
+var x = new Array(0,1,2,3);
+//CHECK#1
+var object = {valueOf: function() {return "+"}};
+if (x.join(object) !== "0[object Object]1[object Object]2[object Object]3") {
+ $ERROR('#1: var object = {valueOf: function() {return "+"}}; x.join(object) === "0[object Object]1[object Object]2[object Object]3". Actual: ' + (x.join(object)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return "+"}, toString: function() {return "*"}};
+if (x.join(object) !== "0*1*2*3") {
+ $ERROR('#2: var object = {valueOf: function() {return "+"}, toString: function() {return "*"}}; x.join(object) === "0*1*2*3". Actual: ' + (x.join(object)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return "+"}, toString: function() {return {}}};
+if (x.join(object) !== "0+1+2+3") {
+ $ERROR('#3: var object = {valueOf: function() {return "+"}, toString: function() {return {}}}; x.join(object) === "0+1+2+3". Actual: ' + (x.join(object)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}};
+ if (x.join(object) !== "0*1*2*3") {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}}; x.join(object) === "0*1*2*3". Actual: ' + (x.join(object)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}}; x.join(object) not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}}; x.join(object) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return "*"}};
+if (x.join(object) !== "0*1*2*3") {
+ $ERROR('#5: var object = {toString: function() {return "*"}}; x.join(object) === "0*1*2*3". Actual: ' + (x.join(object)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return "*"}}
+if (x.join(object) !== "0*1*2*3") {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return "*"}}; x.join(object) === "0*1*2*3". Actual: ' + (x.join(object)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}};
+ x.join(object);
+ $ERROR('#7.1: var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}}; x.join(object) throw "error". Actual: ' + (x.join(object)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}}; x.join(object) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ x.join(object);
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; x.join(object) throw TypeError. Actual: ' + (x.join(object)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; x.join(object) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.2_T1.js
new file mode 100644
index 000000000..9c1f2f781
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.2_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A3.2_T1;
+ * @section: 15.4.4.5;
+ * @assertion: Operator use ToString from array arguments;
+ * @description: Checking arguments and separator in ["", "\\", "&", true, Infinity, null, undefind, NaN];
+*/
+
+//CHECK#0
+var x = new Array("","","");
+if (x.join("") !== "") {
+ $ERROR('#0: var x = new Array("","",""); x.join("") === "". Actual: ' + (x.join("")));
+}
+
+//CHECK#1
+var x = new Array("\\","\\","\\");
+if (x.join("\\") !== "\\\\\\\\\\") {
+ $ERROR('#1: var x = new Array("\\","\\","\\"); x.join("\\") === "\\\\\\\\\\". Actual: ' + (x.join("\\")));
+}
+
+//CHECK#2
+var x = new Array("&", "&", "&");
+if (x.join("&") !== "&&&&&") {
+ $ERROR('#2: var x = new Array("&", "&", "&"); x.join("&") === "&&&&&". Actual: ' + (x.join("&")));
+}
+
+//CHECK#3
+var x = new Array(true,true,true);
+if (x.join() !== "true,true,true") {
+ $ERROR('#3: var x = new Array(true,true,true); x.join(true,true,true) === "true,true,true". Actual: ' + (x.join(true,true,true)));
+}
+
+//CHECK#4
+var x = new Array(null,null,null);
+if (x.join() !== ",,") {
+ $ERROR('#4: var x = new Array(null,null,null); x.join(null,null,null) === ",,". Actual: ' + (x.join(null,null,null)));
+}
+
+//CHECK#5
+var x = new Array(undefined,undefined,undefined);
+if (x.join() !== ",,") {
+ $ERROR('#5: var x = new Array(undefined,undefined,undefined); x.join(undefined,undefined,undefined) === ",,". Actual: ' + (x.join(undefined,undefined,undefined)));
+}
+
+//CHECK#6
+var x = new Array(Infinity,Infinity,Infinity);
+if (x.join() !== "Infinity,Infinity,Infinity") {
+ $ERROR('#6: var x = new Array(Infinity,Infinity,Infinity); x.join(Infinity,Infinity,Infinity) === "Infinity,Infinity,Infinity". Actual: ' + (x.join(Infinity,Infinity,Infinity)));
+}
+
+//CHECK#7
+var x = new Array(NaN,NaN,NaN);
+if (x.join() !== "NaN,NaN,NaN") {
+ $ERROR('#7: var x = new Array(NaN,NaN,NaN); x.join(NaN,NaN,NaN) === "NaN,NaN,NaN". Actual: ' + (x.join(NaN,NaN,NaN)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.2_T2.js
new file mode 100644
index 000000000..c90db09c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A3.2_T2.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A3.2_T2;
+ * @section: 15.4.4.5;
+ * @assertion: Operator use ToString from array arguments;
+ * @description: If Type(argument) is Object, evaluate ToPrimitive(argument, String);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return "+"}};
+var x = new Array(object);
+if (x.join() !== "[object Object]") {
+ $ERROR('#1: var object = {valueOf: function() {return "+"}} var x = new Array(object); x.join() === "[object Object]". Actual: ' + (x.join()));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return "+"}, toString: function() {return "*"}};
+var x = new Array(object);
+if (x.join() !== "*") {
+ $ERROR('#2: var object = {valueOf: function() {return "+"}, toString: function() {return "*"}} var x = new Array(object); x.join() === "*". Actual: ' + (x.join()));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return "+"}, toString: function() {return {}}};
+var x = new Array(object);
+if (x.join() !== "+") {
+ $ERROR('#3: var object = {valueOf: function() {return "+"}, toString: function() {return {}}} var x = new Array(object); x.join() === "+". Actual: ' + (x.join()));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}};
+ var x = new Array(object);
+ if (x.join() !== "*") {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}} var x = new Array(object); x.join() === "*". Actual: ' + (x.join()));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}} var x = new Array(object); x.join() not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return "*"}} var x = new Array(object); x.join() not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return "*"}};
+var x = new Array(object);
+if (x.join() !== "*") {
+ $ERROR('#5: var object = {toString: function() {return "*"}} var x = new Array(object); x.join() === "*". Actual: ' + (x.join()));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return "*"}}
+var x = new Array(object);
+if (x.join() !== "*") {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return "*"}} var x = new Array(object); x.join() === "*". Actual: ' + (x.join()));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}};
+ var x = new Array(object);
+ x.join();
+ $ERROR('#7.1: var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}} var x = new Array(object); x.join() throw "error". Actual: ' + (x.join()));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return "+"}, toString: function() {throw "error"}} var x = new Array(object); x.join() throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var x = new Array(object);
+ x.join();
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}} var x = new Array(object); x.join() throw TypeError. Actual: ' + (x.join()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}} var x = new Array(object); x.join() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T1.js
new file mode 100644
index 000000000..9113c3fdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A4_T1;
+ * @section: 15.4.4.5;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967296;
+*/
+
+var obj = {};
+obj.join = Array.prototype.join;
+obj[0] = "x";
+obj[4294967295] = "y";
+obj.length = 4294967296;
+
+//CHECK#1
+if (obj.join("") !== "") {
+ $ERROR('#1: var obj = {}; obj.join = Array.prototype.join; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.join("") === "". Actual: ' + (obj.join("")));
+}
+
+//CHECK#2
+if (obj.length !== 4294967296) {
+ $ERROR('#2: var obj = {}; obj.join = Array.prototype.join; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.join(""); obj.length === 4294967296. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T2.js
new file mode 100644
index 000000000..314ab20fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A4_T2;
+ * @section: 15.4.4.5;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967297;
+*/
+
+var obj = {};
+obj.join = Array.prototype.join;
+obj[0] = "x";
+obj[1] = "y";
+obj[4294967296] = "z";
+obj.length = 4294967297;
+
+//CHECK#1
+if (obj.join("") !== "x") {
+ $ERROR('#1: var obj = {}; obj.join = Array.prototype.join; obj[0] = "x"; obj[1] = "y"; obj[4294967296] = "z"; obj.length = 4294967297; obj.join("") === "x". Actual: ' + (obj.join("")));
+}
+
+//CHECK#2
+if (obj.length !== 4294967297) {
+ $ERROR('#2: var obj = {}; obj.join = Array.prototype.join; obj[0] = "x"; obj[1] = "y"; obj[4294967296] = "z"; obj.length = 4294967297; obj.join(""); obj.length === 4294967297. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T3.js
new file mode 100644
index 000000000..7bef72f9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A4_T3;
+ * @section: 15.4.4.5;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = -4294967294;
+*/
+
+var obj = {};
+obj.join = Array.prototype.join;
+obj[0] = "x";
+obj[1] = "y";
+obj[2] = "z";
+obj.length = -4294967294;
+
+//CHECK#1
+if (obj.join("") !== "xy") {
+ $ERROR('#1: var obj = {}; obj.join = Array.prototype.join; obj[0] = "x"; obj[1] = "y"; obj[2] = "z"; obj.length = -4294967294; obj.join("") === "xy". Actual: ' + (obj.join("")));
+}
+
+//CHECK#2
+if (obj.length !== -4294967294) {
+ $ERROR('#2: var obj = {}; obj.join = Array.prototype.join; obj[0] = "x"; obj[1] = "y"; obj[2] = "z"; obj.length = -4294967294; obj.join(""); obj.length === -4294967294. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A5_T1.js
new file mode 100644
index 000000000..71fcaf915
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A5_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.5_A5_T1;
+ * @section: 15.4.4.5, 8.6.2.1;
+ * @assertion: [[Get]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+//CHECK#1
+Array.prototype[1] = 1;
+var x = [0];
+x.length = 2;
+if (x.join() !== "0,1") {
+ $ERROR('#1: Array.prototype[1] = 1; x = [0]; x.length = 2; x.join() === "0,1". Actual: ' + (x.join()));
+}
+
+//CHECK#2
+Object.prototype[1] = 1;
+Object.prototype.length = 2;
+Object.prototype.join = Array.prototype.join;
+x = {0:0};
+if (x.join() !== "0,1") {
+ $ERROR('#2: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.join = Array.prototype.join; x = {0:0}; x.join() === "0,1". Actual: ' + (x.join()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.1.js
new file mode 100644
index 000000000..a1f2e4e76
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.5_A6.1;
+* @section: 15.4.4.5, 15.2.4.7, 12.6.4;
+* @assertion: The length property of join has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.join.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.join.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.join.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.join){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.join) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.2.js
new file mode 100644
index 000000000..68444a0d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.5_A6.2;
+* @section: 15.4.4.5, 15.2.4.5, 11.4.1;
+* @assertion: The length property of join has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.prototype.join.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.join.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.join.hasOwnProperty('length')));
+}
+
+delete Array.prototype.join.length;
+
+//CHECK#2
+if (Array.prototype.join.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.join.length; Array.prototype.join.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.join.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.join.length === undefined) {
+ $ERROR('#3: delete Array.prototype.join.length; Array.prototype.join.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.3.js
new file mode 100644
index 000000000..2b722aff7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.5_A6.3;
+* @section: 15.4.4.5;
+* @assertion: The length property of join has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.join.length;
+Array.prototype.join.length = Infinity;
+if (Array.prototype.join.length !== x) {
+ $ERROR('#1: x = Array.prototype.join.length; Array.prototype.join.length = Infinity; Array.prototype.join.length === x. Actual: ' + (Array.prototype.join.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.4.js
new file mode 100644
index 000000000..6784ef2a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.5_A6.4;
+* @section: 15.4.4.5;
+* @assertion: The length property of join is 1;
+* @description: join.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.join.length !== 1) {
+ $ERROR('#1: Array.prototype.join.length === 1. Actual: ' + (Array.prototype.join.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.5.js
new file mode 100644
index 000000000..1a1c38637
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.5_A6.5;
+* @section: 15.4.4.5, 15.2.4.7, 12.6.4;
+* @assertion: The join property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('join') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'join\') === false. Actual: ' + (Array.propertyIsEnumerable('join')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "join") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "join") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.6.js
new file mode 100644
index 000000000..7c83113be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.5_A6.6;
+* @section: 15.4.4.5;
+* @assertion: The join property of Array has not prototype property;
+* @description: Checking Array.prototype.join.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.join.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.join.prototype === undefined. Actual: ' + (Array.prototype.join.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.7.js
new file mode 100644
index 000000000..b27ccf0d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.5_Array_prototype_join/S15.4.4.5_A6.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.5_A6.7;
+* @section: 15.4.4.5, 11.2.2;
+* @assertion: The join property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.join();
+ $ERROR('#1.1: new Array.prototype.join() throw TypeError. Actual: ' + (new Array.prototype.join()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.join() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A1.1_T1.js
new file mode 100644
index 000000000..940d32dc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A1.1_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A1.1_T1;
+ * @section: 15.4.4.6;
+ * @assertion: If length equal zero, call the [[Put]] method of this object
+ * with arguments "length" and 0 and return undefined;
+ * @description: Checking this algorithm;
+*/
+
+//CHECK#1
+var x = new Array();
+var pop = x.pop();
+if (pop !== undefined) {
+ $ERROR('#1: var x = new Array(); x.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#2
+if (x.length !== 0) {
+ $ERROR('#2: var x = new Array(); x.pop(); x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#3
+var x = Array(1,2,3);
+x.length = 0;
+var pop = x.pop();
+if (pop !== undefined) {
+ $ERROR('#2: var x = Array(1,2,3); x.length = 0; x.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#4
+if (x.length !== 0) {
+ $ERROR('#4: var x = new Array(1,2,3); x.length = 0; x.pop(); x.length === 0. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A1.2_T1.js
new file mode 100644
index 000000000..0f4bf56ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A1.2_T1.js
@@ -0,0 +1,68 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A1.2_T1;
+ * @section: 15.4.4.6;
+ * @assertion: The last element of the array is removed from the array
+ * and returned;
+ * @description: Checking this use new Array() and [];
+*/
+
+//CHECK#1
+var x = new Array(0,1,2,3);
+var pop = x.pop();
+if (pop !== 3) {
+ $ERROR('#1: x = new Array(0,1,2,3); x.pop() === 3. Actual: ' + (pop));
+}
+
+//CHECK#2
+if (x.length !== 3) {
+ $ERROR('#2: x = new Array(0,1,2,3); x.pop(); x.length == 3');
+}
+
+//CHECK#3
+if (x[3] !== undefined) {
+ $ERROR('#3: x = new Array(0,1,2,3); x.pop(); x[3] == undefined');
+}
+
+//CHECK#4
+if (x[2] !== 2) {
+ $ERROR('#4: x = new Array(0,1,2,3); x.pop(); x[2] == 2');
+}
+
+//CHECK#5
+x = [];
+x[0] = 0;
+x[3] = 3;
+var pop = x.pop();
+if (pop !== 3) {
+ $ERROR('#5: x = []; x[0] = 0; x[3] = 3; x.pop() === 3. Actual: ' + (pop));
+}
+
+//CHECK#6
+if (x.length !== 3) {
+ $ERROR('#6: x = []; x[0] = 0; x[3] = 3; x.pop(); x.length == 3');
+}
+
+//CHECK#7
+if (x[3] !== undefined) {
+ $ERROR('#7: x = []; x[0] = 0; x[3] = 3; x.pop(); x[3] == undefined');
+}
+
+//CHECK#8
+if (x[2] !== undefined) {
+ $ERROR('#8: x = []; x[0] = 0; x[3] = 3; x.pop(); x[2] == undefined');
+}
+
+//CHECK#9
+x.length = 1;
+var pop = x.pop();
+if (pop !== 0) {
+ $ERROR('#9: x = []; x[0] = 0; x[3] = 3; x.pop(); x.length = 1; x.pop() === 0. Actual: ' + (pop));
+}
+
+//CHECK#10
+if (x.length !== 0) {
+ $ERROR('#10: x = []; x[0] = 0; x[3] = 3; x.pop(); x.length = 1; x.pop(); x.length === 0. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T1.js
new file mode 100644
index 000000000..1e4910827
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A2_T1;
+ * @section: 15.4.4.6;
+ * @assertion: The pop function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If ToUint32(length) equal zero, call the [[Put]] method
+ * of this object with arguments "length" and 0 and return undefined;
+*/
+
+var obj = {};
+obj.pop = Array.prototype.pop;
+
+if (obj.length !== undefined) {
+ $ERROR('#0: var obj = {}; obj.length === undefined. Actual: ' + (obj.length));
+} else {
+ //CHECK#1
+ var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#1: var obj = {}; obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+ }
+ //CHECK#2
+ if (obj.length !== 0) {
+ $ERROR('#2: var obj = {}; obj.pop = Array.prototype.pop; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+ }
+}
+
+//CHECK#3
+obj.length = undefined;
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#3: var obj = {}; obj.length = undefined; obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#4
+if (obj.length !== 0) {
+ $ERROR('#4: var obj = {}; obj.length = undefined; obj.pop = Array.prototype.pop; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#5
+obj.length = null
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#5: var obj = {}; obj.length = null; obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#6
+if (obj.length !== 0) {
+ $ERROR('#6: var obj = {}; obj.length = null; obj.pop = Array.prototype.pop; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T2.js
new file mode 100644
index 000000000..d768cd76c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T2.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A2_T2;
+ * @section: 15.4.4.6;
+ * @assertion: The pop function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If ToUint32(length) equal zero, call the [[Put]] method
+ * of this object with arguments "length" and 0 and return undefined;
+*/
+
+var obj = {};
+obj.pop = Array.prototype.pop;
+
+//CHECK#1
+obj.length = NaN;
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#1: var obj = {}; obj.length = NaN; obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#2
+if (obj.length !== 0) {
+ $ERROR('#2: var obj = {}; obj.length = NaN; obj.pop = Array.prototype.pop; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+obj.length = Number.POSITIVE_INFINITY;
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#3: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#4
+if (obj.length !== 0) {
+ $ERROR('#4: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.pop = Array.prototype.pop; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#5
+obj.length = Number.NEGATIVE_INFINITY;
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#5: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#6
+if (obj.length !== 0) {
+ $ERROR('#6: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.pop = Array.prototype.pop; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#7
+obj.length = -0;
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#7: var obj = {}; obj.length = -0; obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#8
+if (obj.length !== 0) {
+ $ERROR('#8: var obj = {}; obj.length = -0; obj.pop = Array.prototype.pop; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+} else {
+ if (1/obj.length !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8: var obj = {}; obj.length = -0; obj.pop = Array.prototype.pop; obj.pop(); obj.length === +0. Actual: ' + (obj.length));
+ }
+}
+
+//CHECK#9
+obj.length = 0.5;
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#9: var obj = {}; obj.length = 0.5; obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#10
+if (obj.length !== 0) {
+ $ERROR('#10: var obj = {}; obj.length = 0.5; obj.pop = Array.prototype.pop; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#11
+obj.length = new Number(0);
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#11: var obj = {}; obj.length = new Number(0); obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#12
+if (obj.length !== 0) {
+ $ERROR('#12: var obj = {}; obj.length = new Number(0); obj.pop = Array.prototype.pop; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T3.js
new file mode 100644
index 000000000..78ce4302e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A2_T3;
+ * @section: 15.4.4.6;
+ * @assertion: The pop function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: The last element ToUint32(length) - 1 of the array is removed from the array
+ * and returned;
+*/
+
+var obj = {};
+obj.pop = Array.prototype.pop;
+
+//CHECK#1
+obj.length = 2.5;
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#1: var obj = {}; obj.length = 2.5; obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#2
+if (obj.length !== 1) {
+ $ERROR('#2: var obj = {}; obj.length = 2.5; obj.pop = Array.prototype.pop; obj.pop(); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+obj.length = new Number(2);
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#11: var obj = {}; obj.length = new Number(2); obj.pop = Array.prototype.pop; obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#3
+if (obj.length !== 1) {
+ $ERROR('#12: var obj = {}; obj.length = new Number(2); obj.pop = Array.prototype.pop; obj.pop(); obj.length === 1. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T4.js
new file mode 100644
index 000000000..a933ba756
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A2_T4.js
@@ -0,0 +1,97 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A2_T4;
+ * @section: 15.4.4.6;
+ * @assertion: The pop function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Operator use ToNumber from length.
+ * If Type(value) is Object, evaluate ToPrimitive(value, Number);
+*/
+
+var obj = {};
+obj.pop = Array.prototype.pop;
+
+//CHECK#1
+obj[0] = -1;
+obj.length = {valueOf: function() {return 1}};
+var pop = obj.pop();
+if (pop !== -1) {
+ $ERROR('#1: obj[0] = -1; obj.length = {valueOf: function() {return 1}} obj.pop() === -1. Actual: ' + (pop));
+}
+
+//CHECK#2
+obj[0] = -1;
+obj.length = {valueOf: function() {return 1}, toString: function() {return 0}};
+var pop = obj.pop();
+if (pop !== -1) {
+ $ERROR('#0: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {return 0}} obj.pop() === -1. Actual: ' + (pop));
+}
+
+//CHECK#3
+obj[0] = -1;
+obj.length = {valueOf: function() {return 1}, toString: function() {return {}}};
+var pop = obj.pop();
+if (pop !== -1) {
+ $ERROR('#3: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {return {}}} obj.pop() === -1. Actual: ' + (pop));
+}
+
+//CHECK#4
+try {
+ obj[0] = -1;
+ obj.length = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ var pop = obj.pop();
+if (pop !== -1) {
+ $ERROR('#4.1: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {throw "error"}}; obj.pop() === ",". Actual: ' + (pop));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {throw "error"}}; obj.pop() not throw "error"');
+ } else {
+ $ERROR('#4.3: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {throw "error"}}; obj.pop() not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+obj[0] = -1;
+obj.length = {toString: function() {return 0}};
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#5: obj[0] = -1; obj.length = {toString: function() {return 0}} obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#6
+obj[0] = -1;
+obj.length = {valueOf: function() {return {}}, toString: function() {return 0}}
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#6: obj[0] = -1; obj.length = {valueOf: function() {return {}}, toString: function() {return 0}} obj.pop() === undefined. Actual: ' + (pop));
+}
+
+//CHECK#7
+try {
+ obj[0] = -1;
+ obj.length = {valueOf: function() {throw "error"}, toString: function() {return 0}};
+ var pop = obj.pop();
+ $ERROR('#7.1: obj[0] = -1; obj.length = {valueOf: function() {throw "error"}, toString: function() {return 0}}; obj.pop() throw "error". Actual: ' + (pop));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: obj[0] = -1; obj.length = {valueOf: function() {throw "error"}, toString: function() {return 0}}; obj.pop() throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ obj[0] = -1;
+ obj.length = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var pop = obj.pop();
+ $ERROR('#8.1: obj[0] = -1; obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.pop() throw TypeError. Actual: ' + (pop));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: obj[0] = -1; obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.pop() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T1.js
new file mode 100644
index 000000000..a7c1c7d87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_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.
+
+/**
+ * @name: S15.4.4.6_A3_T1;
+ * @section: 15.4.4.6;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967296;
+*/
+
+var obj = {};
+obj.pop = Array.prototype.pop;
+obj[0] = "x";
+obj[4294967295] = "y";
+obj.length = 4294967296;
+
+//CHECK#1
+var pop = obj.pop();
+if (pop !== undefined) {
+ $ERROR('#1: var obj = {}; obj.pop = Array.prototype.pop; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.pop() === unedfined. Actual: ' + (pop));
+}
+
+//CHECK#2
+if (obj.length !== 0) {
+ $ERROR('#2: var obj = {}; obj.pop = Array.prototype.pop; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.pop = Array.prototype.pop; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.pop(); obj[0] === "x". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[4294967295] !== "y") {
+ $ERROR('#4: var obj = {}; obj.pop = Array.prototype.pop; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.pop(); obj[4294967295] === "y". Actual: ' + (obj[4294967295]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T2.js
new file mode 100644
index 000000000..eed98673b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T2.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A3_T2;
+ * @section: 15.4.4.6;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967297;
+*/
+
+var obj = {};
+obj.pop = Array.prototype.pop;
+obj[0] = "x";
+obj[4294967296] = "y";
+obj.length = 4294967297;
+
+//CHECK#1
+var pop = obj.pop();
+if (pop !== "x") {
+ $ERROR('#1: var obj = {}; obj.pop = Array.prototype.pop; obj[0] = "x"; obj[4294967296] = "y"; obj.length = 4294967297; obj.pop() === "x". Actual: ' + (pop));
+}
+
+//CHECK#2
+if (obj.length !== 0) {
+ $ERROR('#2: var obj = {}; obj.pop = Array.prototype.pop; obj[0] = "x"; obj[4294967296] = "y"; obj.length = 4294967297; obj.pop(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== undefined) {
+ $ERROR('#3: var obj = {}; obj.pop = Array.prototype.pop; obj[0] = "x"; obj[4294967296] = "y"; obj.length = 4294967297; obj.pop(); obj[0] === undefined. Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[4294967296] !== "y") {
+ $ERROR('#4: var obj = {}; obj.pop = Array.prototype.pop; obj[0] = "x"; obj[4294967296] = "y"; obj.length = 4294967297; obj.pop(); obj[4294967296] === "y". Actual: ' + (obj[4294967296]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T3.js
new file mode 100644
index 000000000..3c1d48410
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A3_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A3_T3;
+ * @section: 15.4.4.6;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = -1;
+*/
+
+var obj = {};
+obj.pop = Array.prototype.pop;
+obj[4294967294] = "x";
+obj.length = -1;
+
+//CHECK#1
+var pop = obj.pop();
+if (pop !== "x") {
+ $ERROR('#1: var obj = {}; obj.pop = Array.prototype.pop; obj[4294967294] = "x"; obj.length = -1; obj.pop() === "x". Actual: ' + (pop));
+}
+
+//CHECK#2
+if (obj.length !== 4294967294) {
+ $ERROR('#2: var obj = {}; obj.pop = Array.prototype.pop; obj[4294967294] = "x"; obj.length = -1; obj.pop(); obj.length === 4294967294. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[4294967294] !== undefined) {
+ $ERROR('#3: var obj = {}; obj.pop = Array.prototype.pop; obj[4294967294] = "x"; obj.length = -1; obj.pop(); obj[4294967294] === undefined. Actual: ' + (obj[4294967294]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A4_T1.js
new file mode 100644
index 000000000..5755d50e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A4_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A4_T1;
+ * @section: 15.4.4.6, 8.6.2.1, 8.6.2.5;
+ * @assertion: [[Get]], [[Delete]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[1] = 1;
+var x = [0];
+x.length = 2;
+
+//CHECK#1
+var pop = x.pop();
+if (pop !== 1) {
+ $ERROR('#1: Array.prototype[1] = 1; x = [0]; x.length = 2; x.pop() === 1. Actual: ' + (pop));
+}
+
+//CHECK#2
+if (x[1] !== 1) {
+ $ERROR('#2: Array.prototype[1] = 1; x = [0]; x.length = 2; x.pop(); x[1] === 1. Actual: ' + (x[1]));
+}
+
+Object.prototype[1] = 1;
+Object.prototype.length = 2;
+Object.prototype.pop = Array.prototype.pop;
+x = {0:0};
+
+//CHECK#3
+var pop = x.pop();
+if (pop !== 1) {
+ $ERROR('#3: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.pop = Array.prototype.pop; x = {0:0}; x.pop() === 1. Actual: ' + (pop));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.pop = Array.prototype.pop; x = {0:0}; x.pop(); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.pop = Array.prototype.pop; x = {0:0}; x.pop(); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+delete x.length;
+if (x.length !== 2) {
+ $ERROR('#7: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.pop = Array.prototype.pop; x = {0:0}; x.pop(); delete x; x.length === 2. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A4_T2.js
new file mode 100644
index 000000000..ca29cbe82
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A4_T2.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.6_A4_T2;
+ * @section: 15.4.4.6, 8.6.2.1;
+ * @assertion: [[Get]], [[Delete]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[1] = -1;
+var x = [0,1];
+x.length = 2;
+
+//CHECK#1
+var pop = x.pop();
+if (pop !== 1) {
+ $ERROR('#1: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.pop() === 1. Actual: ' + (pop));
+}
+
+//CHECK#2
+if (x[1] !== -1) {
+ $ERROR('#2: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.pop(); x[1] === -1. Actual: ' + (x[1]));
+}
+
+Object.prototype[1] = -1;
+Object.prototype.length = 2;
+Object.prototype.pop = Array.prototype.pop;
+x = {0:0,1:1};
+
+//CHECK#3
+var pop = x.pop();
+if (pop !== 1) {
+ $ERROR('#3: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.pop = Array.prototype.pop; x = {0:0,1:1}; x.pop() === 1. Actual: ' + (pop));
+}
+
+//CHECK#4
+if (x[1] !== -1) {
+ $ERROR('#4: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.pop = Array.prototype.pop; x = {0:0,1:1}; x.pop(); x[1] === -1. Actual: ' + (x[1]));
+}
+
+//CHECK#6
+if (x.length !== 1) {
+ $ERROR('#6: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.pop = Array.prototype.pop; x = {0:0,1:1}; x.pop(); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+delete x.length;
+if (x.length !== 2) {
+ $ERROR('#7: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.pop = Array.prototype.pop; x = {0:0,1:1}; x.pop(); delete x; x.length === 2. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.1.js
new file mode 100644
index 000000000..9f9d7bff1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.6_A5.1;
+* @section: 15.4.4.6, 15.2.4.7, 12.6.4;
+* @assertion: The length property of pop has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.pop.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.pop.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.pop.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.pop){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.pop) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.2.js
new file mode 100644
index 000000000..ec59f2a93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.6_A5.2;
+* @section: 15.4.4.6, 15.2.4.5, 11.4.1;
+* @assertion: The length property of pop has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.prototype.pop.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.pop.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.pop.hasOwnProperty('length')));
+}
+
+delete Array.prototype.pop.length;
+
+//CHECK#2
+if (Array.prototype.pop.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.pop.length; Array.prototype.pop.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.pop.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.pop.length === undefined) {
+ $ERROR('#3: delete Array.prototype.pop.length; Array.prototype.pop.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.3.js
new file mode 100644
index 000000000..5414a0d82
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.6_A5.3;
+* @section: 15.4.4.6;
+* @assertion: The length property of pop has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.pop.length;
+Array.prototype.pop.length = Infinity;
+if (Array.prototype.pop.length !== x) {
+ $ERROR('#1: x = Array.prototype.pop.length; Array.prototype.pop.length = Infinity; Array.prototype.pop.length === x. Actual: ' + (Array.prototype.pop.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.4.js
new file mode 100644
index 000000000..fd6ba7a0f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.6_A5.4;
+* @section: 15.4.4.6;
+* @assertion: The length property of pop is 0;
+* @description: pop.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.pop.length !== 0) {
+ $ERROR('#1: Array.prototype.pop.length === 0. Actual: ' + (Array.prototype.pop.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.5.js
new file mode 100644
index 000000000..2604500b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.6_A5.5;
+* @section: 15.4.4.6, 15.2.4.7, 12.6.4;
+* @assertion: The pop property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('pop') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'pop\') === false. Actual: ' + (Array.propertyIsEnumerable('pop')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "pop") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "pop") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.6.js
new file mode 100644
index 000000000..e1e256d3c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.6_A5.6;
+* @section: 15.4.4.6;
+* @assertion: The pop property of Array has not prototype property;
+* @description: Checking Array.prototype.pop.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.pop.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.pop.prototype === undefined. Actual: ' + (Array.prototype.pop.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.7.js
new file mode 100644
index 000000000..e811cea9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.6_Array_prototype_pop/S15.4.4.6_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.6_A5.7;
+* @section: 15.4.4.6, 11.2.2;
+* @assertion: The pop property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.pop();
+ $ERROR('#1.1: new Array.prototype.pop() throw TypeError. Actual: ' + (new Array.prototype.pop()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.pop() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A1_T1.js
new file mode 100644
index 000000000..e3d193b89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A1_T1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.7_A1_T1;
+ * @section: 15.4.4.7;
+ * @assertion: The arguments are appended to the end of the array, in
+ * the order in which they appear. The new length of the array is returned
+ * as the result of the call;
+ * @description: Checking case when push is given no arguments or one argument;
+*/
+
+//CHECK#1
+var x = new Array();
+var push = x.push(1);
+if (push !== 1) {
+ $ERROR('#1: x = new Array(); x.push(1) === 1. Actual: ' + (push));
+}
+
+//CHECK#2
+if (x[0] !== 1) {
+ $ERROR('#2: x = new Array(); x.push(1); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+var push = x.push();
+if (push !== 1) {
+ $ERROR('#3: x = new Array(); x.push(1); x.push() === 1. Actual: ' + (push));
+}
+
+//CHECK#4
+if (x[1] !== undefined) {
+ $ERROR('#4: x = new Array(); x.push(1); x.push(); x[1] === unedfined. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+var push = x.push(-1);
+if (push !== 2) {
+ $ERROR('#5: x = new Array(); x.push(1); x.push(); x.push(-1) === 2. Actual: ' + (push));
+}
+
+//CHECK#6
+if (x[1] !== -1) {
+ $ERROR('#6: x = new Array(); x.push(1); x.push(-1); x[1] === -1. Actual: ' + (x[1]));
+}
+
+//CHECK#7
+if (x.length !== 2) {
+ $ERROR('#7: x = new Array(); x.push(1); x.push(); x.push(-1); x.length === 2. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A1_T2.js
new file mode 100644
index 000000000..789e8764a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A1_T2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.7_A1_T2;
+ * @section: 15.4.4.7;
+ * @assertion: The arguments are appended to the end of the array, in
+ * the order in which they appear. The new length of the array is returned
+ * as the result of the call;
+ * @description: Checking case when push is given many arguments;
+*/
+
+//CHECK#1
+var x = [];
+if (x.length !== 0) {
+ $ERROR('#1: x = []; x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#2
+x[0] = 0;
+var push = x.push(true, Number.POSITIVE_INFINITY, "NaN", "1", -1);
+if (push !== 6) {
+ $ERROR('#2: x = []; x[0] = 0; x.push(true, Number.POSITIVE_INFINITY, "NaN", "1", -1) === 6. Actual: ' + (push));
+}
+
+//CHECK#3
+if (x[0] !== 0) {
+ $ERROR('#3: x = []; x[0] = 0; x.push(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== true) {
+ $ERROR('#4: x = []; x[0] = 0; x.push(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[1] === true. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+if (x[2] !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5: x = []; x[0] = 0; x.push(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[2] === Number.POSITIVE_INFINITY. Actual: ' + (x[2]));
+}
+
+//CHECK#6
+if (x[3] !== "NaN") {
+ $ERROR('#6: x = []; x[0] = 0; x.push(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[3] === "NaN". Actual: ' + (x[3]));
+}
+
+//CHECK#7
+if (x[4] !== "1") {
+ $ERROR('#7: x = []; x[0] = 0; x.push(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[4] === "1". Actual: ' + (x[4]));
+}
+
+//CHECK#8
+if (x[5] !== -1) {
+ $ERROR('#8: x = []; x[0] = 0; x.push(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x[5] === -1. Actual: ' + (x[5]));
+}
+
+//CHECK#9
+if (x.length !== 6) {
+ $ERROR('#9: x = []; x[0] = 0; x.push(true, Number.POSITIVE_INFINITY, "NaN", "1", -1); x.length === 6. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T1.js
new file mode 100644
index 000000000..f2439230f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T1.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.7_A2_T1;
+ * @section: 15.4.4.7;
+ * @assertion: The push function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: The arguments are appended to the end of the array, in
+ * the order in which they appear. The new length of the array is returned
+ * as the result of the call;
+*/
+
+var obj = {};
+obj.push = Array.prototype.push;
+
+if (obj.length !== undefined) {
+ $ERROR('#0: var obj = {}; obj.length === undefined. Actual: ' + (obj.length));
+} else {
+ //CHECK#1
+ var push = obj.push(-1);
+if (push !== 1) {
+ $ERROR('#1: var obj = {}; obj.push = Array.prototype.push; obj.push(-1) === 1. Actual: ' + (push));
+ }
+ //CHECK#2
+ if (obj.length !== 1) {
+ $ERROR('#2: var obj = {}; obj.push = Array.prototype.push; obj.push(-1); obj.length === 1. Actual: ' + (obj.length));
+ }
+ //CHECK#3
+ if (obj["0"] !== -1) {
+ $ERROR('#3: var obj = {}; obj.push = Array.prototype.push; obj.push(-1); obj["0"] === -1. Actual: ' + (obj["0"]));
+ }
+}
+
+//CHECK#4
+obj.length = undefined;
+var push = obj.push(-4);
+if (push !== 1) {
+ $ERROR('#4: var obj = {}; obj.length = undefined; obj.push = Array.prototype.push; obj.push(-4) === 1. Actual: ' + (push));
+}
+
+//CHECK#5
+if (obj.length !== 1) {
+ $ERROR('#5: var obj = {}; obj.length = undefined; obj.push = Array.prototype.push; obj.push(-4); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#6
+if (obj["0"] !== -4) {
+ $ERROR('#6: var obj = {}; obj.length = undefined; obj.push = Array.prototype.push; obj.push(-4); obj["0"] === -4. Actual: ' + (obj["0"]));
+}
+
+//CHECK#7
+obj.length = null
+var push = obj.push(-7);
+if (push !== 1) {
+ $ERROR('#7: var obj = {}; obj.length = null; obj.push = Array.prototype.push; obj.push(-7) === 1. Actual: ' + (push));
+}
+
+//CHECK#8
+if (obj.length !== 1) {
+ $ERROR('#8: var obj = {}; obj.length = null; obj.push = Array.prototype.push; obj.push(-7); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#9
+if (obj["0"] !== -7) {
+ $ERROR('#9: var obj = {}; obj.length = null; obj.push = Array.prototype.push; obj.push(-7); obj["0"] === -7. Actual: ' + (obj["0"]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T2.js
new file mode 100644
index 000000000..27a08dfeb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T2.js
@@ -0,0 +1,117 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.7_A2_T2;
+ * @section: 15.4.4.7;
+ * @assertion: The push function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: The arguments are appended to the end of the array, in
+ * the order in which they appear. The new length of the array is returned
+ * as the result of the call;
+*/
+
+var obj = {};
+obj.push = Array.prototype.push;
+
+//CHECK#1
+obj.length = NaN;
+var push = obj.push(-1);
+if (push !== 1) {
+ $ERROR('#1: var obj = {}; obj.length = NaN; obj.push = Array.prototype.push; obj.push(-1) === 1. Actual: ' + (push));
+}
+
+//CHECK#2
+if (obj.length !== 1) {
+ $ERROR('#2: var obj = {}; obj.length = NaN; obj.push = Array.prototype.push; obj.push(-1); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj["0"] !== -1) {
+ $ERROR('#3: var obj = {}; obj.length = NaN; obj.push = Array.prototype.push; obj.push(-1); obj["0"] === -1. Actual: ' + (obj["0"]));
+}
+
+//CHECK#4
+obj.length = Number.POSITIVE_INFINITY;
+var push = obj.push(-4);
+if (push !== 1) {
+ $ERROR('#4: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.push = Array.prototype.push; obj.push(-4) === 1. Actual: ' + (push));
+}
+
+//CHECK#5
+if (obj.length !== 1) {
+ $ERROR('#6: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.push = Array.prototype.push; obj.push(-4); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#6
+if (obj["0"] !== -4) {
+ $ERROR('#6: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.push = Array.prototype.push; obj.push(-4); obj["0"] === -4. Actual: ' + (obj["0"]));
+}
+
+//CHECK#7
+obj.length = Number.NEGATIVE_INFINITY;
+var push = obj.push(-7);
+if (push !== 1) {
+ $ERROR('#7: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.push = Array.prototype.push; obj.push(-7) === 1. Actual: ' + (push));
+}
+
+//CHECK#8
+if (obj.length !== 1) {
+ $ERROR('#8: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.push = Array.prototype.push; obj.push(-7); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#9
+if (obj["0"] !== -7) {
+ $ERROR('#9: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.push = Array.prototype.push; obj.push(-7); obj["0"] === -7. Actual: ' + (obj["0"]));
+}
+
+//CHECK#10
+obj.length = 0.5;
+var push = obj.push(-10);
+if (push !== 1) {
+ $ERROR('#10: var obj = {}; obj.length = 0.5; obj.push = Array.prototype.push; obj.push(-10) === 1. Actual: ' + (push));
+}
+
+//CHECK#11
+if (obj.length !== 1) {
+ $ERROR('#11: var obj = {}; obj.length = 0.5; obj.push = Array.prototype.push; obj.push(-10); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#12
+if (obj["0"] !== -10) {
+ $ERROR('#12: var obj = {}; obj.length = 0.5; obj.push = Array.prototype.push; obj.push(-10); obj["0"] === -10. Actual: ' + (obj["0"]));
+}
+
+//CHECK#13
+obj.length = 1.5;
+var push = obj.push(-13);
+if (push !== 2) {
+ $ERROR('#13: var obj = {}; obj.length = 1.5; obj.push = Array.prototype.push; obj.push(-13) === 2. Actual: ' + (push));
+}
+
+//CHECK#14
+if (obj.length !== 2) {
+ $ERROR('#14: var obj = {}; obj.length = 1.5; obj.push = Array.prototype.push; obj.push(-13); obj.length === 2. Actual: ' + (obj.length));
+}
+
+//CHECK#15
+if (obj["1"] !== -13) {
+ $ERROR('#15: var obj = {}; obj.length = 1.5; obj.push = Array.prototype.push; obj.push(-13); obj["1"] === -13. Actual: ' + (obj["1"]));
+}
+
+//CHECK#16
+obj.length = new Number(0);
+var push = obj.push(-16);
+if (push !== 1) {
+ $ERROR('#16: var obj = {}; obj.length = new Number(0); obj.push = Array.prototype.push; obj.push(-16) === 1. Actual: ' + (push));
+}
+
+//CHECK#17
+if (obj.length !== 1) {
+ $ERROR('#17: var obj = {}; obj.length = new Number(0); obj.push = Array.prototype.push; obj.push(-16); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#18
+if (obj["0"] !== -16) {
+ $ERROR('#18: var obj = {}; obj.length = new Number(0); obj.push = Array.prototype.push; obj.push(-16); obj["0"] === -16. Actual: ' + (obj["0"]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T3.js
new file mode 100644
index 000000000..63d330351
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A2_T3.js
@@ -0,0 +1,92 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.7_A2_T3;
+ * @section: 15.4.4.7;
+ * @assertion: The push function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Operator use ToNumber from length.
+ * If Type(value) is Object, evaluate ToPrimitive(value, Number);
+*/
+
+var obj = {};
+obj.push = Array.prototype.push;
+
+//CHECK#1
+obj.length = {valueOf: function() {return 3}};
+var push = obj.push();
+if (push !== 3) {
+ $ERROR('#1: obj.length = {valueOf: function() {return 3}} obj.push() === 3. Actual: ' + (push));
+}
+
+//CHECK#2
+obj.length = {valueOf: function() {return 3}, toString: function() {return 1}};
+var push = obj.push();
+if (push !== 3) {
+ $ERROR('#0: obj.length = {valueOf: function() {return 3}, toString: function() {return 1}} obj.push() === 3. Actual: ' + (push));
+}
+
+//CHECK#3
+obj.length = {valueOf: function() {return 3}, toString: function() {return {}}};
+var push = obj.push();
+if (push !== 3) {
+ $ERROR('#1: obj.length = {valueOf: function() {return 3}, toString: function() {return {}}} obj.push() === 3. Actual: ' + (push));
+}
+
+//CHECK#4
+try {
+
+ obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}};
+ var push = obj.push();
+if (push !== 3) {
+ $ERROR('#4.1: obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}}; obj.push() === ",". Actual: ' + (push));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}}; obj.push() not throw "error"');
+ } else {
+ $ERROR('#4.3: obj.length = {valueOf: function() {return 3}, toString: function() {throw "error"}}; obj.push() not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+obj.length = {toString: function() {return 1}};
+var push = obj.push();
+if (push !== 1) {
+ $ERROR('#5: obj.length = {toString: function() {return 1}} obj.push() === 1. Actual: ' + (push));
+}
+
+//CHECK#6
+obj.length = {valueOf: function() {return {}}, toString: function() {return 1}}
+var push = obj.push();
+if (push !== 1) {
+ $ERROR('#6: obj.length = {valueOf: function() {return {}}, toString: function() {return 1}} obj.push() === 1. Actual: ' + (push));
+}
+
+//CHECK#7
+try {
+
+ obj.length = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ var push = obj.push();
+ $ERROR('#7.1: obj.length = {valueOf: function() {throw "error"}, toString: function() {return 1}}; obj.push() throw "error". Actual: ' + (push));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: obj.length = {valueOf: function() {throw "error"}, toString: function() {return 1}}; obj.push() throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+
+ obj.length = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var push = obj.push();
+ $ERROR('#8.1: obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.push() throw TypeError. Actual: ' + (push));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.push() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A3.js
new file mode 100644
index 000000000..b8d3b41e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.7_A3;
+ * @section: 15.4.4.7;
+ * @assertion: Check ToUint32(length) for Array object;
+ * @description: If ToUint32(length) !== length, throw RangeError;
+*/
+
+var x = [];
+x.length = 4294967295;
+
+//CHECK#1
+var push = x.push();
+if (push !== 4294967295) {
+ $ERROR('#1: x = []; x.length = 4294967295; x.push() === 4294967295. Actual: ' + (push));
+}
+
+//CHECK#2
+try {
+ x.push("x");
+ $ERROR('#2.1: x = []; x.length = 4294967295; x.push("x") throw RangeError. Actual: ' + (push));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#2.2: x = []; x.length = 4294967295; x.push("x") throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#3
+if (x[4294967295] !== "x") {
+ $ERROR('#3: x = []; x.length = 4294967295; try {x.push("x")}catch(e){}; x[4294967295] === "x". Actual: ' + (x[4294967295]));
+}
+
+//CHECK#4
+if (x.length !== 4294967295) {
+ $ERROR('#4: x = []; x.length = 4294967295; try {x.push("x")}catch(e){}; x.length === 4294967295. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T1.js
new file mode 100644
index 000000000..a37dcb15e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_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.
+
+/**
+ * @name: S15.4.4.7_A4_T1;
+ * @section: 15.4.4.7;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967296;
+*/
+
+var obj = {};
+obj.push = Array.prototype.push;
+obj.length = 4294967296;
+
+//CHECK#1
+var push = obj.push("x", "y", "z");
+if (push !== 3) {
+ $ERROR('#1: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967296; obj.push("x", "y", "z") === 3. Actual: ' + (push));
+}
+
+//CHECK#2
+if (obj.length !== 3) {
+ $ERROR('#2: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967296; obj.push("x", "y", "z"); obj.length === 3. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967296; obj.push("x", "y", "z"); obj[0] === "x". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== "y") {
+ $ERROR('#4: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967296; obj.push("x", "y", "z"); obj[1] === "y". Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[2] !== "z") {
+ $ERROR('#5: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967296; obj.push("x", "y", "z"); obj[2] === "z". Actual: ' + (obj[2]));
+}
+
+var obj = {};
+obj.push = Array.prototype.push;
+obj.length = 4294967296;
+
+//CHECK#6
+var push = obj.push();
+if (push !== 0) {
+ $ERROR('#6: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967296; obj.push() === 0. Actual: ' + (push));
+}
+
+//CHECK#7
+if (obj.length !== 0) {
+ $ERROR('#7: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967296; obj.push(); obj.length === 0. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T2.js
new file mode 100644
index 000000000..819011129
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.7_A4_T2;
+ * @section: 15.4.4.7;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967295;
+*/
+
+var obj = {};
+obj.push = Array.prototype.push;
+obj.length = 4294967295;
+
+//CHECK#1
+var push = obj.push("x", "y", "z");
+if (push !== 4294967298) {
+ $ERROR('#1: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967295; obj.push("x", "y", "z") === 4294967298. Actual: ' + (push));
+}
+
+//CHECK#2
+if (obj.length !== 4294967298) {
+ $ERROR('#2: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967295; obj.push("x", "y", "z"); obj.length === 4294967298. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[4294967295] !== "x") {
+ $ERROR('#3: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967295; obj.push("x", "y", "z"); obj[4294967295] === "x". Actual: ' + (obj[4294967295]));
+}
+
+//CHECK#4
+if (obj[4294967296] !== "y") {
+ $ERROR('#4: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967295; obj.push("x", "y", "z"); obj[4294967296] === "y". Actual: ' + (obj[4294967296]));
+}
+
+//CHECK#5
+if (obj[4294967297] !== "z") {
+ $ERROR('#5: var obj = {}; obj.push = Array.prototype.push; obj.length = 4294967295; obj.push("x", "y", "z"); obj[4294967297] === "z". Actual: ' + (obj[4294967297]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T3.js
new file mode 100644
index 000000000..90434088f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A4_T3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.7_A4_T3;
+ * @section: 15.4.4.7;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = -1;
+*/
+
+var obj = {};
+obj.push = Array.prototype.push;
+obj.length = -1;
+
+//CHECK#1
+var push = obj.push("x", "y", "z");
+if (push !== 4294967298) {
+ $ERROR('#1: var obj = {}; obj.push = Array.prototype.push; obj.length = -1; obj.push("x", "y", "z") === 4294967298. Actual: ' + (push));
+}
+
+//CHECK#2
+if (obj.length !== 4294967298) {
+ $ERROR('#2: var obj = {}; obj.push = Array.prototype.push; obj.length = -1; obj.push("x", "y", "z"); obj.length === 4294967298. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[4294967295] !== "x") {
+ $ERROR('#3: var obj = {}; obj.push = Array.prototype.push; obj.length = -1; obj.push("x", "y", "z"); obj[4294967295] === "x". Actual: ' + (obj[4294967295]));
+}
+
+//CHECK#4
+if (obj[4294967296] !== "y") {
+ $ERROR('#4: var obj = {}; obj.push = Array.prototype.push; obj.length = -1; obj.push("x", "y", "z"); obj[4294967296] === "y". Actual: ' + (obj[4294967296]));
+}
+
+//CHECK#5
+if (obj[4294967297] !== "z") {
+ $ERROR('#5: var obj = {}; obj.push = Array.prototype.push; obj.length = -1; obj.push("x", "y", "z"); obj[4294967297] === "z". Actual: ' + (obj[4294967297]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A5_T1.js
new file mode 100644
index 000000000..151f32412
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A5_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.7_A5_T1;
+ * @section: 15.4.4.7, 8.6.2.1;
+ * @assertion: [[Get]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Object.prototype[1] = -1;
+Object.prototype.length = 1;
+Object.prototype.push = Array.prototype.push;
+var x = {0:0};
+
+//CHECK#1
+var push = x.push(1);
+if (push !== 2) {
+ $ERROR('#1: Object.prototype[1] = 1; Object.prototype.length = -1; Object.prototype.push = Array.prototype.push; x = {0:0}; x.push(1) === 2. Actual: ' + (push));
+}
+
+//CHECK#2
+if (x.length !== 2) {
+ $ERROR('#2: Object.prototype[1] = 1; Object.prototype.length = -1; Object.prototype.push = Array.prototype.push; x = {0:0}; x.push(1); x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[1] !== 1) {
+ $ERROR('#3: Object.prototype[1] = 1; Object.prototype.length = -1; Object.prototype.push = Array.prototype.push; x = {0:0}; x.push(1); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#4
+delete x[1];
+if (x[1] !== -1) {
+ $ERROR('#4: Object.prototype[1] = 1; Object.prototype.length = -1; Object.prototype.push = Array.prototype.push; x = {0:0}; x.push(1); delete x[1]; x[1] === -1. Actual: ' + (x[1]));
+}
+
+//CHECK#5
+delete x.length;
+if (x.length !== 1) {
+ $ERROR('#5: Object.prototype[1] = 1; Object.prototype.length = -1; Object.prototype.push = Array.prototype.push; x = {0:0}; delete x; x.push(1); x.length === 1. Actual: ' + (x.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.1.js
new file mode 100644
index 000000000..35adefe1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.7_A6.1;
+* @section: 15.4.4.7, 15.2.4.7, 12.6.4;
+* @assertion: The length property of push has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.push.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.push.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.push.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.push){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.push) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.2.js
new file mode 100644
index 000000000..4cc99826e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.7_A6.2;
+* @section: 15.4.4.7, 15.2.4.5, 11.4.1;
+* @assertion: The length property of push has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.prototype.push.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.push.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.push.hasOwnProperty('length')));
+}
+
+delete Array.prototype.push.length;
+
+//CHECK#2
+if (Array.prototype.push.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.push.length; Array.prototype.push.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.push.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.push.length === undefined) {
+ $ERROR('#3: delete Array.prototype.push.length; Array.prototype.push.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.3.js
new file mode 100644
index 000000000..f8f02e34a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.7_A6.3;
+* @section: 15.4.4.7;
+* @assertion: The length property of push has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.push.length;
+Array.prototype.push.length = Infinity;
+if (Array.prototype.push.length !== x) {
+ $ERROR('#1: x = Array.prototype.push.length; Array.prototype.push.length = Infinity; Array.prototype.push.length === x. Actual: ' + (Array.prototype.push.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.4.js
new file mode 100644
index 000000000..efd67c24d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.7_A6.4;
+* @section: 15.4.4.7;
+* @assertion: The length property of push is 1;
+* @description: push.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.push.length !== 1) {
+ $ERROR('#1: Array.prototype.push.length === 1. Actual: ' + (Array.prototype.push.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.5.js
new file mode 100644
index 000000000..baf0c4b72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.7_A6.5;
+* @section: 15.4.4.7, 15.2.4.7, 12.6.4;
+* @assertion: The push property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('push') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'push\') === false. Actual: ' + (Array.propertyIsEnumerable('push')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "push") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "push") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.6.js
new file mode 100644
index 000000000..1158f4072
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.7_A6.6;
+* @section: 15.4.4.7;
+* @assertion: The push property of Array has not prototype property;
+* @description: Checking Array.prototype.push.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.push.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.push.prototype === undefined. Actual: ' + (Array.prototype.push.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.7.js
new file mode 100644
index 000000000..63d9e1a83
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.7_Array_prototype_push/S15.4.4.7_A6.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.7_A6.7;
+* @section: 15.4.4.7, 11.2.2;
+* @assertion: The push property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.push();
+ $ERROR('#1.1: new Array.prototype.push() throw TypeError. Actual: ' + (new Array.prototype.push()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.push() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A1_T1.js
new file mode 100644
index 000000000..3dd72a6a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A1_T1.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.8_A1_T1;
+ * @section: 15.4.4.8;
+ * @assertion: The elements of the array are rearranged so as to reverse their order.
+ * The object is returned as the result of the call;
+ * @description: Checking case when reverse is given no arguments or one argument;
+*/
+
+//CHECK#1
+var x = [];
+var reverse = x.reverse();
+if (reverse !== x) {
+ $ERROR('#1: x = []; x.reverse() === x. Actual: ' + (reverse));
+}
+
+//CHECK#2
+x = [];
+x[0] = 1;
+var reverse = x.reverse();
+if (reverse !== x) {
+ $ERROR('#2: x = []; x[0] = 1; x.reverse() === x. Actual: ' + (reverse));
+}
+
+//CHECK#3
+x = new Array(1,2);
+var reverse = x.reverse();
+if (reverse !== x) {
+ $ERROR('#3: x = new Array(1,2); x.reverse() === x. Actual: ' + (reverse));
+}
+
+//CHECK#4
+if (x[0] !== 2) {
+ $ERROR('#4: x = new Array(1,2); x.reverse(); x[0] === 2. Actual: ' + (x[0]));
+}
+
+//CHECK#5
+if (x[1] !== 1) {
+ $ERROR('#5: x = new Array(1,2); x.reverse(); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#6
+if (x.length !== 2) {
+ $ERROR('#6: x = new Array(1,2); x.reverse(); x.length === 2. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A1_T2.js
new file mode 100644
index 000000000..280ca3038
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A1_T2.js
@@ -0,0 +1,127 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.8_A1_T2;
+ * @section: 15.4.4.8;
+ * @assertion: The elements of the array are rearranged so as to reverse their order.
+ * The object is returned as the result of the call;
+ * @description: Checking this algorithm, elements are objects and primitives;
+*/
+
+//CHECK#1
+var x = [];
+x[0] = true;
+x[2] = Infinity;
+x[4] = undefined;
+x[5] = undefined;
+x[8] = "NaN";
+x[9] = "-1";
+
+var reverse = x.reverse();
+if (reverse !== x) {
+ $ERROR('#1: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse() === x. Actual: ' + (reverse));
+}
+
+//CHECK#2
+if (x[0] !== "-1") {
+ $ERROR('#2: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[0] === "-1". Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== "NaN") {
+ $ERROR('#3: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[1] === "NaN". Actual: ' + (x[1]));
+}
+
+//CHECK#4
+if (x[2] !== undefined) {
+ $ERROR('#4: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[2] === undefined. Actual: ' + (x[2]));
+}
+
+//CHECK#5
+if (x[3] !== undefined) {
+ $ERROR('#5: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[3] === undefined. Actual: ' + (x[3]));
+}
+
+//CHECK#6
+if (x[4] !== undefined) {
+ $ERROR('#6: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[4] === undefined. Actual: ' + (x[4]));
+}
+
+//CHECK#7
+if (x[5] !== undefined) {
+ $ERROR('#7: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[5] === undefined. Actual: ' + (x[5]));
+}
+
+//CHECK#8
+if (x[6] !== undefined) {
+ $ERROR('#8: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[6] === undefined. Actual: ' + (x[6]));
+}
+
+//CHECK#9
+if (x[7] !== Infinity) {
+ $ERROR('#9: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[7] === Infinity. Actual: ' + (x[7]));
+}
+
+//CHECK#10
+if (x[8] !== undefined) {
+ $ERROR('#10: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[8] === undefined. Actual: ' + (x[8]));
+}
+
+//CHECK#11
+if (x[9] !== true) {
+ $ERROR('#11: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x[9] === true. Actual: ' + (x[9]));
+}
+
+x.length = 9;
+
+var reverse = x.reverse();
+if (reverse !== x) {
+ $ERROR('#1: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse() === x. Actual: ' + (reverse));
+}
+
+//CHECK#12
+if (x[0] !== undefined) {
+ $ERROR('#12: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse(); x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#13
+if (x[1] !== Infinity) {
+ $ERROR('#13: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse(); x[1] === Infinity. Actual: ' + (x[1]));
+}
+
+//CHECK#14
+if (x[2] !== undefined) {
+ $ERROR('#14: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse(); x[2] === undefined. Actual: ' + (x[2]));
+}
+
+//CHECK#15
+if (x[3] !== undefined) {
+ $ERROR('#15: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse(); x[3] === undefined. Actual: ' + (x[3]));
+}
+
+//CHECK#16
+if (x[4] !== undefined) {
+ $ERROR('#16: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse(); x[4] === undefined. Actual: ' + (x[4]));
+}
+
+//CHECK#17
+if (x[5] !== undefined) {
+ $ERROR('#17: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse(); x[5] === undefined. Actual: ' + (x[5]));
+}
+
+//CHECK#18
+if (x[6] !== undefined) {
+ $ERROR('#18: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse(); x[6] === undefined. Actual: ' + (x[6]));
+}
+
+//CHECK#19
+if (x[7] !== "NaN") {
+ $ERROR('#19: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse(); x[7] === "NaN". Actual: ' + (x[7]));
+}
+
+//CHECK#20
+if (x[8] !== "-1") {
+ $ERROR('#20: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = "NaN"; x[9] = "-1"; x.reverse(); x.length = 9; x.reverse(); x[8] === "-1". Actual: ' + (x[8]));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T1.js
new file mode 100644
index 000000000..19580f77b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T1.js
@@ -0,0 +1,129 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.8_A2_T1;
+ * @section: 15.4.4.8;
+ * @assertion: The reverse function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Checking this for Object object, elements are objects and primitives, length is integer;
+*/
+
+//CHECK#1
+var obj = {};
+obj.length = 10;
+obj.reverse = Array.prototype.reverse;
+
+obj[0] = true;
+obj[2] = Infinity;
+obj[4] = undefined;
+obj[5] = undefined;
+obj[8] = "NaN";
+obj[9] = "-1";
+
+var reverse = obj.reverse();
+if (reverse !== obj) {
+ $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse() === obj. Actual: ' + (reverse));
+}
+
+//CHECK#2
+if (obj[0] !== "-1") {
+ $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[0] === "-1". Actual: ' + (obj[0]));
+}
+
+//CHECK#3
+if (obj[1] !== "NaN") {
+ $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[1] === "NaN". Actual: ' + (obj[1]));
+}
+
+//CHECK#4
+if (obj[2] !== undefined) {
+ $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));
+}
+
+//CHECK#5
+if (obj[3] !== undefined) {
+ $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));
+}
+
+//CHECK#6
+if (obj[4] !== undefined) {
+ $ERROR('#6: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));
+}
+
+//CHECK#7
+if (obj[5] !== undefined) {
+ $ERROR('#7: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));
+}
+
+//CHECK#8
+if (obj[6] !== undefined) {
+ $ERROR('#8: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));
+}
+
+//CHECK#9
+if (obj[7] !== Infinity) {
+ $ERROR('#9: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[7] === Infinity. Actual: ' + (obj[7]));
+}
+
+//CHECK#10
+if (obj[8] !== undefined) {
+ $ERROR('#10: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[8] === undefined. Actual: ' + (obj[8]));
+}
+
+//CHECK#11
+if (obj[9] !== true) {
+ $ERROR('#11: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[9] === true. Actual: ' + (obj[9]));
+}
+
+obj.length = 9;
+
+var reverse = obj.reverse();
+if (reverse !== obj) {
+ $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse() === obj. Actual: ' + (reverse));
+}
+
+//CHECK#12
+if (obj[0] !== undefined) {
+ $ERROR('#12: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse(); obj[0] === undefined. Actual: ' + (obj[0]));
+}
+
+//CHECK#13
+if (obj[1] !== Infinity) {
+ $ERROR('#13: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse(); obj[1] === Infinity. Actual: ' + (obj[1]));
+}
+
+//CHECK#14
+if (obj[2] !== undefined) {
+ $ERROR('#14: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));
+}
+
+//CHECK#15
+if (obj[3] !== undefined) {
+ $ERROR('#15: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));
+}
+
+//CHECK#16
+if (obj[4] !== undefined) {
+ $ERROR('#16: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));
+}
+
+//CHECK#17
+if (obj[5] !== undefined) {
+ $ERROR('#17: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));
+}
+
+//CHECK#18
+if (obj[6] !== undefined) {
+ $ERROR('#18: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));
+}
+
+//CHECK#19
+if (obj[7] !== "NaN") {
+ $ERROR('#19: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse(); obj[7] === "NaN". Actual: ' + (obj[7]));
+}
+
+//CHECK#20
+if (obj[8] !== "-1") {
+ $ERROR('#20: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = 9; obj.reverse(); obj[8] === "-1". Actual: ' + (obj[8]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T2.js
new file mode 100644
index 000000000..6a11f218b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T2.js
@@ -0,0 +1,129 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.8_A2_T2;
+ * @section: 15.4.4.8;
+ * @assertion: The reverse function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Checking this for Object object, elements are objects and primitives, length is not integer;
+*/
+
+//CHECK#1
+var obj = {};
+obj.length = 10.5;
+obj.reverse = Array.prototype.reverse;
+
+obj[0] = true;
+obj[2] = Infinity;
+obj[4] = undefined;
+obj[5] = undefined;
+obj[8] = "NaN";
+obj[9] = "-1";
+
+var reverse = obj.reverse();
+if (reverse !== obj) {
+ $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse() === obj. Actual: ' + (reverse));
+}
+
+//CHECK#2
+if (obj[0] !== "-1") {
+ $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[0] === "-1". Actual: ' + (obj[0]));
+}
+
+//CHECK#3
+if (obj[1] !== "NaN") {
+ $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[1] === "NaN". Actual: ' + (obj[1]));
+}
+
+//CHECK#4
+if (obj[2] !== undefined) {
+ $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));
+}
+
+//CHECK#5
+if (obj[3] !== undefined) {
+ $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));
+}
+
+//CHECK#6
+if (obj[4] !== undefined) {
+ $ERROR('#6: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));
+}
+
+//CHECK#7
+if (obj[5] !== undefined) {
+ $ERROR('#7: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));
+}
+
+//CHECK#8
+if (obj[6] !== undefined) {
+ $ERROR('#8: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));
+}
+
+//CHECK#9
+if (obj[7] !== Infinity) {
+ $ERROR('#9: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[7] === Infinity. Actual: ' + (obj[7]));
+}
+
+//CHECK#10
+if (obj[8] !== undefined) {
+ $ERROR('#10: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[8] === undefined. Actual: ' + (obj[8]));
+}
+
+//CHECK#11
+if (obj[9] !== true) {
+ $ERROR('#11: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[9] === true. Actual: ' + (obj[9]));
+}
+
+obj.length = new Number(9.5);
+
+var reverse = obj.reverse();
+if (reverse !== obj) {
+ $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse() === obj. Actual: ' + (reverse));
+}
+
+//CHECK#12
+if (obj[0] !== undefined) {
+ $ERROR('#12: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[0] === undefined. Actual: ' + (obj[0]));
+}
+
+//CHECK#13
+if (obj[1] !== Infinity) {
+ $ERROR('#13: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[1] === Infinity. Actual: ' + (obj[1]));
+}
+
+//CHECK#14
+if (obj[2] !== undefined) {
+ $ERROR('#14: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));
+}
+
+//CHECK#15
+if (obj[3] !== undefined) {
+ $ERROR('#15: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));
+}
+
+//CHECK#16
+if (obj[4] !== undefined) {
+ $ERROR('#16: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));
+}
+
+//CHECK#17
+if (obj[5] !== undefined) {
+ $ERROR('#17: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));
+}
+
+//CHECK#18
+if (obj[6] !== undefined) {
+ $ERROR('#18: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));
+}
+
+//CHECK#19
+if (obj[7] !== "NaN") {
+ $ERROR('#19: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[7] === "NaN". Actual: ' + (obj[7]));
+}
+
+//CHECK#20
+if (obj[8] !== "-1") {
+ $ERROR('#20: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[8] === "-1". Actual: ' + (obj[8]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T3.js
new file mode 100644
index 000000000..1c0c42a88
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A2_T3.js
@@ -0,0 +1,129 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.8_A2_T3;
+ * @section: 15.4.4.8;
+ * @assertion: The reverse function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Checking this for Object object, elements are objects and primitives, length is string;
+*/
+
+//CHECK#1
+var obj = {};
+obj.length = "10";
+obj.reverse = Array.prototype.reverse;
+
+obj[0] = true;
+obj[2] = Infinity;
+obj[4] = undefined;
+obj[5] = undefined;
+obj[8] = "NaN";
+obj[9] = "-1";
+
+var reverse = obj.reverse();
+if (reverse !== obj) {
+ $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse() === obj. Actual: ' + (reverse));
+}
+
+//CHECK#2
+if (obj[0] !== "-1") {
+ $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[0] === "-1". Actual: ' + (obj[0]));
+}
+
+//CHECK#3
+if (obj[1] !== "NaN") {
+ $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[1] === "NaN". Actual: ' + (obj[1]));
+}
+
+//CHECK#4
+if (obj[2] !== undefined) {
+ $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));
+}
+
+//CHECK#5
+if (obj[3] !== undefined) {
+ $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));
+}
+
+//CHECK#6
+if (obj[4] !== undefined) {
+ $ERROR('#6: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));
+}
+
+//CHECK#7
+if (obj[5] !== undefined) {
+ $ERROR('#7: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));
+}
+
+//CHECK#8
+if (obj[6] !== undefined) {
+ $ERROR('#8: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));
+}
+
+//CHECK#9
+if (obj[7] !== Infinity) {
+ $ERROR('#9: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[7] === Infinity. Actual: ' + (obj[7]));
+}
+
+//CHECK#10
+if (obj[8] !== undefined) {
+ $ERROR('#10: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[8] === undefined. Actual: ' + (obj[8]));
+}
+
+//CHECK#11
+if (obj[9] !== true) {
+ $ERROR('#11: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj[9] === true. Actual: ' + (obj[9]));
+}
+
+obj.length = new String("9");
+
+var reverse = obj.reverse();
+if (reverse !== obj) {
+ $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse() === obj. Actual: ' + (reverse));
+}
+
+//CHECK#12
+if (obj[0] !== undefined) {
+ $ERROR('#12: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse(); obj[0] === undefined. Actual: ' + (obj[0]));
+}
+
+//CHECK#13
+if (obj[1] !== Infinity) {
+ $ERROR('#13: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse(); obj[1] === Infinity. Actual: ' + (obj[1]));
+}
+
+//CHECK#14
+if (obj[2] !== undefined) {
+ $ERROR('#14: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));
+}
+
+//CHECK#15
+if (obj[3] !== undefined) {
+ $ERROR('#15: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));
+}
+
+//CHECK#16
+if (obj[4] !== undefined) {
+ $ERROR('#16: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));
+}
+
+//CHECK#17
+if (obj[5] !== undefined) {
+ $ERROR('#17: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));
+}
+
+//CHECK#18
+if (obj[6] !== undefined) {
+ $ERROR('#18: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));
+}
+
+//CHECK#19
+if (obj[7] !== "NaN") {
+ $ERROR('#19: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse(); obj[7] === "NaN". Actual: ' + (obj[7]));
+}
+
+//CHECK#20
+if (obj[8] !== "-1") {
+ $ERROR('#20: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = "10"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = "NaN"; obj[9] = "-1"; obj.reverse(); obj.length = new String("9"); obj.reverse(); obj[8] === "-1". Actual: ' + (obj[8]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T1.js
new file mode 100644
index 000000000..c82a39b8e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_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.
+
+/**
+ * @name: S15.4.4.8_A3_T1;
+ * @section: 15.4.4.8;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967296;
+*/
+
+var obj = {};
+obj.reverse = Array.prototype.reverse;
+obj[0] = "x";
+obj[4294967295] = "y";
+obj.length = 4294967296;
+
+//CHECK#1
+var reverse = obj.reverse();
+if (reverse !== obj) {
+ $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.reverse() === obj. Actual: ' + (reverse));
+}
+
+//CHECK#2
+if (obj.length !== 4294967296) {
+ $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.reverse(); obj.length === 4294967296. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.reverse(); obj[0] == "x"');
+}
+
+//CHECK#4
+if (obj[4294967295] !== "y") {
+ $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj[] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.reverse(); obj[4294967295] == "y"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T2.js
new file mode 100644
index 000000000..15de9074c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T2.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.8_A3_T2;
+ * @section: 15.4.4.8;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = 4294967298;
+*/
+
+var obj = {};
+obj.reverse = Array.prototype.reverse;
+obj[0] = "x";
+obj[1] = "y";
+obj[4294967297] = "z";
+obj.length = 4294967298;
+
+//CHECK#1
+var reverse = obj.reverse();
+if (reverse !== obj) {
+ $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[4294967297] = "z"; obj.length = 4294967298; obj.reverse() === obj. Actual: ' + (reverse));
+}
+
+//CHECK#2
+if (obj.length !== 4294967298) {
+ $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[4294967297] = "z"; obj.length = 4294967298; obj.reverse(); obj.length === 4294967298. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "y") {
+ $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[4294967297] = "z"; obj.length = 4294967298; obj.reverse(); obj[0] === "y". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== "x") {
+ $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[4294967297] = "z"; obj.length = 4294967298; obj.reverse(); obj[1] === "x". Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[4294967297] !== "z") {
+ $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[4294967297] = "z"; obj.length = 4294967298; obj.reverse(); obj[4294967297] === "z". Actual: ' + (obj[4294967297]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T3.js
new file mode 100644
index 000000000..0a64da385
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A3_T3.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.8_A3_T3;
+ * @section: 15.4.4.8;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length = -4294967294;
+*/
+
+var obj = {};
+obj.reverse = Array.prototype.reverse;
+obj[0] = "x";
+obj[1] = "y";
+obj[2] = "z";
+obj.length = -4294967294;
+
+//CHECK#1
+var reverse = obj.reverse();
+if (reverse !== obj) {
+ $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[2] = "z"; obj.length = -4294967294; obj.reverse() === obj. Actual: ' + (reverse));
+}
+
+//CHECK#2
+if (obj.length !== -4294967294) {
+ $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[2] = "z"; obj.length = -4294967294; obj.reverse(); obj.length === -4294967294. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "y") {
+ $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[2] = "z"; obj.length = -4294967294; obj.reverse(); obj[0] === "y". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== "x") {
+ $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[2] = "z"; obj.length = -4294967294; obj.reverse(); obj[1] === "x". Actual: ' + (obj[1]));
+}
+
+//CHECK#5
+if (obj[2] !== "z") {
+ $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = "x"; obj[1] = "y"; obj[2] = "z"; obj.length = -4294967294; obj.reverse(); obj[2] === "z". Actual: ' + (obj[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A4_T1.js
new file mode 100644
index 000000000..48ba1fcb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A4_T1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.8_A4_T1;
+ * @section: 15.4.4.8, 8.6.2.1, 8.6.2.5;
+ * @assertion: [[Get]], [[Delete]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[1] = 1;
+var x = [0];
+x.length = 2;
+x.reverse();
+
+//CHECK#1
+if (x[0] !== 1) {
+ $ERROR('#1: Array.prototype[1] = 1; x = [0]; x.length = 2; x.reverse(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+if (x[1] !== 0) {
+ $ERROR('#2: Array.prototype[1] = 1; x = [0]; x.length = 2; x.reverse(); x[1] === 0. Actual: ' + (x[1]));
+}
+
+x.length = 0;
+
+//CHECK#3
+if (x[0] !== undefined) {
+ $ERROR('#3: Array.prototype[1] = 1; x = [0]; x.length = 2; x.reverse(); x.length = 0; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== 1) {
+ $ERROR('#4: Array.prototype[1] = 1; x = [0]; x.length = 2; x.reverse(); x.length = 0; x[1] === 1. Actual: ' + (x[1]));
+}
+
+Object.prototype[1] = 1;
+Object.prototype.length = 2;
+Object.prototype.reverse = Array.prototype.reverse;
+x = {0:0};
+x.reverse();
+
+//CHECK#5
+if (x[0] !== 1) {
+ $ERROR('#5: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0}; x.reverse(); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== 0) {
+ $ERROR('#6: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0}; x.reverse(); x[1] === 0. Actual: ' + (x[1]));
+}
+
+delete x[0];
+delete x[1];
+
+//CHECK#7
+if (x[0] !== undefined) {
+ $ERROR('#7: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0}; x.reverse(); delete x[0]; delete x[1]; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#8
+if (x[1] !== 1) {
+ $ERROR('#8: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0}; x.reverse(); delete x[0]; delete x[1]; x[1] === 1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A4_T2.js
new file mode 100644
index 000000000..6ec192585
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A4_T2.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.8_A4_T2;
+ * @section: 15.4.4.8, 8.6.2.1, 8.6.2.5;
+ * @assertion: [[Get]], [[Delete]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[1] = -1;
+var x = [0,1];
+x.length = 2;
+x.reverse();
+
+//CHECK#1
+if (x[0] !== 1) {
+ $ERROR('#1: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.reverse(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+if (x[1] !== 0) {
+ $ERROR('#2: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.reverse(); x[1] === 0. Actual: ' + (x[1]));
+}
+
+x.length = 0;
+
+//CHECK#3
+if (x[0] !== undefined) {
+ $ERROR('#3: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.reverse(); x.length = 0; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x[1] !== -1) {
+ $ERROR('#4: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.reverse(); x.length = 0; x[1] === -1. Actual: ' + (x[1]));
+}
+
+Object.prototype[1] = -1;
+Object.prototype.length = 2;
+Object.prototype.reverse = Array.prototype.reverse;
+x = {0:0,1:1};
+x.reverse();
+
+//CHECK#5
+if (x[0] !== 1) {
+ $ERROR('#5: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0,1:1}; x.reverse(); x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== 0) {
+ $ERROR('#6: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0,1:1}; x.reverse(); x[1] === 0. Actual: ' + (x[1]));
+}
+
+delete x[0];
+delete x[1];
+
+//CHECK#7
+if (x[0] !== undefined) {
+ $ERROR('#7: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0,1:1}; x.reverse(); delete x[0]; delete x[1]; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#8
+if (x[1] !== -1) {
+ $ERROR('#8: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0,1:1}; x.reverse(); delete x[0]; delete x[1]; x[1] === -1. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.1.js
new file mode 100644
index 000000000..3ff2a632b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.8_A5.1;
+* @section: 15.4.4.8, 15.2.4.7, 12.6.4;
+* @assertion: The length property of reverse has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.reverse.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.reverse.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.reverse.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (p in Array.reverse){
+ if (p === "length") {
+ var result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.reverse) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.2.js
new file mode 100644
index 000000000..658e07c05
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.8_A5.2;
+* @section: 15.4.4.8, 15.2.4.5, 11.4.1;
+* @assertion: The length property of reverse has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+if (Array.prototype.reverse.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.reverse.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.reverse.hasOwnProperty('length')));
+}
+
+delete Array.prototype.reverse.length;
+
+//CHECK#2
+if (Array.prototype.reverse.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.reverse.length; Array.prototype.reverse.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.reverse.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.reverse.length === undefined) {
+ $ERROR('#3: delete Array.prototype.reverse.length; Array.prototype.reverse.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.3.js
new file mode 100644
index 000000000..da611ab8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.8_A5.3;
+* @section: 15.4.4.8;
+* @assertion: The length property of reverse has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.reverse.length;
+Array.prototype.reverse.length = Infinity;
+if (Array.prototype.reverse.length !== x) {
+ $ERROR('#1: x = Array.prototype.reverse.length; Array.prototype.reverse.length = Infinity; Array.prototype.reverse.length === x. Actual: ' + (Array.prototype.reverse.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.4.js
new file mode 100644
index 000000000..41981d4e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.8_A5.4;
+* @section: 15.4.4.8;
+* @assertion: The length property of reverse is 0;
+* @description: reverse.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.reverse.length !== 0) {
+ $ERROR('#1: Array.prototype.reverse.length === 0. Actual: ' + (Array.prototype.reverse.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.5.js
new file mode 100644
index 000000000..8deb3eaec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.8_A5.5;
+* @section: 15.4.4.8, 15.2.4.7, 12.6.4;
+* @assertion: The reverse property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('reverse') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'reverse\') === false. Actual: ' + (Array.propertyIsEnumerable('reverse')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "reverse") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "reverse") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.6.js
new file mode 100644
index 000000000..d47587cdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.8_A5.6;
+* @section: 15.4.4.8;
+* @assertion: The reverse property of Array has not prototype property;
+* @description: Checking Array.prototype.reverse.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.reverse.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.reverse.prototype === undefined. Actual: ' + (Array.prototype.reverse.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.7.js
new file mode 100644
index 000000000..806e0fa18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.8_Array_prototype_reverse/S15.4.4.8_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.8_A5.7;
+* @section: 15.4.4.8, 11.2.2;
+* @assertion: The reverse property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.reverse();
+ $ERROR('#1.1: new Array.prototype.reverse() throw TypeError. Actual: ' + (new Array.prototype.reverse()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.reverse() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A1.1_T1.js
new file mode 100644
index 000000000..971625e12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A1.1_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A1.1_T1;
+ * @section: 15.4.4.9;
+ * @assertion: If length equal zero, call the [[Put]] method of this object
+ * with arguments "length" and 0 and return undefined;
+ * @description: Checking this algorithm;
+*/
+
+//CHECK#1
+var x = new Array();
+var shift = x.shift();
+if (shift !== undefined) {
+ $ERROR('#1: var x = new Array(); x.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#2
+if (x.length !== 0) {
+ $ERROR('#2: var x = new Array(); x.shift(); x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#3
+var x = Array(1,2,3);
+x.length = 0;
+var shift = x.shift();
+if (shift !== undefined) {
+ $ERROR('#2: var x = Array(1,2,3); x.length = 0; x.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#4
+if (x.length !== 0) {
+ $ERROR('#4: var x = new Array(1,2,3); x.length = 0; x.shift(); x.length === 0. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A1.2_T1.js
new file mode 100644
index 000000000..66d285bd5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A1.2_T1.js
@@ -0,0 +1,68 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A1.2_T1;
+ * @section: 15.4.4.9;
+ * @assertion: The first element of the array is removed from the array and
+ * returned;
+ * @description: Checking this use new Array() and [];
+*/
+
+//CHECK#1
+var x = new Array(0,1,2,3);
+var shift = x.shift();
+if (shift !== 0) {
+ $ERROR('#1: x = new Array(0,1,2,3); x.shift() === 0. Actual: ' + (shift));
+}
+
+//CHECK#2
+if (x.length !== 3) {
+ $ERROR('#2: x = new Array(0,1,2,3); x.shift(); x.length == 3');
+}
+
+//CHECK#3
+if (x[0] !== 1) {
+ $ERROR('#3: x = new Array(0,1,2,3); x.shift(); x[0] == 1');
+}
+
+//CHECK#4
+if (x[1] !== 2) {
+ $ERROR('#4: x = new Array(0,1,2,3); x.shift(); x[1] == 2');
+}
+
+//CHECK#5
+x = [];
+x[0] = 0;
+x[3] = 3;
+var shift = x.shift();
+if (shift !== 0) {
+ $ERROR('#5: x = []; x[0] = 0; x[3] = 3; x.shift() === 0. Actual: ' + (shift));
+}
+
+//CHECK#6
+if (x.length !== 3) {
+ $ERROR('#6: x = []; x[0] = 0; x[3] = 3; x.shift(); x.length == 3');
+}
+
+//CHECK#7
+if (x[0] !== undefined) {
+ $ERROR('#7: x = []; x[0] = 0; x[3] = 3; x.shift(); x[0] == undefined');
+}
+
+//CHECK#8
+if (x[12] !== undefined) {
+ $ERROR('#8: x = []; x[0] = 0; x[3] = 3; x.shift(); x[1] == undefined');
+}
+
+//CHECK#9
+x.length = 1;
+var shift = x.shift();
+if (shift !== undefined) {
+ $ERROR('#9: x = []; x[0] = 0; x[3] = 3; x.shift(); x.length = 1; x.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#10
+if (x.length !== 0) {
+ $ERROR('#10: x = []; x[0] = 0; x[3] = 3; x.shift(); x.length = 1; x.shift(); x.length === 0. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T1.js
new file mode 100644
index 000000000..542806bf5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A2_T1;
+ * @section: 15.4.4.9;
+ * @assertion: The shift function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If ToUint32(length) equal zero, call the [[Put]] method
+ * of this object with arguments "length" and 0 and return undefined;
+*/
+
+var obj = {};
+obj.shift = Array.prototype.shift;
+
+if (obj.length !== undefined) {
+ $ERROR('#0: var obj = {}; obj.length === undefined. Actual: ' + (obj.length));
+} else {
+ //CHECK#1
+ var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#1: var obj = {}; obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+ }
+ //CHECK#2
+ if (obj.length !== 0) {
+ $ERROR('#2: var obj = {}; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+ }
+}
+
+//CHECK#3
+obj.length = undefined;
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#3: var obj = {}; obj.length = undefined; obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#4
+if (obj.length !== 0) {
+ $ERROR('#4: var obj = {}; obj.length = undefined; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#5
+obj.length = null
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#5: var obj = {}; obj.length = null; obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#6
+if (obj.length !== 0) {
+ $ERROR('#6: var obj = {}; obj.length = null; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T2.js
new file mode 100644
index 000000000..330929b51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T2.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A2_T2;
+ * @section: 15.4.4.9;
+ * @assertion: The shift function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: If ToUint32(length) equal zero, call the [[Put]] method
+ * of this object with arguments "length" and 0 and return undefined;
+*/
+
+var obj = {};
+obj.shift = Array.prototype.shift;
+
+//CHECK#1
+obj.length = NaN;
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#1: var obj = {}; obj.length = NaN; obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#2
+if (obj.length !== 0) {
+ $ERROR('#2: var obj = {}; obj.length = NaN; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+obj.length = Number.POSITIVE_INFINITY;
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#3: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#4
+if (obj.length !== 0) {
+ $ERROR('#4: var obj = {}; obj.length = Number.POSITIVE_INFINITY; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#5
+obj.length = Number.NEGATIVE_INFINITY;
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#5: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#6
+if (obj.length !== 0) {
+ $ERROR('#6: var obj = {}; obj.length = Number.NEGATIVE_INFINITY; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#7
+obj.length = -0;
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#7: var obj = {}; obj.length = -0; obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#8
+if (obj.length !== 0) {
+ $ERROR('#8: var obj = {}; obj.length = -0; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+} else {
+ if (1/obj.length !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8: var obj = {}; obj.length = -0; obj.shift = Array.prototype.shift; obj.shift(); obj.length === +0. Actual: ' + (obj.length));
+ }
+}
+
+//CHECK#9
+obj.length = 0.5;
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#9: var obj = {}; obj.length = 0.5; obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#10
+if (obj.length !== 0) {
+ $ERROR('#10: var obj = {}; obj.length = 0.5; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#11
+obj.length = new Number(0);
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#11: var obj = {}; obj.length = new Number(0); obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#12
+if (obj.length !== 0) {
+ $ERROR('#12: var obj = {}; obj.length = new Number(0); obj.shift = Array.prototype.shift; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T3.js
new file mode 100644
index 000000000..637e6a167
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A2_T3;
+ * @section: 15.4.4.9;
+ * @assertion: The shift function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: The first element of the array is removed from the array and
+ * returned;
+*/
+
+var obj = {};
+obj.shift = Array.prototype.shift;
+
+//CHECK#1
+obj.length = 2.5;
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#1: var obj = {}; obj.length = 2.5; obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#2
+if (obj.length !== 1) {
+ $ERROR('#2: var obj = {}; obj.length = 2.5; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+obj.length = new Number(2);
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#11: var obj = {}; obj.length = new Number(2); obj.shift = Array.prototype.shift; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#3
+if (obj.length !== 1) {
+ $ERROR('#12: var obj = {}; obj.length = new Number(2); obj.shift = Array.prototype.shift; obj.shift(); obj.length === 1. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T4.js
new file mode 100644
index 000000000..9b68af688
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T4.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A2_T4;
+ * @section: 15.4.4.9;
+ * @assertion: The shift function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: The first element of the array is removed from the array and
+ * returned;
+*/
+
+var obj = {};
+obj["0"] = 0;
+obj["3"] = 3;
+obj.shift = Array.prototype.shift;
+
+//CHECK#1
+obj.length = 4;
+var shift = obj.shift();
+if (shift !== 0) {
+ $ERROR('#1: var obj = {}; obj["0"] = 0; obj["3"] = 3; obj.length = 4; obj.shift = Array.prototype.shift; obj.shift() === 0. Actual: ' + (shift));
+}
+
+//CHECK#2
+if (obj.length !== 3) {
+ $ERROR('#2: var obj = {}; obj["0"] = 0; obj["3"] = 3; obj.length = 4; obj.shift = Array.prototype.shift; obj.shift(); obj.length === 3. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#3: var obj = {}; obj["0"] = 0; obj["3"] = 3; obj.length = 4; obj.shift = Array.prototype.shift; obj.shift(); obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#4
+if (obj.length !== 2) {
+ $ERROR('#4: var obj = {}; obj["0"] = 0; obj["3"] = 3; obj.length = 4; obj.shift = Array.prototype.shift; obj.shift(); obj.shift(); obj.length === 2. Actual: ' + (obj.length));
+}
+
+//CHECK#5
+obj.length = 1;
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#5: var obj = {}; obj["0"] = 0; obj["3"] = 3; obj.length = 4; obj.shift = Array.prototype.shift; obj.shift(); obj.shift(); obj.length = 1; obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#6
+if (obj.length !== 0) {
+ $ERROR('#6: var obj = {}; obj["0"] = 0; obj["3"] = 3; obj.length = 4; obj.shift = Array.prototype.shift; obj.shift(); obj.shift(); obj.length = 1; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T5.js
new file mode 100644
index 000000000..86089f9e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A2_T5.js
@@ -0,0 +1,97 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A2_T5;
+ * @section: 15.4.4.9;
+ * @assertion: The shift function is intentionally generic.
+ * It does not require that its this value be an Array object;
+ * @description: Operator use ToNumber from length.
+ * If Type(value) is Object, evaluate ToPrimitive(value, Number);
+*/
+
+var obj = {};
+obj.shift = Array.prototype.shift;
+
+//CHECK#1
+obj[0] = -1;
+obj.length = {valueOf: function() {return 1}};
+var shift = obj.shift();
+if (shift !== -1) {
+ $ERROR('#1: obj[0] = -1; obj.length = {valueOf: function() {return 1}} obj.shift() === -1. Actual: ' + (shift));
+}
+
+//CHECK#2
+obj[0] = -1;
+obj.length = {valueOf: function() {return 1}, toString: function() {return 0}};
+var shift = obj.shift();
+if (shift !== -1) {
+ $ERROR('#0: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {return 0}} obj.shift() === -1. Actual: ' + (shift));
+}
+
+//CHECK#3
+obj[0] = -1;
+obj.length = {valueOf: function() {return 1}, toString: function() {return {}}};
+var shift = obj.shift();
+if (shift !== -1) {
+ $ERROR('#3: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {return {}}} obj.shift() === -1. Actual: ' + (shift));
+}
+
+//CHECK#4
+try {
+ obj[0] = -1;
+ obj.length = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ var shift = obj.shift();
+if (shift !== -1) {
+ $ERROR('#4.1: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {throw "error"}}; obj.shift() === ",". Actual: ' + (shift));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {throw "error"}}; obj.shift() not throw "error"');
+ } else {
+ $ERROR('#4.3: obj[0] = -1; obj.length = {valueOf: function() {return 1}, toString: function() {throw "error"}}; obj.shift() not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+obj[0] = -1;
+obj.length = {toString: function() {return 0}};
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#5: obj[0] = -1; obj.length = {toString: function() {return 0}} obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#6
+obj[0] = -1;
+obj.length = {valueOf: function() {return {}}, toString: function() {return 0}}
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#6: obj[0] = -1; obj.length = {valueOf: function() {return {}}, toString: function() {return 0}} obj.shift() === undefined. Actual: ' + (shift));
+}
+
+//CHECK#7
+try {
+ obj[0] = -1;
+ obj.length = {valueOf: function() {throw "error"}, toString: function() {return 0}};
+ var shift = obj.shift();
+ $ERROR('#7.1: obj[0] = -1; obj.length = {valueOf: function() {throw "error"}, toString: function() {return 0}}; obj.shift() throw "error". Actual: ' + (shift));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: obj[0] = -1; obj.length = {valueOf: function() {throw "error"}, toString: function() {return 0}}; obj.shift() throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ obj[0] = -1;
+ obj.length = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var shift = obj.shift();
+ $ERROR('#8.1: obj[0] = -1; obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.shift() throw TypeError. Actual: ' + (shift));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: obj[0] = -1; obj.length = {valueOf: function() {return {}}, toString: function() {return {}}} obj.shift() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T1.js
new file mode 100644
index 000000000..bf15b7587
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_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.
+
+/**
+ * @name: S15.4.4.9_A3_T1;
+ * @section: 15.4.4.9;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length is arbitrarily;
+*/
+
+var obj = {};
+obj.shift = Array.prototype.shift;
+obj[0] = "x";
+obj[4294967295] = "y";
+obj.length = 4294967296;
+
+//CHECK#1
+var shift = obj.shift();
+if (shift !== undefined) {
+ $ERROR('#1: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.shift() === unedfined. Actual: ' + (shift));
+}
+
+//CHECK#2
+if (obj.length !== 0) {
+ $ERROR('#2: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "x") {
+ $ERROR('#3: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.shift(); obj[0] === "x". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[4294967295] !== "y") {
+ $ERROR('#4: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[4294967295] = "y"; obj.length = 4294967296; obj.shift(); obj[4294967295] === "y". Actual: ' + (obj[4294967295]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T2.js
new file mode 100644
index 000000000..b70ee1eb3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T2.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A3_T2;
+ * @section: 15.4.4.9;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length is arbitrarily;
+*/
+
+var obj = {};
+obj.shift = Array.prototype.shift;
+obj[0] = "x";
+obj[1] = "y";
+obj[4294967296] = "z";
+obj.length = 4294967297;
+
+//CHECK#1
+var shift = obj.shift();
+if (shift !== "x") {
+ $ERROR('#1: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[1] = "y"; obj[4294967296] = "z"; obj.length = 4294967297; obj.shift() === "x". Actual: ' + (shift));
+}
+
+//CHECK#2
+if (obj.length !== 0) {
+ $ERROR('#2: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[1] = "y"; obj[4294967296] = "z"; obj.length = 4294967297; obj.shift(); obj.length === 0. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== undefined) {
+ $ERROR('#3: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[1] = "y"; obj[4294967296] = "z"; obj.length = 4294967297; obj.shift(); obj[0] === undefined. Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== "y") {
+ $ERROR('#4: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[1] = "y"; obj[4294967296] = "z"; obj.length = 4294967297; obj.shift(); obj[1] === "y". Actual: ' + (obj[1]));
+}
+
+//CHECK#4
+if (obj[4294967296] !== "z") {
+ $ERROR('#4: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[1] = "y"; obj[4294967296] = "z"; obj.length = 4294967297; obj.shift(); obj[4294967296] === "z". Actual: ' + (obj[4294967296]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T3.js
new file mode 100644
index 000000000..3bc3fc23c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A3_T3.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A3_T3;
+ * @section: 15.4.4.9;
+ * @assertion: Check ToUint32(length) for non Array objects;
+ * @description: length is arbitrarily;
+*/
+
+var obj = {};
+obj.shift = Array.prototype.shift;
+obj[0] = "x";
+obj[1] = "y";
+obj.length = -4294967294;
+
+//CHECK#1
+var shift = obj.shift();
+if (shift !== "x") {
+ $ERROR('#1: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[1] = "y"; obj.length = -4294967294; obj.shift() === "x". Actual: ' + (shift));
+}
+
+//CHECK#2
+if (obj.length !== 1) {
+ $ERROR('#2: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[1] = "y"; obj.length = -4294967294; obj.shift(); obj.length === 1. Actual: ' + (obj.length));
+}
+
+//CHECK#3
+if (obj[0] !== "y") {
+ $ERROR('#3: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x"; obj[1] = "y"; obj.length = -4294967294; obj.shift(); obj[0] === "y". Actual: ' + (obj[0]));
+}
+
+//CHECK#4
+if (obj[1] !== undefined) {
+ $ERROR('#4: var obj = {}; obj.shift = Array.prototype.shift; obj[0] = "x" obj[1] = "y"; obj.length = -4294967294; obj.shift(); obj[1] === undefined. Actual: ' + (obj[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A4_T1.js
new file mode 100644
index 000000000..5b2fc01dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A4_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A4_T1;
+ * @section: 15.4.4.9, 8.6.2.1, 8.6.2.5;
+ * @assertion: [[Get]], [[Delete]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[1] = 1;
+var x = [0];
+x.length = 2;
+
+//CHECK#1
+var shift = x.shift();
+if (shift !== 0) {
+ $ERROR('#1: Array.prototype[1] = 1; x = [0]; x.length = 2; x.shift() === 0. Actual: ' + (shift));
+}
+
+//CHECK#2
+if (x[0] !== 1) {
+ $ERROR('#2: Array.prototype[1] = 1; x = [0]; x.length = 2; x.shift(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== 1) {
+ $ERROR('#3: Array.prototype[1] = 1; x = [0]; x.length = 2; x.shift(); x[1] === 1. Actual: ' + (x[1]));
+}
+
+Object.prototype[1] = 1;
+Object.prototype.length = 2;
+Object.prototype.shift = Array.prototype.shift;
+x = {0:0};
+
+//CHECK#4
+var shift = x.shift();
+if (shift !== 0) {
+ $ERROR('#4: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0}; x.shift() === 0. Actual: ' + (shift));
+}
+
+//CHECK#5
+if (x[0] !== 1) {
+ $ERROR('#5: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0}; x.shift(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== 1) {
+ $ERROR('#6: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0}; x.shift(); x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#7
+if (x.length !== 1) {
+ $ERROR('#7: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0}; x.shift(); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#8
+delete x.length;
+if (x.length !== 2) {
+ $ERROR('#8: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0}; x.shift(); delete x; x.length === 2. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A4_T2.js
new file mode 100644
index 000000000..6d57d6dc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A4_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.9_A4_T2;
+ * @section: 15.4.4.9, 8.6.2.1;
+ * @assertion: [[Get]], [[Delete]] from not an inherited property;
+ * @description: [[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype;
+*/
+
+Array.prototype[1] = -1;
+var x = [0,1];
+x.length = 2;
+
+//CHECK#1
+var shift = x.shift();
+if (shift !== 0) {
+ $ERROR('#1: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.shift() === 0. Actual: ' + (shift));
+}
+
+//CHECK#2
+if (x[0] !== 1) {
+ $ERROR('#2: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.shift(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+if (x[1] !== -1) {
+ $ERROR('#3: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.shift(); x[1] === -1. Actual: ' + (x[1]));
+}
+
+Object.prototype[1] = -1;
+Object.prototype.length = 2;
+Object.prototype.shift = Array.prototype.shift;
+x = {0:0,1:1};
+
+//CHECK#4
+var shift = x.shift();
+if (shift !== 0) {
+ $ERROR('#4: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0,1:1}; x.shift() === 0. Actual: ' + (shift));
+}
+
+//CHECK#5
+if (x[0] !== 1) {
+ $ERROR('#5: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0,1:1}; x.shift(); x[0] === 1. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+if (x[1] !== -1) {
+ $ERROR('#6: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0,1:1}; x.shift(); x[1] === -1. Actual: ' + (x[1]));
+}
+
+//CHECK#7
+if (x.length !== 1) {
+ $ERROR('#7: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0,1:1}; x.shift(); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#8
+delete x.length;
+if (x.length !== 2) {
+ $ERROR('#8: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.shift = Array.prototype.shift; x = {0:0,1:1}; x.shift(); delete x; x.length === 2. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.1.js
new file mode 100644
index 000000000..1e6e1d663
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.9_A5.1;
+* @section: 15.4.4.9, 15.2.4.7, 12.6.4;
+* @assertion: The length property of shift has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.prototype.shift.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: Array.prototype.shift.propertyIsEnumerable(\'length\') === false. Actual: ' + (Array.prototype.shift.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array.shift){
+ if (p === "length") {
+ result = false;
+}
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array.shift) { if (p === "length") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.2.js
new file mode 100644
index 000000000..c7f113fef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.9_A5.2;
+* @section: 15.4.4.9, 15.2.4.5, 11.4.1;
+* @assertion: The length property of shift has the attribute DontDelete;
+* @description: Checking use hasOwnProperty, delete;
+*/
+
+//CHECK#1
+if (Array.prototype.shift.hasOwnProperty('length') !== true) {
+ $FAIL('#1: Array.prototype.shift.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.shift.hasOwnProperty('length')));
+}
+
+delete Array.prototype.shift.length;
+
+//CHECK#2
+if (Array.prototype.shift.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete Array.prototype.shift.length; Array.prototype.shift.hasOwnProperty(\'length\') === true. Actual: ' + (Array.prototype.shift.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (Array.prototype.shift.length === undefined) {
+ $ERROR('#3: delete Array.prototype.shift.length; Array.prototype.shift.length !== undefined');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.3.js
new file mode 100644
index 000000000..530d41845
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.3.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.9_A5.3;
+* @section: 15.4.4.9;
+* @assertion: The length property of shift has the attribute ReadOnly;
+* @description: Checking if varying the length property fails;
+* @strict_mode_negative
+*/
+
+//CHECK#1
+var x = Array.prototype.shift.length;
+Array.prototype.shift.length = Infinity;
+if (Array.prototype.shift.length !== x) {
+ $ERROR('#1: x = Array.prototype.shift.length; Array.prototype.shift.length = Infinity; Array.prototype.shift.length === x. Actual: ' + (Array.prototype.shift.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.4.js
new file mode 100644
index 000000000..1ddbeaa2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.9_A5.4;
+* @section: 15.4.4.9;
+* @assertion: The length property of shift is 0;
+* @description: shift.length === 1;
+*/
+
+//CHECK#1
+if (Array.prototype.shift.length !== 0) {
+ $ERROR('#1: Array.prototype.shift.length === 0. Actual: ' + (Array.prototype.shift.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.5.js
new file mode 100644
index 000000000..c0b2b5610
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.9_A5.5;
+* @section: 15.4.4.9, 15.2.4.7, 12.6.4;
+* @assertion: The shift property of Array has the attribute DontEnum;
+* @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (Array.propertyIsEnumerable('shift') !== false) {
+ $ERROR('#1: Array.propertyIsEnumerable(\'shift\') === false. Actual: ' + (Array.propertyIsEnumerable('shift')));
+}
+
+//CHECK#2
+var result = true;
+for (var p in Array){
+ if (p === "shift") {
+ result = false;
+}
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in Array) { if (p === "shift") result = false; } result === true;');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.6.js
new file mode 100644
index 000000000..aa864a47f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.9_A5.6;
+* @section: 15.4.4.9;
+* @assertion: The shift property of Array has not prototype property;
+* @description: Checking Array.prototype.shift.prototype;
+*/
+
+//CHECK#1
+if (Array.prototype.shift.prototype !== undefined) {
+ $ERROR('#1: Array.prototype.shift.prototype === undefined. Actual: ' + (Array.prototype.shift.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.7.js
new file mode 100644
index 000000000..d634f6c9e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/15.4.4.9_Array_prototype_shift/S15.4.4.9_A5.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.4.4.9_A5.7;
+* @section: 15.4.4.9, 11.2.2;
+* @assertion: The shift property of Array can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new Array.prototype.shift();
+ $ERROR('#1.1: new Array.prototype.shift() throw TypeError. Actual: ' + (new Array.prototype.shift()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Array.prototype.shift() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T1.js
new file mode 100644
index 000000000..c45295ce4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4_A1.1_T1;
+ * @section: 15.4.4, 15.2.4.5;
+ * @assertion: The value of the internal [[Prototype]] property of
+ * the Array prototype object is the Object prototype object;
+ * @description: Create new property of Function.prototype. When Array.prototype object has this property;
+*/
+
+Object.prototype.myproperty = 1;
+
+//CHECK#1
+if (Array.prototype.myproperty !== 1) {
+ $ERROR('#1: Object.prototype.myproperty = 1; Array.prototype.myproperty === 1. Actual: ' + (Array.prototype.myproperty));
+}
+
+//CHECK#2
+if (Array.prototype.hasOwnProperty('myproperty') !== false) {
+ $ERROR('#2: Object.prototype.myproperty = 1; Array.prototype.hasOwnProperty(\'myproperty\') === false. Actual: ' + (Array.prototype.hasOwnProperty('myproperty')));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T2.js
new file mode 100644
index 000000000..e038e553d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4_A1.1_T2;
+ * @section: 15.4.4;
+ * @assertion:The Array prototype object is itself an array; its
+* [[Class]] is "Array",
+*/
+
+//CHECK#1
+if (Object.prototype.toString.call(Array.prototype) !== "[object Array]") {
+ $ERROR('The Array prototype object is itself an array; its' +
+ '[[Class]] is "Array".');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T3.js
new file mode 100644
index 000000000..30c290397
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.1_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4_A1.1_T3;
+ * @section: 15.4.4, 15.2.4.6;
+ * @assertion: The value of the internal [[Prototype]] property of
+ * the Array prototype object is the Object prototype object;
+ * @description: Checking use isPrototypeOf;
+*/
+
+//CHECK#1
+if (Object.prototype.isPrototypeOf(Array.prototype) !== true) {
+ $ERROR('#1: Object.prototype.isPrototypeOf(Array.prototype) === true. Actual: ' + (Object.prototype.isPrototypeOf(Array.prototype)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.2_T1.js
new file mode 100644
index 000000000..67a083590
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.2_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4_A1.2_T1;
+ * @section: 15.4.4, 15.2.4.2;
+ * @assertion: The [[Class]] property of the Array prototype object is set to "Array";
+ * @description: Checking use Object.prototype.toString;
+*/
+
+//CHECK#1
+Array.prototype.getClass = Object.prototype.toString;
+if (Array.prototype.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: Array.prototype.getClass = Object.prototype.toString; Array.prototype is Array object. Actual: ' + (Array.prototype.getClass()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.3_T1.js
new file mode 100644
index 000000000..d35d2e90c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A1.3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4_A1.3_T1;
+ * @section: 15.4.4;
+ * @assertion: Array prototype object has length property whose value is +0;
+ * @description: Array.prototype.length === 0;
+*/
+
+//CHECK#1
+if (Array.prototype.length !== 0) {
+ $ERROR('#1.1: Array.prototype.length === 0. Actual: ' + (Array.prototype.length));
+} else {
+ if (1 / Array.prototype.length !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Array.prototype.length === +0. Actual: ' + (Array.prototype.length));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A2.1_T1.js
new file mode 100644
index 000000000..ebeb4906d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A2.1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4_A2.1_T1;
+ * @section: 15.4.4, 15.2.4.5;
+ * @assertion: The Array prototype object does not have a valueOf property of
+ * its own; however, it inherits the valueOf property from the valueOf
+ * property from the Object prototype Object;
+ * @description: Checking use hasOwnProperty;
+*/
+
+//CHECK#1
+if (Array.prototype.hasOwnProperty('valueOf') !== false) {
+ $ERROR('#1: Array.prototype.hasOwnProperty(\'valueOf\') === false. Actual: ' + (Array.prototype.hasOwnProperty('valueOf')));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A2.1_T2.js
new file mode 100644
index 000000000..2b8f8b76d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.4_Properties_of_the_Array_Prototype_Object/S15.4.4_A2.1_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4_A2.1_T2;
+ * @section: 15.4.4;
+ * @assertion: The Array prototype object does not have a valueOf property of
+ * its own; however, it inherits the valueOf property from the valueOf
+ * property from the Object prototype Object;
+ * @description: Change valueOf property of Object.prototype. When Array.prototype.valueOf also change;
+*/
+
+Object.prototype.valueOf = 1;
+
+//CHECK#1
+if (Array.prototype.valueOf !== 1) {
+ $ERROR('#1: Object.prototype.valueOf = 1; Array.prototype.valueOf === 1. Actual: ' + (Array.prototype.valueOf));
+}
+
+//CHECK#2
+var x = new Array();
+if (x.valueOf !== 1) {
+ $ERROR('#1: Object.prototype.valueOf = 1; x = new Array(); x.valueOf === 1. Actual: ' + (x.valueOf));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.1_T1.js
new file mode 100644
index 000000000..7031598a9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A1.1_T1;
+ * @section: 15.4.5.1, 15.4;
+ * @assertion: If ToUint32(length) !== ToNumber(length), throw RangeError;
+ * @description: length in [4294967296, -1, 1.5];
+*/
+
+//CHECK#1
+try {
+ var x = [];
+ x.length = 4294967296;
+ $ERROR('#1.1: x = []; x.length = 4294967296 throw RangeError. Actual: x.length === ' + (x.length));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#1.2: x = []; x.length = 4294967296 throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ x = [];
+ x.length = -1;
+ $ERROR('#2.1: x = []; x.length = -1 throw RangeError. Actual: x.length === ' + (x.length));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#2.2: x = []; x.length = -1 throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#3
+try {
+ x = [];
+ x.length = 1.5;
+ $ERROR('#3.1: x = []; x.length = 1.5 throw RangeError. Actual: x.length === ' + (x.length));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#3.2: x = []; x.length = 1.5 throw RangeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.1_T2.js
new file mode 100644
index 000000000..28a087b66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.1_T2.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A1.1_T2;
+ * @section: 15.4.5.1, 15.4;
+ * @assertion: If ToUint32(length) !== ToNumber(length), throw RangeError;
+ * @description: length in [NaN, Infinity, -Infinity, undefined];
+*/
+
+//CHECK#1
+try {
+ var x = [];
+ x.length = NaN;
+ $ERROR('#1.1: x = []; x.length = NaN throw RangeError. Actual: x.length === ' + (x.length));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#1.2: x = []; x.length = NaN throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ x = [];
+ x.length = Number.POSITIVE_INFINITY;
+ $ERROR('#2.1: x = []; x.length = Number.POSITIVE_INFINITY throw RangeError. Actual: x.length === ' + (x.length));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#2.2: x = []; x.length = Number.POSITIVE_INFINITY throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#3
+try {
+ x = [];
+ x.length = Number.NEGATIVE_INFINITY;
+ $ERROR('#3.1: x = []; x.length = Number.NEGATIVE_INFINITY throw RangeError. Actual: x.length === ' + (x.length));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#3.2: x = []; x.length = Number.NEGATIVE_INFINITY throw RangeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#4
+try {
+ x = [];
+ x.length = undefined;
+ $ERROR('#4.1: x = []; x.length = undefined throw RangeError. Actual: x.length === ' + (x.length));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#4.2: x = []; x.length = undefined throw RangeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T1.js
new file mode 100644
index 000000000..08dcf5f5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T1.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A1.2_T1;
+ * @section: 15.4.5.1, 15.4;
+ * @assertion: For every integer k that is less than the value of
+ * the length property of A but not less than ToUint32(length),
+ * if A itself has a property (not an inherited property) named ToString(k),
+ * then delete that property;
+ * @description: Change length of array;
+*/
+
+//CHECK#1
+var x = [0,,2,,4];
+x.length = 4;
+if (x[4] !== undefined) {
+ $ERROR('#1: x = [0,,2,,4]; x.length = 4; x[4] === undefined. Actual: ' + (x[4]));
+}
+
+//CHECK#2
+x.length = 3;
+if (x[3] !== undefined) {
+ $ERROR('#2: x = [0,,2,,4]; x.length = 4; x.length = 3; x[3] === undefined. Actual: ' + (x[3]));
+}
+
+//CHECK#3
+if (x[2] !== 2) {
+ $ERROR('#3: x = [0,,2,,4]; x.length = 4; x.length = 3; x[2] === 2. Actual: ' + (x[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T2.js
new file mode 100644
index 000000000..7a14fc050
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A1.2_T2;
+ * @section: 15.4.5.1, 15.4;
+ * @assertion: For every integer k that is less than the value of
+ * the length property of A but not less than ToUint32(length),
+ * if A itself has a property (not an inherited property) named ToString(k),
+ * then delete that property;
+ * @description: Checking an inherited property;
+*/
+
+//CHECK#1
+Array.prototype[2] = -1;
+var x = [0,1,2];
+if (x[2] !== 2) {
+ $ERROR('#1: Array.prototype[2] = -1; x = [0,1,3]; x[2] === 2. Actual: ' + (x[2]));
+}
+
+//CHECK#2
+x.length = 2;
+if (x[2] !== -1) {
+ $ERROR('#2: Array.prototype[2] = -1; x = [0,1,3]; x.length = 2; x[2] === -1. Actual: ' + (x[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T3.js
new file mode 100644
index 000000000..8b4d48263
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.2_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A1.2_T3;
+ * @section: 15.4.5.1, 15.4, 15.2.4.5;
+ * @assertion: For every integer k that is less than the value of
+ * the length property of A but not less than ToUint32(length),
+ * if A itself has a property (not an inherited property) named ToString(k),
+ * then delete that property;
+ * @description: Checking an inherited property;
+*/
+
+//CHECK#1
+Array.prototype[2] = 2;
+var x = [0,1];
+x.length = 3;
+if (x.hasOwnProperty('2') !== false) {
+ $ERROR('#1: Array.prototype[2] = 2; x = [0,1]; x.length = 3; x.hasOwnProperty(\'2\') === false. Actual: ' + (x.hasOwnProperty('2')));
+}
+
+//CHECK#2
+x.length = 2;
+if (x[2] !== 2) {
+ $ERROR('#2: Array.prototype[2] = 2; x = [0,1]; x.length = 3; x.length = 2; x[2] === 2. Actual: ' + (x[2]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.3_T1.js
new file mode 100644
index 000000000..ffc1f156f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.3_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A1.3_T1;
+ * @section: 15.4.5.1, 15.4;
+ * @assertion: Set the value of property length of A to Uint32(length);
+ * @description: length is object or primitve;
+*/
+
+//CHECK#1
+var x = [];
+x.length = true;
+if (x.length !== 1) {
+ $ERROR('#1: x = []; x.length = true; x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#2
+x = [0];
+x.length = null;
+if (x.length !== 0) {
+ $ERROR('#2: x = [0]; x.length = null; x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#3
+x = [0];
+x.length = new Boolean(false);
+if (x.length !== 0) {
+ $ERROR('#3: x = [0]; x.length = new Boolean(false); x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#4
+x = [];
+x.length = new Number(1);
+if (x.length !== 1) {
+ $ERROR('#4: x = []; x.length = new Number(1); x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#5
+x = [];
+x.length = "1";
+if (x.length !== 1) {
+ $ERROR('#5: x = []; x.length = "1"; x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#6
+x = [];
+x.length = new String("1");
+if (x.length !== 1) {
+ $ERROR('#6: x = []; x.length = new String("1"); x.length === 1. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.3_T2.js
new file mode 100644
index 000000000..1cc9f11dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A1.3_T2.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A1.3_T2;
+ * @section: 15.4.5.1, 15.4;
+ * @assertion: Set the value of property length of A to Uint32(length);
+ * @description: Uint32 use ToNumber and ToPrimitve;
+*/
+
+//CHECK#1
+var x = [];
+x.length = {valueOf: function() {return 2}};
+if (x.length !== 2) {
+ $ERROR('#1: x = []; x.length = {valueOf: function() {return 2}}; x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#2
+x = [];
+x.length = {valueOf: function() {return 2}, toString: function() {return 1}};
+if (x.length !== 2) {
+ $ERROR('#0: x = []; x.length = {valueOf: function() {return 2}, toString: function() {return 1}}; x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#3
+x = [];
+x.length = {valueOf: function() {return 2}, toString: function() {return {}}};
+if (x.length !== 2) {
+ $ERROR('#3: x = []; x.length = {valueOf: function() {return 2}, toString: function() {return {}}}; x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#4
+try {
+ x = [];
+ x.length = {valueOf: function() {return 2}, toString: function() {throw "error"}};
+ if (x.length !== 2) {
+ $ERROR('#4.1: x = []; x.length = {valueOf: function() {return 2}, toString: function() {throw "error"}}; x.length === ",". Actual: ' + (x.length));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: x = []; x.length = {valueOf: function() {return 2}, toString: function() {throw "error"}}; x.length not throw "error"');
+ } else {
+ $ERROR('#4.3: x = []; x.length = {valueOf: function() {return 2}, toString: function() {throw "error"}}; x.length not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+x = [];
+x.length = {toString: function() {return 1}};
+if (x.length !== 1) {
+ $ERROR('#5: x = []; x.length = {toString: function() {return 1}}; x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#6
+x = [];
+x.length = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (x.length !== 1) {
+ $ERROR('#6: x = []; x.length = {valueOf: function() {return {}}, toString: function() {return 1}}; x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#7
+try {
+ x = [];
+ x.length = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ x.length;
+ $ERROR('#7.1: x = []; x.length = {valueOf: function() {throw "error"}, toString: function() {return 1}}; x.length throw "error". Actual: ' + (x.length));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: x = []; x.length = {valueOf: function() {throw "error"}, toString: function() {return 1}}; x.length throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ x = [];
+ x.length = {valueOf: function() {return {}}, toString: function() {return {}}};
+ x.length;
+ $ERROR('#8.1: x = []; x.length = {valueOf: function() {return {}}, toString: function() {return {}}} x.length throw TypeError. Actual: ' + (x.length));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: x = []; x.length = {valueOf: function() {return {}}, toString: function() {return {}}} x.length throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.1_T1.js
new file mode 100644
index 000000000..3f36cc55e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A2.1_T1;
+ * @section: 15.4.5.1, 15.4;
+ * @assertion: If P is not an array index, return
+ * (Create a property with name P, set its value to V and give it empty attributes);
+ * @description: P in [4294967295, -1, true];
+*/
+
+//CHECK#1
+var x = [];
+x[4294967295] = 1;
+if (x.length !== 0) {
+ $ERROR('#1.1: x = []; x[4294967295] = 1; x.length === 0. Actual: ' + (x.length));
+}
+
+if (x[4294967295] !== 1) {
+ $ERROR('#1.2: x = []; x[4294967295] = 1; x[4294967295] === 1. Actual: ' + (x[4294967295]));
+}
+
+//CHECK#2
+x = [];
+x[-1] = 1;
+if (x.length !== 0) {
+ $ERROR('#2.1: x = []; x[-1] = 1; x.length === 0. Actual: ' + (x.length));
+}
+
+if (x[-1] !== 1) {
+ $ERROR('#2.2: x = []; x[-1] = 1; x[-1] === 1. Actual: ' + (x[-1]));
+}
+
+//CHECK#3
+x = [];
+x[true] = 1;
+if (x.length !== 0) {
+ $ERROR('#3.1: x = []; x[true] = 1; x.length === 0. Actual: ' + (x.length));
+}
+
+if (x[true] !== 1) {
+ $ERROR('#3.2: x = []; x[true] = 1; x[true] === 1. Actual: ' + (x[true]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.2_T1.js
new file mode 100644
index 000000000..813a84165
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.2_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A2.2_T1;
+ * @section: 15.4.5.1, 15.4;
+ * @assertion: If ToUint32(P) is less than the value of
+ * the length property of A, then return;
+ * @description: length === 100, P in [0, 98, 99];
+*/
+
+//CHECK#1
+var x = Array(100);
+x[0] = 1;
+if (x.length !== 100) {
+ $ERROR('#1: x = Array(100); x[0] = 1; x.length === 100. Actual: ' + (x.length));
+}
+
+//CHECK#2
+x[98] = 1;
+if (x.length !== 100) {
+ $ERROR('#2: x = Array(100); x[0] = 1; x[98] = 1; x.length === 100. Actual: ' + (x.length));
+}
+
+//CHECK#3
+x[99] = 1;
+if (x.length !== 100) {
+ $ERROR('#3: x = Array(100); x[0] = 1; x[98] = 1; x[99] = 1; x.length === 100. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.3_T1.js
new file mode 100644
index 000000000..69db35fcb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.1_Put/S15.4.5.1_A2.3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.1_A2.3_T1;
+ * @section: 15.4.5.1, 15.4;
+ * @assertion: If ToUint32(P) is less than the value of
+ * the length property of A, change (or set) length to ToUint32(P)+1;
+ * @description: length = 100, P in [100, 199];
+*/
+
+//CHECK#1
+var x = Array(100);
+x[100] = 1;
+if (x.length !== 101) {
+ $ERROR('#1: x = Array(100); x[100] = 1; x.length === 101. Actual: ' + (x.length));
+}
+
+//CHECK#2
+x[199] = 1;
+if (x.length !== 200) {
+ $ERROR('#2: x = Array(100); x[100] = 1; x[199] = 1; x.length === 100. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A1_T1.js
new file mode 100644
index 000000000..d053a21cd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A1_T1.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.2_A1_T1;
+ * @section: 15.4.5.2, 15.4;
+ * @assertion: Every Array object has a length property whose value is
+ * always a nonnegative integer less than 2^32. The value of the length property is
+ * numerically greater than the name of every property whose name is an array index;
+ * @description: Checking boundary points;
+*/
+
+//CHECK#1
+var x = [];
+if (x.length !== 0) {
+ $ERROR('#1: x = []; x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#2
+x[0] = 1;
+if (x.length !== 1) {
+ $ERROR('#2: x = []; x[1] = 1; x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#3
+x[1] = 1;
+if (x.length !== 2) {
+ $ERROR('#3: x = []; x[0] = 1; x[1] = 1; x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#4
+x[2147483648] = 1;
+if (x.length !== 2147483649) {
+ $ERROR('#4: x = []; x[0] = 1; x[1] = 1; x[2147483648] = 1; x.length === 2147483649. Actual: ' + (x.length));
+}
+
+//CHECK#5
+x[4294967294] = 1;
+if (x.length !== 4294967295) {
+ $ERROR('#5: x = []; x[0] = 1; x[1] = 1; x[2147483648] = 1; x[42949672954] = 1; x.length === 4294967295. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A1_T2.js
new file mode 100644
index 000000000..6f3bdc8e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A1_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.2_A1_T2;
+ * @section: 15.4.5.2, 15.4;
+ * @assertion: Every Array object has a length property whose value is
+ * always a nonnegative integer less than 2^32. The value of the length property is
+ * numerically greater than the name of every property whose name is an array index;
+ * @description: P = "2^32 - 1" is not index array;
+*/
+
+//CHECK#1
+var x = [];
+x[4294967295] = 1;
+if (x.length !== 0) {
+ $ERROR('#1: x = []; x[4294967295] = 1; x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#2
+var y =[];
+y[1] = 1;
+y[4294967295] = 1;
+if (y.length !== 2) {
+ $ERROR('#2: y = []; y[1] = 1; y[4294967295] = 1; y.length === 2. Actual: ' + (y.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A2_T1.js
new file mode 100644
index 000000000..168559a37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.2_A2_T1;
+ * @section: 15.4.5.2, 15.4;
+ * @assertion: If a property is added whose name is an array index,
+ * the length property is changed;
+ * @description: Checking length property;
+*/
+
+//CHECK#1
+var x = [];
+if (x.length !== 0) {
+ $ERROR('#1: x = []; x.length === 0. Actual: ' + (x.length));
+}
+
+//CHECK#2
+x[0] = 1;
+if (x.length !== 1) {
+ $ERROR('#2: x = []; x[1] = 1; x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#3
+x[1] = 1;
+if (x.length !== 2) {
+ $ERROR('#3: x = []; x[0] = 1; x[1] = 1; x.length === 2. Actual: ' + (x.length));
+}
+
+//CHECK#4
+x[9] = 1;
+if (x.length !== 10) {
+ $ERROR('#4: x = []; x[0] = 1; x[1] = 1; x[9] = 1; x.length === 10. Actual: ' + (x.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T1.js
new file mode 100644
index 000000000..64e1d2fbd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T1.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.2_A3_T1;
+ * @section: 15.4.5.2, 15.4;
+ * @assertion: If the length property is changed, every property whose name
+ * is an array index whose value is not smaller than the new length is automatically deleted;
+ * @description: If new length greater than the name of every property whose name
+ * is an array index;
+*/
+
+//CHECK#1
+var x = [];
+x.length = 1;
+if (x.length !== 1) {
+ $ERROR('#1: x = []; x.length = 1; x.length === 1. Actual: ' + (x.length));
+}
+
+//CHECK#2
+x[5] = 1;
+x.length = 10;
+if (x.length !== 10) {
+ $ERROR('#2: x = []; x.length = 1; x[5] = 1; x.length = 10; x.length === 10. Actual: ' + (x.length));
+}
+
+//CHECK#3
+if (x[5] !== 1) {
+ $ERROR('#3: x = []; x.length = 1; x[5] = 1; x.length = 10; x[5] = 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T2.js
new file mode 100644
index 000000000..974e94b05
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.2_A3_T2;
+ * @section: 15.4.5.2, 15.4;
+ * @assertion: If the length property is changed, every property whose name
+ * is an array index whose value is not smaller than the new length is automatically deleted;
+ * @description: If new length greater than the name of every property whose name
+ * is an array index;
+*/
+
+//CHECK#1
+var x = [];
+x[1] = 1;
+x[3] = 3;
+x[5] = 5;
+x.length = 4;
+if (x.length !== 4) {
+ $ERROR('#1: x = []; x[1] = 1; x[3] = 3; x[5] = 5; x.length = 4; x.length === 4. Actual: ' + (x.length));
+}
+
+//CHECK#2
+if (x[5] !== undefined) {
+ $ERROR('#2: x = []; x[1] = 1; x[3] = 3; x[5] = 5; x.length = 4; x[5] === undefined. Actual: ' + (x[5]));
+}
+
+//CHECK#3
+if (x[3] !== 3) {
+ $ERROR('#3: x = []; x[1] = 1; x[3] = 3; x[5] = 5; x.length = 4; x[3] === 3. Actual: ' + (x[3]));
+}
+
+//CHECK#4
+x.length = new Number(6);
+if (x[5] !== undefined) {
+ $ERROR('#4: x = []; x[1] = 1; x[3] = 3; x[5] = 5; x.length = 4; x.length = new Number(6); x[5] === undefined. Actual: ' + (x[5]));
+}
+
+//CHECK#5
+x.length = 0;
+if (x[0] !== undefined) {
+ $ERROR('#5: x = []; x[1] = 1; x[3] = 3; x[5] = 5; x.length = 4; x.length = new Number(6); x.length = 0; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#6
+x.length = 1;
+if (x[1] !== undefined) {
+ $ERROR('#6: x = []; x[1] = 1; x[3] = 3; x[5] = 5; x.length = 4; x.length = new Number(6); x.length = 0; x.length = 1; x[1] === undefined. Actual: ' + (x[1]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T3.js
new file mode 100644
index 000000000..b1879c1f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T3.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.2_A3_T3;
+ * @section: 15.4.5.2, 15.4.2.2;
+ * @assertion: If the length property is changed, every property whose name
+ * is an array index whose value is not smaller than the new length is automatically deleted;
+ * @description: [[Put]] (length, 4294967296);
+*/
+
+//CHECK#1
+var x = [];
+x.length = 4294967295;
+if (x.length !== 4294967295) {
+ $ERROR('#1: x = []; x.length = 4294967295; x.length === 4294967295');
+}
+
+//CHECK#2
+try {
+ x = [];
+ x.length = 4294967296;
+ $ERROR('#2.1: x = []; x.length = 4294967296 throw RangeError. Actual: x.length === ' + (x.length));
+} catch(e) {
+ if ((e instanceof RangeError) !== true) {
+ $ERROR('#2.2: x = []; x.length = 4294967296 throw RangeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T4.js
new file mode 100644
index 000000000..2e3e7839c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/15.4.5_Properties_of_Array_Instances/15.4.5.2_length/S15.4.5.2_A3_T4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.5.2_A3_T4;
+ * @section: 15.4.5.2, 15.4.2.2;
+ * @assertion: If the length property is changed, every property whose name
+ * is an array index whose value is not smaller than the new length is automatically deleted;
+ * @description: If new length greater than the name of every property whose name
+ * is an array index;
+*/
+
+//CHECK#1
+var x = [0,1,2];
+x[4294967294] = 4294967294;
+x.length = 2;
+
+//CHECK#1
+if (x[0] !== 0) {
+ $ERROR('#1: x = [0,1,2]; x[4294967294] = 4294967294; x.length = 2; x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+if (x[1] !== 1) {
+ $ERROR('#2: x = [0,1,2]; x[4294967294] = 4294967294; x.length = 2; x[1] === 1. Actual: ' + (x[1]));
+}
+
+//CHECK#3
+if (x[2] !== undefined) {
+ $ERROR('#3: x = [0,1,2]; x[4294967294] = 4294967294; x.length = 2; x[2] === undefined. Actual: ' + (x[2]));
+}
+
+//CHECK#4
+if (x[4294967294] !== undefined) {
+ $ERROR('#4: x = [0,1,2]; x[4294967294] = 4294967294; x.length = 2; x[4294967294] === undefined. Actual: ' + (x[4294967294]));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T1.js
new file mode 100644
index 000000000..1fe2ba1ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4_A1.1_T1;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: Checking for boolean primitive;
+*/
+
+//CHECK#1
+x = [];
+x[true] = 1;
+if (x[1] !== undefined) {
+ $ERROR('#1: x = []; x[true] = 1; x[1] === undefined. Actual: ' + (x[1]));
+}
+
+//CHECK#2
+if (x["true"] !== 1) {
+ $ERROR('#2: x = []; x[true] = 1; x["true"] === 1. Actual: ' + (x["true"]));
+}
+
+//CHECK#3
+x[false] = 0;
+if (x[0] !== undefined) {
+ $ERROR('#3: x = []; x[true] = 1; x[false] = 0; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x["false"] !== 0) {
+ $ERROR('#4: x = []; x[false] = 1; x["false"] === 0. Actual: ' + (x["false"]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T10.js
new file mode 100644
index 000000000..67d26fca8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T10.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4_A1.1_T10;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: Array index is power of two;
+*/
+
+//CHECK#
+x = [];
+k = 1;
+for (i = 0; i < 32; i++) {
+ k = k * 2;
+ x[k - 2] = k;
+}
+
+k = 1;
+for (i = 0; i < 32; i++) {
+ k = k * 2;
+ if (x[k - 2] !== k) {
+ $ERROR('#' + (k - 2) + ': ');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T2.js
new file mode 100644
index 000000000..3d44721d2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T2.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4_A1.1_T2;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: Checking for number primitive;
+*/
+
+//CHECK#1
+x = [];
+x[NaN] = 1;
+if (x[0] !== undefined) {
+ $ERROR('#1: x = []; x[NaN] = 1; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+if (x["NaN"] !== 1) {
+ $ERROR('#2: x = []; x[NaN] = 1; x["NaN"] === 1. Actual: ' + (x["NaN"]));
+}
+
+//CHECK#3
+y = [];
+y[Number.POSITIVE_INFINITY] = 1;
+if (y[0] !== undefined) {
+ $ERROR('#3: y = []; y[Number.POSITIVE_INFINITY] = 1; y[0] === undefined. Actual: ' + (y[0]));
+}
+
+//CHECK#4
+if (y["Infinity"] !== 1) {
+ $ERROR('#4: y = []; y[Number.POSITIVE_INFINITY] = 1; y["Infinity"] === 1. Actual: ' + (y["Infinity"]));
+}
+
+//CHECK#5
+z = [];
+z[Number.NEGATIVE_INFINITY] = 1;
+if (z[0] !== undefined) {
+ $ERROR('#5: z = []; z[Number.NEGATIVE_INFINITY] = 1; z[0] === undefined. Actual: ' + (z[0]));
+}
+
+//CHECK#6
+if (z["-Infinity"] !== 1) {
+ $ERROR('#6: z = []; z[Number.NEGATIVE_INFINITY] = 1; z["-Infinity"] === 1. Actual: ' + (z["-Infinity"]));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T3.js
new file mode 100644
index 000000000..728208330
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_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.
+
+/**
+ * @name: S15.4_A1.1_T3;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: Checking for number primitive;
+*/
+
+//CHECK#1
+x = [];
+x[4294967296] = 1;
+if (x[0] !== undefined) {
+ $ERROR('#1: x = []; x[4294967296] = 1; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+if (x["4294967296"] !== 1) {
+ $ERROR('#2: x = []; x[4294967296] = 1; x["4294967296"] === 1. Actual: ' + (x["4294967296"]));
+}
+
+//CHECK#3
+y = [];
+y[4294967297] = 1;
+if (y[1] !== undefined) {
+ $ERROR('#3: y = []; y[4294967297] = 1; y[1] === undefined. Actual: ' + (y[1]));
+}
+
+//CHECK#4
+if (y["4294967297"] !== 1) {
+ $ERROR('#4: y = []; y[4294967297] = 1; y["4294967297"] === 1. Actual: ' + (y["4294967297"]));
+}
+
+//CHECK#5
+z = [];
+z[1.1] = 1;
+if (z[1] !== undefined) {
+ $ERROR('#5: z = []; z[1.1] = 1; z[1] === undefined. Actual: ' + (z[1]));
+}
+
+//CHECK#6
+if (z["1.1"] !== 1) {
+ $ERROR('#6: z = []; z[1.1] = 1; z["1.1"] === 1. Actual: ' + (z["1.1"]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T4.js
new file mode 100644
index 000000000..4199c8302
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4_A1.1_T4;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: Checking for string primitive;
+*/
+
+//CHECK#1
+x = [];
+x["0"] = 0;
+if (x[0] !== 0) {
+ $ERROR('#1: x = []; x["0"] = 0; x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+y = [];
+y["1"] = 1;
+if (y[1] !== 1) {
+ $ERROR('#2: y = []; y["1"] = 1; y[1] === 1. Actual: ' + (y[1]));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T5.js
new file mode 100644
index 000000000..c5dd4ab7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T5.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4_A1.1_T5;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: Checking for null and undefined;
+*/
+
+//CHECK#1
+x = [];
+x[null] = 0;
+if (x[0] !== undefined) {
+ $ERROR('#1: x = []; x[null] = 1; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+if (x["null"] !== 0) {
+ $ERROR('#2: x = []; x[null] = 1; x["null"] === 0. Actual: ' + (x["null"]));
+}
+
+//CHECK#3
+y = [];
+y[undefined] = 0;
+if (y[0] !== undefined) {
+ $ERROR('#3: y = []; y[undefined] = 0; y[0] === undefined. Actual: ' + (y[0]));
+}
+
+//CHECK#4
+if (y["undefined"] !== 0) {
+ $ERROR('#4: y = []; y[undefined] = 1; y["undefined"] === 0. Actual: ' + (y["undefined"]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T6.js
new file mode 100644
index 000000000..8c42aff94
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T6.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4_A1.1_T6;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: Checking for Boolean object;
+*/
+
+//CHECK#1
+x = [];
+x[new Boolean(true)] = 1;
+if (x[1] !== undefined) {
+ $ERROR('#1: x = []; x[new Boolean(true)] = 1; x[1] === undefined. Actual: ' + (x[1]));
+}
+
+//CHECK#2
+if (x["true"] !== 1) {
+ $ERROR('#2: x = []; x[true] = 1; x["true"] === 1. Actual: ' + (x["true"]));
+}
+
+//CHECK#3
+x[new Boolean(false)] = 0;
+if (x[0] !== undefined) {
+ $ERROR('#3: x = []; x[true] = 1; x[new Boolean(false)] = 0; x[0] === undefined. Actual: ' + (x[0]));
+}
+
+//CHECK#4
+if (x["false"] !== 0) {
+ $ERROR('#4: x = []; x[false] = 1; x["false"] === 0. Actual: ' + (x["false"]));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T7.js
new file mode 100644
index 000000000..7414dbdc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T7.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4_A1.1_T7;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: Checking for Number object;
+*/
+
+//CHECK#1
+x = [];
+x[new Number(0)] = 0;
+if (x[0] !== 0) {
+ $ERROR('#1: x = []; x[new Number(0)] = 0; x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+y = [];
+y[new Number(1)] = 1;
+if (y[1] !== 1) {
+ $ERROR('#2: y = []; y[new Number(1)] = 1; y[1] === 1. Actual: ' + (y[1]));
+}
+
+//CHECK#3
+z = [];
+z[new Number(1.1)] = 1;
+if (z["1.1"] !== 1) {
+ $ERROR('#3: z = []; z[new Number(1.1)] = 1; z["1.1"] === 1. Actual: ' + (z["1.1"]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T8.js
new file mode 100644
index 000000000..cf65e14f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T8.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4_A1.1_T8;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: Checking for Number object;
+*/
+
+//CHECK#1
+x = [];
+x[new String("0")] = 0;
+if (x[0] !== 0) {
+ $ERROR('#1: x = []; x[new String("0")] = 0; x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#2
+y = [];
+y[new String("1")] = 1;
+if (y[1] !== 1) {
+ $ERROR('#2: y = []; y[new String("1")] = 1; y[1] === 1. Actual: ' + (y[1]));
+}
+
+//CHECK#3
+z = [];
+z[new String("1.1")] = 1;
+if (z["1.1"] !== 1) {
+ $ERROR('#3: z = []; z[new String("1.1")] = 1; z["1.1"] === 1. Actual: ' + (z["1.1"]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T9.js
new file mode 100644
index 000000000..2a94f09b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.4_Array_Objects/S15.4_A1.1_T9.js
@@ -0,0 +1,93 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4_A1.1_T9;
+ * @section: 15.4, 11.2.1;
+ * @assertion: A property name P (in the form of a string value) is an array index
+ * if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, String);
+*/
+
+//CHECK#1
+x = [];
+var object = {valueOf: function() {return 1}};
+x[object] = 0;
+if (x["[object Object]"] !== 0) {
+ $ERROR('#1: x = []; var object = {valueOf: function() {return 1}}; x[object] = 0; x["[object Object]"] === 0. Actual: ' + (x["[object Object]"]));
+}
+
+//CHECK#2
+x = [];
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+x[object] = 0;
+if (x[0] !== 0) {
+ $ERROR('#2: x = []; var object = {valueOf: function() {return 1}, toString: function() {return 0}}; x[object] = 0; x[0] === 0. Actual: ' + (x[0]));
+}
+
+//CHECK#3
+x = [];
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+x[object] = 0;
+if (x[1] !== 0) {
+ $ERROR('#3: x = []; var object = {valueOf: function() {return 1}, toString: function() {return {}}}; x[object] = 0; x[1] === 0. Actual: ' + (x[1]));
+}
+
+//CHECK#4
+try {
+ x = [];
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ x[object] = 0;
+ if (x[1] !== 0) {
+ $ERROR('#4.1: x = []; var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; x[object] = 0; x[1] === 1. Actual: ' + (x[1]));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: x = []; var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; x[object] = 0; x[1] === 1. Actual: ' + ("error"));
+ } else {
+ $ERROR('#4.3: x = []; var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; x[object] = 0; x[1] === 1. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+x = [];
+var object = {toString: function() {return 1}};
+x[object] = 0;
+if (x[1] !== 0) {
+ $ERROR('#5: x = []; var object = {toString: function() {return 1}}; x[object] = 0; x[1] === 0. Actual: ' + (x[1]));
+}
+
+//CHECK#6
+x = [];
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+x[object] = 0;
+if (x[1] !== 0) {
+ $ERROR('#6: x = []; var object = {valueOf: function() {return {}}, toString: function() {return 1}}; x[object] = 0; x[1] === 0. Actual: ' + (x[1]));
+}
+
+//CHECK#7
+try {
+ x = [];
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ x[object];
+ $ERROR('#7.1: x = []; var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; x[object] throw "error". Actual: ' + (x[object]));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: x = []; var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; x[object] throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ x = [];
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ x[object];
+ $ERROR('#8.1: x = []; var object = {valueOf: function() {return {}}, toString: function() {return {}}}; x[object] throw TypeError. Actual: ' + (x[object]));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: x = []; var object = {valueOf: function() {return {}}, toString: function() {return {}}}; x[object] throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T1.js
new file mode 100644
index 000000000..98193f0c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T1;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(function(){}());
+*/
+
+var __str = String(function(){}());
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(function(){}()); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "undefined") {
+ $ERROR('#2: __str = String(function(){}()); __str === "undefined". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T10.js
new file mode 100644
index 000000000..10dd44847
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T10.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T10;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(1) and String(-1);
+*/
+
+var __str = String(1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(1); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "1") {
+ $ERROR('#2: __str = String(1); __str === "1". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(-1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#3: __str = String(-1); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "-1") {
+ $ERROR('#4: __str = String(-1); __str === "-1". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T11.js
new file mode 100644
index 000000000..31ec71107
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T11.js
@@ -0,0 +1,117 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T11;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(1/0) and String(-1/0), and call with +/-Infinity;
+*/
+
+var __str = String(1/0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(1/0); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "Infinity") {
+ $ERROR('#2: __str = String(1/0); __str === "Infinity". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(-1/0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __str !== "string") {
+ $ERROR('#3: __str = String(-1/0); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str !== "-Infinity") {
+ $ERROR('#4: __str = String(-1/0); __str === "-Infinity". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(Infinity);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __str !== "string") {
+ $ERROR('#5: __str = String(Infinity); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__str !== "Infinity") {
+ $ERROR('#6: __str = String(Infinity); __str === "Infinity". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(-Infinity);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if (typeof __str !== "string") {
+ $ERROR('#7: __str = String(-Infinity); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#8
+if (__str !== "-Infinity") {
+ $ERROR('#8: __str = String(-Infinity); __str === "-Infinity". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(Number.POSITIVE_INFINITY);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#9
+if (typeof __str !== "string") {
+ $ERROR('#9: __str = String(Number.POSITIVE_INFINITY); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#10
+if (__str !== "Infinity") {
+ $ERROR('#10: __str = String(Number.POSITIVE_INFINITY); __str === "Infinity". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(Number.NEGATIVE_INFINITY);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#11
+if (typeof __str !== "string") {
+ $ERROR('#11: __str = String(Number.NEGATIVE_INFINITY); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#12
+if (__str !== "-Infinity") {
+ $ERROR('#12: __str = String(Number.NEGATIVE_INFINITY); __str === "-Infinity". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T12.js
new file mode 100644
index 000000000..518a502c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T12.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T12;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(1/"a"), String("b"* null) and String(Number.NaN);
+*/
+
+var __str = String(1/"a");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(1/"a"); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "NaN") {
+ $ERROR('#2: __str = String(1/"a"); __str === "NaN". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String("b"*null);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __str !== "string") {
+ $ERROR('#3: __str = String("b"*null); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str !== "NaN") {
+ $ERROR('#4: __str = String("b"*null); __str === "NaN". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(Number.NaN);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __str !== "string") {
+ $ERROR('#5: __str = String(Number.NaN); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__str !== "NaN") {
+ $ERROR('#6: __str = String(Number.NaN); __str === "NaN". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T13.js
new file mode 100644
index 000000000..26212fbaf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T13.js
@@ -0,0 +1,81 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T13;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(true) and String(false);
+*/
+
+var __str = String(true);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(true); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "true") {
+ $ERROR('#2: __str = String(true); __str === "true". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(false);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __str !== "string") {
+ $ERROR('#3: __str = String(false); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str !== "false") {
+ $ERROR('#4: __str = String(false); __str === "false". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(Boolean(true));
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __str !== "string") {
+ $ERROR('#5: __str = String(Boolean(true)); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__str !== "true") {
+ $ERROR('#6: __str = String(Boolean(true)); __str === "true". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(Boolean(false));
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if (typeof __str !== "string") {
+ $ERROR('#7: __str = String(Boolean(false)); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#8
+if (__str !== "false") {
+ $ERROR('#8: __str = String(Boolean(false)); __str === "false". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T14.js
new file mode 100644
index 000000000..425cf26b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T14.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T14;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(0) and String(-0);
+*/
+
+var __str = String(0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(0); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0") {
+ $ERROR('#2: __str = String(0); __str === "0". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(-0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#3: __str = String(-0); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0") {
+ $ERROR('#4: __str = String(-0); __str === "0". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T15.js
new file mode 100644
index 000000000..2177bcd39
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T15.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T15;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(string_object);
+*/
+
+var __obj__str = "caps";
+
+//__obj__str.prop=1;
+
+var __str = String(__obj__str);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str !== __obj__str) {
+ $ERROR('#1: __obj__str = "caps"; __str = String(__obj__str); __str === __obj__str. Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T16.js
new file mode 100644
index 000000000..2bd59a610
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T16.js
@@ -0,0 +1,81 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T16;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String() with .12345 and analogous numbers;
+*/
+
+var __str = String(.12345);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(.12345); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0.12345") {
+ $ERROR('#2: __str = String(.12345); __str === "0.12345". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(.012345);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __str !== "string") {
+ $ERROR('#3: __str = String(.012345); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str !== "0.012345") {
+ $ERROR('#4: __str = String(.012345); __str === "0.012345". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(.0012345);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __str !== "string") {
+ $ERROR('#5: __str = String(.0012345); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__str !== "0.0012345") {
+ $ERROR('#6: __str = String(.0012345); __str === "0.0012345". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(.00000012345);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if (typeof __str !== "string") {
+ $ERROR('#7: __str = String(.00000012345); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#8
+if (__str !== "1.2345e-7") {
+ $ERROR('#8: __str = String(.00000012345); __str === "1.2345e-7". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T17.js
new file mode 100644
index 000000000..e5d9328e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T17.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T17;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String() with numbers that have more than 1 significant digit after point;
+*/
+
+var __str = String(1.2345);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(1.2345); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "1.2345") {
+ $ERROR('#2: __str = String(1.2345); __str === "1.2345". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(1.234567890);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __str !== "string") {
+ $ERROR('#3: __str = String(1.234567890); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str !== "1.23456789") {
+ $ERROR('#4: __str = String(1.234567890); __str === "1.23456789". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(1.234500000000000000000000000);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __str !== "string") {
+ $ERROR('#5: __str = String(1.234500000000000000000000000); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__str !== "1.2345") {
+ $ERROR('#6: __str = String(1.234500000000000000000000000); __str === "1.2345". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T18.js
new file mode 100644
index 000000000..2389cca51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T18.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T18;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String() with numbers that have more than 1 significant digit;
+*/
+
+__str = String(1000000000000000000000);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(1000000000000000000000); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "1e+21") {
+ $ERROR('#2: __str = String(1000000000000000000000); __str === "1e+21". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = String(10000000000000000000000);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __str !== "string") {
+ $ERROR('#3: __str = String(10000000000000000000000); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str !== "1e+22") {
+ $ERROR('#4: __str = String(10000000000000000000000); __str === "1e+22". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T19.js
new file mode 100644
index 000000000..7120ebe61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T19.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T19;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String() with Array of numbers;
+*/
+
+var __str = String(new Array(1,2,3));
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(new Array(1,2,3)); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "1,2,3") {
+ $ERROR('#2: __str = String(new Array(1,2,3)); __str === "1,2,3". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T2.js
new file mode 100644
index 000000000..632fa7588
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_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.
+
+/**
+* @name: S15.5.1.1_A1_T2;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(null);
+*/
+
+var __str = String(null);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(null); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "null") {
+ $ERROR('#2: __str = String(null); __str === "null". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T3.js
new file mode 100644
index 000000000..b551eac5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T3;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(void 0);
+*/
+
+var __str = String(void 0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(void 0); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "undefined") {
+ $ERROR('#2: __str = String(void 0); __str === "undefined". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T4.js
new file mode 100644
index 000000000..506d88f2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T4.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T4;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(undefined);
+*/
+
+var __str = String(undefined);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(undefined); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "undefined") {
+ $ERROR('#2: __str = String(undefined); __str === "undefined". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T5.js
new file mode 100644
index 000000000..f48ba047f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T5;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(x), where x is undefined variable;
+*/
+
+var __str = String(x);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: var x; __str = String(x); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "undefined") {
+ $ERROR('#2: var x; __str = String(x); __str === "undefined". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T6.js
new file mode 100644
index 000000000..21891c51f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T6.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T6;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Checking by using eval, Call String(eval());;
+*/
+
+var __str = String(eval());
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(eval()); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "undefined") {
+ $ERROR('#2: __str = String(eval()); __str === "undefined". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T7.js
new file mode 100644
index 000000000..718febdfc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T7.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T7;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String({});
+*/
+
+var __str = String({});
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String({}); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "[object "+"Object"+"]") {
+ $ERROR('#2: __str = String({}); __str === "[object Object]". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T8.js
new file mode 100644
index 000000000..89d60dafe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T8.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T8;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(new Array);
+*/
+
+var __old__Array__prototype__toString = Array.prototype.toString;
+
+Array.prototype.toString=function(){return "__ARRAY__";};
+
+var __str = String(new Array);
+
+// restore old toString method just in case
+Array.prototype.toString=__old__Array__prototype__toString;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(new Array); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "__ARRAY__") {
+ $ERROR('#2: Array.prototype.toString=function(){return "__ARRAY__";}; __str = String(new Array); __str === "__ARRAY__". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T9.js
new file mode 100644
index 000000000..b5678969a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A1_T9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A1_T9;
+* @section: 15.5.1.1;
+* @assertion: When String is called as a function rather than as a constructor, it performs a type conversion;
+* @description: Call String(this);
+*/
+
+var toString=function(){return "__THIS__";};
+
+var __str = String(this);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(this); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "__THIS__") {
+ $ERROR('#2: toString=function(){return "__THIS__";}; __str = String(this); __str === "__THIS__". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A2_T1.js
new file mode 100644
index 000000000..0b1033ca9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.1_The_String_Constructor_Called_as_a_Function/S15.5.1.1_A2_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.1.1_A2_T1;
+* @section: 15.5.1.1;
+* @assertion: If value is not supplied, the empty string "" is returned;
+* @description: Call String();
+*/
+
+var __str = String();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "string") {
+ $ERROR('#1: __str = String(); typeof __str === "string". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "") {
+ $ERROR('#2: __str = String(); __str === "". Actual: __str ==='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T1.js
new file mode 100644
index 000000000..be97738ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T1;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with expression "new String";
+*/
+
+var __str = new String;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String; typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String; __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str != "") {
+ $ERROR('#2: __str = new String; __str == "". Actual: __str =='+__str);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ( __str === "") {
+ $ERROR('#3: __str = new String; __str !== ""');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T10.js
new file mode 100644
index 000000000..53b9f8fc8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T10.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T10;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String(function object)" as the function object's prototype.toString property was changed;
+*/
+
+function __FACTORY(){};
+
+__FACTORY.prototype.toString=function(){return "tostr"};
+
+var __obj = new __FACTORY;
+
+var __str = new String(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(__obj); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(__obj); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str != "tostr") {
+ $ERROR('#2: __str = new String(__obj); __str =="tostr". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T11.js
new file mode 100644
index 000000000..64b25437a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T11.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T11;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String(function object)" after changing function object's valueOf and toString properties;
+*/
+
+function __obj(){};
+
+__obj.valueOf=function(){return true;};
+
+__obj.toString=function(){return {};};
+
+var __str = new String(__obj);
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: function __obj(){}; __str = new String(__obj); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(__obj); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="true") {
+ $ERROR('#2: function __obj(){}; __str = new String(__obj); __str =="true". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T12.js
new file mode 100644
index 000000000..480fd2d61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T12.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T12;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String(function object)", after changing the function object toString property, which causes exception throw;
+*/
+
+var __obj = {toString:function(){throw "intostr"}};
+
+__obj.valueOf=function(){return true};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var __str = new String(__obj);
+ $ERROR('#1: var __obj = {toString:function(){throw "intostr"}}; __str = new String(__obj) lead throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: e==="intostr". Actual: e==='+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T13.js
new file mode 100644
index 000000000..986c24bb5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T13.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T13;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String(function object)" after changing function object's valueOf property, which causes exception throw;
+*/
+
+var __obj = {toString:function(){return f; function f(){}}};
+
+__obj.valueOf=function(){throw "invalueof"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var __str = new String(__obj);
+ $ERROR('#1: __obj.valueOf=function(){throw "invalueof"}; __str = new String(__obj) lead throwing exception');
+} catch (e) {
+ if (e!=="invalueof") {
+ $ERROR('#1.1: e==="invalueof". Actual: e==='+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T16.js
new file mode 100644
index 000000000..96780715b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T16.js
@@ -0,0 +1,110 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T16;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String()" initialized with .12345 and other numbers;
+*/
+
+__str =new String(.12345);
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str =new String(.12345); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str =new String(.12345); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="0.12345") {
+ $ERROR('#2: __str =new String(.12345); __str =="0.12345". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str =new String(.012345);
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __str !== "object") {
+ $ERROR('#3: __str =new String(.012345); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2.5
+if (__str.constructor !== String) {
+ $ERROR('#3.5: __str =new String(.012345); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str !="0.012345") {
+ $ERROR('#4: __str =new String(.012345); __str =="0.012345". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str =new String(.0012345);
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __str !== "object") {
+ $ERROR('#5: __str =new String(.0012345); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5.5
+if (__str.constructor !== String) {
+ $ERROR('#5.5: __str =new String(.0012345); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__str !="0.0012345") {
+ $ERROR('#6: __str =new String(.0012345); __str =="0.0012345". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str =new String(.00000012345);
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if (typeof __str !== "object") {
+ $ERROR('#7: __str =new String(.00000012345); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7.5
+if (__str.constructor !== String) {
+ $ERROR('#7.5: __str =new String(.00000012345); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#8
+if (__str !="1.2345e-7") {
+ $ERROR('#8: __str =new String(.00000012345); __str =="1.2345e-7". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T17.js
new file mode 100644
index 000000000..444dbd5c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T17.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T17;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String()" initialized with numbers that have more than 1 significant digit following the point;
+*/
+
+var __str = new String(1.2345);
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(1.2345); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(1.2345); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="1.2345") {
+ $ERROR('#2: __str = new String(1.2345); __str =="1.2345". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = new String(1.234567890);
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __str !== "object") {
+ $ERROR('#3: __str = new String(1.234567890); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3.5
+if (__str.constructor !== String) {
+ $ERROR('#3.5: __str = new String(1.234567890); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str !="1.23456789") {
+ $ERROR('#4: __str = new String(1.234567890); __str =="1.23456789". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = new String(1.234500000000000000000000000);
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __str !== "object") {
+ $ERROR('#5: __str = new String(1.234500000000000000000000000); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5.5
+if (__str.constructor !== String) {
+ $ERROR('#5.5: __str = new String(1.234500000000000000000000000); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__str !="1.2345") {
+ $ERROR('#6: __str = new String(1.234500000000000000000000000); __str =="1.2345". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T18.js
new file mode 100644
index 000000000..eaceca2c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T18.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T18;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Create string object with "new String()" initialized with numbers that have more than 1 significant digit;
+*/
+
+var __str = new String(1000000000000000000000);
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(1000000000000000000000); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(1000000000000000000000); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="1e+21") {
+ $ERROR('#2: __str = new String(1000000000000000000000); __str =="1e+21". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str = new String(10000000000000000000000);
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __str !== "object") {
+ $ERROR('#3: __str = new String(10000000000000000000000); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3.5
+if (__str.constructor !== String) {
+ $ERROR('#3.5: __str = new String(10000000000000000000000); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str !="1e+22") {
+ $ERROR('#4: __str = new String(10000000000000000000000); __str =="1e+22". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T19.js
new file mode 100644
index 000000000..1d3ac0ac3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T19.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T19;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String()" initialized with Array of numbers;
+*/
+
+var __str = new String(new Array(1,2,3));
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(new Array(1,2,3)); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(new Array(1,2,3)); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="1,2,3") {
+ $ERROR('#2: __str = new String(new Array(1,2,3)); __str =="1,2,3". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T2.js
new file mode 100644
index 000000000..33dc75bfe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T2;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String()";
+*/
+
+var __str = new String();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="") {
+ $ERROR('#2: __str = new String(); __str =="". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ( __str === "") {
+ $ERROR('#3: __str = new String(); __str !== ""');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T3.js
new file mode 100644
index 000000000..2b72cf7cd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T3.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T3;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String("")";
+*/
+
+var __str = new String("");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(""); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(""); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="") {
+ $ERROR('#2: __str = new String(""); __str =="". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ( __str === "") {
+ $ERROR('#3: __str = new String(""); __str !== ""');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T4.js
new file mode 100644
index 000000000..1bcc7eacf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T4;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Create string object with "new String(1.0)";
+*/
+
+var __str = new String(1.0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(1.0); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(1.0); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !=1.0+"") {
+ $ERROR('#2: __str = new String(1.0); __str ==1.0+"". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T5.js
new file mode 100644
index 000000000..12565a42e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T5.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T5;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String(NaN)";
+*/
+
+var __str = new String(NaN);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(NaN); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(NaN); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !=(1/"s")+"") {
+ $ERROR('#2: __str = new String(NaN); __str ==(1/"s")+"". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T6.js
new file mode 100644
index 000000000..9f261ade9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T6.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T6;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String(false)";
+*/
+
+var __str = new String(false);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(false); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(false); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !=false+"") {
+ $ERROR('#2: __str = new String(false); __str ==false+"". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T7.js
new file mode 100644
index 000000000..1d7a32039
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T7.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T7;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String({})";
+*/
+
+var __stored__Object__prototype__toString = Object.prototype.toString;
+
+Object.prototype.toString=function(){return "SHIFTED"};
+
+var __str = new String({});
+
+Object.prototype.toString = __stored__Object__prototype__toString;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String({}); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String({}); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="SHIFTED") {
+ $ERROR('#2: Object.prototype.toString=function(){return "SHIFTED"}; __str = new String({}); __str =="SHIFTED". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T8.js
new file mode 100644
index 000000000..84b20201d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T8.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T8;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String(function(){})";
+*/
+
+var __stored__Function__prototype__toString = Function.prototype.toString;
+
+Function.prototype.toString=function(){return "SHIFTED"};
+
+var __str = new String(function(){});
+
+Function.prototype.toString = __stored__Function__prototype__toString;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(function(){}); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(function(){}); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="SHIFTED") {
+ $ERROR('#2: Function.prototype.toString=function(){return "SHIFTED"}; __str = new String(function(){}); __str =="SHIFTED". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T9.js
new file mode 100644
index 000000000..2eb4a344d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A1_T9.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A1_T9;
+* @section: 15.5.2.1;
+* @assertion: When "String" is called as part of a new expression, it is a constructor: it initialises the newly created object and
+* The [[Value]] property of the newly constructed object is set to ToString(value), or to the empty string if value is not supplied;
+* @description: Creating string object with "new String(function(){return [1,2,3]}())";
+*/
+
+var __str = new String(function(){return [1,2,3]}());
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __str !== "object") {
+ $ERROR('#1: __str = new String(function(){return [1,2,3]}()); typeof __str === "object". Actual: typeof __str ==='+typeof __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1.5
+if (__str.constructor !== String) {
+ $ERROR('#1.5: __str = new String(function(){return [1,2,3]}()); __str.constructor === String. Actual: __str.constructor ==='+__str.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !="1,2,3") {
+ $ERROR('#2: __str = new String(function(){return [1,2,3]}()); __str =="1,2,3". Actual: __str =='+__str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A2_T1.js
new file mode 100644
index 000000000..294e779bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_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.
+
+/**
+* @name: S15.5.2.1_A2_T1;
+* @section: 15.5.2.1, 15.5.3.1;
+* @assertion: The [[Prototype]] property of the newly constructed object is set to the original String prototype object;
+* @description: Creating string object with "new String(string)" to check prototype;
+*/
+
+var __str__obj = new String("abba");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.isPrototypeOf(__str__obj))) {
+ $ERROR('#1: var __str__obj = new String("abba"); String.prototype.isPrototypeOf(__str__obj)===true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A2_T2.js
new file mode 100644
index 000000000..13042ea65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A2_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A2_T2;
+* @section: 15.5.2.1, 15.5.3.1;
+* @assertion: The [[Prototype]] property of the newly constructed object is set to the original String prototype object;
+* @description: Creating string object with "new String(string)" adding custom property;
+*/
+
+
+var __str__obj = new String("shocking blue");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str__obj["__custom__prop"]!==undefined) {
+ $ERROR('#1: var __str__obj = new String("shocking blue"); __str__obj["__custom__prop"]===undefined. Actual: __str__obj["__custom__prop"]==='+__str__obj["__custom__prop"]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+String.prototype.__custom__prop = "bor";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str__obj["__custom__prop"]!=="bor") {
+ $ERROR('#2: var __str__obj = new String("shocking blue"); String.prototype.__custom__prop = "bor"; __str__obj["__custom__prop"]==="bor". Actual: __str__obj["__custom__prop"]==='+__str__obj["__custom__prop"]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A3.js
new file mode 100644
index 000000000..2bab8a990
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.2_The_String_Constructor/S15.5.2.1_A3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2.1_A3;
+* @section: 15.5.2.1;
+* @assertion: The [[Class]] property of the newly constructed object is set to "String";
+* @description: Creating string object with "new String(string)" and changing toString property to Object.prototype.toString;
+*/
+
+var __str__obj = new String("seamaid");
+
+__str__obj.toString = Object.prototype.toString;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str__obj.toString() !== "[object "+"String"+"]") {
+ $ERROR('#1: var __str__obj = new String("seamaid"); __str__obj.toString = Object.prototype.toString; __str__obj.toString() === "[object String]". Actual: __str__obj.toString() ==='+__str__obj.toString() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A1.js
new file mode 100644
index 000000000..8af38452a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3.1_A1;
+* @section: 15.5.3.1, 15.5.4;
+* @assertion: The String has property prototype;
+* @description: Checking String.hasOwnProperty('prototype');
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.hasOwnProperty('prototype'))) {
+ $ERROR('#1: String.hasOwnProperty(\'prototype\') return true. Actual: '+String.hasOwnProperty('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A2.js
new file mode 100644
index 000000000..84e035354
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3.1_A2;
+* @section: 15.5.3.1, 15.5.4;
+* @assertion: The String.prototype property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.hasOwnProperty('prototype'))) {
+ $FAIL('#0: String.hasOwnProperty(\'prototype\') return true. Actual: '+String.hasOwnProperty('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.propertyIsEnumerable('prototype')) {
+ $ERROR('#1: String.propertyIsEnumerable(\'prototype\') return false. Actual: '+String.propertyIsEnumerable('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String){
+ if (p==="prototype") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String){ if (p==="prototype") count++;}; count === 0. Actual: count ==='+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A3.js
new file mode 100644
index 000000000..ff33c16b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.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.
+
+/**
+* @name: S15.5.3.1_A3;
+* @section: 15.5.3.1, 15.5.4;
+* @assertion: The String.prototype property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.hasOwnProperty('prototype'))) {
+ $FAIL('#1: String.hasOwnProperty(\'prototype\') return true. Actual: '+String.hasOwnProperty('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+delete String.prototype;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.hasOwnProperty('prototype'))) {
+ $ERROR('#2: delete String.prototype; String.hasOwnProperty(\'prototype\') return true. Actual: '+String.hasOwnProperty('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A4.js
new file mode 100644
index 000000000..498c52ebe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.1_A4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3.1_A4;
+* @section: 15.5.3.1, 15.5.4;
+* @assertion: The String.prototype property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.hasOwnProperty('prototype'))) {
+ $FAIL('#1: String.hasOwnProperty(\'prototype\') return true. Actual: '+String.hasOwnProperty('prototype'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype;
+
+String.prototype = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype !== __obj) {
+ $ERROR('#2: __obj = String.prototype; String.prototype = function(){return "shifted";}; String.prototype === __obj. Actual: String.prototype ==='+String.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A1.js
new file mode 100644
index 000000000..9db600c18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3.2_A1;
+* @section: 15.5.3.2;
+* @assertion: The length property of the fromCharCode function is 1;
+* @description: Checking String.fromCharCode.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof String.fromCharCode !== "function") {
+ $ERROR('#1: typeof String.fromCharCode === "function". Actual: typeof String.fromCharCode ==='+typeof String.fromCharCode );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.hasOwnProperty("fromCharCode"))) {
+ $ERROR('#2: String.hasOwnProperty("fromCharCode") return true. Actual: '+String.hasOwnProperty("fromCharCode"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (String.fromCharCode.length !== 1) {
+ $ERROR('#3: String.fromCharCode.length === 1. Actual: String.fromCharCode.length ==='+String.fromCharCode.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A2.js
new file mode 100644
index 000000000..181bd5763
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3.2_A2;
+* @section: 15.5.3.2;
+* @assertion: String.fromCharCode () returns empty string;
+* @description: Call String.fromCharCode();
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.fromCharCode() !== "") {
+ $ERROR('#1: String.fromCharCode () returns empty string. Actual: '+String.fromCharCode());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A3_T1.js
new file mode 100644
index 000000000..8bbb717ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A3_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3.2_A3_T1;
+* @section: 15.5.3.2;
+* @assertion: String.fromCharCode ( [ char0 [ , char1 [ , ... ] ] ] );
+* @description: Call String.fromCharCode(65,66,66,65);
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.fromCharCode(65,66,66,65) !== "ABBA") {
+ $ERROR('#1: String.fromCharCode(65,66,66,65) === "ABBA". Actual: String.fromCharCode(65,66,66,65) ==='+String.fromCharCode(65,66,66,65) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A3_T2.js
new file mode 100644
index 000000000..1299cc41e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A3_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3.2_A3_T2;
+* @section: 15.5.3.2;
+* @assertion: String.fromCharCode ( [ char0 [ , char1 [ , ... ] ] ] );
+* @description: Create function variable, that equal String.fromCharCode, delete original String.fromCharCode and use created variable;
+*/
+
+var __fcc__func = String.fromCharCode;
+
+delete String.fromCharCode;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__fcc__func(65,66,66,65) !== "ABBA") {
+ $ERROR('#1: __fcc__func = String.fromCharCode; delete String.fromCharCode; __fcc__func(65,66,66,65) === "ABBA". Actual: __fcc__func(65,66,66,65) ==='+__fcc__func(65,66,66,65) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A4.js
new file mode 100644
index 000000000..53dfac6ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3.2_A4.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3.2_A4;
+* @section: 15.5.3.2;
+* @assertion: String.fromCharCode has not [[construct]] method;
+* @description: Checking if creating "new String.fromCharCode" fails;
+*/
+
+var __fcc__func = String.fromCharCode;
+
+delete String.fromCharCode;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var __obj = new __fcc__func(65,66,66,65);
+ $FAIL('#1: __fcc__func = String.fromCharCode; var __obj = new __fcc__func(65,66,66,65) lead to throwing exception');
+} catch (e) {}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A1.js
new file mode 100644
index 000000000..900b07825
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_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.
+
+/**
+* @name: S15.5.3_A1;
+* @section: 15.5.3, 15.5.4;
+* @assertion: String has length property whose value is 1;
+* @description: Checking String.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#
+if (String.length !== 1) {
+ $ERROR('String has length property whose value is 1. Actual: String.length==='+String.length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A2_T1.js
new file mode 100644
index 000000000..8657ea6cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A2_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3_A2_T1;
+* @section: 15.5.3, 15.5.4;
+* @assertion: The value of the internal [[Prototype]] property of the String constructor is the Function prototype object;
+* @description: Checking Function.prototype.isPrototypeOf(String);
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#
+if (!(Function.prototype.isPrototypeOf(String))) {
+ $ERROR('#1: Function.prototype.isPrototypeOf(String) return true. Actual: '+Function.prototype.isPrototypeOf(String));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A2_T2.js
new file mode 100644
index 000000000..c6dc4a12a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.3_Properties_of_the_String_Constructor/S15.5.3_A2_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.3_A2_T2;
+* @section: 15.5.3, 15.5.4;
+* @assertion: The value of the internal [[Prototype]] property of the String constructor is the Function prototype object;
+* @description: Add custom property to Function.prototype and check it at String;
+*/
+
+Function.prototype.indicator = 1;
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#
+if (String.indicator !== 1) {
+ $ERROR('#1: Function.prototype.indicator = 1; String.indicator === 1. Actual: String.indicator ==='+String.indicator );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A10.js
new file mode 100644
index 000000000..214070e6f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A10;
+* @section: 15.5.4.10;
+* @assertion: The String.prototype.match.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.match.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.match.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.match.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.match.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.match.length;
+
+String.prototype.match.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.match.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.match.length; String.prototype.match.length = function(){return "shifted";}; String.prototype.match.length === __obj. Actual: '+String.prototype.match.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A11.js
new file mode 100644
index 000000000..29ce3ba56
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A11;
+* @section: 15.5.4.10;
+* @assertion: The length property of the match method is 1;
+* @description: Checking String.prototype.match.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.match.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.match.hasOwnProperty("length") return true. Actual: '+String.prototype.match.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.match.length !== 1) {
+ $ERROR('#2: String.prototype.match.length === 1. Actual: '+String.prototype.match.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T1.js
new file mode 100644
index 000000000..42ea69ecc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T1;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Arguments is true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.match = String.prototype.match;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.match(true)[0] !== "true") {
+ $ERROR('#1: __instance = new Object(true); __instance.match = String.prototype.match; __instance.match(true)[0] === "true". Actual: '+__instance.match(true)[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T10.js
new file mode 100644
index 000000000..e75726da3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T10.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T10;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Call match (regexp) function with object argument;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __str = "ABB\u0041BABAB";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (match(__obj)[0] !=="AB") {
+ $ERROR('#1: var x; var __obj = {toString:function(){return "\u0041B";}}; var __str = "ABB\u0041BABAB"; match(__obj)[0] ==="AB". Actual: '+match(__obj)[0] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T11.js
new file mode 100644
index 000000000..c6edbfac9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T11.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T11;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Override toString function, toString throw exception, then call match (regexp) function with this object as argument;
+*/
+
+var __obj = {toString:function(){throw "intostr";}}
+var __str = {str__:"ABB\u0041BABAB"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ with(str__){
+ try {
+ var x = match(__obj);
+ $FAIL('#1: "var x = match(__obj)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T12.js
new file mode 100644
index 000000000..1fbfae4f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T12.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T12;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Override toString and valueOf functions, valueOf throw exception, then call match (regexp) function with this object as argument;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){throw "intostr";}}
+var __str = new String("ABB\u0041BABAB");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ try {
+ var x = match(__obj);
+ $FAIL('#1: "var x = match(__obj)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T13.js
new file mode 100644
index 000000000..840a3645f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T13.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T13;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Override toString and valueOf functions, then call match (regexp) function with this object as argument;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("ABB\u0041B\u0031ABAB\u0031BBAA".match(__obj)[0] !=="1") {
+ $ERROR('#1: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; "ABB\\u0041B\\u0031ABAB\\u0031BBAA".match(__obj)[0] ==="1". Actual: '+("ABB\u0041B\u0031ABAB\u0031BBAA".match(__obj)[0]) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ("ABB\u0041B\u0031ABAB\u0031BBAA".match(__obj).length !== 1) {
+ $ERROR('#3: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; "ABB\\u0041B\\u0031ABAB\\u0031BBAA".match(__obj).length === 1. Actual: '+("ABB\u0041B\u0031ABAB\u0031BBAA".match(__obj).length) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T14.js
new file mode 100644
index 000000000..56c307d3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T14.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T14;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Call match (regexp) function with RegExp object as argument from string;
+*/
+
+var __reg = new RegExp("77");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("ABB\u0041BABAB\u0037\u0037BBAA".match(__reg)[0] !== "77") {
+ $ERROR('#1: var __reg = new RegExp("77"); "ABB\\u0041BABAB\\u0037\\u0037BBAA".match(__reg)[0] === "77". Actual: '+("ABB\u0041BABAB\u0037\u0037BBAA".match(__reg)[0]) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T2.js
new file mode 100644
index 000000000..4a8f3b012
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T2;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Argument is function that return boolean, and instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.match = String.prototype.match;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.match(function(){return false;}())[0] !== "false") {
+ $ERROR('#1: __instance = new Boolean; __instance.match = String.prototype.match; __instance.match(function(){return false;}())[0] === "false". Actual: '+__instance.match(function(){return false;}())[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T3.js
new file mode 100644
index 000000000..c059fa4b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T3;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Checking by using eval;
+*/
+
+var match = String.prototype.match;
+
+if (typeof toString === "undefined"){
+ toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (match(eval("\"bj\""))[0] !== "bj") {
+ $ERROR('#1: match = String.prototype.match; match(eval("\\"bj\\""))[0] === "bj". Actual: '+match(eval("\"bj\""))[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4.js
new file mode 100644
index 000000000..42b6f6331
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T4;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Call match (regexp) function without arguments of string;
+*/
+
+var __matched = "".match();
+
+var __expected = RegExp().exec("");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__matched.length !== __expected.length) {
+ $ERROR('#1: __matched = "".match(); __expected = RegExp().exec(""); __matched.length === __expected.length. Actual: '+__matched.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__matched.index !== __expected.index) {
+ $ERROR('#2: __matched = "".match(); __expected = RegExp().exec(""); __matched.index === __expected.index. Actual: '+__matched.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__matched.input !== __expected.input) {
+ $ERROR('#3: __matched = "".match(); __expected = RegExp().exec(""); __matched.input === __expected.input. Actual: '+__matched.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__matched[index]!==__expected[index]) {
+ $ERROR('#4.'+index+': __matched = "".match(); __expected = RegExp().exec(""); __matched['+index+']===__expected['+index+']. Actual: '+__matched[index]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T5.js
new file mode 100644
index 000000000..3a8da5dad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T5;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Call match (regexp) function with null argument of function object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(null) evaluates to "null" match(null) evaluates to match("null")
+if (function(){return "gnulluna"}().match(null)[0] !== "null") {
+ $ERROR('#1: function(){return "gnulluna"}().match(null)[0] === "null". Actual: '+function(){return "gnulluna"}().match(null)[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6.js
new file mode 100644
index 000000000..31a679592
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T6;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Call match (regexp) function with x argument of new String object, where x is undefined variable;
+*/
+
+var __matched = new String("undefined").match(x);
+
+var __expected = RegExp(x).exec("undefined");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__matched.length !== __expected.length) {
+ $ERROR('#1: __matched = new String("undefined").match(x); __expected = RegExp(x).exec("undefined"); __matched.length === __expected.length. Actual: '+__matched.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__matched.index !== __expected.index) {
+ $ERROR('#2: __matched = new String("undefined").match(x); __expected = RegExp(x).exec("undefined"); __matched.index === __expected.index. Actual: '+__matched.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__matched.input !== __expected.input) {
+ $ERROR('#3: __matched = new String("undefined").match(x); __expected = RegExp(x).exec("undefined"); __matched.input === __expected.input. Actual: '+__matched.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__matched[index]!==__expected[index]) {
+ $ERROR('#4.'+index+': __matched = new String("undefined").match(x); __expected = RegExp(x).exec("undefined"); __matched['+index+']===__expected['+index+']. Actual: '+__matched[index]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7.js
new file mode 100644
index 000000000..0cd7c0a8a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T7;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Call match (regexp) function with undefined argument of string object;
+*/
+
+var __matched = String("undefined").match(undefined);
+
+var __expected = RegExp(undefined).exec("undefined");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__matched.length !== __expected.length) {
+ $ERROR('#1: __matched = String("undefined").match(undefined); __expected = RegExp(undefined).exec("undefined"); __matched.length === __expected.length. Actual: '+__matched.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__matched.index !== __expected.index) {
+ $ERROR('#2: __matched = String("undefined").match(undefined); __expected = RegExp(undefined).exec("undefined"); __matched.index === __expected.index. Actual: '+__matched.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__matched.input !== __expected.input) {
+ $ERROR('#3: __matched = String("undefined").match(undefined); __expected = RegExp(undefined).exec("undefined"); __matched.input === __expected.input. Actual: '+__matched.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__matched[index]!==__expected[index]) {
+ $ERROR('#4.'+index+': __matched = String("undefined").match(undefined); __expected = RegExp(undefined).exec("undefined"); __matched['+index+']===__expected['+index+']. Actual: '+__matched[index]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8.js
new file mode 100644
index 000000000..7a7022b45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T8;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Call match (regexp) function with void 0 argument of string object;
+*
+*/
+
+var __obj = {toString:function(){}};
+
+var __matched = String(__obj).match(void 0);
+
+var __expected = RegExp(void 0).exec("undefined");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__matched.length !== __expected.length) {
+ $ERROR('#1: __obj = {toString:function(){}}; __matched = String(__obj).match(void 0); __expected = RegExp(void 0).exec("undefined"); __matched.length === __expected.length. Actual: '+__matched.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__matched.index !== __expected.index) {
+ $ERROR('#2: __obj = {toString:function(){}}; __matched = String(__obj).match(void 0); __expected = RegExp(void 0).exec("undefined"); __matched.index === __expected.index. Actual: '+__matched.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__matched.input !== __expected.input) {
+ $ERROR('#3: __obj = {toString:function(){}}; __matched = String(__obj).match(void 0); __expected = RegExp(void 0).exec("undefined"); __matched.input === __expected.input. Actual: '+__matched.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__matched[index]!==__expected[index]) {
+ $ERROR('#4.'+index+': __obj = {toString:function(){}}; __matched = String(__obj).match(void 0); __expected = RegExp(void 0).exec("undefined"); __matched['+index+']===__expected['+index+']. Actual: '+__matched[index]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9.js
new file mode 100644
index 000000000..f08ed7e5c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A1_T9;
+* @section: 15.5.4.10;
+* @assertion: String.prototype.match (regexp);
+* @description: Call match (regexp) function with function(){}() argument of string object;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+var __matched = new String(__obj).match(function(){}());
+
+var __expected = RegExp(undefined).exec("undefined");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__matched.length !== __expected.length) {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; __matched = new String(__obj).match(function(){}()); __expected = RegExp(undefined).exec("undefined"); __matched.length === __expected.length. Actual: '+__matched.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__matched.index !== __expected.index) {
+ $ERROR('#2: __obj = {valueOf:function(){}, toString:void 0}; __matched = new String(__obj).match(function(){}()); __expected = RegExp(undefined).exec("undefined"); __matched.index === __expected.index. Actual: '+__matched.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__matched.input !== __expected.input) {
+ $ERROR('#3: __obj = {valueOf:function(){}, toString:void 0}; __matched = new String(__obj).match(function(){}()); __expected = RegExp(undefined).exec("undefined"); __matched.input === __expected.input. Actual: '+__matched.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__matched[index]!==__expected[index]) {
+ $ERROR('#4.'+index+': __obj = {valueOf:function(){}, toString:void 0}; __matched = new String(__obj).match(function(){}()); __expected = RegExp(undefined).exec("undefined"); __matched['+index+']===__expected['+index+']. Actual: '+__matched[index]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T1.js
new file mode 100644
index 000000000..352ab972b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T1;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is 3;
+*/
+
+var __string = "1234567890";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(3)[0]!== "3") {
+ $ERROR('#1: __string = "1234567890"; __string.match(3)[0]=== "3". Actual: '+__string.match(3)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__string.match(3).length !==1) {
+ $ERROR('#2: __string = "1234567890"; __string.match(3).length ===1. Actual: '+__string.match(3).length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__string.match(3).index !==2) {
+ $ERROR('#3: __string = "1234567890"; __string.match(3).index ===2. Actual: '+__string.match(3).index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__string.match(3).input !==__string) {
+ $ERROR('#4: __string = "1234567890"; __string.match(3).input ===__string. Actual: '+__string.match(3).input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T10.js
new file mode 100644
index 000000000..8288c459a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T10.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T10;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/. Last match is undefined.
+* And regular expression object have property lastIndex = tested_string.lastIndexOf("0");
+*/
+
+var __string = "Boston, MA 02134";
+
+var __matches=["02134", "02134", undefined];
+
+var __re = /([\d]{5})([-\ ]?[\d]{4})?$/;
+
+__re.lastIndex = __string.lastIndexOf("0");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(__re).length!== 3) {
+ $ERROR('#1: __string.match(__re).length=== 3. Actual: '+__string.match(__re).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__string.match(__re).index !==__string.lastIndexOf("0")) {
+ $ERROR('#2: __string.match(__re).index ===__string.lastIndexOf("0"). Actual: '+__string.match(__re).index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var mi=0; mi<__matches.length; mi++) {
+ if (__string.match(__re)[mi]!==__matches[mi]) {
+ $ERROR('#3.'+mi+': __string.match(__re)['+mi+']===__matches['+mi+']. Actual: '+__string.match(__re)[mi]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T11.js
new file mode 100644
index 000000000..eff45f6ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T11.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T11;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/. Last match is undefined.
+* And regular expression object have property lastIndex = tested_string.lastIndexOf("0")+1;
+*/
+
+var __string = "Boston, MA 02134";
+
+var __matches=["02134", "02134", undefined];
+
+var __re = /([\d]{5})([-\ ]?[\d]{4})?$/;
+
+__re.lastIndex = __string.lastIndexOf("0")+1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(__re).length!== 3) {
+ $ERROR('#1: __string.match(__re).length=== 3. Actual: '+__string.match(__re).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__string.match(__re).index !==__string.lastIndexOf("0")) {
+ $ERROR('#2: __string.match(__re).index ===__string.lastIndexOf("0"). Actual: '+__string.match(__re).index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var mi=0; mi<__matches.length; mi++) {
+ if (__string.match(__re)[mi]!==__matches[mi]) {
+ $ERROR('#3.'+mi+': __string.match(__re)['+mi+']===__matches['+mi+']. Actual: '+__string.match(__re)[mi]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T12.js
new file mode 100644
index 000000000..3f2644904
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T12.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T12;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is variable that have value /([\d]{5})([-\ ]?[\d]{4})?$/g;
+*/
+
+var __matches=["02134"];
+
+var __string = "Boston, MA 02134";
+
+var __re = /([\d]{5})([-\ ]?[\d]{4})?$/g;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(__re).length!== __matches.length) {
+ $ERROR('#1: __string.match(__re).length=== __matches.length. Actual: '+__string.match(__re).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__string.match(__re)[0]!==__matches[0]) {
+ $ERROR('#2: __string.match(__re)[0]===__matches[0]. Actual: '+__string.match(__re)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T13.js
new file mode 100644
index 000000000..8c88fef3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T13.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T13;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/g.
+* And regular expression object have property lastIndex = 0;
+*/
+
+var __matches=["02134"];
+
+var __re = /([\d]{5})([-\ ]?[\d]{4})?$/g;
+__re.lastIndex = 0;
+
+var __string = "Boston, MA 02134";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(__re).length!== __matches.length) {
+ $ERROR('#1: __string.match(__re).length=== __matches.length. Actual: '+__string.match(__re).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__string.match(__re)[0]!==__matches[0]) {
+ $ERROR('#3: __string.match(__re)[0]===__matches[0]. Actual: '+__string.match(__re)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T14.js
new file mode 100644
index 000000000..7d35e67f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T14.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T14;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/g.
+* And regular expression object have property lastIndex = tested_string.length;
+*/
+
+var __string = "Boston, MA 02134";
+
+var __matches=["02134"];
+
+var __re = /([\d]{5})([-\ ]?[\d]{4})?$/g;
+
+__re.lastIndex = __string.length;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(__re).length!== __matches.length) {
+ $ERROR('#1: __string.match(__re).length=== __matches.length. Actual: '+__string.match(__re).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__string.match(__re)[0]!==__matches[0]) {
+ $ERROR('#3: __string.match(__re)[0]===__matches[0]. Actual: '+__string.match(__re)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T15.js
new file mode 100644
index 000000000..77a25be47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T15.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T15;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/.
+* And regular expression object have property lastIndex = tested_string.lastIndexOf("0");
+*/
+
+var __string = "Boston, MA 02134";
+
+var __matches=["02134"];
+
+var __re = /([\d]{5})([-\ ]?[\d]{4})?$/g;
+
+__re.lastIndex = __string.lastIndexOf("0");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(__re).length!== __matches.length) {
+ $ERROR('#1: __string.match(__re).length=== __matches.length. Actual: '+__string.match(__re).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__string.match(__re)[0]!==__matches[0]) {
+ $ERROR('#3: __string.match(__re)[0]===__matches[0]. Actual: '+__string.match(__re)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T16.js
new file mode 100644
index 000000000..4a02d1f5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T16.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T16;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/.
+* And regular expression object have property lastIndex = tested_string.lastIndexOf("0")+1;
+*/
+
+var __string = "Boston, MA 02134";
+
+var __matches=["02134"];
+
+var __re = /([\d]{5})([-\ ]?[\d]{4})?$/g;
+
+__re.lastIndex = __string.lastIndexOf("0")+1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(__re).length!== __matches.length) {
+ $ERROR('#1: __string.match(__re).length=== __matches.length. Actual: '+__string.match(__re).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__string.match(__re)[0]!==__matches[0]) {
+ $ERROR('#3: __string.match(__re)[0]===__matches[0]. Actual: '+__string.match(__re)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T17.js
new file mode 100644
index 000000000..f36e6806a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T17.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T17;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /0./;
+*/
+
+var __re = /0./;
+
+var __num = 10203040506070809000;
+
+Number.prototype.match = String.prototype.match;
+
+//__matches = ["02"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__num.match(__re)[0]!== "02") {
+ $ERROR('#1: __num.match(__re)[0]=== "02". Actual: '+__num.match(__re)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__num.match(__re).length !==1) {
+ $ERROR('#2: __num.match(__re).length ===1. Actual: '+__num.match(__re).length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__num.match(__re).index !==1) {
+ $ERROR('#3: __num.match(__re).index ===1. Actual: '+__num.match(__re).index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__num.match(__re).input !==String(__num)) {
+ $ERROR('#4: __num.match(__re).input ===String(__num). Actual: '+__num.match(__re).input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T18.js
new file mode 100644
index 000000000..6756d3a6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T18.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T18;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /0./.
+* And regular expression object have property lastIndex = 0;
+*/
+
+var __re = /0./;
+
+__re.lastIndex = 0;
+
+var __num = 10203040506070809000;
+
+Number.prototype.match = String.prototype.match;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__num.match(__re)[0]!== "02") {
+ $ERROR('#1: __num.match(__re)[0]=== "02". Actual: '+__num.match(__re)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__num.match(__re).length !==1) {
+ $ERROR('#2: __num.match(__re).length ===1. Actual: '+__num.match(__re).length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__num.match(__re).index !==1) {
+ $ERROR('#3: __num.match(__re).index ===1. Actual: '+__num.match(__re).index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__num.match(__re).input !==String(__num)) {
+ $ERROR('#4: __num.match(__re).input ===String(__num). Actual: '+__num.match(__re).input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T2.js
new file mode 100644
index 000000000..ab9ec9a4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T2;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /34/g;
+*/
+
+var __matches=["34","34","34"];
+
+var __string = "343443444";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(/34/g).length!== 3) {
+ $ERROR('#1: __string = "343443444"; __string.match(/34/g).length=== 3. Actual: '+__string.match(/34/g).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+for(var mi=0; mi<__matches.length; mi++) {
+ if (__string.match(/34/g)[mi]!==__matches[mi]) {
+ $ERROR('#2.'+mi+': __matches=["34","34","34"]; __string = "343443444"; __string.match(/34/g)['+mi+']===__matches['+mi+']. Actual: '+__string.match(/34/g)[mi]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T3.js
new file mode 100644
index 000000000..f28c5e34f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_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.
+
+/**
+* @name: S15.5.4.10_A2_T3;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /\d{1}/g;
+*/
+
+var __matches=["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"];
+
+var __string = "123456abcde7890";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(/\d{1}/g).length!== 10) {
+ $ERROR('#1: __string = "123456abcde7890"; __string.match(/\\d{1}/g).length=== 10. Actual: '+__string.match(/\d{1}/g).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+for(var mi=0; mi<__matches.length; mi++) {
+ if (__string.match(/\d{1}/g)[mi]!==__matches[mi]) {
+ $ERROR('#2.'+mi+': __matches=["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]; __string = "123456abcde7890"; __string.match(/\\d{1}/g)['+mi+']===__matches['+mi+']. Actual: '+__string.match(/\d{1}/g)[mi]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T4.js
new file mode 100644
index 000000000..ef622ced2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T4.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T4;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /\d{2}/g;
+*/
+
+var __matches=["12", "34", "56", "78", "90"];
+
+var __string = "123456abcde7890";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(/\d{2}/g).length!== 5) {
+ $ERROR('#1: __string = "123456abcde7890"; __string.match(/\\d{2}/g).length=== 5. Actual: '+__string.match(/\d{2}/g).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+for(var mi=0; mi<__matches.length; mi++) {
+ if (__string.match(/\d{2}/g)[mi]!==__matches[mi]) {
+ $ERROR('#2.'+mi+': __matches=["12", "34", "56", "78", "90"]; __string = "123456abcde7890"; __string.match(/\\d{2}/g)['+mi+']===__matches['+mi+']. Actual: '+__string.match(/\d{2}/g)[mi]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T5.js
new file mode 100644
index 000000000..20ffc7c1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T5.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T5;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /\D{2}/g;
+*/
+
+var __matches=["ab", "cd"];
+
+var __string = "123456abcde7890";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(/\D{2}/g).length!== 2) {
+ $ERROR('#1: __string = "123456abcde7890"; __string.match(/\\D{2}/g).length=== 2. Actual: '+__string.match(/\D{2}/g).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+for(var mi=0; mi<__matches.length; mi++) {
+ if (__string.match(/\D{2}/g)[mi]!==__matches[mi]) {
+ $ERROR('#2.'+mi+': __matches=["ab", "cd"]; __string = "123456abcde7890"; __string.match(/\\D{2}/g)['+mi+']===__matches['+mi+']. Actual: '+__string.match(/\D{2}/g)[mi]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T6.js
new file mode 100644
index 000000000..b309ab196
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T6.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T6;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/. Last match is void 0;
+*/
+
+var __string = "Boston, Mass. 02134";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/)[0]!== "02134") {
+ $ERROR('#1: __string = "Boston, Mass. 02134"; __string.match(/([\\d]{5})([-\\ ]?[\\d]{4})?$/)[0]=== "02134". Actual: '+__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/)[1]!== "02134") {
+ $ERROR('#2: __string = "Boston, Mass. 02134"; __string.match(/([\\d]{5})([-\\ ]?[\\d]{4})?$/)[1]=== "02134". Actual: '+__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/)[1]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/)[2]!== void 0) {
+ $ERROR('#3: __string = "Boston, Mass. 02134"; __string.match(/([\\d]{5})([-\\ ]?[\\d]{4})?$/)[2]=== void 0. Actual: '+__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/)[2]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/).length !==3) {
+ $ERROR('#4: __string = "Boston, Mass. 02134"; __string.match(/([\\d]{5})([-\\ ]?[\\d]{4})?$/).length ===3. Actual: '+__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/).length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/).index !==14) {
+ $ERROR('#5: __string = "Boston, Mass. 02134"; __string.match(/([\\d]{5})([-\\ ]?[\\d]{4})?$/).index ===14. Actual: '+__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/).index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/).input !==__string) {
+ $ERROR('#6: __string = "Boston, Mass. 02134"; __string.match(/([\\d]{5})([-\\ ]?[\\d]{4})?$/).input ===__string. Actual: '+__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/).input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T7.js
new file mode 100644
index 000000000..22034f009
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T7;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/g;
+*/
+
+var __matches=["02134"];
+
+var __string = "Boston, Mass. 02134";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/g).length!== 1) {
+ $ERROR('#1: __string = "Boston, Mass. 02134"; __string.match(/([\\d]{5})([-\\ ]?[\\d]{4})?$/g).length=== 1. Actual: '+__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/g).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/g)[0]!==__matches[0]) {
+ $ERROR('#2: __matches=["02134"]; __string = "Boston, Mass. 02134"; __string.match(/([\\d]{5})([-\\ ]?[\\d]{4})?$/g)[0]===__matches[0]. Actual: '+__string.match(/([\d]{5})([-\ ]?[\d]{4})?$/g)[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T8.js
new file mode 100644
index 000000000..28d2b320b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T8.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T8;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/. Last match is undefined.
+* And regular expression object have property lastIndex = 0;
+*/
+
+var __matches=["02134", "02134", undefined];
+
+var __re = /([\d]{5})([-\ ]?[\d]{4})?$/;
+__re.lastIndex = 0;
+
+var __string = "Boston, MA 02134";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(__re).length!== 3) {
+ $ERROR('#1: __string = "Boston, MA 02134"; __re = /([\d]{5})([-\ ]?[\d]{4})?$/; __string.match(__re).length=== 3. Actual: '+__string.match(__re).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__string.match(__re).index !==__string.lastIndexOf("0")) {
+ $ERROR('#2: __string = "Boston, MA 02134"; __re = /([\d]{5})([-\ ]?[\d]{4})?$/; __re.lastIndex = 0; __string.match(__re).index ===__string.lastIndexOf("0"). Actual: '+__string.match(__re).index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var mi=0; mi<__matches.length; mi++) {
+ if (__string.match(__re)[mi]!==__matches[mi]) {
+ $ERROR('#3.'+mi+': __string = "Boston, MA 02134"; __re = /([\d]{5})([-\ ]?[\d]{4})?$/; __matches=["02134", "02134", undefined]; __string.match(__re)['+mi+']===__matches['+mi+']. Actual: '+__string.match(__re)[mi]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T9.js
new file mode 100644
index 000000000..960d0d27e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A2_T9.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A2_T9;
+* @section: 15.5.4.10, 15.10.6.2;
+* @assertion: match returns array as specified in 15.10.6.2;
+* @description: Regular expression is /([\d]{5})([-\ ]?[\d]{4})?$/. Last match is undefined.
+* And regular expression object have property lastIndex = tested_string.length;
+*/
+
+var __string = "Boston, MA 02134";
+
+var __matches=["02134", "02134", undefined];
+
+var __re = /([\d]{5})([-\ ]?[\d]{4})?$/;
+
+__re.lastIndex = __string.length;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.match(__re).length!== 3) {
+ $ERROR('#1: __string = "Boston, MA 02134"; __re = /([\d]{5})([-\ ]?[\d]{4})?$/; __string.match(__re).length=== 3. Actual: '+__string.match(__re).length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__string.match(__re).index !==__string.lastIndexOf("0")) {
+ $ERROR('#2: __string = "Boston, MA 02134"; __re = /([\d]{5})([-\ ]?[\d]{4})?$/; __re.lastIndex = __string.length; __string.match(__re).index ===__string.lastIndexOf("0"). Actual: '+__string.match(__re).index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var mi=0; mi<__matches.length; mi++) {
+ if (__string.match(__re)[mi]!==__matches[mi]) {
+ $ERROR('#3.'+mi+': __string = "Boston, MA 02134"; __re = /([\d]{5})([-\ ]?[\d]{4})?$/; __matches=["02134", "02134", undefined]; __string.match(__re)['+mi+']===__matches['+mi+']. Actual: '+__string.match(__re)[mi]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A6.js
new file mode 100644
index 000000000..20a410171
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A6;
+* @section: 15.5.4.10, 13.2;
+* @assertion: String.prototype.match has not prototype property;
+* @description: Checking String.prototype.match.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.match.prototype !== undefined) {
+ $ERROR('#1: String.prototype.match.prototype === undefined. Actual: '+String.prototype.match.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A7.js
new file mode 100644
index 000000000..14ffcecfd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A7.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.
+
+/**
+* @name: S15.5.4.10_A7;
+* @section: 15.5.4.10, 13.2;
+* @assertion: String.prototype.match can't be used as constructor;
+* @description: Checking if creating "String.prototype.match object" fails;
+*/
+
+var __FACTORY = String.prototype.match;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.match; __FACTORY = String.prototype.match; __instance = new __FACTORY lead to throwing exception');
+} catch (e) {}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A8.js
new file mode 100644
index 000000000..955a0f61b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A8;
+* @section: 15.5.4.10;
+* @assertion: The String.prototype.match.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.match.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.match.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.match.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.match.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.match.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.match.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.match){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.match){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A9.js
new file mode 100644
index 000000000..5e5ebb1fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.10_String.prototype.match/S15.5.4.10_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.10_A9;
+* @section: 15.5.4.10;
+* @assertion: The String.prototype.match.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.match.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.match.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.match.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.match.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.match.length) {
+ $ERROR('#1: delete String.prototype.match.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.match.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.match.length; String.prototype.match.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.match.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A10.js
new file mode 100644
index 000000000..b91cb055c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A10;
+* @section: 15.5.4.11;
+* @assertion: The String.prototype.replace.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.replace.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.replace.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.replace.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.replace.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.replace.length;
+
+String.prototype.replace.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.replace.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.replace.length; String.prototype.replace.length = function(){return "shifted";}; String.prototype.replace.length === __obj. Actual: '+String.prototype.replace.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A11.js
new file mode 100644
index 000000000..5cd122c25
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A11;
+* @section: 15.5.4.11;
+* @assertion: The length property of the replace method is 2;
+* @description: Checking String.prototype.replace.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.replace.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.replace.hasOwnProperty("length") return true. Actual: '+String.prototype.replace.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.replace.length !== 2) {
+ $ERROR('#2: String.prototype.replace.length === 2. Actual: '+String.prototype.replace.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A12.js
new file mode 100644
index 000000000..bfc32db70
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A12.js
@@ -0,0 +1,23 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A12;
+* @section: 15.5.4.11;
+* @assertion: Call replaceValue passing undefined as the this value;
+* @description: replaceValue tests that its this value is undefined;
+*/
+
+var global = this;
+'x'.replace(/x/, function() {
+ "use strict";
+
+ if (this === global) {
+ $FAIL('#1: String replace leaks global');
+ }
+ if (this !== undefined) {
+ $FAIL('#2: replaceValue should be called with this===undefined. ' +
+ 'Actual: ' + this);
+ }
+ return 'y';
+});
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T1.js
new file mode 100644
index 000000000..99a910b5c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T1;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Arguments are true and 1, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.replace = String.prototype.replace;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.replace(true, 1) !== "1") {
+ $ERROR('#1: __instance = new Object(true); __instance.replace = String.prototype.replace; __instance.replace(true, 1) === "1". Actual: '+__instance.replace(true, 1) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T10.js
new file mode 100644
index 000000000..124efe72c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T10.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T10;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with object and function arguments of string. Object have overrided toString function;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}};
+
+var __str = "ABB\u0041BABAB";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (replace(__obj, function(){return x;}) !== "undefinedBABABAB") {
+ $ERROR('#1: var x; var __obj = {toString:function(){return "\u0041B";}}; var __str = "ABB\u0041BABAB"; replace(__obj, function(){return x;}) === "undefinedBABABAB". Actual: '+replace(__obj, function(){return x;}) );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T11.js
new file mode 100644
index 000000000..1520b02fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T11.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T11;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with objects arguments of string object. Objects have overrided toString function, that throw exception;
+*/
+
+var __obj = {toString:function(){throw "insearchValue";}};
+var __obj2 = {toString:function(){throw "inreplaceValue";}};
+var __str = {str__:"ABB\u0041BABAB"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ with(str__){
+ try {
+ var x = replace(__obj,__obj2);
+ $FAIL('#1: "var x = replace(__obj,__obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="insearchValue") {
+ $ERROR('#1.1: Exception === "insearchValue". Actual: '+e);
+ }
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T12.js
new file mode 100644
index 000000000..3e40f0658
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T12.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T12;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with objects arguments of String object.
+* First objects have overrided toString and valueOf functions, valueOf throw exception.
+* Second objects have overrided toString function, that throw exception;
+*/
+
+var __obj = {toString:function(){return {};}, valueOf:function(){throw "insearchValue";}};
+var __obj2 = {toString:function(){throw "inreplaceValue";}};
+var __str = new String("ABB\u0041BABAB");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ try {
+ var x = replace(__obj, __obj2);
+ $FAIL('#1: "var x = replace(__obj,__obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="insearchValue") {
+ $ERROR('#1.1: Exception === "insearchValue". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T13.js
new file mode 100644
index 000000000..4b754716f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T13.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T13;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with objects arguments of string.
+* First objects have overrided toString and valueOf functions.
+* Second objects have overrided toString function, that throw exception;
+*/
+
+var __obj = {toString:function(){return {};}, valueOf:function(){return 1;}};
+var __obj2 = {toString:function(){throw "inreplaceValue";}};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = "ABB\u0041BABAB\u0031BBAA".replace(__obj, __obj2);
+ $FAIL('#1: var x = "ABB\\u0041BABAB\\u0031BBAA".replace(__obj,__obj2) lead to throwing exception');
+} catch (e) {
+ if (e!=="inreplaceValue") {
+ $ERROR('#1.1: Exception === "inreplaceValue". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T14.js
new file mode 100644
index 000000000..6d72d1b7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T14.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T14;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Instance is string, searchValue is regular expression;
+*/
+
+var __reg = new RegExp("77");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("ABB\u0041BABAB\u0037\u0037BBAA".replace(__reg, 1) !== "ABBABABAB\u0031BBAA") {
+ $ERROR('#1: var __reg = new RegExp("77"); "ABB\\u0041BABAB\\u0037\\u0037BBAA".replace(__reg, 1) === "ABBABABAB\\u0031BBAA". Actual: '+("ABB\u0041BABAB\u0037\u0037BBAA".replace(__reg, 1)) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T15.js
new file mode 100644
index 000000000..c8ed48dd4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T15.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T15;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Instance is Object, searchValue is regular expression;
+*/
+
+var __obj = {toString:function(){return /77/}};
+
+var __instance = new Object(1100.00777001);
+
+Object.prototype.replace = String.prototype.replace;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __instance.replace(__obj, 1) === "1100.0017001";
+ $FAIL('#1.0: x = __instance.replace(__obj, 1) === "1100.0017001" lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Exception is instance of TypeError. Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T16.js
new file mode 100644
index 000000000..8f90dac94
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T16.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T16;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Instance is Number, searchValue is regular expression;
+*/
+
+var __re = /77/;
+
+var __instance = new Number(1100.00777001);
+
+Number.prototype.replace = String.prototype.replace;
+
+var __obj = {toString:function(){return function(a1,a2,a3){return a2+"z"};}}
+//__obj = function(a1,a2,a3){return a2+"z"};
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __instance.replace(__re, __obj) === "1100.007z7001";
+ $FAIL('#1.0: x = __instance.replace(__obj, 1) === "1100.007z7001" lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Exception is instance of TypeError. Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T17.js
new file mode 100644
index 000000000..f7c9b5001
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T17.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T17;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Instance is String object, searchValue is regular expression;
+*/
+
+var __re = new RegExp(x,"g");
+
+var __instance = String("asdf");
+
+var __str = "1";
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.replace(__re, __str) !== "1a1s1d1f1") {
+ $ERROR('#1: var x; var __re = new RegExp(x,"g"); __instance = String("asdf"); __str = "1"; __instance.replace(__re, __str) === "1a1s1d1f1". Actual: '+__instance.replace(__re, __str) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T2.js
new file mode 100644
index 000000000..b9ef31f9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T2;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Argument is function that return boolean, and instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.replace = String.prototype.replace;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.replace(function(){return false;}(),x) !== "undefined") {
+ $ERROR('#1: var x; __instance = new Boolean; __instance.replace = String.prototype.replace; __instance.replace(function(){return false;}(),x) === "undefined". Actual: '+__instance.replace(function(){return false;}(),x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T3.js
new file mode 100644
index 000000000..eac4a9a7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T3;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Checking by using eval;
+*/
+
+replace = String.prototype.replace;
+
+if (typeof toString === "undefined"){
+ toString = Object.prototype.toString;
+}
+
+__class__ = toString();
+__toggle = 1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+__replaced = replace(eval("\"b\""),"^");
+
+__golden = "";
+for(var i=0; i<__class__.length; i++) {
+ if ((__class__.charAt(i)==="b")&&(__toggle)) {
+ __golden+="^";
+ __toggle = 0;
+ } else {
+ __golden+=__class__.charAt(i);
+ }
+
+}
+if (__replaced !==__golden) {
+ $ERROR('#1: __replaced ===__golden. Actual: '+__replaced );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T4.js
new file mode 100644
index 000000000..a7af1977f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T4;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with null and function(a1,a2,a3){return a2+"";} arguments of function object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (function(){return "gnulluna"}().replace(null,function(a1,a2,a3){return a2+"";}) !== "g1una") {
+ $ERROR('#1: function(){return "gnulluna"}().replace(null,function(a1,a2,a3){return a2+"";}) === "g1una". Actual: '+function(){return "gnulluna"}().replace(null,function(a1,a2,a3){return a2+"";}) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T5.js
new file mode 100644
index 000000000..7ea29d2d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T5.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T5;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with null and Function() arguments of function object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (function(){return "gnulluna"}().replace(null, Function()) !== "gundefineduna") {
+ $ERROR('#1: function(){return "gnulluna"}().replace(null, Function()) === "gundefineduna". Actual: '+function(){return "gnulluna"}().replace(null, Function()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T6.js
new file mode 100644
index 000000000..747a66511
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T6;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with x and Function("return arguments[1]+42;") arguments of new String object. x is undefined variable;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (new String("undefined").replace(x,Function("return arguments[1]+42;")) !== "42") {
+ $ERROR('#1: var x; new String("undefined").replace(x,Function("return arguments[1]+42;")) === "42". Actual: '+new String("undefined").replace(x,Function("return arguments[1]+42;")) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T7.js
new file mode 100644
index 000000000..661a6807c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T7.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T7;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with string and undefined arguments of String object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String(void 0).replace("e",undefined) !== "undundefinedfined") {
+ $ERROR('#1: String(void 0).replace("e",undefined) === "undundefinedfined". Actual: '+String(void 0).replace("e",undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T8.js
new file mode 100644
index 000000000..435788834
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T8;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with regular expression and void 0 arguments of String object;
+*/
+
+var __obj = {toString:function(){}};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String(__obj).replace(/e/g,void 0) !== "undundefinedfinundefinedd") {
+ $ERROR('#1: __obj = {toString:function(){}}; String(__obj).replace(/e/g,void 0) === "undundefinedfinundefinedd". Actual: '+String(__obj).replace(/e/g,void 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T9.js
new file mode 100644
index 000000000..68eec34ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T9.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A1_T9;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue);
+* @description: Call replace (searchValue, replaceValue) function with functions arguments of new String object;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (new String(__obj).replace(function(){}(),__func) !== "undefined0undefined") {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; function __func(a1,a2,a3){return a1+a2+a3;}; new String(__obj).replace(function(){}(),__func) === "undefined0undefined". Actual: '+new String(__obj).replace(function(){}(),__func) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(a1,a2,a3){return a1+a2+a3;};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T1.js
new file mode 100644
index 000000000..ab38fed47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_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.
+
+/**
+* @name: S15.5.4.11_A2_T1;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Don`t use $ in replaceValue, searchValue is regular expression /sh/g;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/g;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re,'sch')!=='She sells seaschells by the seaschore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/g; __str.replace(__re,\'sch\')===\'She sells seaschells by the seaschore.\'. Actual: '+__str.replace(__re,'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T10.js
new file mode 100644
index 000000000..602748fb9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T10.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A2_T10;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Use $' in replaceValue, searchValue is regular expression /sh/;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, "$'" + 'sch')!=='She sells seaells by the seashore.schells by the seashore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/; __str.replace(__re, "$\'" + \'sch\')===\'She sells seaells by the seashore.schells by the seashore.\'. Actual: '+__str.replace(__re, "$'" + 'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T2.js
new file mode 100644
index 000000000..dca68679d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A2_T2;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Use $$ in replaceValue, searchValue is regular expression /sh/g;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/g;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re,"$$" + 'sch')!=='She sells sea$schells by the sea$schore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/g; __str.replace(__re,"$$" + \'sch\')===\'She sells sea$schells by the sea$schore.\'. Actual: '+__str.replace(__re,"$$" + 'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T3.js
new file mode 100644
index 000000000..3cfe15612
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A2_T3;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Use $& in replaceValue, searchValue is regular expression /sh/g;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/g;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re,"$&" + 'sch')!=='She sells seashschells by the seashschore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/g; __str.replace(__re,"$&" + \'sch\')===\'She sells seashschells by the seashschore.\'. Actual: '+__str.replace(__re,"$&" + 'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T4.js
new file mode 100644
index 000000000..fbcf4df7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A2_T4;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Use $` in replaceValue, searchValue is regular expression /sh/g;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/g;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, "$`" + 'sch')!=='She sells seaShe sells seaschells by the seaShe sells seashells by the seaschore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/g; __str.replace(__re, "$`" + \'sch\')===\'She sells seaShe sells seaschells by the seaShe sells seashells by the seaschore.\'. Actual: '+__str.replace(__re, "$`" + 'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T5.js
new file mode 100644
index 000000000..69cd76e44
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A2_T5;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Use $' in replaceValue, searchValue is regular expression /sh/g;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/g;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, "$'" + 'sch')!=='She sells seaells by the seashore.schells by the seaore.schore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/g; __str.replace(__re, "$\'" + \'sch\')===\'She sells seaells by the seashore.schells by the seaore.schore.\'. Actual: '+__str.replace(__re, "$'" + 'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T6.js
new file mode 100644
index 000000000..2132951be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A2_T6;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Don`t use $ in replaceValue, searchValue is regular expression /sh/;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, 'sch')!=='She sells seaschells by the seashore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/; __str.replace(__re, \'sch\')===\'She sells seaschells by the seashore.\'. Actual: '+__str.replace(__re, 'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T7.js
new file mode 100644
index 000000000..c77d0a05c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A2_T7;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Use $$ in replaceValue, searchValue is regular expression /sh/;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, "$$" + 'sch')!=='She sells sea$schells by the seashore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/; __str.replace(__re, "$$" + \'sch\')===\'She sells sea$schells by the seashore.\'. Actual: '+__str.replace(__re, "$$" + 'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T8.js
new file mode 100644
index 000000000..3192caa4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T8.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A2_T8;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Use $& in replaceValue, searchValue is regular expression /sh/;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, "$&" + 'sch')!=='She sells seashschells by the seashore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/; __str.replace(__re, "$&" + \'sch\')===\'She sells seashschells by the seashore.\'. Actual: '+__str.replace(__re, "$&" + 'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T9.js
new file mode 100644
index 000000000..95b51f9e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A2_T9.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A2_T9;
+* @section: 15.5.4.11;
+* @assertion: The $ replacements are done left-to-right, and, once such are placement is performed, the new
+* replacement text is not subject to further replacements;
+* @description: Use $` in replaceValue, searchValue is regular expression /sh/;
+*/
+
+var __str = 'She sells seashells by the seashore.';
+var __re = /sh/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, "$`" + 'sch')!=='She sells seaShe sells seaschells by the seashore.') {
+ $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/; __str.replace(__re, "$`" + \'sch\')===\'She sells seaShe sells seaschells by the seashore.\'. Actual: '+__str.replace(__re, "$`" + 'sch'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T1.js
new file mode 100644
index 000000000..dc15597dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A3_T1;
+* @section: 15.5.4.11;
+* @assertion: replace with regexp /(uid=)(\d+)/ returns;
+* @description: replaceValue is "$11" + 15;
+*/
+
+var __str = 'uid=31';
+var __re = /(uid=)(\d+)/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, "$11" + 15)!=='uid=115') {
+ $ERROR('#1: var __str = \'uid=31\'; var __re = /(uid=)(\d+)/; __str.replace(__re, "$11" + 15)===\'uid=115\'. Actual: '+__str.replace(__re, "$11" + 15));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T2.js
new file mode 100644
index 000000000..f2a39b287
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A3_T2;
+* @section: 15.5.4.11;
+* @assertion: replace with regexp /(uid=)(\d+)/ returns;
+* @description: replaceValue is "$11" + '15';
+*/
+
+var __str = 'uid=31';
+var __re = /(uid=)(\d+)/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, "$11" + '15')!=='uid=115') {
+ $ERROR('#1: var __str = \'uid=31\'; var __re = /(uid=)(\d+)/; __str.replace(__re, "$11" + \'15\')===\'uid=115\'. Actual: '+__str.replace(__re, "$11" + '15'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T3.js
new file mode 100644
index 000000000..8d61d571d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A3_T3;
+* @section: 15.5.4.11;
+* @assertion: replace with regexp /(uid=)(\d+)/ returns;
+* @description: replaceValue is "$11" + 'A15';
+*/
+
+var __str = 'uid=31';
+var __re = /(uid=)(\d+)/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__re, "$11" + 'A15')!=='uid=1A15' ) {
+ $ERROR('#1: var __str = \'uid=31\'; var __re = /(uid=)(\d+)/; __str.replace(__re, "$11" + \'A15\')===\'uid=1A15\' . Actual: '+__str.replace(__re, "$11" + 'A15'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T1.js
new file mode 100644
index 000000000..e8f5c85e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A4_T1;
+* @section: 15.5.4.11;
+* @assertion: replace with regexp /([a-z]+)([0-9]+)/ and replace function returns ;
+* @description: searchValue is /([a-z]+)([0-9]+)/;
+*/
+
+var __str = "abc12 def34";
+var __pattern = /([a-z]+)([0-9]+)/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__pattern, __replFN)!=='12abc def34') {
+ $ERROR('#1: var __str = "abc12 def34"; var __pattern = /([a-z]+)([0-9]+)/; function __replFN() {return arguments[2] + arguments[1];}; __str.replace(__pattern, __replFN)===\'12abc def34\'. Actual: '+__str.replace(__pattern, __replFN));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __replFN() {
+ return arguments[2] + arguments[1];
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T2.js
new file mode 100644
index 000000000..25ccb596a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A4_T2;
+* @section: 15.5.4.11;
+* @assertion: replace with regexp /([a-z]+)([0-9]+)/ and replace function returns ;
+* @description: searchValue is /([a-z]+)([0-9]+)/g;
+*/
+
+var __str = "abc12 def34";
+var __pattern = /([a-z]+)([0-9]+)/g;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__pattern, __replFN)!=='12abc 34def') {
+ $ERROR('#1: var __str = "abc12 def34"; var __pattern = /([a-z]+)([0-9]+)/g; function __replFN() {return arguments[2] + arguments[1];}; __str.replace(__pattern, __replFN)===\'12abc 34def\'. Actual: '+__str.replace(__pattern, __replFN));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __replFN() {
+ return arguments[2] + arguments[1];
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T3.js
new file mode 100644
index 000000000..e73d38246
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A4_T3;
+* @section: 15.5.4.11;
+* @assertion: replace with regexp /([a-z]+)([0-9]+)/ and replace function returns ;
+* @description: searchValue is /([a-z]+)([0-9]+)/i;
+*/
+
+var __str = "aBc12 def34";
+var __pattern = /([a-z]+)([0-9]+)/i;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__pattern, __replFN)!=='12aBc def34') {
+ $ERROR('#1: var __str = "aBc12 def34"; var __pattern = /([a-z]+)([0-9]+)/i; function __replFN() {return arguments[2] + arguments[1];}; __str.replace(__pattern, __replFN)===\'12aBc def34\'. Actual: '+__str.replace(__pattern, __replFN));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __replFN() {
+ return arguments[2] + arguments[1];
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T4.js
new file mode 100644
index 000000000..1f30e2bfe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A4_T4.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A4_T4;
+* @section: 15.5.4.11;
+* @assertion: replace with regexp /([a-z]+)([0-9]+)/ and replace function returns ;
+* @description: searchValue is /([a-z]+)([0-9]+)/ig;
+*/
+
+var __str = "aBc12 dEf34";
+var __pattern = /([a-z]+)([0-9]+)/ig;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__pattern, __replFN)!=='12aBc 34dEf') {
+ $ERROR('#1: var __str = "aBc12 dEf34"; var __pattern = /([a-z]+)([0-9]+)/ig; function __replFN() {return arguments[2] + arguments[1];}; __str.replace(__pattern, __replFN)===\'12aBc 34dEf\'. Actual: '+__str.replace(__pattern, __replFN));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __replFN() {
+ return arguments[2] + arguments[1];
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A5_T1.js
new file mode 100644
index 000000000..1184863cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A5_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A5_T1;
+* @section: 15.5.4.11;
+* @assertion: Use replace with regexp as searchValue and use $ in replaceValue;
+* @description: searchValue is regexp /^(a+)\1*,\1+$/ and replaceValue is "$1";
+*/
+
+var __str = "aaaaaaaaaa,aaaaaaaaaaaaaaa";
+var __pattern = /^(a+)\1*,\1+$/;
+var __repl = "$1";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.replace(__pattern, __repl)!=='aaaaa') {
+ $ERROR('#1: var __str = "aaaaaaaaaa,aaaaaaaaaaaaaaa"; var __pattern = /^(a+)\1*,\1+$/; var __repl = "$1"; __str.replace(__pattern, __repl)===\'aaaaa\'. Actual: '+__str.replace(__pattern, __repl));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A6.js
new file mode 100644
index 000000000..61270a45a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A6.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A6;
+* @section: 15.5.4.11, 13.2;
+* @assertion: String.prototype.replace has not prototype property;
+* @description: Checking String.prototype.replace.prototype;
+*
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.replace.prototype !== undefined) {
+ $ERROR('#1: String.prototype.replace.prototype === undefined. Actual: '+String.prototype.replace.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A7.js
new file mode 100644
index 000000000..d8fc135e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A7.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.
+
+/**
+* @name: S15.5.4.11_A7;
+* @section: 15.5.4.11, 13.2;
+* @assertion: String.prototype.replace can't be used as constructor;
+* @description: Checking if creating the String.prototype.replace object fails;
+*/
+
+var __FACTORY = String.prototype.replace;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.replace; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A8.js
new file mode 100644
index 000000000..5e633f017
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A8;
+* @section: 15.5.4.11;
+* @assertion: The String.prototype.replace.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.replace.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.replace.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.replace.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.replace.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.replace.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.replace.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+count=0;
+
+for (p in String.prototype.replace){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.replace){if (p==="length") count++;} count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A9.js
new file mode 100644
index 000000000..7398575d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.11_String.prototype.replace/S15.5.4.11_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_A9;
+* @section: 15.5.4.11;
+* @assertion: The String.prototype.replace.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.replace.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.replace.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.replace.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.replace.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.replace.length) {
+ $ERROR('#1: delete String.prototype.replace.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.replace.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.replace.length; String.prototype.replace.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.replace.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1.1_T1.js
new file mode 100644
index 000000000..57e8374d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1.1_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1.1_T1;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) without arguments behaves like with argument "undefined";
+* @description: Call search() is the same search(undefined);
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x = "".search();
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A10.js
new file mode 100644
index 000000000..917dca86b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A10;
+* @section: 15.5.4.12;
+* @assertion: The String.prototype.search.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.search.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.search.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.search.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.search.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.search.length;
+
+String.prototype.search.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.search.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.search.length; String.prototype.search.length = function(){return "shifted";}; String.prototype.search.length === __obj. Actual: '+String.prototype.search.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A11.js
new file mode 100644
index 000000000..4b55a900a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A11;
+* @section: 15.5.4.12;
+* @assertion: The length property of the search method is 1;
+* @description: Checking String.prototype.search.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.search.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.search.hasOwnProperty("length") return true. Actual: '+String.prototype.search.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.search.length !== 1) {
+ $ERROR('#2: String.prototype.search.length === 1. Actual: '+String.prototype.search.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T1.js
new file mode 100644
index 000000000..88c7ca3d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T1;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.search = String.prototype.search;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.search(true) !== 0) {
+ $ERROR('#1: __instance = new Object(true); __instance.search = String.prototype.search; __instance.search(true) === 0. Actual: '+__instance.search(true) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T10.js
new file mode 100644
index 000000000..40d29a11f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T10.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T10;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is object, and instance is string.
+* Object with overrided toString function;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}};
+var __str = "ssABB\u0041BABAB";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (search(__obj) !==2) {
+ $ERROR('#1: var __obj = {toString:function(){return "\u0041B";}}; var __str = "ssABB\u0041BABAB"; search(__obj) ===2. Actual: '+search(__obj) );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T11.js
new file mode 100644
index 000000000..fedf124ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T11.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T11;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is object, and instance is string.
+* Object with overrided toString function, that throw exception;
+*/
+
+var __obj = {toString:function(){throw "intostr";}}
+var __str = {str__:"ABB\u0041BABAB"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ with(str__){
+ try {
+ var x = search(__obj);
+ $FAIL('#1: var x = search(__obj) lead to throwing exception');
+ } catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T12.js
new file mode 100644
index 000000000..5c94d89f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T12.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T12;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is object, and instance is string.
+* Object with overrided toString and valueOf functions, valueOf throw exception;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){throw "intostr";}}
+var __str = new String("ABB\u0041BABAB");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ try {
+ var x = search(__obj);
+ $FAIL('#1: var x = search(__obj) lead to throwing exception');
+ } catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T13.js
new file mode 100644
index 000000000..aa96b1d16
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T13.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T13;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is object, and instance is string.
+* Object with overrided toString and valueOf functions;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("ABB\u0041B\u0031ABAB\u0031BBAA".search(__obj) !==5) {
+ $ERROR('#1: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; "ABB\\u0041B\\u0031ABAB\\u0031BBAA".search(__obj) ===5. Actual: '+("ABB\u0041B\u0031ABAB\u0031BBAA".search(__obj)) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T14.js
new file mode 100644
index 000000000..19d187f3c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T14.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T14;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Instance is string, argument is regular expression;
+*/
+
+var __reg = new RegExp("77");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("ABB\u0041BABAB\u0037\u0037BBAA".search(__reg) !== 9) {
+ $ERROR('#1: var __reg = new RegExp("77"); "ABB\\u0041BABAB\\u0037\\u0037BBAA".search(__reg) === 9. Actual: '+("ABB\u0041BABAB\u0037\u0037BBAA".search(__reg)) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T2.js
new file mode 100644
index 000000000..ff9eeb38d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T2;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is function call, and instance is Boolean;
+*/
+
+var __instance = new Boolean;
+
+__instance.search = String.prototype.search;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.search(function(){return false;}()) !== 0) {
+ $ERROR('#1: __instance = new Boolean; __instance.search = String.prototype.search; __instance.search(function(){return false;}()) === 0. Actual: '+__instance.search(function(){return false;}()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T3.js
new file mode 100644
index 000000000..56cb76648
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T3;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Checking by using eval;
+*/
+
+var search = String.prototype.search;
+
+if (typeof toString === "undefined"){
+ var toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (search(eval("\"bj\"")) !== 2) {
+ $ERROR('#1: search = String.prototype.search; search(eval("\\"bj\\"")) === 2. Actual: '+search(eval("\"bj\"")) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4.js
new file mode 100644
index 000000000..8e54bcb94
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T4;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Call search (regexp) without arguments;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString() evaluates to "" search() evaluates to search("")
+if ("".search() !== 0) {
+ $ERROR('#1: "".search() === 0. Actual: '+("".search()) );
+}
+
+if ("--undefined--".search() != 0) {
+ $ERROR('#1: "--undefined--".search() === 0. Actual: '+("--undefined--".search()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T5.js
new file mode 100644
index 000000000..27dd7d294
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T5;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is null, and instance is function call, that return string;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(null) evaluates to "null" search(null) evaluates to search("null")
+if (function(){return "gnulluna"}().search(null) !== 1) {
+ $ERROR('#1: function(){return "gnulluna"}().search(null) === 1. Actual: '+function(){return "gnulluna"}().search(null) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T6.js
new file mode 100644
index 000000000..6e75174dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T6;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is x, and instance is new String, x is undefined variable;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" search(undefined) evaluates to search("undefined")
+if (new String("undefined").search(x) !== 0) {
+ $ERROR('#1: var x; new String("undefined").search(x) === 0. Actual: '+new String("undefined").search(x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T7.js
new file mode 100644
index 000000000..84aef0e1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T7;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is undefined, and instance is new String;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" search(undefined) evaluates to search("undefined")
+if (String("undefined").search(undefined) !== 0) {
+ $ERROR('#1: String("undefined").search(undefined) === 0. Actual: '+String("undefined").search(undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T8.js
new file mode 100644
index 000000000..1bbc091ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T8;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is void 0, and instance is String object with overrided toString function;
+*/
+
+var __obj = {toString:function(){}};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(void 0) evaluates to "undefined" search(void 0) evaluates to search("undefined")
+if (String(__obj).search(void 0) !== 0) {
+ $ERROR('#1: __obj = {toString:function(){}}; String(__obj).search(void 0) === 0. Actual: '+String(__obj).search(void 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T9.js
new file mode 100644
index 000000000..db199230b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A1_T9;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp);
+* @description: Argument is function call, and instance is String object with overrided toString and valueOf functions;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" search(undefined) evaluates to search("undefined")
+if (new String(__obj).search(function(){}()) !== 0) {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; new String(__obj).search(function(){}()) === 0. Actual: '+new String(__obj).search(function(){}()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T1.js
new file mode 100644
index 000000000..58c06f3b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_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.
+
+/**
+* @name: S15.5.4.12_A2_T1;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) returns ...;
+* @description: Simple search substring inside string;
+*/
+
+var aString = new String("test string");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (aString.search("string")!== 5) {
+ $ERROR('#1: var aString = new String("test string"); aString.search("string")=== 5. Actual: '+aString.search("string"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T2.js
new file mode 100644
index 000000000..0af5e37cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_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.
+
+/**
+* @name: S15.5.4.12_A2_T2;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) returns ...;
+* @description: Checking case sensitive of search, argument is string;
+*/
+
+var aString = new String("test string");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (aString.search("String")!== -1) {
+ $ERROR('#1: var aString = new String("test string"); aString.search("String")=== -1. Actual: '+aString.search("String"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T3.js
new file mode 100644
index 000000000..771b4d335
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_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.
+
+/**
+* @name: S15.5.4.12_A2_T3;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) returns ...;
+* @description: Checking disabling of case sensitive of search, argument is RegExp;
+*/
+
+var aString = new String("test string");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (aString.search(/String/i)!== 5) {
+ $ERROR('#1: var aString = new String("test string"); aString.search(/String/i)=== 5. Actual: '+aString.search(/String/i));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T4.js
new file mode 100644
index 000000000..2d93e3a99
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A2_T4;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) returns ...;
+* @description: Checking case sensitive of search, argument is RegExp with uppercase symbols;
+*/
+
+var bString = new String("one two three four five");
+var regExp = /Four/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (bString.search(regExp)!== -1) {
+ $ERROR('#1: var bString = new String("one two three four five"); var regExp = /Four/; bString.search(regExp)=== -1. Actual: '+bString.search(regExp));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T5.js
new file mode 100644
index 000000000..bcb90fce9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A2_T5;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) returns ...;
+* @description: Checking case sensitive of search, argument is RegExp without uppercase symbols;
+*/
+
+var bString = new String("one two three four five");
+var regExp = /four/;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (bString.search(regExp)!== 14) {
+ $ERROR('#1: var bString = new String("one two three four five"); var regExp = /four/; bString.search(regExp)=== 14. Actual: '+bString.search(regExp));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T6.js
new file mode 100644
index 000000000..2aba1ce03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A2_T6;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) returns ...;
+* @description: Searching the non-existent "notexist" substring;
+*/
+
+var aString = new String("test string");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (aString.search("notexist")!== -1) {
+ $ERROR('#1: var aString = new String("test string"); aString.search("notexist")=== -1. Actual: '+aString.search("notexist"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T7.js
new file mode 100644
index 000000000..60630f874
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A2_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A2_T7;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) returns ...;
+* @description: Simple search sentence inside string;
+*/
+
+var aString = new String("test string probe");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (aString.search("string pro")!== 5) {
+ $ERROR('#1: var aString = new String("test string probe"); aString.search("string pro")=== 5. Actual: '+aString.search("string pro"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A3_T1.js
new file mode 100644
index 000000000..52ac1cc2f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A3_T1;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) ignores global properties of regexp;
+* @description: Checking results of search regexp with and without global properties;
+*/
+
+var aString = new String("power of the power of the power of the power of the power of the power of the great sword");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (aString.search(/the/)!== aString.search(/the/g)) {
+ $ERROR('#1: var aString = new String("power of the power of the power of the power of the power of the power of the great sword"); aString.search(/the/)=== aString.search(/the/g). Actual: '+aString.search(/the/));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A3_T2.js
new file mode 100644
index 000000000..3a1da2d4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A3_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A3_T2;
+* @section: 15.5.4.12;
+* @assertion: String.prototype.search (regexp) ignores global properties of regexp;
+* @description: Checking results of search regexp with and without global properties. Unicode symbols used;
+*/
+
+var aString = new String("power \u006F\u0066 the power of the power \u006F\u0066 the power of the power \u006F\u0066 the power of the great sword");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (aString.search(/of/)!== aString.search(/of/g)) {
+ $ERROR('#1: var aString = new String("power \\u006F\\u0066 the power of the power \\u006F\\u0066 the power of the power \\u006F\\u0066 the power of the great sword"); aString.search(/of/)=== aString.search(/of/g). Actual: '+aString.search(/of/));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A6.js
new file mode 100644
index 000000000..dff58815e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A6;
+* @section: 15.5.4.12, 13.2;
+* @assertion: String.prototype.search has not prototype property;
+* @description: Checking String.prototype.search.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.search.prototype !== undefined) {
+ $ERROR('#1: String.prototype.search.prototype === undefined. Actual: '+String.prototype.search.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A7.js
new file mode 100644
index 000000000..7519d946f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A7;
+* @section: 15.5.4.12, 13.2;
+* @assertion: String.prototype.search can't be used as constructor;
+* @description: Checking if creating the String.prototype.search object fails;
+*/
+
+var __FACTORY = String.prototype.search;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.search; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.1: __FACTORY = String.prototype.search; "__instance = new __FACTORY" throw a TypeError. Actual: ' + (e));
+ }
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A8.js
new file mode 100644
index 000000000..a2516696a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A8;
+* @section: 15.5.4.12;
+* @assertion: The String.prototype.search.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.search.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.search.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.search.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.search.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.search.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.search.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.search){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.search){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A9.js
new file mode 100644
index 000000000..30c3245af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.12_String.prototype.search/S15.5.4.12_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.12_A9;
+* @section: 15.5.4.12;
+* @assertion: The String.prototype.search.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.search.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.search.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.search.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.search.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.search.length) {
+ $ERROR('#1: delete String.prototype.search.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.search.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.search.length; String.prototype.search.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.search.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A10.js
new file mode 100644
index 000000000..72a17a3ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A10;
+* @section: 15.5.4.13;
+* @assertion: The String.prototype.slice.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.slice.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.slice.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.slice.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.slice.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.slice.length;
+
+String.prototype.slice.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.slice.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.slice.length; String.prototype.slice.length = function(){return "shifted";}; String.prototype.slice.length === __obj. Actual: '+String.prototype.slice.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A11.js
new file mode 100644
index 000000000..5253c22e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A11;
+* @section: 15.5.4.13;
+* @assertion: The length property of the slice method is 2;
+* @description: Checking String.prototype.slice.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.slice.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.slice.hasOwnProperty("length") return true. Actual: '+String.prototype.slice.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.slice.length !== 2) {
+ $ERROR('#2: String.prototype.slice.length === 2. Actual: '+String.prototype.slice.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T1.js
new file mode 100644
index 000000000..b84d3cb6f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T1;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are false and true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.slice = String.prototype.slice;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.slice(false, true) !== "t") {
+ $ERROR('#1: __instance = new Object(true); __instance.slice = String.prototype.slice; __instance.slice(false, true) === "t". Actual: '+__instance.slice(false, true) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T10.js
new file mode 100644
index 000000000..07e6ff530
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T10.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T10;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are object and function call, and instance is String, object have overrided valueOf function;
+*/
+
+var __obj = {valueOf:function(){return 2;}};
+
+var __str = "\u0035ABBBABAB";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (slice(__obj, function(){return slice(0,1);}()) !== "BBB") {
+ $ERROR('#1: var x; var __obj = {valueOf:function(){return 2;}}; var __str = "\u0035ABBBABAB"; slice(__obj, function(){return slice(0,1);}()) === "BBB". Actual: '+slice(__obj, function(){return slice(0,1);}()) );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T11.js
new file mode 100644
index 000000000..107417e2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T11.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T11;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are objects, and instance is string, objects have overrided valueOf function, that return exception;
+*/
+
+var __obj = {valueOf:function(){throw "instart";}};
+var __obj2 = {valueOf:function(){throw "inend";}};
+var __str = {str__:"ABB\u0041BABAB"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ with(str__){
+ try {
+ var x = slice(__obj,__obj2);
+ $FAIL('#1: "var x = slice(__obj,__obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="instart") {
+ $ERROR('#1.1: Exception === "instart". Actual: '+e);
+ }
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T12.js
new file mode 100644
index 000000000..24f8dd936
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T12.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T12;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are objects, and instance is string.
+* First object have overrided valueOf function and toString function, that return exception.
+* Second object have overrided valueOf function, that return exception;
+*/
+
+var __obj = {valueOf:function(){return {};}, toString:function(){throw "instart";}};
+var __obj2 = {valueOf:function(){throw "inend";}};
+var __str = new String("ABB\u0041BABAB");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ try {
+ var x = slice(__obj, __obj2);
+ $FAIL('#1: "var x = slice(__obj,__obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="instart") {
+ $ERROR('#1.1: Exception === "instart". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T13.js
new file mode 100644
index 000000000..ebee3d455
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T13.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T13;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are objects, and instance is string.
+* First object have overrided valueOf and toString functions.
+* Second object have overrided toString function, that return exception;
+*/
+
+var __obj = {valueOf:function(){return {};}, toString:function(){return 1;}};
+var __obj2 = {toString:function(){throw "inend";}};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = "ABB\u0041BABAB\u0031BBAA".slice(__obj, __obj2);
+ $FAIL('#1: "var x = slice(__obj,__obj2)" lead to throwing exception');
+} catch (e) {
+ if (e!=="inend") {
+ $ERROR('#1.1: Exception === "inend". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T14.js
new file mode 100644
index 000000000..2bdc40b19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T14.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T14;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Used one argument, that is function(){}(). Instance is string;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("report".slice(function(){}()) !== "report") {
+ $ERROR('#1: "report".slice(function(){}()) === "report". Actual: '+"report".slice(function(){}()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T15.js
new file mode 100644
index 000000000..03351633e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T15.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T15;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Call slice without arguments. Instance is Number with prototype.slice = String.prototype.slice;
+*/
+
+var __num = 11.001002;
+
+Number.prototype.slice = String.prototype.slice;
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__num.slice()!=="11.001002") {
+ $ERROR('#1: var __num = 11.001002; Number.prototype.slice = String.prototype.slice; __num.slice()==="11.001002". Actual: '+__num.slice());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T2.js
new file mode 100644
index 000000000..f4d6caeb8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T2;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are function call and x, and instance is Boolean. x is undefined variable;
+*/
+
+var __instance = new Boolean;
+
+__instance.slice = String.prototype.slice;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.slice(function(){return true;}(),x) !== "alse") {
+ $ERROR('#1: var x; __instance = new Boolean; __instance.slice = String.prototype.slice; __instance.slice(function(){return true;}(),x) === "alse". Actual: '+__instance.slice(function(){return true;}(),x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T3.js
new file mode 100644
index 000000000..90ec8481c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T3;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Checking by using eval;
+*/
+
+var slice = String.prototype.slice;
+
+if (typeof toString === "undefined"){
+ toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+var __toggle = 1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (slice(eval("\"1\""),{valueOf:function(){return "0x0007"}})!=="object") {
+ $ERROR('#1: slice = String.prototype.slice; slice(eval("\\"1\\""),{valueOf:function(){return "0x0007"}})==="object". Actual: '+slice(eval("\"1\""),{valueOf:function(){return "0x0007"}}));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T4.js
new file mode 100644
index 000000000..44ba58625
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T4;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are null and number, and instance is function call, that returned string;
+*/
+
+//since ToInteger(null) yelds 0
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (function(){return "gnulluna"}().slice(null, -3) !== "gnull") {
+ $ERROR('#1: function(){return "gnulluna"}().slice(null, -3) === "gnull". Actual: '+function(){return "gnulluna"}().slice(null, -3) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T5.js
new file mode 100644
index 000000000..23a2db408
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T5;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are null and call other slice(start, end), and instance is function object, that have overrided valueOf and toString functions;
+*/
+
+__func.valueOf=function(){return "gnulluna"};
+__func.toString=function(){return __func;};
+
+Function.prototype.slice=String.prototype.slice;
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func.slice(null, Function().slice(__func,5).length) !== "gnull") {
+ $ERROR('#1: __func.slice(null, Function().slice(__func,5).length) === "gnull". Actual: '+__func.slice(null, Function().slice(__func,5).length) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T6.js
new file mode 100644
index 000000000..d2bb25886
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T6;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are x and number, and instance is new String, x is undefined variable;
+*/
+
+//since ToInteger(undefined yelds 0)
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (new String("undefined").slice(x,3) !== "und") {
+ $ERROR('#1: var x; new String("undefined").slice(x,3) === "und". Actual: '+new String("undefined").slice(x,3) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T7.js
new file mode 100644
index 000000000..313158932
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T7;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are symbol and undefined, and instance is String;
+*/
+
+//since ToInteger("e") yelds 0
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String(void 0).slice("e",undefined) !== "undefined") {
+ $ERROR('#1: String(void 0).slice("e",undefined) === "undefined". Actual: '+String(void 0).slice("e",undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T8.js
new file mode 100644
index 000000000..040090f31
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T8;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are negative number and void 0, and instance is String(object), object have overrided toString function;
+*/
+
+__obj = {toString:function(){}};
+
+//since void 0 yelds 0
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String(__obj).slice(-4,void 0) !== "ined") {
+ $ERROR('#1: __obj = {toString:function(){}}; String(__obj).slice(-4,void 0) === "ined". Actual: '+String(__obj).slice(-4,void 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T9.js
new file mode 100644
index 000000000..5d6011ec1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A1_T9;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end);
+* @description: Arguments are undefined and object, and instance is String(object), object have overrided valueOf and toString functions;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+//since ToInteger(undefined) yelds 0
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (new String(__obj).slice(/*(function(){})()*/undefined,__obj) !== "") {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; new String(__obj).slice(//*(function(){})()*//undefined,__obj) === "". Actual: '+new String(__obj).slice(/*(function(){})()*/undefined,__obj) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T1.js
new file mode 100644
index 000000000..71d823582
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_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.
+
+/**
+* @name: S15.5.4.13_A2_T1;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) returns a string value(not object);
+* @description: Checking type of slice();
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __string.slice() !== "string") {
+ $ERROR('#1: __string = new String("this is a string object"); typeof __string.slice() === "string". Actual: '+typeof __string.slice() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T2.js
new file mode 100644
index 000000000..a75078877
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_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.
+
+/**
+* @name: S15.5.4.13_A2_T2;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) returns a string value(not object);
+* @description: start is NaN, end is Infinity;
+*/
+
+var __string = new String('this is a string object');
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.slice(NaN, Infinity) !== "this is a string object") {
+ $ERROR('#1: __string = new String(\'this is a string object\'); __string.slice(NaN, Infinity) === "this is a string object". Actual: '+__string.slice(NaN, Infinity) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T3.js
new file mode 100644
index 000000000..dd58c257b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_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.
+
+/**
+* @name: S15.5.4.13_A2_T3;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) returns a string value(not object);
+* @description: Call slice from empty String object;
+*/
+
+var __string = new String("");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.slice(1,0) !== "") {
+ $ERROR('#1: __string = new String(""); __string.slice(1,0) === "". Actual: '+__string.slice(1,0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T4.js
new file mode 100644
index 000000000..7939f0fa5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A2_T4;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) returns a string value(not object);
+* @description: start is Infinity, end is NaN;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.slice(Infinity, NaN) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.slice(Infinity, NaN) === "". Actual: '+__string.slice(Infinity, NaN) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T5.js
new file mode 100644
index 000000000..da3016cd6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A2_T5;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) returns a string value(not object);
+* @description: start is Infinity, end is Infinity;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.slice(Infinity, Infinity) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.slice(Infinity, Infinity) === "". Actual: '+__string.slice(Infinity, Infinity) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T6.js
new file mode 100644
index 000000000..bcc6a41aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A2_T6;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) returns a string value(not object);
+* @description: start is negative float number, end is 0;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.slice(-0.01,0) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.slice(-0.01,0) === "". Actual: '+__string.slice(-0.01,0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T7.js
new file mode 100644
index 000000000..29364f704
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A2_T7;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) returns a string value(not object);
+* @description: start is tested_string.length, end is tested_string.length;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.slice(__string.length, __string.length) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.slice(__string.length, __string.length) === "". Actual: '+__string.slice(__string.length, __string.length) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T8.js
new file mode 100644
index 000000000..03a17a298
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A2_T8;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) returns a string value(not object);
+* @description: start is tested_string.length+1, end is 0;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.slice(__string.length+1, 0) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.slice(__string.length+1, 0) === "". Actual: '+__string.slice(__string.length+1, 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T9.js
new file mode 100644
index 000000000..36c5e99c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A2_T9.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A2_T9;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) returns a string value(not object);
+* @description: start is -Infinity, end is -Infinity;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.slice(-Infinity, -Infinity) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.slice(-Infinity, -Infinity) === "". Actual: '+__string.slice(-Infinity, -Infinity) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T1.js
new file mode 100644
index 000000000..403ed2552
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A3_T1;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) can be applied to object instances;
+* @description: Apply String.prototype.slice to Object instance;
+*/
+
+var __instance = new Object();
+
+__instance.slice = String.prototype.slice;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.slice(0,8) !== "[object ") {
+ $ERROR('#1: __instance = new Object(); __instance.slice = String.prototype.slice; __instance.slice(0,8) === "[object ". Actual: '+__instance.slice(0,8) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T2.js
new file mode 100644
index 000000000..4976e94b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A3_T2;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) can be applied to object instances;
+* @description: Apply String.prototype.slice to Object instance, use other value for start and end values;
+*/
+
+var __instance = new Object();
+
+__instance.slice = String.prototype.slice;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.slice(8,__instance.toString().length) !== "Object]") {
+ $ERROR('#1: __instance = new Object(); __instance.slice = String.prototype.slice; __instance.slice(8,__instance.toString().length) === "Object]". Actual: '+__instance.slice(8,__instance.toString().length) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T3.js
new file mode 100644
index 000000000..ba8b90a57
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A3_T3;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) can be applied to object instances;
+* @description: Apply String.prototype.slice to Object instance, and call instance.slice(...).slice(...);
+*/
+
+var __instance = function(){};
+
+__instance.slice = String.prototype.slice;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.slice(-Infinity,8).slice(1,Infinity) !== "unction") {
+ $ERROR('#1: __instance = function(){}; __instance.slice = String.prototype.slice; __instance.slice(-Infinity,8).slice(1,Infinity) === "unction". Actual: '+__instance.slice(-Infinity,8).slice(1,Infinity) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T4.js
new file mode 100644
index 000000000..073f735d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A3_T4.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A3_T4;
+* @section: 15.5.4.13;
+* @assertion: String.prototype.slice (start, end) can be applied to object instances;
+* @description: Checknig if applying String.prototype.slice to Function object instance passes;
+*/
+
+__FACTORY.prototype.toString = function() { return this.value+''; };
+
+var __instance = new __FACTORY(void 0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.slice(0,100) !== "undefined") {
+ $ERROR('#1: __instance.slice(0,100) === "undefined". Actual: '+__instance.slice(0,100) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __FACTORY( value ) {
+ this.value = value,
+ this.slice= String.prototype.slice;
+ //this.substring = String.prototype.substring;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A6.js
new file mode 100644
index 000000000..5c7df2ffc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A6;
+* @section: 15.5.4.13, 13.2;
+* @assertion: String.prototype.slice has not prototype property;
+* @description: Checking String.prototype.slice.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.slice.prototype !== undefined) {
+ $ERROR('#1: String.prototype.slice.prototype === undefined. Actual: '+String.prototype.slice.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A7.js
new file mode 100644
index 000000000..9d5b0d167
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A7;
+* @section: 15.5.4.13, 13.2;
+* @assertion: String.prototype.slice can't be used as constructor;
+* @description: Checking if creating the String.prototype.slice object fails;
+*/
+
+var __FACTORY = String.prototype.slice;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.slice; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A8.js
new file mode 100644
index 000000000..34a710b33
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A8;
+* @section: 15.5.4.13;
+* @assertion: The String.prototype.slice.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.slice.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.slice.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.slice.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.slice.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.slice.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.slice.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.slice){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.slice){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A9.js
new file mode 100644
index 000000000..717cf9b66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.13_String.prototype.slice/S15.5.4.13_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.13_A9;
+* @section: 15.5.4.13;
+* @assertion: The String.prototype.slice.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.slice.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.slice.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.slice.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.slice.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.slice.length) {
+ $ERROR('#1: delete String.prototype.slice.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.slice.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.slice.length; String.prototype.slice.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.slice.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A10.js
new file mode 100644
index 000000000..836bbb633
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A10;
+* @section: 15.5.4.14;
+* @assertion: The String.prototype.split.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.split.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.split.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.split.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.split.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.split.length;
+
+String.prototype.split.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.split.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.split.length; String.prototype.split.length = function(){return "shifted";}; String.prototype.split.length === __obj. Actual: '+String.prototype.split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A11.js
new file mode 100644
index 000000000..0e229893d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A11;
+* @section: 15.5.4.14;
+* @assertion: The length property of the split method is 2;
+* @description: Checking String.prototype.split.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.split.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.split.hasOwnProperty("length") return true. Actual: '+String.prototype.split.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.split.length !== 2) {
+ $ERROR('#2: String.prototype.split.length === 2. Actual: '+String.prototype.split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T1.js
new file mode 100644
index 000000000..03d4858ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T1;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Arguments are false and true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split(true, false);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: __instance = new Object(true); __instance.split = String.prototype.split; __split = __instance.split(true, false); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: __instance = new Object(true); __instance.split = String.prototype.split; __split = __instance.split(true, false); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 0) {
+ $ERROR('#3: __instance = new Object(true); __instance.split = String.prototype.split; __split = __instance.split(true, false); __split.length === 0. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T10.js
new file mode 100644
index 000000000..9931eb47b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T10.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T10;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Arguments are objects, and instance is string.
+* First object have overrided toString function.
+* Second object have overrided valueOf function;
+*/
+
+var __obj = {toString:function(){return "\u0042B";}}
+var __obj2 = {valueOf:function(){return true;}}
+var __str = "ABB\u0041BABAB";
+
+with(__str){
+ __split = split(__obj, __obj2);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: var __obj = {toString:function(){return "u0042B";}}; var __obj2 = {valueOf:function(){return true;}}; var __str = "ABBu0041BABAB"; with(__str){__split = split(__obj, __obj2);}; typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: var __obj = {toString:function(){return "u0042B";}}; var __obj2 = {valueOf:function(){return true;}}; var __str = "ABBu0041BABAB"; with(__str){__split = split(__obj, __obj2);}; __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 1) {
+ $ERROR('#3: var __obj = {toString:function(){return "u0042B";}}; var __obj2 = {valueOf:function(){return true;}}; var __str = "ABBu0041BABAB"; with(__str){__split = split(__obj, __obj2);}; __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[0] !== "A") {
+ $ERROR('#4: var __obj = {toString:function(){return "u0042B";}}; var __obj2 = {valueOf:function(){return true;}}; var __str = "ABBu0041BABAB"; with(__str){__split = split(__obj, __obj2);}; __split[0] === "A". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T11.js
new file mode 100644
index 000000000..017e09945
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T11.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T11;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Arguments are objects, and instance is string.
+* First object have overrided toString function.
+* Second object have overrided valueOf function, that throw exception;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){throw "intointeger";}}
+var __str = {str__:"ABB\u0041BABAB"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ with(str__){
+ try {
+ var x = split(__obj, __obj2);
+ $FAIL('#1: "var x = split(__obj, __obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="intointeger") {
+ $ERROR('#1.1: Exception === "intointeger". Actual: '+e);
+ }
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T12.js
new file mode 100644
index 000000000..dab04cc63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T12.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T12;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Arguments are objects, and instance is string.
+* First object have overrided toString function.
+* Second object have overrided valueOf function and toString function, that throw exception;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){return {};},toString:function(){throw "intointeger";}}
+var __str = new String("ABB\u0041BABAB");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ try {
+ var x = split(__obj, __obj2);
+ $FAIL('#1: "var x = split(__obj, __obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="intointeger") {
+ $ERROR('#1.1: Exception === "intointeger". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T13.js
new file mode 100644
index 000000000..b0a3db9ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T13.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T13;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Arguments are objects, and instance is string.
+* First object have overrided toString function.
+* Second object have overrided valueOf and toString functions;
+*/
+
+var __obj = {toString:function(){return "\u0042\u0042";}}
+var __obj2 = {valueOf:function(){return {};},toString:function(){return "2";}}
+
+var __split = "ABB\u0041BABAB\u0042cc^^\u0042Bvv%%B\u0042xxx".split(__obj, __obj2);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: var __obj = {toString:function(){return "u0042u0042";}}; var __obj2 = {valueOf:function(){return {};},toString:function(){return "2";}}; __split = "ABBu0041BABABu0042cc^^u0042Bvv%%Bu0042xxx".split(__obj, __obj2); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: var __obj = {toString:function(){return "u0042u0042";}}; var __obj2 = {valueOf:function(){return {};},toString:function(){return "2";}}; __split = "ABBu0041BABABu0042cc^^u0042Bvv%%Bu0042xxx".split(__obj, __obj2); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 2) {
+ $ERROR('#3: var __obj = {toString:function(){return "u0042u0042";}}; var __obj2 = {valueOf:function(){return {};},toString:function(){return "2";}}; __split = "ABBu0041BABABu0042cc^^u0042Bvv%%Bu0042xxx".split(__obj, __obj2); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[0] !== "A") {
+ $ERROR('#4: var __obj = {toString:function(){return "u0042u0042";}}; var __obj2 = {valueOf:function(){return {};},toString:function(){return "2";}}; __split = "ABBu0041BABABu0042cc^^u0042Bvv%%Bu0042xxx".split(__obj, __obj2); __split[0] === "A". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[1] !== "ABABA") {
+ $ERROR('#5: var __obj = {toString:function(){return "u0042u0042";}}; var __obj2 = {valueOf:function(){return {};},toString:function(){return "2";}}; __split = "ABBu0041BABABu0042cc^^u0042Bvv%%Bu0042xxx".split(__obj, __obj2); __split[1] === "ABABA". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T14.js
new file mode 100644
index 000000000..561a1f222
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T14.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T14;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Arguments are objects, and instance is string.
+* First object have overrided toString function, that throw exception.
+* Second object have overrided valueOf function, that throw exception;
+*/
+
+var __obj = {toString:function(){throw "intostr";}};
+var __obj2 = {valueOf:function(){throw "intoint";}};
+var __instance = new Number(10001.10001);
+Number.prototype.split=String.prototype.split;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__instance){
+ try {
+ var x = split(__obj, __obj2);
+ $FAIL('#1: "var x = split(__obj, __obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="intoint") {
+ $ERROR('#1.1: Exception === "intoint". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T15.js
new file mode 100644
index 000000000..dd4be3267
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T15.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T15;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Arguments are objects, and instance is string.
+* First object have overrided toString function and valueOf function, that throw exception.
+* Second object have overrided valueOf function, that throw exception;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){throw "intostr";}};
+
+var __obj2 = {valueOf:function(){throw "intointeger";}};
+
+__FACTORY.prototype.split = String.prototype.split;
+
+var __instance = new __FACTORY(void 0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __instance.split(__obj, __obj2);
+ $FAIL('#1: "var x = __instance.split(__obj, __obj2)" lead to throwing exception');
+} catch (e) {
+ if (e!=="intointeger") {
+ $ERROR('#1.1: Exception === "intointeger". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __FACTORY( value ) {
+ this.value = value;
+ this.toString = function() { return new Number; };
+ this.valueOf=function(){return this.value+""};
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T16.js
new file mode 100644
index 000000000..75e386747
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T16.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T16;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Argument is object, and instance is Number.
+* Object have overrided toString function, that return regexp;
+*/
+
+var __obj = {toString:function(){return /\u0037\u0037/g;}};
+
+Number.prototype.split=String.prototype.split;
+
+try {
+ var __split = 6776767677.006771122677555.split(__obj);
+ $FAIL('#1: "__split = 6776767677.006771122677555.split(__obj)" lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Exception is instance of TypeError. Actual: '+e);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T17.js
new file mode 100644
index 000000000..34c81b8b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T17.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T17;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Argument is regexp, and instance is Number;
+*/
+
+var __re = /\u0037\u0037/g;
+
+Number.prototype.split=String.prototype.split;
+
+__split = 6776767677.006771122677555.split(__re);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: var __re = /u0037u0037/g; Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: var __re = /u0037u0037/g; Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 4) {
+ $ERROR('#3: var __re = /u0037u0037/g; Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re); __split.length === 4. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[0] !== "6") {
+ $ERROR('#4: var __re = /u0037u0037/g; Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re); __split[0] === "6". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[1] !== "67676") {
+ $ERROR('#5: var __re = /u0037u0037/g; Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re); __split[1] === "67676". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__split[2] !== ".006") {
+ $ERROR('#6: var __re = /u0037u0037/g; Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re); __split[2] === ".006". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if (__split[3] !== "1") {
+ $ERROR('#7: var __re = /u0037u0037/g; Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re); __split[3] === "1". Actual: '+__split[3] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T18.js
new file mode 100644
index 000000000..1a64e9b0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T18.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T18;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Checking by using eval;
+*/
+
+var __re = new RegExp("00");
+
+Number.prototype.split=String.prototype.split;
+
+var __split = 6776767677.006771122677555.split(__re, eval("\"1\""));
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: var __re = new RegExp("00"); Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re, eval(""1"")); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: var __re = new RegExp("00"); Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re, eval(""1"")); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 1) {
+ $ERROR('#3: var __re = new RegExp("00"); Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re, eval(""1"")); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "6776767677.") {
+ $ERROR('#3: var __re = new RegExp("00"); Number.prototype.split=String.prototype.split; __split = 6776767677.006771122677555.split(__re, eval(""1"")); __split[0] === "6776767677.". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T2.js
new file mode 100644
index 000000000..9a2a4cd08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T2;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Arguments are boolean expression, function call and null, and instance is Boolean;
+*/
+
+
+var __instance = new Boolean;
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split("A"!=="\u0041", function(){return 0;}(),null);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: __instance = new Boolean; __instance.split = String.prototype.split; __split = __instance.split("A"!=="u0041", function(){return 0;}(),null); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: __instance = new Boolean; __instance.split = String.prototype.split; __split = __instance.split("A"!=="u0041", function(){return 0;}(),null); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 0) {
+ $ERROR('#3: __instance = new Boolean; __instance.split = String.prototype.split; __split = __instance.split("A"!=="u0041", function(){return 0;}(),null); __split.length === 0. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T3.js
new file mode 100644
index 000000000..d034cea21
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T3.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T3;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Checking by using eval;
+*/
+
+var split = String.prototype.split;
+
+var __obj__lim = {valueOf:function(){return 5;}};
+
+if (typeof toString === "undefined"){
+ toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+
+var __split = split(eval("\"[\""),__obj__lim);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 2) {
+ $ERROR('#3: __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[1].substring(0,6) !== "object") {
+ $ERROR('#4: __split[1].substring(0,6) === "object". Actual: '+__split[1].substring(0,6) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T4.js
new file mode 100644
index 000000000..c7fcc3cb0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T4.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T4;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Call split without arguments, and instance is empty string;
+*/
+
+//since ToString() evaluates to "" split() evaluates to split("",0)
+var __split = "".split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: __split = "".split(); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: __split = "".split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 1) {
+ $ERROR('#3: __split = "".split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[0] !== "") {
+ $ERROR('#4: __split = "".split(); __split[0] === "". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T5.js
new file mode 100644
index 000000000..6df6fa77f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T5.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T5;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Argument is null, and instance is function call that returned string;
+*/
+
+//since ToString(null) evaluates to "null" split(null) evaluates to split("null",0)
+var __split = function(){return "gnulluna"}().split(null);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: __split = function(){return "gnulluna"}().split(null); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: __split = function(){return "gnulluna"}().split(null); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 2) {
+ $ERROR('#3: __split = function(){return "gnulluna"}().split(null); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[0] !== "g") {
+ $ERROR('#4: __split = function(){return "gnulluna"}().split(null); __split[0] === "g". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[1] !== "una") {
+ $ERROR('#5: __split = function(){return "gnulluna"}().split(null); __split[1] === "una". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T6.js
new file mode 100644
index 000000000..10f39ff7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T6.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T6;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Argument is x, and instance is new String. x is undefined variable;
+*/
+
+//since ToString(undefined) evaluates to "" split(undefined) evaluates to split("",0)
+var __split = new String("1undefined").split(x);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: var x; __split = new String("1undefined").split(x); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: var x; __split = new String("1undefined").split(x); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 2) {
+ $ERROR('#3: var x; __split = new String("1undefined").split(x); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[0] !== "1") {
+ $ERROR('#4: var x; __split = new String("1undefined").split(x); __split[0] === "1". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[1] !== "") {
+ $ERROR('#5: var x; __split = new String("1undefined").split(x); __split[1] === "". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T7.js
new file mode 100644
index 000000000..ca92e15fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T7.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T7;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Argument is undefined, and instance is String;
+*/
+
+//since ToString(undefined) evaluates to "undefined" split(undefined) evaluates to split("undefined",0)
+var __split = String("undefinedd").split(undefined);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: __split = String("undefinedd").split(undefined); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: __split = String("undefinedd").split(undefined); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 2) {
+ $ERROR('#3: __split = String("undefinedd").split(undefined); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[0] !== "") {
+ $ERROR('#4: __split = String("undefinedd").split(undefined); __split[0] === "". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[1] !== "d") {
+ $ERROR('#5: __split = String("undefinedd").split(undefined); __split[1] === "d". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T8.js
new file mode 100644
index 000000000..235dce215
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T8.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T8;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Argument is void 0, and instance is String(object), object have overrided toString function;
+*/
+
+var __obj = {toString:function(){}};
+
+//since ToString(void 0) evaluates to "undefined" split(void 0) evaluates to split("undefined")
+var __split = String(__obj).split(void 0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: __obj = {toString:function(){}}; __split = String(__obj).split(void 0); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: __obj = {toString:function(){}}; __split = String(__obj).split(void 0); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 2) {
+ $ERROR('#3: __obj = {toString:function(){}}; __split = String(__obj).split(void 0); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[0] !== "") {
+ $ERROR('#4: __obj = {toString:function(){}}; __split = String(__obj).split(void 0); __split[0] !== "". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[1] !== "") {
+ $ERROR('#5: __obj = {toString:function(){}}; __split = String(__obj).split(void 0); __split[1] === "". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T9.js
new file mode 100644
index 000000000..90f6d0b81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T9.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A1_T9;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split(separator, limit):
+* i) can be transferred to other kinds of objects for use as a method.
+* separator and limit can be any kinds of object since:
+* ii) if separator is not RegExp ToString(separator) performs and
+* iii) ToInteger(limit) performs;
+* @description: Argument is function(){}(), and instance is String(object), object have overrided toString and valueOf functions;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+//since ToString(undefined) evaluates to "undefined" split(undefined) evaluates to split("undefined")
+var __split = new String(__obj).split(function(){}());
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __split !== "object") {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; __split = new String(__obj).split(function(){}()); typeof __split === "object". Actual: '+typeof __split );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.constructor !== Array) {
+ $ERROR('#2: __obj = {valueOf:function(){}, toString:void 0}; __split = new String(__obj).split(function(){}()); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split.length !== 2) {
+ $ERROR('#3: __obj = {valueOf:function(){}, toString:void 0}; __split = new String(__obj).split(function(){}()); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[0] !== "") {
+ $ERROR('#4: __obj = {valueOf:function(){}, toString:void 0}; __split = new String(__obj).split(function(){}()); __split[0] !== "". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[1] !== "") {
+ $ERROR('#5: __obj = {valueOf:function(){}, toString:void 0}; __split = new String(__obj).split(function(){}()); __split[1] === "". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T1.js
new file mode 100644
index 000000000..43bb01fc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T1.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T1;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(","), instance is String("one,two,three,four,five");
+*/
+
+var __string = new String("one,two,three,four,five");
+
+var __split = __string.split(",");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one,two,three,four,five"); __split = __string.split(","); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 5) {
+ $ERROR('#2: var __string = new String("one,two,three,four,five"); __split = __string.split(","); __split.length === 5. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "one") {
+ $ERROR('#3: var __string = new String("one,two,three,four,five"); __split = __string.split(","); __split[0] === "one". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "two") {
+ $ERROR('#4: var __string = new String("one,two,three,four,five"); __split = __string.split(","); __split[1] === "two". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[2] !== "three") {
+ $ERROR('#5: var __string = new String("one,two,three,four,five"); __split = __string.split(","); __split[2] === "three". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__split[3] !== "four") {
+ $ERROR('#6: var __string = new String("one,two,three,four,five"); __split = __string.split(","); __split[3] === "four". Actual: '+__split[3] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if (__split[4] !== "five") {
+ $ERROR('#7: var __string = new String("one,two,three,four,five"); __split = __string.split(","); __split[4] === "five". Actual: '+__split[4] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T10.js
new file mode 100644
index 000000000..c9e474c76
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T10.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T10;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(123), instance is "this123is123a123string123object";
+*/
+
+var __string = "this123is123a123string123object";
+var __expected = ["this", "is", "a", "string", "object"];
+
+var __split = __string.split(123);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = "this123is123a123string123object"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(123); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __string = "this123is123a123string123object"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(123); __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for ( var i = 0; i < __expected.length; i++ ) {
+ if (__expected[i]!==__split[i]) {
+ $ERROR('#3.'+i+': var __string = "this123is123a123string123object"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(123); __expected['+i+']===__split['+i+']. Actual: '+__expected[i]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T11.js
new file mode 100644
index 000000000..2ab661dc7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T11.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T11;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(":"), instance is String("one-1,two-2,four-4");
+*/
+
+var __string = new String("one-1,two-2,four-4");
+
+var __split = __string.split(":");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one-1,two-2,four-4"); __split = __string.split(":"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String("one-1,two-2,four-4"); __split = __string.split(":"); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "one-1,two-2,four-4") {
+ $ERROR('#3: var __string = new String("one-1,two-2,four-4"); __split = __string.split(":"); __split[0] === "one-1,two-2,four-4". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T12.js
new file mode 100644
index 000000000..db061ae74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T12.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T12;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("r-42"), instance is String("one-1 two-2 four-4");
+*/
+
+var __string = new String("one-1 two-2 four-4");
+
+var __split = __string.split("r-42");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one-1 two-2 four-4"); __split = __string.split("r-42"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String("one-1 two-2 four-4"); __split = __string.split("r-42"); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "one-1 two-2 four-4") {
+ $ERROR('#3: var __string = new String("one-1 two-2 four-4"); __split = __string.split("r-42"); __split[0] === "one-1 two-2 four-4". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T13.js
new file mode 100644
index 000000000..495432f00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T13.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T13;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("-4"), instance is String("one-1 two-2 four-4");
+*/
+
+var __string = new String("one-1 two-2 four-4");
+
+var __split = __string.split("-4");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one-1 two-2 four-4"); __split = __string.split("-4"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 2) {
+ $ERROR('#2: var __string = new String("one-1 two-2 four-4"); __split = __string.split("-4"); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "one-1 two-2 four") {
+ $ERROR('#3: var __string = new String("one-1 two-2 four-4"); __split = __string.split("-4"); __split[0] === "one-1 two-2 four". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#3: var __string = new String("one-1 two-2 four-4"); __split = __string.split("-4"); __split[1] === "". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T14.js
new file mode 100644
index 000000000..ad96c465d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T14.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T14;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("on"), instance is String("one-1 two-2 four-4");
+*/
+
+var __string = new String("one-1 two-2 four-4");
+
+var __split = __string.split("on");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one-1 two-2 four-4"); __split = __string.split("on"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 2) {
+ $ERROR('#2: var __string = new String("one-1 two-2 four-4"); __split = __string.split("on"); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "") {
+ $ERROR('#3: var __string = new String("one-1 two-2 four-4"); __split = __string.split("on"); __split[0] === "". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "e-1 two-2 four-4") {
+ $ERROR('#4: var __string = new String("one-1 two-2 four-4"); __split = __string.split("on"); __split[1] === "e-1 two-2 four-4". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T15.js
new file mode 100644
index 000000000..739d92c43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T15.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T15;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(""), instance is empty String object;
+*/
+
+var __string = new String();
+
+var __split = __string.split("");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String(); __split = __string.split(""); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 0) {
+ $ERROR('#2: var __string = new String(); __split = __string.split(""); __split.length === 0. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== undefined) {
+ $ERROR('#3: var __string = new String(); __split = __string.split(""); __split[0] === undefined. Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T16.js
new file mode 100644
index 000000000..02ec94abe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T16.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T16;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(" "), instance is empty String object;
+*/
+
+var __string = new String();
+
+var __split = __string.split(" ");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String(); __split = __string.split(" "); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String(); __split = __string.split(" "); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "") {
+ $ERROR('#3: var __string = new String(); __split = __string.split(" "); __split[0] === "". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T17.js
new file mode 100644
index 000000000..41c22b77e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T17.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T17;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(""), instance is String(" ");
+*/
+
+var __string = new String(" ");
+
+var __split = __string.split("");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String(" "); __split = __string.split(""); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String(" "); __split = __string.split(""); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== " ") {
+ $ERROR('#3: var __string = new String(" "); __split = __string.split(""); __split[0] === " ". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T18.js
new file mode 100644
index 000000000..fba0a3c8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T18.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T18;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(" "), instance is String(" ");
+*/
+
+var __string = new String(" ");
+
+var __split = __string.split(" ");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String(" "); __split = __string.split(" "); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 2) {
+ $ERROR('#2: var __string = new String(" "); __split = __string.split(" "); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "") {
+ $ERROR('#3: var __string = new String(" "); __split = __string.split(" "); __split[0] === "". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String(" "); __split = __string.split(" "); __split[1] === "". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T19.js
new file mode 100644
index 000000000..b3494c220
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T19.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T19;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("x"), instance is empty string;
+*/
+
+var __string = "";
+
+var __split = __string.split("x");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = ""; __split = __string.split("x"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = ""; __split = __string.split("x"); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "") {
+ $ERROR('#3: var __string = ""; __split = __string.split("x"); __split[0] === "". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T2.js
new file mode 100644
index 000000000..623b03802
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T2.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T2;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(" "), instance is String("one two three four five");
+*/
+
+var __string = new String("one two three four five");
+
+var __split = __string.split(" ");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one two three four five"); __split = __string.split(" "); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 5) {
+ $ERROR('#2: var __string = new String("one two three four five"); __split = __string.split(" "); __split.length === 5. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "one") {
+ $ERROR('#3: var __string = new String("one two three four five"); __split = __string.split(" "); __split[0] === "one". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "two") {
+ $ERROR('#4: var __string = new String("one two three four five"); __split = __string.split(" "); __split[1] === "two". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[2] !== "three") {
+ $ERROR('#5: var __string = new String("one two three four five"); __split = __string.split(" "); __split[2] === "three". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__split[3] !== "four") {
+ $ERROR('#6: var __string = new String("one two three four five"); __split = __string.split(" "); __split[3] === "four". Actual: '+__split[3] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if (__split[4] !== "five") {
+ $ERROR('#7: var __string = new String("one two three four five"); __split = __string.split(" "); __split[4] === "five". Actual: '+__split[4] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T20.js
new file mode 100644
index 000000000..f42dd4a80
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T20.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T20;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(new RegExp);
+*/
+
+var __string = new String("one-1 two-2 three-3");
+
+var __split = __string.split(new RegExp);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one-1 two-2 three-3"); __split = __string.split(new RegExp); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __string.length) {
+ $ERROR('#2: var __string = new String("one-1 two-2 three-3"); __split = __string.split(new RegExp); __split.length === __string.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for ( var i = 0; i < __string.length; i++ ) {
+ if (__string.charAt(i)!==__split[i]) {
+ $ERROR('#3.'+i+': var __string = new String("one-1 two-2 three-3"); __split = __string.split(new RegExp); __string.charAt('+i+')===__split['+i+']. Actual: '+__string.charAt(i));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T21.js
new file mode 100644
index 000000000..bc87072c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T21.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T21;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("ll"), instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __split = __string.split("ll");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); __split = __string.split("ll"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 2) {
+ $ERROR('#2: var __string = new String("hello"); __split = __string.split("ll"); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "he") {
+ $ERROR('#3: var __string = new String("hello"); __split = __string.split("ll"); __split[0] === "he". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "o") {
+ $ERROR('#4: var __string = new String("hello"); __split = __string.split("ll"); __split[1] === "o". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T22.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T22.js
new file mode 100644
index 000000000..7aeb39a20
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T22.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T22;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("l"), instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __split = __string.split("l");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); __split = __string.split("l"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 3) {
+ $ERROR('#2: var __string = new String("hello"); __split = __string.split("l"); __split.length === 3. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "he") {
+ $ERROR('#3: var __string = new String("hello"); __split = __string.split("l"); __split[0] === "he". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String("hello"); __split = __string.split("l"); __split[1] === "". Actual: '+__split[1]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[2] !== "o") {
+ $ERROR('#5: var __string = new String("hello"); __split = __string.split("l"); __split[2] === "o". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T23.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T23.js
new file mode 100644
index 000000000..6421779cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T23.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T23;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("x"), instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __split = __string.split("x");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); __split = __string.split("x"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String("hello"); __split = __string.split("x"); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "hello") {
+ $ERROR('#3: var __string = new String("hello"); __split = __string.split("x"); __split[0] === "hello". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T24.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T24.js
new file mode 100644
index 000000000..92f4239c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T24.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T24;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("h"), instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __split = __string.split("h");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); __split = __string.split("h"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 2) {
+ $ERROR('#2: var __string = new String("hello"); __split = __string.split("h"); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "") {
+ $ERROR('#3: var __string = new String("hello"); __split = __string.split("h"); __split[0] === "". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "ello") {
+ $ERROR('#4: var __string = new String("hello"); __split = __string.split("h"); __split[1] === "ello". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T25.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T25.js
new file mode 100644
index 000000000..c26aa13af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T25.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T25;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("o"), instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __split = __string.split("o");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); __split = __string.split("o"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 2) {
+ $ERROR('#2: var __string = new String("hello"); __split = __string.split("o"); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "hell") {
+ $ERROR('#3: var __string = new String("hello"); __split = __string.split("o"); __split[0] === "hell". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String("hello"); __split = __string.split("o"); __split[1] === "". Actual: '+__split[1]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T26.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T26.js
new file mode 100644
index 000000000..4cfcf1b1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T26.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T26;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("hello"), instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __split = __string.split("hello");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); __split = __string.split("hello"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 2) {
+ $ERROR('#2: var __string = new String("hello"); __split = __string.split("hello"); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "") {
+ $ERROR('#3: var __string = new String("hello"); __split = __string.split("hello"); __split[0] === "". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String("hello"); __split = __string.split("hello"); __split[1] === "". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T27.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T27.js
new file mode 100644
index 000000000..ad39737a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T27.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T27;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(undefined), instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __split = __string.split(undefined);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); __split = __string.split(undefined); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String("hello"); __split = __string.split(undefined); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "hello") {
+ $ERROR('#3: var __string = new String("hello"); __split = __string.split(undefined); __split[0] === "hello". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T28.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T28.js
new file mode 100644
index 000000000..4c3bc009a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T28.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T28;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("hellothere"), instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __split = __string.split("hellothere");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); __split = __string.split("hellothere"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String("hello"); __split = __string.split("hellothere"); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "hello") {
+ $ERROR('#3: var __string = new String("hello"); __split = __string.split("hellothere"); __split[0] === "hello". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T29.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T29.js
new file mode 100644
index 000000000..ea3ac42ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T29.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T29;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(1), instance is Number;
+*/
+
+var __instance = new Number(100111122133144155);
+
+Number.prototype.split = String.prototype.split;
+
+var __split = __instance.split(1);
+
+var __expected = ["","00","","","","22","33","44","60"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T3.js
new file mode 100644
index 000000000..654e0d4dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T3.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T3;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(/ /,2), instance is String("one two three four five");
+*/
+
+var __string = new String("one two three four five");
+
+var __split = __string.split(/ /,2);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one two three four five"); __split = __string.split(/ /,2); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 2) {
+ $ERROR('#2: var __string = new String("one two three four five"); __split = __string.split(/ /,2); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "one") {
+ $ERROR('#3: var __string = new String("one two three four five"); __split = __string.split(/ /,2); __split[0] === "one". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "two") {
+ $ERROR('#4: var __string = new String("one two three four five"); __split = __string.split(/ /,2); __split[1] === "two". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T30.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T30.js
new file mode 100644
index 000000000..032f178d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T30.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T30;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(1,1), instance is Number;
+*/
+
+var __instance = new Number(100111122133144155);
+
+Number.prototype.split = String.prototype.split;
+
+var __split = __instance.split(1,1);
+
+var __expected = [""];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: __split[0] === '+__expected[0]+'. Actual: '+__split[index] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T31.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T31.js
new file mode 100644
index 000000000..827c78e11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T31.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T31;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(1,2), instance is Number;
+*/
+
+var __instance = new Number(100111122133144155);
+
+Number.prototype.split = String.prototype.split;
+
+var __split = __instance.split(1,2);
+
+var __expected = ["","00"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split[index] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T32.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T32.js
new file mode 100644
index 000000000..ace056b61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T32.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T32;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(1,0), instance is Number;
+*/
+
+var __instance = new Number(100111122133144155);
+
+Number.prototype.split = String.prototype.split;
+
+var __split = __instance.split(1,0);
+
+var __expected = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: __split[0] === '+__expected[0]+'. Actual: '+__split[index] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T33.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T33.js
new file mode 100644
index 000000000..24e5afa4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T33.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T33;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(1,100), instance is Number;
+*/
+
+var __instance = new Number(100111122133144155);
+
+Number.prototype.split = String.prototype.split;
+
+var __split = __instance.split(1,100);
+
+var __expected = ["","00","","","","22","33","44","60"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split[index] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T34.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T34.js
new file mode 100644
index 000000000..d0c402f4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T34.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T34;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(1,void 0), instance is Number;
+*/
+
+var __instance = new Number(100111122133144155);
+
+Number.prototype.split = String.prototype.split;
+
+var __split = __instance.split(1,void 0);
+
+var __expected = ["","00","","","","22","33","44","60"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3: __split[index] === __expected[index]. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T35.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T35.js
new file mode 100644
index 000000000..eb1122093
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T35.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T35;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(1, Math.pow(2,32)-1), instance is Number;
+*/
+
+var __instance = new Number(100111122133144155);
+
+Number.prototype.split = String.prototype.split;
+
+var __split = __instance.split(1, Math.pow(2,32)-1);
+
+var __expected = ["","00","","","","22","33","44","60"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split[index] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T36.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T36.js
new file mode 100644
index 000000000..c0fce4ab9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T36.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T36;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(1,"boo"), instance is Number;
+*/
+
+var __instance = new Number(100111122133144155);
+
+Number.prototype.split = String.prototype.split;
+
+var __split = __instance.split(1, "boo");
+
+var __expected = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: __split[0] === '+__expected[0]+'. Actual: '+__split[index] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T37.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T37.js
new file mode 100644
index 000000000..460fb14a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T37.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T37;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(1,-Math.pow(2,32)+1), instance is Number;
+*/
+
+var __instance = new Number(100111122133144155);
+
+Number.prototype.split = String.prototype.split;
+
+var __split = __instance.split(1, -Math.pow(2,32)+1);
+
+var __expected = [""];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: __split[0] === '+__expected[0]+'. Actual: '+__split[index] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T38.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T38.js
new file mode 100644
index 000000000..fb97068a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T38.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T38;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("l",NaN), instance is String("hello");
+*/
+
+var __instance = new String("hello");
+
+var __split = __instance.split("l", NaN);
+
+var __expected = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new String("hello"); __split = __instance.split("l", NaN); __expected = []; __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __instance = new String("hello"); __split = __instance.split("l", NaN); __expected = []; __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: var __instance = new String("hello"); __split = __instance.split("l", NaN); __expected = []; __split[0] === '+__expected[0]+'. Actual: '+__split[index] );
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T39.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T39.js
new file mode 100644
index 000000000..900170d75
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T39.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T39;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("l",0), instance is String("hello");
+*/
+
+var __instance = new String("hello");
+
+var __split = __instance.split("l", 0);
+
+var __expected = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new String("hello"); __split = __instance.split("l", 0); __expected = []; __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __instance = new String("hello"); __split = __instance.split("l", 0); __expected = []; __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: var __instance = new String("hello"); __split = __instance.split("l", 0); __expected = []; __split[0] === '+__expected[0]+'. Actual: '+__split[index] );
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T4.js
new file mode 100644
index 000000000..3ab7f6d01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T4.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T4;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(""), instance is String("one two three");
+*/
+
+var __string = new String("one two three");
+
+var __split = __string.split("");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one two three"); __split = __string.split(""); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __string.length) {
+ $ERROR('#2: var __string = new String("one two three"); __split = __string.split(""); __split.length === __string.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "o") {
+ $ERROR('#3: var __string = new String("one two three"); __split = __string.split(""); __split[0] === "o". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "n") {
+ $ERROR('#4: var __string = new String("one two three"); __split = __string.split(""); __split[1] === "n". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[11] !== "e") {
+ $ERROR('#5: var __string = new String("one two three"); __split = __string.split(""); __split[11] === "e". Actual: '+__split[11] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__split[12] !== "e") {
+ $ERROR('#6: var __string = new String("one two three"); __split = __string.split(""); __split[12] === "e". Actual: '+__split[12] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T40.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T40.js
new file mode 100644
index 000000000..c80306b77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T40.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T40;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("l",1), instance is String("hello");
+*/
+
+var __instance = new String("hello");
+
+var __split = __instance.split("l", 1);
+
+var __expected = ["he"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new String("hello"); __split = __instance.split("l", 1); __expected = ["he"]; __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __instance = new String("hello"); __split = __instance.split("l", 1); __expected = ["he"]; __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: var __instance = new String("hello"); __split = __instance.split("l", 1); __expected = ["he"]; __split[0] === '+__expected[0]+'. Actual: '+__split[index] );
+}
+//
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T41.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T41.js
new file mode 100644
index 000000000..9e2debf94
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T41.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T41;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("l",2), instance is String("hello");
+*/
+
+var __instance = new String("hello");
+
+var __split = __instance.split("l", 2);
+
+var __expected = ["he",""];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new String("hello"); __split = __instance.split("l", 2); __expected = ["he",""]; __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __instance = new String("hello"); __split = __instance.split("l", 2); __expected = ["he",""]; __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': var __instance = new String("hello"); __split = __instance.split("l", 2); __expected = ["he",""]; __split[index] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T42.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T42.js
new file mode 100644
index 000000000..0b769d92d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T42.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T42;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("l",3), instance is String("hello");
+*/
+
+var __instance = new String("hello");
+
+var __split = __instance.split("l", 3);
+
+var __expected = ["he","","o"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new String("hello"); __split = __instance.split("l", 3); __expected = ["he","","o"]; __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __instance = new String("hello"); __split = __instance.split("l", 3); __expected = ["he","","o"]; __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': var __instance = new String("hello"); __split = __instance.split("l", 3); __expected = ["he","","o"]; __split[index] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T43.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T43.js
new file mode 100644
index 000000000..23b4e78ff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T43.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T43;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split("l",4), instance is String("hello");
+*/
+
+var __instance = new String("hello");
+
+var __split = __instance.split("l", 4);
+
+var __expected = ["he","","o"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new String("hello"); __split = __instance.split("l", 4); __expected = ["he","","o"]; __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __instance = new String("hello"); __split = __instance.split("l", 4); __expected = ["he","","o"]; __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': var __instance = new String("hello"); __split = __instance.split("l", 4); __expected = ["he","","o"]; __split[index] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T5.js
new file mode 100644
index 000000000..4df7e15b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T5.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T5;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(/,/), instance is String("one-1,two-2,four-4");
+*/
+
+var __string = new String("one-1,two-2,four-4");
+
+var __split = __string.split(/,/);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one-1,two-2,four-4"); __split = __string.split(/,/); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 3) {
+ $ERROR('#2: var __string = new String("one-1,two-2,four-4"); __split = __string.split(/,/); __split.length === 3. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "one-1") {
+ $ERROR('#3: var __string = new String("one-1,two-2,four-4"); __split = __string.split(/,/); __split[0] === "one-1". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "two-2") {
+ $ERROR('#4: var __string = new String("one-1,two-2,four-4"); __split = __string.split(/,/); __split[1] === "two-2". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[2] !== "four-4") {
+ $ERROR('#5: var __string = new String("one-1,two-2,four-4"); __split = __string.split(/,/); __split[2] === "four-4". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T6.js
new file mode 100644
index 000000000..e8eb0ee2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T6.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T6;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(''), instance is String("one-1 two-2 four-4");
+*/
+
+var __string = new String("one-1 two-2 three-3");
+
+var __split = __string.split('');
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one-1 two-2 three-3"); __split = __string.split(\'\'); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __string.length) {
+ $ERROR('#2: var __string = new String("one-1 two-2 three-3"); __split = __string.split(\'\'); __split.length === __string.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for ( var i = 0; i < __string.length; i++ ) {
+ if (__split[i]!==__string.charAt(i)) {
+ $ERROR('#3.'+i+': var __string = new String("one-1 two-2 three-3"); __split = __string.split(\'\'); __split['+i+']===__string.charAt('+i+'). Actual: '+__split[i]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T7.js
new file mode 100644
index 000000000..97b32a8e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T7.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T7;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(void 0), instance is "thisundefinedisundefinedaundefinedstringundefinedobject";
+*/
+
+var __string = "thisundefinedisundefinedaundefinedstringundefinedobject";
+var __expected = ["this", "is", "a", "string", "object"];
+
+var __split = __string.split(void 0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = "thisundefinedisundefinedaundefinedstringundefinedobject"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(void 0); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __string = "thisundefinedisundefinedaundefinedstringundefinedobject"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(void 0); __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for ( var i = 0; i < __expected.length; i++ ) {
+ if (__expected[i]!==__split[i]) {
+ $ERROR('#3.'+i+': var __string = "thisundefinedisundefinedaundefinedstringundefinedobject"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(void 0); __expected['+i+']==='+__split[i]+'. Actual: '+__expected[i]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T8.js
new file mode 100644
index 000000000..16ad42b16
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T8.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T8;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(null), instance is "thisnullisnullanullstringnullobject";
+*/
+
+var __string = "thisnullisnullanullstringnullobject";
+var __expected = ["this", "is", "a", "string", "object"];
+
+var __split = __string.split(null);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = "thisnullisnullanullstringnullobject"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(null); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __string = "thisnullisnullanullstringnullobject"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(null); __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for ( var i = 0; i < __expected.length; i++ ) {
+ if (__expected[i]!==__split[i]) {
+ $ERROR('#3.'+i+': var __string = "thisnullisnullanullstringnullobject"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(null); __expected['+i+']==='+__split[i]+'. Actual: '+__expected[i]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T9.js
new file mode 100644
index 000000000..3b46f9dc0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A2_T9.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A2_T9;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. The substrings are determined by searching from left to right for occurrences of
+* separator; these occurrences are not part of any substring in the returned array, but serve to divide up
+* the string value. The value of separator may be a string of any length or it may be a RegExp object;
+* @description: Call split(true), instance is "thistrueistrueatruestringtrueobject";
+*/
+
+var __string = "thistrueistrueatruestringtrueobject";
+var __expected = ["this", "is", "a", "string", "object"];
+
+var __split = __string.split(true);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = "thistrueistrueatruestringtrueobject"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(true); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: var __string = "thistrueistrueatruestringtrueobject"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(true); __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for ( var i = 0; i < __expected.length; i++ ) {
+ if (__expected[i]!==__split[i]) {
+ $ERROR('#3.'+i+': var __string = "thistrueistrueatruestringtrueobject"; var __expected = ["this", "is", "a", "string", "object"]; __split = __string.split(true); __expected['+i+']==='+__split[i]+'. Actual: '+__expected[i]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T1.js
new file mode 100644
index 000000000..f003915a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T1;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is String("one,two,three,four,five");
+*/
+
+var __string = new String("one,two,three,four,five");
+
+var __split = __string.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("one,two,three,four,five"); __split = __string.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String("one,two,three,four,five"); __split = __string.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "one,two,three,four,five") {
+ $ERROR('#3: var __string = new String("one,two,three,four,five"); __split = __string.split(); __split[0] === "one,two,three,four,five". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T10.js
new file mode 100644
index 000000000..ef85b7972
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T10.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T10;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is new String;
+*/
+
+var __string = new String;
+
+var __split = __string.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String; __split = __string.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String; __split = __string.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "") {
+ $ERROR('#3: var __string = new String; __split = __string.split(); __split[0] === "". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T11.js
new file mode 100644
index 000000000..b6cc282c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T11.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T11;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is String(" ");
+*/
+
+var __string = new String(" ");
+
+var __split = __string.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String(" "); __split = __string.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String(" "); __split = __string.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== " ") {
+ $ERROR('#3: var __string = new String(" "); __split = __string.split(); __split[0] === " ". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T2.js
new file mode 100644
index 000000000..99a2c0bd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T2;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is Object();
+*/
+
+var __instance = new Object();
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new Object(); __instance.split = String.prototype.split; __split = __instance.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __instance = new Object(); __instance.split = String.prototype.split; __split = __instance.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "[object Object]") {
+ $ERROR('#3: var __instance = new Object(); __instance.split = String.prototype.split; __split = __instance.split(); __split[0] === "[object Object]". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T3.js
new file mode 100644
index 000000000..ba33ba871
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T3.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T3;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is function(){};
+*/
+
+var __instance = function(){};
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = function(){}; __instance.split = String.prototype.split; __split = __instance.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __instance = function(){}; __instance.split = String.prototype.split; __split = __instance.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0].substring(0,8) !== "function") {
+ $ERROR('#3: var __instance = function(){}; __instance.split = String.prototype.split; __split = __instance.split(); __split[0].substring(0,8) === "function". Actual: '+__split[0].substring(0,8) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T4.js
new file mode 100644
index 000000000..a8845dd50
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T4.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T4;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is Number(NaN);
+*/
+
+var __instance = new Number(NaN);
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new Number(NaN); __instance.split = String.prototype.split; __split = __instance.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __instance = new Number(NaN); __instance.split = String.prototype.split; __split = __instance.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "NaN") {
+ $ERROR('#3: var __instance = new Number(NaN); __instance.split = String.prototype.split; __split = __instance.split(); __split[0] === "NaN". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T5.js
new file mode 100644
index 000000000..1656b9af7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T5.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T5;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is Number(-1234567890);
+*/
+
+var __instance = new Number(-1234567890);
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new Number(-1234567890); __instance.split = String.prototype.split; __split = __instance.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __instance = new Number(-1234567890); __instance.split = String.prototype.split; __split = __instance.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "-1234567890") {
+ $ERROR('#3: var __instance = new Number(-1234567890); __instance.split = String.prototype.split; __split = __instance.split(); __split[0] === "-1234567890". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T6.js
new file mode 100644
index 000000000..533762630
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T6.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T6;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is Number(-1e21);
+*/
+
+var __instance = new Number(-1e21);
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new Number(-1e21); __instance.split = String.prototype.split; __split = __instance.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __instance = new Number(-1e21); __instance.split = String.prototype.split; __split = __instance.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __instance.toString()) {
+ $ERROR('#3: var __instance = new Number(-1e21); __instance.split = String.prototype.split; __split = __instance.split(); __split[0] === __instance.toString(). Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T7.js
new file mode 100644
index 000000000..358fdd09d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T7.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T7;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is Math;
+*/
+
+var __instance = Math;
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = Math; __instance.split = String.prototype.split; __split = __instance.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __instance = Math; __instance.split = String.prototype.split; __split = __instance.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "[object Math]") {
+ $ERROR('#3: var __instance = Math; __instance.split = String.prototype.split; __split = __instance.split(); __split[0] === "[object Math]". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T8.js
new file mode 100644
index 000000000..b872a70ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T8.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T8;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is Array(1,2,3,4,5);
+*/
+
+var __instance = new Array(1,2,3,4,5);
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new Array(1,2,3,4,5); __instance.split = String.prototype.split; __split = __instance.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __instance = new Array(1,2,3,4,5); __instance.split = String.prototype.split; __split = __instance.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "1,2,3,4,5") {
+ $ERROR('#3: var __instance = new Array(1,2,3,4,5); __instance.split = String.prototype.split; __split = __instance.split(); __split[0] === "1,2,3,4,5". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T9.js
new file mode 100644
index 000000000..79f79e0b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A3_T9.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A3_T9;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split() returns an Array object with:
+* i) length equaled to 1,
+* ii) [[Get]](0) equaled to the result of converting this object to a string;
+* @description: Instance is Boolean;
+*/
+
+var __instance = new Boolean;
+
+__instance.split = String.prototype.split;
+
+var __split = __instance.split();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __instance = new Boolean; __instance.split = String.prototype.split; __split = __instance.split(); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __instance = new Boolean; __instance.split = String.prototype.split; __split = __instance.split(); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "false") {
+ $ERROR('#3: var __instance = new Boolean; __instance.split = String.prototype.split; __split = __instance.split(); __split[0] === "false". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T1.js
new file mode 100644
index 000000000..c446c07e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_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.
+
+/**
+* @name: S15.5.4.14_A4_T1;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Argument is regexp /l/, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = /l/;
+
+var __split = __string.split(__re);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 3) {
+ $ERROR('#2: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re); __split.length === 3. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "he") {
+ $ERROR('#3: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re); __split[0] === "he". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re); __split[1] === "". Actual: '+__split[1]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[2] !== "o") {
+ $ERROR('#5: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re); __split[2] === "o". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T10.js
new file mode 100644
index 000000000..e4b280bae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T10.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T10;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Argument is new RegExp, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = new RegExp;
+
+var __split = __string.split(__re);
+
+var __expected = ["h","e","l","l","o"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T11.js
new file mode 100644
index 000000000..bd1aa1c92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T11.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T11;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are new RegExp and 0, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = new RegExp;
+
+var __split = __string.split(__re, 0);
+
+var __expected = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: __split[0] === '+__expected[0]+'. Actual: '+__split[index] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T12.js
new file mode 100644
index 000000000..87f5388cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T12.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T12;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are new RegExp and 1, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = new RegExp;
+
+var __split = __string.split(__re, 1);
+
+var __expected = ["h"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: __split[0] === '+__expected[0]+'. Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T13.js
new file mode 100644
index 000000000..a130b2562
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T13.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T13;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are new RegExp and 2, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = new RegExp;
+
+var __split = __string.split(__re, 2);
+
+var __expected = ["h", "e"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T14.js
new file mode 100644
index 000000000..63a83298c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T14.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T14;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are new RegExp and 3, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = new RegExp;
+
+var __split = __string.split(__re, 3);
+
+var __expected = ["h", "e", "l"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T15.js
new file mode 100644
index 000000000..10d913086
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T15.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T15;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are new RegExp and 4, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = new RegExp;
+
+var __split = __string.split(__re, 4);
+
+var __expected = ["h", "e", "l" ,"l"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T16.js
new file mode 100644
index 000000000..24411d810
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T16.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T16;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are new RegExp and void 0, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = new RegExp;
+
+var __split = __string.split(__re, void 0);
+
+var __expected = ["h", "e", "l", "l", "o"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T17.js
new file mode 100644
index 000000000..fb35ef934
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T17.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T17;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are new RegExp and undefined, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = new RegExp;
+
+var __split = __string.split(__re, undefined);
+
+var __expected = ["h", "e", "l", "l", "o"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T18.js
new file mode 100644
index 000000000..91712a262
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T18.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T18;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are new RegExp and "hi", and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = new RegExp;
+
+var __split = __string.split(__re, "hi");
+
+var __expected = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T19.js
new file mode 100644
index 000000000..dac70cb96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T19.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T19;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Argument is regexp /\s/, and instance is String("a b c de f");
+*/
+
+var __string = new String("a b c de f");
+
+var __re = /\s/;
+
+var __split = __string.split(__re);
+
+var __expected = ["a","b","c","de","f"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T2.js
new file mode 100644
index 000000000..9cea98034
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T2;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are regexp /l/ and 0, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = /l/;
+
+var __split = __string.split(__re,0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,0); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 0) {
+ $ERROR('#2: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,0); __split.length === 0. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T20.js
new file mode 100644
index 000000000..3057cfd33
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T20.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T20;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are regexp /\s/ and 3, and instance is String("a b c de f");
+*/
+
+var __string = new String("a b c de f");
+
+var __re = /\s/;
+
+var __split = __string.split(__re,3);
+
+var __expected = ["a","b","c"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T21.js
new file mode 100644
index 000000000..8c0e8609c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T21.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T21;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Argument is regexp /\X/, and instance is String("a b c de f");
+*/
+
+var __string = new String("a b c de f");
+
+var __re = /X/;
+
+var __split = __string.split(__re);
+
+var __expected = ["a b c de f"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== __expected[0]) {
+ $ERROR('#3: __split[0] === '+__expected[0]+'. Actual: '+__split[index] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T22.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T22.js
new file mode 100644
index 000000000..ff82875a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T22.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T22;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Argument is regexp /\d+/, and instance is String("dfe23iu 34 =+65--");
+*/
+
+var __string = new String("dfe23iu 34 =+65--");
+
+var __re = /\d+/;
+
+var __split = __string.split(__re);
+
+var __expected = ["dfe","iu "," =+","--"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T23.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T23.js
new file mode 100644
index 000000000..4a9cdce76
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T23.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T23;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Argument is regexp RegExp('\\d+'), and instance is String("dfe23iu 34 =+65--");
+*/
+
+var __string = new String("dfe23iu 34 =+65--");
+
+var __re = new RegExp('\\d+');
+
+var __split = __string.split(__re);
+
+var __expected = ["dfe","iu "," =+","--"];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T24.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T24.js
new file mode 100644
index 000000000..3c08f5b92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T24.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T24;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Argument is regexp /[a-z]/, and instance is String("abc");
+*/
+
+var __string = new String("abc");
+
+var __re = /[a-z]/;
+
+var __split = __string.split(__re);
+
+var __expected = ["","","",""];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T25.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T25.js
new file mode 100644
index 000000000..c16129ba3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T25.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T25;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Argument is RegExp('[a-z]'), and instance is String("abc");
+*/
+
+var __string = new String("abc");
+
+var __re = new RegExp('[a-z]');
+
+var __split = __string.split(__re);
+
+var __expected = ["","","",""];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== __expected.length) {
+ $ERROR('#2: __split.length === __expected.length. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for(var index=0; index<__expected.length; index++) {
+ if (__split[index] !== __expected[index]) {
+ $ERROR('#3.'+index+': __split['+index+'] === '+__expected[index]+'. Actual: '+__split[index] );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T3.js
new file mode 100644
index 000000000..501b1a7be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T3.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T3;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are regexp /l/ and 1, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = /l/;
+
+var __split = __string.split(__re,1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,1); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 1) {
+ $ERROR('#2: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,1); __split.length === 1. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "he") {
+ $ERROR('#3: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,1); __split[0] === "he". Actual: '+__split[0] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T4.js
new file mode 100644
index 000000000..8ec0ede8a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T4.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T4;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are regexp /l/ and 2, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = /l/;
+
+var __split = __string.split(__re,2);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,2); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 2) {
+ $ERROR('#2: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,2); __split.length === 2. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "he") {
+ $ERROR('#3: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,2); __split[0] === "he". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,2); __split[1] === "". Actual: '+__split[1] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T5.js
new file mode 100644
index 000000000..75708e755
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T5.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T5;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are regexp /l/ and 3, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = /l/;
+
+var __split = __string.split(__re,3);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,3); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 3) {
+ $ERROR('#2: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,3); __split.length === 3. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "he") {
+ $ERROR('#3: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,3); __split[0] === "he". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,3); __split[1] === "". Actual: '+__split[1]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[2] !== "o") {
+ $ERROR('#5: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,3); __split[2] === "o". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T6.js
new file mode 100644
index 000000000..6e006abbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T6.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T6;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are regexp /l/ and 4, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = /l/;
+
+var __split = __string.split(__re,4);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,4); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 3) {
+ $ERROR('#2: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,4); __split.length === 3. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "he") {
+ $ERROR('#3: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,4); __split[0] === "he". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,4); __split[1] === "". Actual: '+__split[1]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[2] !== "o") {
+ $ERROR('#5: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re,4); __split[2] === "o". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T7.js
new file mode 100644
index 000000000..2a4e2a22d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T7.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T7;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are regexp /l/ and void 0, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = /l/;
+
+var __split = __string.split(__re, void 0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, void 0); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 3) {
+ $ERROR('#2: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, void 0); __split.length === 3. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "he") {
+ $ERROR('#3: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, void 0); __split[0] === "he". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, void 0); __split[1] === "". Actual: '+__split[1]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[2] !== "o") {
+ $ERROR('#5: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, void 0); __split[2] === "o". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T8.js
new file mode 100644
index 000000000..20423c03b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T8.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T8;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are regexp /l/ and "hi", and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = /l/;
+
+var __split = __string.split(__re, "hi");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, "hi"); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 0) {
+ $ERROR('#2: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, "hi"); __split.length === 0. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T9.js
new file mode 100644
index 000000000..306a0b10b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A4_T9.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A4_T9;
+* @section: 15.5.4.14;
+* @assertion: String.prototype.split (separator, limit) returns an Array object into which substrings of the result of converting this object to a string have
+* been stored. If separator is a regular expression then
+* inside of SplitMatch helper the [[Match]] method of R is called giving it the arguments corresponding;
+* @description: Arguments are regexp /l/ and undefined, and instance is String("hello");
+*/
+
+var __string = new String("hello");
+
+var __re = /l/;
+
+var __split = __string.split(__re, undefined);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__split.constructor !== Array) {
+ $ERROR('#1: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, undefined); __split.constructor === Array. Actual: '+__split.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__split.length !== 3) {
+ $ERROR('#2: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, undefined); __split.length === 3. Actual: '+__split.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__split[0] !== "he") {
+ $ERROR('#3: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, undefined); __split[0] === "he". Actual: '+__split[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__split[1] !== "") {
+ $ERROR('#4: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, undefined); __split[1] === "". Actual: '+__split[1]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__split[2] !== "o") {
+ $ERROR('#5: var __string = new String("hello"); var __re = /l/; __split = __string.split(__re, undefined); __split[2] === "o". Actual: '+__split[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A6.js
new file mode 100644
index 000000000..b3d374fa2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A6;
+* @section: 15.5.4.14, 13.2;
+* @assertion: String.prototype.split has not prototype property;
+* @description: Checking String.prototype.split.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.split.prototype !== undefined) {
+ $ERROR('#1: String.prototype.split.prototype === undefined. Actual: '+String.prototype.split.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A7.js
new file mode 100644
index 000000000..bab94bbd5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A7.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.
+
+/**
+* @name: S15.5.4.14_A7;
+* @section: 15.5.4.14, 13.2;
+* @assertion: String.prototype.split can't be used as constructor;
+* @description: Checking if creating the String.prototype.split object fails;
+*/
+
+var __FACTORY = String.prototype.split;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.split; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A8.js
new file mode 100644
index 000000000..bd2c7e4ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A8;
+* @section: 15.5.4.14;
+* @assertion: The String.prototype.split.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.split.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.split.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.split.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.split.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.split.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.split.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.split){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.split){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A9.js
new file mode 100644
index 000000000..a70debfe0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.14_String.prototype.split/S15.5.4.14_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.14_A9;
+* @section: 15.5.4.14;
+* @assertion: The String.prototype.split.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.split.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.split.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.split.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.split.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.split.length) {
+ $ERROR('#1: delete String.prototype.split.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.split.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.split.length; String.prototype.split.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.split.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A10.js
new file mode 100644
index 000000000..ec221879b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A10;
+* @section: 15.5.4.15;
+* @assertion: The String.prototype.substring.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.substring.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.substring.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.substring.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.substring.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.substring.length;
+
+String.prototype.substring.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.substring.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.substring.length; String.prototype.substring.length = function(){return "shifted";}; String.prototype.substring.length === __obj. Actual: '+String.prototype.substring.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A11.js
new file mode 100644
index 000000000..55d957b51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A11;
+* @section: 15.5.4.15;
+* @assertion: The length property of the substring method is 2;
+* @description: Checking String.prototype.substring.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.substring.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.substring.hasOwnProperty("length") return true. Actual: '+String.prototype.substring.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.substring.length !== 2) {
+ $ERROR('#2: String.prototype.substring.length === 2. Actual: '+String.prototype.substring.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T1.js
new file mode 100644
index 000000000..e1cb20248
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T1;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are false and true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(false, true) !== "t") {
+ $ERROR('#1: __instance = new Object(true); __instance.substring = String.prototype.substring; __instance.substring(false, true) === "t". Actual: '+__instance.substring(false, true) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T10.js
new file mode 100644
index 000000000..03dd87388
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T10.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T10;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are object and function call, and instance is String, object have overrided valueOf function;
+*/
+
+var __obj = {valueOf:function(){return 2;}};
+
+var __str = "\u0035ABBBABAB";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (substring(__obj, function(){return substring(0,1);}()) !== "BBB") {
+ $ERROR('#1: var __obj = {valueOf:function(){return 2;}}; var __str = "\u0035ABBBABAB"; substring(__obj, function(){return substring(0,1);}()) === "BBB". Actual: '+substring(__obj, function(){return substring(0,1);}()) );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T11.js
new file mode 100644
index 000000000..b4389b0d2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T11.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T11;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are objects, and instance is string, objects have overrided valueOf function, that return exception;
+*/
+
+var __obj = {valueOf:function(){throw "instart";}};
+var __obj2 = {valueOf:function(){throw "inend";}};
+var __str = {str__:"ABB\u0041BABAB"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ with(str__){
+ try {
+ var x = substring(__obj,__obj2);
+ $FAIL('#1: "var x = substring(__obj,__obj2)" lead to throw exception');
+ } catch (e) {
+ if (e!=="instart") {
+ $ERROR('#1.1: Exception === "instart". Actual: '+e);
+ }
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T12.js
new file mode 100644
index 000000000..124e74863
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T12.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T12;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are objects, and instance is string.
+* First object have overrided valueOf function and toString function, that return exception.
+* Second object have overrided valueOf function, that return exception;
+*/
+
+var __obj = {valueOf:function(){return {};}, toString:function(){throw "instart";}};
+var __obj2 = {valueOf:function(){throw "inend";}};
+var __str = new String("ABB\u0041BABAB");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ try {
+ var x = substring(__obj, __obj2);
+ $FAIL('#1: "var x = substring(__obj,__obj2)" lead to throw exception');
+ } catch (e) {
+ if (e!=="instart") {
+ $ERROR('#1.1: Exception ==="instart". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T13.js
new file mode 100644
index 000000000..00996cbf3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T13.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T13;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are objects, and instance is string.
+* First object have overrided valueOf and toString functions.
+* Second object have overrided toString function, that return exception;
+*/
+
+var __obj = {valueOf:function(){return {};}, toString:function(){return 1;}};
+var __obj2 = {toString:function(){throw "inend";}};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = "ABB\u0041BABAB\u0031BBAA".substring(__obj, __obj2);
+ $FAIL('#1: var x = "ABB\\u0041BABAB\\u0031BBAA".substring(__obj,__obj2) lead to throw exception');
+} catch (e) {
+ if (e!=="inend") {
+ $ERROR('#1.1: Exception === "inend". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T14.js
new file mode 100644
index 000000000..28d45bf99
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T14.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T14;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Used one argument, that is function(){}(). Instance is string;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("report".substring(function(){}()) !== "report") {
+ $ERROR('#1: "report".substring(function(){}()) === "report". Actual: '+"report".substring(function(){}()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T15.js
new file mode 100644
index 000000000..3b8434714
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T15.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T15;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Call substring without arguments. Instance is Number with prototype.substring = String.prototype.substring;
+*/
+
+var __num = 11.001002;
+
+Number.prototype.substring = String.prototype.substring;
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__num.substring()!=="11.001002") {
+ $ERROR('#1: var __num = 11.001002; Number.prototype.substring = String.prototype.substring; __num.substring()==="11.001002". Actual: '+__num.substring());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T2.js
new file mode 100644
index 000000000..b8a034fc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T2;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are function call and x, and instance is Boolean. x is undefined variable;
+*/
+
+var __instance = new Boolean;
+
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(function(){return true;}(),x) !== "alse") {
+ $ERROR('#1: var x; __instance = new Boolean; __instance.substring = String.prototype.substring; __instance.substring(function(){return true;}(),x) === "alse". Actual: '+__instance.substring(function(){return true;}(),x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T3.js
new file mode 100644
index 000000000..8122cc79e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T3;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Checking by using eval;
+*/
+
+var substring = String.prototype.substring;
+
+if (typeof toString === "undefined"){
+ toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+var __toggle = 1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (substring(eval("\"1\""),{valueOf:function(){return "0x0007"}})!=="object") {
+ $ERROR('#1: substring(eval("\\"1\\""),{valueOf:function(){return "0x0007"}})==="object". Actual: '+substring(eval("\"1\""),{valueOf:function(){return "0x0007"}}));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T4.js
new file mode 100644
index 000000000..5fec6a2b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T4;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are null and number, and instance is function call, that returned string;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (function(){return "gnulluna"}().substring(null, -3) !== "") {
+ $ERROR('#1: function(){return "gnulluna"}().substring(null, -3) === "". Actual: '+function(){return "gnulluna"}().substring(null, -3) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T5.js
new file mode 100644
index 000000000..a717af019
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T5.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T5;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are null and Function(), and instance is function object, that have overrided valueOf function;
+*/
+
+__func.valueOf=function(){return "gnulluna"};
+
+Function.prototype.substring=String.prototype.substring;
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func.substring(null, Function()) !== "") {
+ $ERROR('#1: __func.valueOf=function(){return "gnulluna"}; Function.prototype.substring=String.prototype.substring; function __func(){}; __func.substring(null, Function()) === "". Actual: '+__func.substring(null, Function()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T6.js
new file mode 100644
index 000000000..2e2fa7b71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T6;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are x and number, and instance is new String, x is undefined variable;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (new String("undefined").substring(x,3) !== "und") {
+ $ERROR('#1: var x; new String("undefined").substring(x,3) === "und". Actual: '+new String("undefined").substring(x,3) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T7.js
new file mode 100644
index 000000000..90c65cf2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T7.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T7;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are symbol and undefined, and instance is String;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String(void 0).substring("e",undefined) !== "undefined") {
+ $ERROR('#1: String(void 0).substring("e",undefined) === "undefined". Actual: '+String(void 0).substring("e",undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T8.js
new file mode 100644
index 000000000..d806867b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T8;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are negative number and void 0, and instance is String(object), object have overrided toString function;
+*/
+
+var __obj = {toString:function(){}};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String(__obj).substring(-4,void 0) !== "undefined") {
+ $ERROR('#1: __obj = {toString:function(){}}; String(__obj).substring(-4,void 0) === "undefined". Actual: '+String(__obj).substring(-4,void 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T9.js
new file mode 100644
index 000000000..b5debd1c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T9.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A1_T9;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end);
+* @description: Arguments are undefined and object, and instance is new String(object), object have overrided valueOf and toString functions;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (new String(__obj).substring(/*(function(){})()*/undefined,undefined) !== "undefined") {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; new String(__obj).substring(/*(function(){})()*/undefined,undefined) === "undefined". Actual: '+new String(__obj).substring(/*(function(){})()*/undefined,undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T1.js
new file mode 100644
index 000000000..e9cfad4ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_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.
+
+/**
+* @name: S15.5.4.15_A2_T1;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: Checking type of substring();
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __string.substring() !== "string") {
+ $ERROR('#1: __string = new String("this is a string object"); typeof __string.substring() === "string". Actual: '+typeof __string.substring() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T10.js
new file mode 100644
index 000000000..8049952da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T10.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A2_T10;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: start is 0, end is 8;
+*/
+
+var __string = new String("this_is_a_string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.substring(0,8) !== "this_is_") {
+ $ERROR('#1: __string = new String("this_is_a_string object"); __string.substring(0,8) === "this_is_". Actual: '+__string.substring(0,8) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T2.js
new file mode 100644
index 000000000..a8e5f4523
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_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.
+
+/**
+* @name: S15.5.4.15_A2_T2;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: start is NaN, end is Infinity;
+*/
+
+var __string = new String('this is a string object');
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.substring(NaN, Infinity) !== "this is a string object") {
+ $ERROR('#1: __string = new String(\'this is a string object\'); __string.substring(NaN, Infinity) === "this is a string object". Actual: '+__string.substring(NaN, Infinity) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T3.js
new file mode 100644
index 000000000..99f3e12b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_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.
+
+/**
+* @name: S15.5.4.15_A2_T3;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: Call substring from empty String object;
+*/
+
+var __string = new String("");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.substring(1,0) !== "") {
+ $ERROR('#1: __string = new String(""); __string.substring(1,0) === "". Actual: '+__string.substring(1,0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T4.js
new file mode 100644
index 000000000..93a464173
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A2_T4;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: start is Infinity, end is NaN;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.substring(Infinity, NaN) !== "this is a string object") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.substring(Infinity, NaN) === "this is a string object". Actual: '+__string.substring(Infinity, NaN) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T5.js
new file mode 100644
index 000000000..17c1253ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A2_T5;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: start is Infinity, end is Infinity;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.substring(Infinity, Infinity) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.substring(Infinity, Infinity) === "". Actual: '+__string.substring(Infinity, Infinity) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T6.js
new file mode 100644
index 000000000..85b568386
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A2_T6;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: start is negative float number, end is 0;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.substring(-0.01,0) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.substring(-0.01,0) === "". Actual: '+__string.substring(-0.01,0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T7.js
new file mode 100644
index 000000000..286adb720
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A2_T7;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: start is tested_string.length, end is tested_string.length;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.substring(__string.length, __string.length) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.substring(__string.length, __string.length) === "". Actual: '+__string.substring(__string.length, __string.length) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T8.js
new file mode 100644
index 000000000..cc1638439
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A2_T8;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: start is tested_string.length+1, end is 0;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.substring(__string.length+1, 0) !== "this is a string object") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.substring(__string.length+1, 0) === "this is a string object". Actual: '+__string.substring(__string.length+1, 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T9.js
new file mode 100644
index 000000000..a28f052a9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A2_T9.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A2_T9;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) returns a string value(not object);
+* @description: start is -Infinity, end is -Infinity;
+*/
+
+var __string = new String("this is a string object");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__string.substring(-Infinity, -Infinity) !== "") {
+ $ERROR('#1: __string = new String("this is a string object"); __string.substring(-Infinity, -Infinity) === "". Actual: '+__string.substring(-Infinity, -Infinity) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T1.js
new file mode 100644
index 000000000..51ebb337c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T1;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Array instance. Start is Infinity, end is -Infinity;
+*/
+
+var __instance = new Array(1,2,3,4,5);
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(Infinity,-Infinity) !== "1,2,3,4,5") {
+ $ERROR('#1: __instance = new Array(1,2,3,4,5); __instance.substring = String.prototype.substring; __instance.substring(Infinity,-Infinity) === "1,2,3,4,5". Actual: '+__instance.substring(Infinity,-Infinity) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T10.js
new file mode 100644
index 000000000..d457e3769
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T10.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T10;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Checknig if applying String.prototype.substring to Function object instance passes;
+*/
+
+__FACTORY.prototype.substring = String.prototype.substring;
+
+var __instance = new __FACTORY(void 0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(0, 100) !== "undefined") {
+ $ERROR('#1: __instance.substring(0, 100) === "undefined". Actual: '+__instance.substring(0, 100) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __FACTORY( value ) {
+ this.value = value;
+ this.toString = function() { return this.value+''; }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T11.js
new file mode 100644
index 000000000..f991069c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T11.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T11;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Boolean instance. Start is new Array(), end is new Boolean(1);
+*/
+
+var __instance = new Boolean();
+
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(new Array(), new Boolean(1)) !== "f") {
+ $ERROR('#1: __instance = new Boolean(); __instance.substring = String.prototype.substring; __instance.substring(new Array(), new Boolean(1)) === "f". Actual: '+__instance.substring(new Array(), new Boolean(1)) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T2.js
new file mode 100644
index 000000000..f80f3f645
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T2;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Array instance. Start is 9, end is -Infinity;
+*/
+
+var __instance = new Array(1,2,3,4,5);
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(9,-Infinity) !== "1,2,3,4,5") {
+ $ERROR('#1: __instance = new Array(1,2,3,4,5); __instance.substring = String.prototype.substring; __instance.substring(9,-Infinity) === "1,2,3,4,5". Actual: '+__instance.substring(9,-Infinity) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T3.js
new file mode 100644
index 000000000..ab9f7f6c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T3;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Array instance. Start is true, end is false;
+*/
+
+var __instance = new Array(1,2,3,4,5);
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(true, false) !== "1") {
+ $ERROR('#1: __instance = new Array(1,2,3,4,5); __instance.substring = String.prototype.substring; __instance.substring(true, false) === "1". Actual: '+__instance.substring(true, false) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T4.js
new file mode 100644
index 000000000..a4983fa84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T4;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Array instance. Start is '4', end is '5';
+*/
+
+var __instance = new Array(1,2,3,4,5);
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring('4', '5') !== "3") {
+ $ERROR('#1: __instance = new Array(1,2,3,4,5); __instance.substring = String.prototype.substring; __instance.substring(\'4\', \'5\') === "3". Actual: '+__instance.substring('4', '5') );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T5.js
new file mode 100644
index 000000000..12b8722d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T5;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Object instance. Start is 8, end is 0;
+*/
+
+var __instance = new Object();
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(8,0) !== "[object ") {
+ $ERROR('#1: __instance = new Object(); __instance.substring = String.prototype.substring; __instance.substring(8,0) === "[object ". Actual: '+__instance.substring(8,0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T6.js
new file mode 100644
index 000000000..4b5a40c59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T6;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Object instance. Start is 8, end is length of object.toString;
+*/
+
+var __instance = new Object();
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(8, __instance.toString().length) !== "Object]") {
+ $ERROR('#1: __instance = new Object(); __instance.substring = String.prototype.substring; __instance.substring(8, __instance.toString().length) === "Object]". Actual: '+__instance.substring(8, __instance.toString().length) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T7.js
new file mode 100644
index 000000000..a8696c579
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T7.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T7;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Object instance. Call instance.substring(...).substring(...);
+*/
+
+var __instance = function(){};
+
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(-Infinity,8) !== "function") {
+ $ERROR('#1: __instance = function(){}; __instance.substring = String.prototype.substring; __instance.substring(-Infinity,8) === "function". Actual: '+__instance.substring(8,Infinity).substring(-Infinity,1) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T8.js
new file mode 100644
index 000000000..0e5fcc1bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T8.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T8;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Number instance. Start is Infinity, end is NaN;
+*/
+
+var __instance = new Number(NaN);
+
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(Infinity, NaN) !== "NaN") {
+ $ERROR('#1: __instance = new Number(NaN); __instance.substring = String.prototype.substring; __instance.substring(Infinity, NaN) === "NaN". Actual: '+__instance.substring(Infinity, NaN) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T9.js
new file mode 100644
index 000000000..2bfef21a9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A3_T9.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A3_T9;
+* @section: 15.5.4.15;
+* @assertion: String.prototype.substring (start, end) can be applied to non String object instance and
+* returns a string value(not object);
+* @description: Apply String.prototype.substring to Math instance. Start is Math.PI, end is -10;
+*/
+
+var __instance = Math;
+
+__instance.substring = String.prototype.substring;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.substring(Math.PI, -10) !== "[ob") {
+ $ERROR('#1: __instance = Math; __instance.substring = String.prototype.substring; __instance.substring(Math.PI, -10) === "[ob". Actual: '+__instance.substring(Math.PI, -10) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A6.js
new file mode 100644
index 000000000..4f1e52ead
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A6;
+* @section: 15.5.4.15, 13.2;
+* @assertion: String.prototype.substring has not prototype property;
+* @description: Checking String.prototype.substring.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.substring.prototype !== undefined) {
+ $ERROR('#1: String.prototype.substring.prototype === undefined. Actual: '+String.prototype.substring.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A7.js
new file mode 100644
index 000000000..78a791d3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A7;
+* @section: 15.5.4.15, 13.2;
+* @assertion: String.prototype.substring can't be used as constructor;
+* @description: Checking if creating the String.prototype.substring object fails;
+*/
+
+var __FACTORY = String.prototype.substring;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.substring; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: undefined = 1 throw a TypeError. Actual: ' + (e));
+ }
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A8.js
new file mode 100644
index 000000000..1ce7cd13f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A8;
+* @section: 15.5.4.15;
+* @assertion: The String.prototype.substring.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.substring.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.substring.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.substring.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.substring.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.substring.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.substring.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (var p in String.prototype.substring){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.substring){if (p==="length") count++;} count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A9.js
new file mode 100644
index 000000000..4a947b2e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.15_String.prototype.substring/S15.5.4.15_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.15_A9;
+* @section: 15.5.4.15;
+* @assertion: The String.prototype.substring.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.substring.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.substring.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.substring.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.substring.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.substring.length) {
+ $ERROR('#1: delete String.prototype.substring.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.substring.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.substring.length; String.prototype.substring.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.substring.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A10.js
new file mode 100644
index 000000000..1ed990ff2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A10;
+* @section: 15.5.4.16;
+* @assertion: The String.prototype.toLowerCase.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.toLowerCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.toLowerCase.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.toLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLowerCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.toLowerCase.length;
+
+String.prototype.toLowerCase.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.toLowerCase.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.toLowerCase.length; String.prototype.toLowerCase.length = function(){return "shifted";}; String.prototype.toLowerCase.length === __obj. Actual: '+String.prototype.toLowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A11.js
new file mode 100644
index 000000000..b1f970c70
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A11;
+* @section: 15.5.4.16;
+* @assertion: The length property of the toLowerCase method is 0;
+* @description: Checking String.prototype.toLowerCase.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.toLowerCase.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.toLowerCase.hasOwnProperty("length") return true. Actual: '+String.prototype.toLowerCase.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.toLowerCase.length !== 0) {
+ $ERROR('#2: String.prototype.toLowerCase.length === 0. Actual: '+String.prototype.toLowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T1.js
new file mode 100644
index 000000000..6cee6a91d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T1;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Arguments is true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.toLowerCase = String.prototype.toLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.toLowerCase() !== "true") {
+ $ERROR('#1: __instance = new Object(true); __instance.toLowerCase = String.prototype.toLowerCase; __instance.toLowerCase() === "true". Actual: '+__instance.toLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T10.js
new file mode 100644
index 000000000..0bc9811e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T10.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T10;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Call toLowerCase() function of object with overrode toString function;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+__obj.toLowerCase = String.prototype.toLowerCase;
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.toLowerCase() !=="ab") {
+ $ERROR('#1: var __obj = {toString:function(){return "\u0041B";}}; __obj.toLowerCase = String.prototype.toLowerCase; __obj.toLowerCase() ==="ab". Actual: '+__obj.toLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T11.js
new file mode 100644
index 000000000..d4df594d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T11;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Override toString function, toString throw exception, then call toLowerCase() function for this object;
+*/
+
+var __obj = {toString:function(){throw "intostr";}}
+__obj.toLowerCase = String.prototype.toLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.toLowerCase();
+ $FAIL('#1: "var x = __obj.toLowerCase()" lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T12.js
new file mode 100644
index 000000000..4ab84d5e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T12.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T12;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Override toString and valueOf functions, valueOf throw exception, then call toLowerCase() function for this object;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){throw "intostr";}}
+__obj.toLowerCase = String.prototype.toLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.toLowerCase();
+ $FAIL('#1: "var x = __obj.toLowerCase()" lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T13.js
new file mode 100644
index 000000000..dfd8c2f97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T13.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T13;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Override toString and valueOf functions, then call toLowerCase() function for this object;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}
+__obj.toLowerCase = String.prototype.toLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.toLowerCase() !=="1") {
+ $ERROR('#1: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; __obj.toLowerCase = String.prototype.toLowerCase; __obj.toLowerCase() ==="1". Actual: '+__obj.toLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.toLowerCase().length !== 1) {
+ $ERROR('#2: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; __obj.toLowerCase = String.prototype.toLowerCase; __obj.toLowerCase().length === 1. Actual: '+__obj.toLowerCase().length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T14.js
new file mode 100644
index 000000000..096942c8e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T14.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T14;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Call toLowerCase() function for RegExp object;
+*/
+
+var __reg = new RegExp("ABC");
+__reg.toLowerCase = String.prototype.toLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__reg.toLowerCase() !== "/abc/") {
+ $ERROR('#1: var __reg = new RegExp("ABC"); __reg.toLowerCase = String.prototype.toLowerCase; __reg.toLowerCase() === "/abc/". Actual: '+__reg.toLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T2.js
new file mode 100644
index 000000000..dabf5dc92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T2;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Instance is Boolean object;
+*/
+
+__instance = new Boolean;
+
+__instance.toLowerCase = String.prototype.toLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.toLowerCase() !== "false") {
+ $ERROR('#1: __instance = new Boolean; __instance.toLowerCase = String.prototype.toLowerCase; __instance.toLowerCase() === "false". Actual: '+__instance.toLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T3.js
new file mode 100644
index 000000000..a7f8bbeb3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T3;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Checking by using eval;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (eval("\"BJ\"").toLowerCase() !== "bj") {
+ $ERROR('#1: eval("\\"BJ\\"").toLowerCase() === "bj". Actual: '+eval("\"BJ\"").toLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T4.js
new file mode 100644
index 000000000..2c24dd45b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T4.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T4;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Call toLowerCase() function without arguments of string and from empty string;
+*/
+
+var __lowerCase = "".toLowerCase();
+
+var __expected = "";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__lowerCase.length !== __expected.length) {
+ $ERROR('#1: __lowerCase = "".toLowerCase(); __expected = ""; __lowerCase.length === __expected.length. Actual: '+__lowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__lowerCase.index !== __expected.index) {
+ $ERROR('#2: __lowerCase = "".toLowerCase(); __expected = ""; __lowerCase.index === __expected.index. Actual: '+__lowerCase.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__lowerCase.input !== __expected.input) {
+ $ERROR('#3: __lowerCase = "".toLowerCase(); __expected = ""; __lowerCase.input === __expected.input. Actual: '+__lowerCase.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__lowerCase[0]!==__expected[0]) {
+ $ERROR('#4: __lowerCase = "".toLowerCase(); __expected = ""; __lowerCase[0]==='+__expected[0]+'. Actual: '+__lowerCase[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T5.js
new file mode 100644
index 000000000..7a1c12180
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T5;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Call toLowerCase() function for function call;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(null) evaluates to "null" match(null) evaluates to match("null")
+if (function(){return "GnulLuNa"}().toLowerCase() !== "gnulluna") {
+ $ERROR('#1: function(){return "GnulLuNa"}().toLowerCase() === "gnulluna". Actual: '+function(){return "GnulLuNa"}().toLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T6.js
new file mode 100644
index 000000000..2db519b9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T6;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Call toLowerCase() function of Number.NEGATIVE_INFINITY;
+*/
+
+Number.prototype.toLowerCase = String.prototype.toLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY).toLowerCase() !== "-infinity") {
+ $ERROR('#1: Number.prototype.toLowerCase = String.prototype.toLowerCase; (Number.NEGATIVE_INFINITY).toLowerCase() === "-infinity". Actual: '+(Number.NEGATIVE_INFINITY).toLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T7.js
new file mode 100644
index 000000000..776db5b30
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T7;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Call toLowerCase() function of NaN;
+*/
+
+Number.prototype.toLowerCase = String.prototype.toLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (NaN.toLowerCase()!== "nan") {
+ $ERROR('#1: Number.prototype.toLowerCase = String.prototype.toLowerCase; NaN.toLowerCase()=== "nan". Actual: '+NaN.toLowerCase());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T8.js
new file mode 100644
index 000000000..8a29ffb71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T8.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T8;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Call toLowerCase() function of Infinity;
+*/
+
+Number.prototype.toLowerCase = String.prototype.toLowerCase;
+
+if (Infinity.toLowerCase()!== "infinity") {
+ $ERROR('#1: Number.prototype.toLowerCase = String.prototype.toLowerCase; Infinity.toLowerCase()=== "infinity". Actual: '+Infinity.toLowerCase());
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T9.js
new file mode 100644
index 000000000..2d574c0fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A1_T9.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1_T9;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase();
+* @description: Call toLowerCase() function of string object;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+var __lowerCase = new String(__obj).toLowerCase();
+
+var __expected ="undefined";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__lowerCase.length !== __expected.length) {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLowerCase(); __expected ="undefined"; __lowerCase.length === __expected.length. Actual: '+__lowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__lowerCase.index !== __expected.index) {
+ $ERROR('#2: __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLowerCase(); __expected ="undefined"; __lowerCase.index === __expected.index. Actual: '+__lowerCase.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__lowerCase.input !== __expected.input) {
+ $ERROR('#3: __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLowerCase(); __expected ="undefined"; __lowerCase.input === __expected.input. Actual: '+__lowerCase.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__lowerCase[index]!==__expected[index]) {
+ $ERROR('#4.'+index+': __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLowerCase(); __expected ="undefined"; __lowerCase['+index+']==='+__expected[index]+'. Actual: '+__lowerCase[index]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A2_T1.js
new file mode 100644
index 000000000..c7a793d3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A2_T1;
+* @section: 15.5.4.16;
+* @assertion: String.prototype.toLowerCase() return a string, but not a String object;
+* @description: Checking returned result;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("Hello, WoRlD!".toLowerCase() !== "hello, world!") {
+ $ERROR('#1: "Hello, WoRlD!".toLowerCase() === "hello, world!". Actual: '+("Hello, WoRlD!".toLowerCase()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ("Hello, WoRlD!".toLowerCase() !== String("hello, world!")) {
+ $ERROR('#2: "Hello, WoRlD!".toLowerCase() === String("hello, world!"). Actual: '+("Hello, WoRlD!".toLowerCase()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ("Hello, WoRlD!".toLowerCase() ===new String("hello, world!")) {
+ $ERROR('#3: "Hello, WoRlD!".toLowerCase() !== new String("hello, world!")');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A6.js
new file mode 100644
index 000000000..0630b4e6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A6;
+* @section: 15.5.4.16, 13.2;
+* @assertion: String.prototype.toLowerCase has not prototype property;
+* @description: Checking String.prototype.toLowerCase.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.toLowerCase.prototype !== undefined) {
+ $ERROR('#1: String.prototype.toLowerCase.prototype === undefined. Actual: '+String.prototype.toLowerCase.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A7.js
new file mode 100644
index 000000000..7a834e9c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A7;
+* @section: 15.5.4.16, 13.2;
+* @assertion: String.prototype.toLowerCase can't be used as constructor;
+* @description: Checking if creating the String.prototype.toLowerCase object fails;
+*/
+
+var __FACTORY = String.prototype.toLowerCase;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: var __FACTORY = String.prototype.toLowerCase; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.1: var __FACTORY = String.prototype.toLowerCase; "__instance = new __FACTORY" throws a TypeError. Actual: ' + (e));
+ }
+};
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A8.js
new file mode 100644
index 000000000..6e841fd07
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A8;
+* @section: 15.5.4.16;
+* @assertion: The String.prototype.toLowerCase.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.toLowerCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.toLowerCase.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.toLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLowerCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.toLowerCase.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.toLowerCase.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.toLowerCase){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.toLowerCase){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A9.js
new file mode 100644
index 000000000..28706c099
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.16_String.prototype.toLowerCase/S15.5.4.16_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A9;
+* @section: 15.5.4.16;
+* @assertion: The String.prototype.toLowerCase.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.toLowerCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.toLowerCase.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.toLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLowerCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.toLowerCase.length) {
+ $ERROR('#1: delete String.prototype.toLowerCase.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.toLowerCase.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.toLowerCase.length; String.prototype.toLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLowerCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A10.js
new file mode 100644
index 000000000..bb762f5b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A10;
+* @section: 15.5.4.17;
+* @assertion: The String.prototype.toLocaleLowerCase.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.toLocaleLowerCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.toLocaleLowerCase.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.toLocaleLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleLowerCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__obj = String.prototype.toLocaleLowerCase.length;
+
+String.prototype.toLocaleLowerCase.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.toLocaleLowerCase.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.toLocaleLowerCase.length; String.prototype.toLocaleLowerCase.length = function(){return "shifted";}; String.prototype.toLocaleLowerCase.length === __obj. Actual: '+String.prototype.toLocaleLowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A11.js
new file mode 100644
index 000000000..6ad7e5266
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A11;
+* @section: 15.5.4.17;
+* @assertion: The length property of the toLocaleLowerCase method is 0;
+* @description: Checking String.prototype.toLocaleLowerCase.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.toLocaleLowerCase.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.toLocaleLowerCase.hasOwnProperty("length") return true. Actual: '+String.prototype.toLocaleLowerCase.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.toLocaleLowerCase.length !== 0) {
+ $ERROR('#2: String.prototype.toLocaleLowerCase.length === 0. Actual: '+String.prototype.toLocaleLowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T1.js
new file mode 100644
index 000000000..981c3cd8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T1;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Arguments is true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.toLocaleLowerCase() !== "true") {
+ $ERROR('#1: __instance = new Object(true); __instance.toLocaleLowerCase = String.prototype.toLocaleLowerCase; __instance.toLocaleLowerCase() === "true". Actual: '+__instance.toLocaleLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T10.js
new file mode 100644
index 000000000..53fad3e0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T10.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T10;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Call toLocaleLowerCase() function of object with overrode toString function;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+__obj.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.toLocaleLowerCase() !=="ab") {
+ $ERROR('#1: var __obj = {toString:function(){return "\u0041B";}}; __obj.toLocaleLowerCase = String.prototype.toLocaleLowerCase; __obj.toLocaleLowerCase() ==="ab". Actual: '+__obj.toLocaleLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T11.js
new file mode 100644
index 000000000..fddcf72a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T11;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Override toString function, toString throw exception, then call toLocaleLowerCase() function for this object;
+*/
+
+var __obj = {toString:function(){throw "intostr";}}
+__obj.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.toLocaleLowerCase();
+ $FAIL('#1: "var x = __obj.toLocaleLowerCase()" lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T12.js
new file mode 100644
index 000000000..24bebb2c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T12.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T12;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Override toString and valueOf functions, valueOf throw exception, then call toLocaleLowerCase() function for this object;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){throw "intostr";}}
+__obj.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.toLocaleLowerCase();
+ $FAIL('#1: "var x = __obj.toLocaleLowerCase()" lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T13.js
new file mode 100644
index 000000000..f799baa54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T13.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T13;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Override toString and valueOf functions, then call toLocaleLowerCase() function for this object;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}
+__obj.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.toLocaleLowerCase() !=="1") {
+ $ERROR('#1: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; __obj.toLocaleLowerCase = String.prototype.toLocaleLowerCase; __obj.toLocaleLowerCase() ==="1". Actual: '+__obj.toLocaleLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.toLocaleLowerCase().length !== 1) {
+ $ERROR('#2: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; __obj.toLocaleLowerCase = String.prototype.toLocaleLowerCase; __obj.toLocaleLowerCase().length === 1. Actual: '+__obj.toLocaleLowerCase().length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T14.js
new file mode 100644
index 000000000..b565c9f27
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T14.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T14;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Call toLocaleLowerCase() function for RegExp object;
+*/
+
+var __reg = new RegExp("ABC");
+__reg.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__reg.toLocaleLowerCase() !== "/abc/") {
+ $ERROR('#1: var __reg = new RegExp("ABC"); __reg.toLocaleLowerCase = String.prototype.toLocaleLowerCase; __reg.toLocaleLowerCase() === "/abc/". Actual: '+__reg.toLocaleLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T2.js
new file mode 100644
index 000000000..af33165a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T2;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.toLocaleLowerCase() !== "false") {
+ $ERROR('#1: __instance = new Boolean; __instance.toLocaleLowerCase = String.prototype.toLocaleLowerCase; __instance.toLocaleLowerCase() === "false". Actual: '+__instance.toLocaleLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T3.js
new file mode 100644
index 000000000..1f93dea59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T3;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Checking by using eval;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (eval("\"BJ\"").toLocaleLowerCase() !== "bj") {
+ $ERROR('#1: eval("\\"BJ\\"").toLocaleLowerCase() === "bj". Actual: '+eval("\"BJ\"").toLocaleLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T4.js
new file mode 100644
index 000000000..35f3c8c69
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T4.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T4;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Call toLocaleLowerCase() function without arguments of string and from empty string;
+*/
+
+var __lowerCase = "".toLocaleLowerCase();
+
+var __expected = "";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__lowerCase.length !== __expected.length) {
+ $ERROR('#1: __lowerCase = "".toLocaleLowerCase(); __expected = ""; __lowerCase.length === __expected.length. Actual: '+__lowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__lowerCase.index !== __expected.index) {
+ $ERROR('#2: __lowerCase = "".toLocaleLowerCase(); __expected = ""; __lowerCase.index === __expected.index. Actual: '+__lowerCase.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__lowerCase.input !== __expected.input) {
+ $ERROR('#3: __lowerCase = "".toLocaleLowerCase(); __expected = ""; __lowerCase.input === __expected.input. Actual: '+__lowerCase.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__lowerCase[0]!==__expected[0]) {
+ $ERROR('#4: __lowerCase = "".toLocaleLowerCase(); __expected = ""; __lowerCase[0]===__expected[0]. Actual: '+__lowerCase[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T5.js
new file mode 100644
index 000000000..fd261b430
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T5;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Call toLocaleLowerCase() function for function call;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(null) evaluates to "null" match(null) evaluates to match("null")
+if (function(){return "GnulLuNa"}().toLocaleLowerCase() !== "gnulluna") {
+ $ERROR('#1: function(){return "GnulLuNa"}().toLocaleLowerCase() === "gnulluna". Actual: '+function(){return "GnulLuNa"}().toLocaleLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T6.js
new file mode 100644
index 000000000..a65ad9182
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T6;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Call toLocaleLowerCase() function of Number.NEGATIVE_INFINITY;
+*/
+
+Number.prototype.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY).toLocaleLowerCase() !== "-infinity") {
+ $ERROR('#1: Number.prototype.toLocaleLowerCase = String.prototype.toLocaleLowerCase; (Number.NEGATIVE_INFINITY).toLocaleLowerCase() === "-infinity". Actual: '+(Number.NEGATIVE_INFINITY).toLocaleLowerCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T7.js
new file mode 100644
index 000000000..d01922e24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T7;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Call toLocaleLowerCase() function of NaN;
+*/
+
+Number.prototype.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (NaN.toLocaleLowerCase()!== "nan") {
+ $ERROR('#1: Number.prototype.toLocaleLowerCase = String.prototype.toLocaleLowerCase; NaN.toLocaleLowerCase()=== "nan". Actual: '+NaN.toLocaleLowerCase());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T8.js
new file mode 100644
index 000000000..7b884b849
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T8.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T8;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Call toLocaleLowerCase() function of Infinity;
+*/
+
+Number.prototype.toLocaleLowerCase = String.prototype.toLocaleLowerCase;
+
+if (Infinity.toLocaleLowerCase()!== "infinity") {
+ $ERROR('#1: Number.prototype.toLocaleLowerCase = String.prototype.toLocaleLowerCase; Infinity.toLocaleLowerCase()=== "infinity". Actual: '+Infinity.toLocaleLowerCase());
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T9.js
new file mode 100644
index 000000000..b3941eaf6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A1_T9.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A1_T9;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase();
+* @description: Call toLocaleLowerCase() function of string object;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+var __lowerCase = new String(__obj).toLocaleLowerCase();
+
+
+var __expected ="undefined";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__lowerCase.length !== __expected.length) {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLocaleLowerCase(); __expected ="undefined"; __lowerCase.length === __expected.length. Actual: '+__lowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__lowerCase.index !== __expected.index) {
+ $ERROR('#2: __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLocaleLowerCase(); __expected ="undefined"; __lowerCase.index === __expected.index. Actual: '+__lowerCase.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__lowerCase.input !== __expected.input) {
+ $ERROR('#3: __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLocaleLowerCase(); __expected ="undefined"; __lowerCase.input === __expected.input. Actual: '+__lowerCase.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__lowerCase[index]!==__expected[index]) {
+ $ERROR('#4.'+index+': __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLocaleLowerCase(); __expected ="undefined"; __lowerCase['+index+']=== '+__expected[index]+'. Actual: '+__lowerCase[index]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A2_T1.js
new file mode 100644
index 000000000..b26679e34
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A2_T1;
+* @section: 15.5.4.17;
+* @assertion: String.prototype.toLocaleLowerCase() return a string, but not a String object;
+* @description: Checking returned result;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("Hello, WoRlD!".toLocaleLowerCase() !== "hello, world!") {
+ $ERROR('#1: "Hello, WoRlD!".toLocaleLowerCase() === "hello, world!". Actual: '+("Hello, WoRlD!".toLocaleLowerCase()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ("Hello, WoRlD!".toLocaleLowerCase() !== String("hello, world!")) {
+ $ERROR('#2: "Hello, WoRlD!".toLocaleLowerCase() === String("hello, world!"). Actual: '+("Hello, WoRlD!".toLocaleLowerCase()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ("Hello, WoRlD!".toLocaleLowerCase() === new String("hello, world!")) {
+ $ERROR('#3: "Hello, WoRlD!".toLocaleLowerCase() !== new String("hello, world!")');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A6.js
new file mode 100644
index 000000000..49329b5be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A6;
+* @section: 15.5.4.17, 13.2;
+* @assertion: String.prototype.toLocaleLowerCase has not prototype property;
+* @description: Checking String.prototype.toLocaleLowerCase.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.toLocaleLowerCase.prototype !== undefined) {
+ $ERROR('#1: String.prototype.toLocaleLowerCase.prototype === undefined. Actual: '+String.prototype.toLocaleLowerCase.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A7.js
new file mode 100644
index 000000000..ca4fbba8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A7;
+* @section: 15.5.4.17, 13.2;
+* @assertion: String.prototype.toLocaleLowerCase can't be used as constructor;
+* @description: Checking if creating the String.prototype.toLocaleLowerCase object fails;
+*/
+
+var __FACTORY = String.prototype.toLocaleLowerCase;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: var __FACTORY = String.prototype.toLocaleLowerCase; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.1: var __FACTORY = String.prototype.toLocaleLowerCase; "var __instance = new __FACTORY" throw a TypeError. Actual: ' + (e));
+ }
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A8.js
new file mode 100644
index 000000000..96b2eda47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A8;
+* @section: 15.5.4.17;
+* @assertion: The String.prototype.toLocaleLowerCase.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.toLocaleLowerCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.toLocaleLowerCase.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.toLocaleLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleLowerCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.toLocaleLowerCase.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.toLocaleLowerCase.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (var p in String.prototype.toLocaleLowerCase){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.toLocaleLowerCase){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A9.js
new file mode 100644
index 000000000..24c16625a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.17_A9;
+* @section: 15.5.4.17;
+* @assertion: The String.prototype.toLocaleLowerCase.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.toLocaleLowerCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.toLocaleLowerCase.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.toLocaleLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleLowerCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.toLocaleLowerCase.length) {
+ $ERROR('#1: delete String.prototype.toLocaleLowerCase.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.toLocaleLowerCase.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.toLocaleLowerCase.length; String.prototype.toLocaleLowerCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleLowerCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A10.js
new file mode 100644
index 000000000..babee0f74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A10;
+* @section: 15.5.4.18;
+* @assertion: The String.prototype.toUpperCase.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.toUpperCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.toUpperCase.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.toUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toUpperCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.toUpperCase.length;
+
+String.prototype.toUpperCase.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.toUpperCase.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.toUpperCase.length; String.prototype.toUpperCase.length = function(){return "shifted";}; String.prototype.toUpperCase.length === __obj. Actual: '+String.prototype.toUpperCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A11.js
new file mode 100644
index 000000000..3b1bbf2e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A11;
+* @section: 15.5.4.18;
+* @assertion: The length property of the toUpperCase method is 0;
+* @description: Checking String.prototype.toUpperCase.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.toUpperCase.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.toUpperCase.hasOwnProperty("length") return true. Actual: '+String.prototype.toUpperCase.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.toUpperCase.length !== 0) {
+ $ERROR('#2: String.prototype.toUpperCase.length === 0. Actual: '+String.prototype.toUpperCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T1.js
new file mode 100644
index 000000000..ae56c021d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T1;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Arguments is true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.toUpperCase = String.prototype.toUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.toUpperCase() !== "TRUE") {
+ $ERROR('#1: __instance = new Object(true); __instance.toUpperCase = String.prototype.toUpperCase; __instance.toUpperCase() === "TRUE". Actual: '+__instance.toUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T10.js
new file mode 100644
index 000000000..58004833a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T10.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T10;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Call toUpperCase() function of object with overrode toString function;
+*/
+
+var __obj = {toString:function(){return "\u0041b";}}
+__obj.toUpperCase = String.prototype.toUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.toUpperCase() !=="AB") {
+ $ERROR('#1: var __obj = {toString:function(){return "\u0041b";}}; __obj.toUpperCase = String.prototype.toUpperCase; __obj.toUpperCase() ==="AB". Actual: '+__obj.toUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T11.js
new file mode 100644
index 000000000..e4e09df11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T11.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T11;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Override toString function, toString throw exception, then call toUpperCase() function for this object;
+*/
+
+var __obj = {toString:function(){throw "intostr";}}
+__obj.toUpperCase = String.prototype.toUpperCase;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.toUpperCase();
+ $FAIL('#1: "var x = __obj.toUpperCase()" lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T12.js
new file mode 100644
index 000000000..7f569f52f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T12.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T12;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Override toString and valueOf functions, valueOf throw exception, then call toUpperCase() function for this object;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){throw "intostr";}}
+__obj.toUpperCase = String.prototype.toUpperCase;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.toUpperCase();
+ $FAIL('#1: "var x = __obj.toUpperCase()" lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T13.js
new file mode 100644
index 000000000..cec4782ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T13.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T13;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Override toString and valueOf functions, then call toUpperCase() function for this object;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}
+__obj.toUpperCase = String.prototype.toUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.toUpperCase() !=="1") {
+ $ERROR('#1: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; __obj.toUpperCase = String.prototype.toUpperCase; __obj.toUpperCase() ==="1". Actual: '+__obj.toUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.toUpperCase().length !== 1) {
+ $ERROR('#2: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; __obj.toUpperCase = String.prototype.toUpperCase; __obj.toUpperCase().length === 1. Actual: '+__obj.toUpperCase().length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T14.js
new file mode 100644
index 000000000..91d259a7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T14.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T14;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Call toUpperCase() function of RegExp object;
+*/
+
+var __reg = new RegExp("abc");
+__reg.toUpperCase = String.prototype.toUpperCase;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__reg.toUpperCase() !== "/ABC/") {
+ $ERROR('#1: var __reg = new RegExp("abc"); __reg.toUpperCase = String.prototype.toUpperCase; __reg.toUpperCase() === "/ABC/". Actual: '+__reg.toUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T2.js
new file mode 100644
index 000000000..a189cb320
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T2;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.toUpperCase = String.prototype.toUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.toUpperCase() !== "FALSE") {
+ $ERROR('#1: __instance = new Boolean; __instance.toUpperCase = String.prototype.toUpperCase; __instance.toUpperCase() === "FALSE". Actual: '+__instance.toUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T3.js
new file mode 100644
index 000000000..48c1d1242
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T3;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Checking by using eval;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (eval("\"bj\"").toUpperCase() !== "BJ") {
+ $ERROR('#1: eval("\\"bj\\"").toUpperCase() === "BJ". Actual: '+eval("\"bj\"").toUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T4.js
new file mode 100644
index 000000000..788c9705c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T4.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T4;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Call toUpperCase() function without arguments of string and from empty string;
+*/
+
+var __lowerCase = "".toUpperCase();
+
+var __expected = "";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__lowerCase.length !== __expected.length) {
+ $ERROR('#1: __lowerCase = "".toUpperCase(); __expected = ""; __lowerCase.length === __expected.length. Actual: '+__lowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__lowerCase.index !== __expected.index) {
+ $ERROR('#2: __lowerCase = "".toUpperCase(); __expected = ""; __lowerCase.index === __expected.index. Actual: '+__lowerCase.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__lowerCase.input !== __expected.input) {
+ $ERROR('#3: __lowerCase = "".toUpperCase(); __expected = ""; __lowerCase.input === __expected.input. Actual: '+__lowerCase.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__lowerCase[0]!==__expected[0]) {
+ $ERROR('#4: __lowerCase = "".toUpperCase(); __expected = ""; __lowerCase[0]==='+__expected[0]+'. Actual: '+__lowerCase[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T5.js
new file mode 100644
index 000000000..9689a2c2e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T5;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Call toUpperCase() function of function call;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(null) evaluates to "null" match(null) evaluates to match("null")
+if (function(){return "GnulLuNa"}().toUpperCase() !== "GNULLUNA") {
+ $ERROR('#1: function(){return "GnulLuNa"}().toUpperCase() === "GNULLUNA". Actual: '+function(){return "GnulLuNa"}().toUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T6.js
new file mode 100644
index 000000000..28d8a0212
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T6;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Call toUpperCase() function of Number.NEGATIVE_INFINITY;
+*/
+
+Number.prototype.toUpperCase = String.prototype.toUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY).toUpperCase() !== "-INFINITY") {
+ $ERROR('#1: Number.prototype.toUpperCase = String.prototype.toUpperCase; (Number.NEGATIVE_INFINITY).toUpperCase() === "-INFINITY". Actual: '+(Number.NEGATIVE_INFINITY).toUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T7.js
new file mode 100644
index 000000000..868301dbe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T7;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Call toUpperCase() function of NaN;
+*/
+
+Number.prototype.toUpperCase = String.prototype.toUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (NaN.toUpperCase()!== "NAN") {
+ $ERROR('#1: Number.prototype.toUpperCase = String.prototype.toUpperCase; NaN.toUpperCase()=== "NAN". Actual: '+NaN.toUpperCase());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T8.js
new file mode 100644
index 000000000..277f8184f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T8.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.
+
+/**
+* @name: S15.5.4.18_A1_T8;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Call toUpperCase() function of Infinity;
+*
+*/
+
+Number.prototype.toUpperCase = String.prototype.toUpperCase;
+
+if (Infinity.toUpperCase()!== "INFINITY") {
+ $ERROR('#1: Number.prototype.toUpperCase = String.prototype.toUpperCase; Infinity.toUpperCase()=== "INFINITY". Actual: '+Infinity.toUpperCase());
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T9.js
new file mode 100644
index 000000000..4e56c90d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A1_T9.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1_T9;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase();
+* @description: Call toUpperCase() function of string object;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+var __upperCase = new String(__obj).toUpperCase();
+
+var __expected ="UNDEFINED";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__upperCase.length !== __expected.length) {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; __upperCase = new String(__obj).toUpperCase(); __expected ="UNDEFINED"; __upperCase.length === __expected.length. Actual: '+__upperCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__upperCase.index !== __expected.index) {
+ $ERROR('#2: __obj = {valueOf:function(){}, toString:void 0}; __upperCase = new String(__obj).toUpperCase(); __expected ="UNDEFINED"; __upperCase.index === __expected.index. Actual: '+__upperCase.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__upperCase.input !== __expected.input) {
+ $ERROR('#3: __obj = {valueOf:function(){}, toString:void 0}; __upperCase = new String(__obj).toUpperCase(); __expected ="UNDEFINED"; __upperCase.input === __expected.input. Actual: '+__upperCase.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__upperCase[index]!==__expected[index]) {
+ $ERROR('#4.'+index+': __obj = {valueOf:function(){}, toString:void 0}; __upperCase = new String(__obj).toUpperCase(); __expected ="UNDEFINED"; __upperCase['+index+']==='+__expected[index]+'. Actual: '+__upperCase[index]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A2_T1.js
new file mode 100644
index 000000000..3ac25001b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A2_T1;
+* @section: 15.5.4.18;
+* @assertion: String.prototype.toUpperCase() return a string, but not a String object;
+* @description: Checking returned result;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("Hello, WoRlD!".toUpperCase() !== "HELLO, WORLD!") {
+ $ERROR('#1: "Hello, WoRlD!".toUpperCase() === "HELLO, WORLD!". Actual: '+("Hello, WoRlD!".toUpperCase()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ("Hello, WoRlD!".toUpperCase() !== String("HELLO, WORLD!")) {
+ $ERROR('#2: "Hello, WoRlD!".toUpperCase() === String("HELLO, WORLD!"). Actual: '+("Hello, WoRlD!".toUpperCase()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ("Hello, WoRlD!".toUpperCase() ===new String("HELLO, WORLD!")) {
+ $ERROR('#3: "Hello, WoRlD!".toUpperCase() !== new String("HELLO, WORLD!")');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A6.js
new file mode 100644
index 000000000..c0bea8f32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A6;
+* @section: 15.5.4.18, 13.2;
+* @assertion: String.prototype.toUpperCase has not prototype property;
+* @description: Checking String.prototype.toUpperCase.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.toUpperCase.prototype !== undefined) {
+ $ERROR('#1: String.prototype.toUpperCase.prototype === undefined. Actual: '+String.prototype.toUpperCase.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A7.js
new file mode 100644
index 000000000..4a3550f63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A7;
+* @section: 15.5.4.18, 13.2;
+* @assertion: String.prototype.toUpperCase can't be used as constructor;
+* @description: Checking if creating the String.prototype.toUpperCase object fails;
+*/
+
+var __FACTORY = String.prototype.toUpperCase;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: var __FACTORY = String.prototype.toUpperCase; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.1: var __FACTORY = String.prototype.toUpperCase; "__instance = new __FACTORY" throw a TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A8.js
new file mode 100644
index 000000000..47824acac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A8;
+* @section: 15.5.4.18;
+* @assertion: The String.prototype.toUpperCase.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.toUpperCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.toUpperCase.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.toUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toUpperCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.toUpperCase.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.toUpperCase.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.toUpperCase){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.toUpperCase){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A9.js
new file mode 100644
index 000000000..a1ae49b0c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.18_String.prototype.toUpperCase/S15.5.4.18_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A9;
+* @section: 15.5.4.18;
+* @assertion: The String.prototype.toUpperCase.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.toUpperCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.toUpperCase.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.toUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toUpperCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.toUpperCase.length) {
+ $ERROR('#1: delete String.prototype.toUpperCase.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.toUpperCase.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.toUpperCase.length; String.prototype.toUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toUpperCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A10.js
new file mode 100644
index 000000000..36ca6df5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A10;
+* @section: 15.5.4.19;
+* @assertion: The String.prototype.toLocaleUpperCase.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.toLocaleUpperCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.toLocaleUpperCase.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.toLocaleUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleUpperCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.toLocaleUpperCase.length;
+
+String.prototype.toLocaleUpperCase.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.toLocaleUpperCase.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.toLocaleUpperCase.length; String.prototype.toLocaleUpperCase.length = function(){return "shifted";}; String.prototype.toLocaleUpperCase.length === __obj. Actual: '+String.prototype.toLocaleUpperCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A11.js
new file mode 100644
index 000000000..692c99e21
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A11;
+* @section: 15.5.4.19;
+* @assertion: The length property of the toLocaleUpperCase method is 0;
+* @description: Checking String.prototype.toLocaleUpperCase.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.toLocaleUpperCase.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.toLocaleUpperCase.hasOwnProperty("length") return true. Actual: '+String.prototype.toLocaleUpperCase.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.toLocaleUpperCase.length !== 0) {
+ $ERROR('#2: String.prototype.toLocaleUpperCase.length === 0. Actual: '+String.prototype.toLocaleUpperCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T1.js
new file mode 100644
index 000000000..3a320fec9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T1;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Arguments is true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.toLocaleUpperCase() !== "TRUE") {
+ $ERROR('#1: __instance = new Object(true); __instance.toLocaleUpperCase = String.prototype.toLocaleUpperCase; __instance.toLocaleUpperCase() === "TRUE". Actual: '+__instance.toLocaleUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T10.js
new file mode 100644
index 000000000..b3d14cd71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T10.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T10;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Call toLocaleUpperCase() function of object with overrode toString function;
+*/
+
+var __obj = {toString:function(){return "\u0041b";}}
+__obj.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.toLocaleUpperCase() !=="AB") {
+ $ERROR('#1: var __obj = {toString:function(){return "\u0041b";}}; __obj.toLocaleUpperCase = String.prototype.toLocaleUpperCase; __obj.toLocaleUpperCase() ==="AB". Actual: '+__obj.toLocaleUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T11.js
new file mode 100644
index 000000000..78f015f77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T11.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T11;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Override toString function, toString throw exception, then call toLocaleUpperCase() function for this object;
+*/
+
+var __obj = {toString:function(){throw "intostr";}}
+__obj.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.toLocaleUpperCase();
+ $FAIL('#1: "var x = __obj.toLocaleUpperCase()" lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T12.js
new file mode 100644
index 000000000..964182e18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T12.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T12;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Override toString and valueOf functions, valueOf throw exception, then call toLocaleUpperCase() function for this object;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){throw "intostr";}}
+__obj.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.toLocaleUpperCase();
+ $FAIL('#1: "var x = __obj.toLocaleUpperCase()" lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T13.js
new file mode 100644
index 000000000..dd9a0a28f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T13.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T13;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Override toString and valueOf functions, then call toLocaleUpperCase() function for this object;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}
+__obj.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.toLocaleUpperCase() !=="1") {
+ $ERROR('#1: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; __obj.toLocaleUpperCase = String.prototype.toLocaleUpperCase; __obj.toLocaleUpperCase() ==="1". Actual: '+__obj.toLocaleUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.toLocaleUpperCase().length !== 1) {
+ $ERROR('#2: var __obj = {toString:function(){return {};},valueOf:function(){return 1;}}; __obj.toLocaleUpperCase = String.prototype.toLocaleUpperCase; __obj.toLocaleUpperCase().length === 1. Actual: '+__obj.toLocaleUpperCase().length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T14.js
new file mode 100644
index 000000000..75499010f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T14.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T14;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Call toLocaleUpperCase() function for RegExp object;
+*/
+
+var __reg = new RegExp("abc");
+__reg.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__reg.toLocaleUpperCase() !== "/ABC/") {
+ $ERROR('#1: var __reg = new RegExp("abc"); __reg.toLocaleUpperCase = String.prototype.toLocaleUpperCase; __reg.toLocaleUpperCase() === "/ABC/". Actual: '+__reg.toLocaleUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T2.js
new file mode 100644
index 000000000..e4414cfdb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T2;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.toLocaleUpperCase() !== "FALSE") {
+ $ERROR('#1: __instance = new Boolean; __instance.toLocaleUpperCase = String.prototype.toLocaleUpperCase; __instance.toLocaleUpperCase() === "FALSE". Actual: '+__instance.toLocaleUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T3.js
new file mode 100644
index 000000000..c34e44546
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T3;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Checking by using eval;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (eval("\"bj\"").toLocaleUpperCase() !== "BJ") {
+ $ERROR('#1: eval("\\"bj\\"").toLocaleUpperCase() === "BJ". Actual: '+eval("\"bj\"").toLocaleUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T4.js
new file mode 100644
index 000000000..e41190077
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T4.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T4;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Call toLocaleUpperCase() function without arguments of string and from empty string;
+*/
+
+var __lowerCase = "".toLocaleUpperCase();
+var __expected = "";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__lowerCase.length !== __expected.length) {
+ $ERROR('#1: __lowerCase = "".toLocaleUpperCase(); __expected = ""; __lowerCase.length === __expected.length. Actual: '+__lowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__lowerCase.index !== __expected.index) {
+ $ERROR('#2: __lowerCase = "".toLocaleUpperCase(); __expected = ""; __lowerCase.index === __expected.index. Actual: '+__lowerCase.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__lowerCase.input !== __expected.input) {
+ $ERROR('#3: __lowerCase = "".toLocaleUpperCase(); __expected = ""; __lowerCase.input === __expected.input. Actual: '+__lowerCase.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__lowerCase[0]!==__expected[0]) {
+ $ERROR('#4: __lowerCase = "".toLocaleUpperCase(); __lowerCase[0]==='+__expected[0]+'. Actual: '+__lowerCase[0]);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T5.js
new file mode 100644
index 000000000..344668545
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T5;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Call toLocaleUpperCase() function of function call;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(null) evaluates to "null" match(null) evaluates to match("null")
+if (function(){return "GnulLuNa"}().toLocaleUpperCase() !== "GNULLUNA") {
+ $ERROR('#1: function(){return "GnulLuNa"}().toLocaleUpperCase() === "GNULLUNA". Actual: '+function(){return "GnulLuNa"}().toLocaleUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T6.js
new file mode 100644
index 000000000..4718a90d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T6;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Call toLocaleUpperCase() function of Number.NEGATIVE_INFINITY;
+*/
+
+Number.prototype.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY).toLocaleUpperCase() !== "-INFINITY") {
+ $ERROR('#1: Number.prototype.toLocaleUpperCase = String.prototype.toLocaleUpperCase; (Number.NEGATIVE_INFINITY).toLocaleUpperCase() === "-INFINITY". Actual: '+(Number.NEGATIVE_INFINITY).toLocaleUpperCase() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T7.js
new file mode 100644
index 000000000..f636a51f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T7;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Call toLocaleUpperCase() function of NaN;
+*/
+
+Number.prototype.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (NaN.toLocaleUpperCase()!== "NAN") {
+ $ERROR('#1: Number.prototype.toLocaleUpperCase = String.prototype.toLocaleUpperCase; NaN.toLocaleUpperCase()=== "NAN". Actual: '+NaN.toLocaleUpperCase());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T8.js
new file mode 100644
index 000000000..697eb15ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T8.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T8;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Call toLocaleUpperCase() function of Infinity;
+*/
+
+Number.prototype.toLocaleUpperCase = String.prototype.toLocaleUpperCase;
+
+if (Infinity.toLocaleUpperCase()!== "INFINITY") {
+ $ERROR('#1: Number.prototype.toLocaleUpperCase = String.prototype.toLocaleUpperCase; Infinity.toLocaleUpperCase()=== "INFINITY". Actual: '+Infinity.toLocaleUpperCase());
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T9.js
new file mode 100644
index 000000000..e3357ae43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A1_T9.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A1_T9;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase();
+* @description: Call toLocaleUpperCase() function of string object;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+var __lowerCase = new String(__obj).toLocaleUpperCase();
+
+var __expected ="UNDEFINED";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__lowerCase.length !== __expected.length) {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLocaleUpperCase(); __expected ="UNDEFINED"; __lowerCase.length === __expected.length. Actual: '+__lowerCase.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__lowerCase.index !== __expected.index) {
+ $ERROR('#2: __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLocaleUpperCase(); __expected ="UNDEFINED"; __lowerCase.index === __expected.index. Actual: '+__lowerCase.index );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__lowerCase.input !== __expected.input) {
+ $ERROR('#3: __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLocaleUpperCase(); __expected ="UNDEFINED"; __lowerCase.input === __expected.input. Actual: '+__lowerCase.input );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+for(var index=0; index<__expected.length; index++) {
+ if (__lowerCase[index]!==__expected[index]) {
+ $ERROR('#4.'+index+': __obj = {valueOf:function(){}, toString:void 0}; __lowerCase = new String(__obj).toLocaleUpperCase(); __expected ="UNDEFINED"; __lowerCase['+index+']==='+__expected[index]+'. Actual: '+__lowerCase[index]);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A2_T1.js
new file mode 100644
index 000000000..80315d3c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A2_T1;
+* @section: 15.5.4.19;
+* @assertion: String.prototype.toLocaleUpperCase() return a string, but not a String object;
+* @description: Checking returned result;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("Hello, WoRlD!".toLocaleUpperCase() !== "HELLO, WORLD!") {
+ $ERROR('#1: "Hello, WoRlD!".toLocaleUpperCase() === "HELLO, WORLD!". Actual: '+("Hello, WoRlD!".toLocaleUpperCase()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ("Hello, WoRlD!".toLocaleUpperCase() !== String("HELLO, WORLD!")) {
+ $ERROR('#2: "Hello, WoRlD!".toLocaleUpperCase() === String("HELLO, WORLD!"). Actual: '+("Hello, WoRlD!".toLocaleUpperCase()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ("Hello, WoRlD!".toLocaleUpperCase() ===new String("HELLO, WORLD!")) {
+ $ERROR('#3: "Hello, WoRlD!".toLocaleUpperCase() !== new String("HELLO, WORLD!"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A6.js
new file mode 100644
index 000000000..2baac9b39
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A6;
+* @section: 15.5.4.19, 13.2;
+* @assertion: String.prototype.toLocaleUpperCase has not prototype property;
+* @description: Checking String.prototype.toLocaleUpperCase.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.toLocaleUpperCase.prototype !== undefined) {
+ $ERROR('#1: String.prototype.toLocaleUpperCase.prototype === undefined. Actual: '+String.prototype.toLocaleUpperCase.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A7.js
new file mode 100644
index 000000000..cb9f5c50c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A7;
+* @section: 15.5.4.19, 13.2;
+* @assertion: String.prototype.toLocaleUpperCase can't be used as constructor;
+* @description: Checking if creating the String.prototype.toLocaleUpperCase object fails;
+*/
+
+var __FACTORY = String.prototype.toLocaleUpperCase;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.toLocaleUpperCase; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.1: var __instance = new __FACTORY; Object has no construct lead a TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A8.js
new file mode 100644
index 000000000..dda36bd3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A8;
+* @section: 15.5.4.19;
+* @assertion: The String.prototype.toLocaleUpperCase.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.toLocaleUpperCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.toLocaleUpperCase.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.toLocaleUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleUpperCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.toLocaleUpperCase.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.toLocaleUpperCase.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (var p in String.prototype.toLocaleUpperCase){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.toLocaleUpperCase){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A9.js
new file mode 100644
index 000000000..f5eb65a2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.19_String.prototype.toLocaleUpperCase/S15.5.4.19_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.19_A9;
+* @section: 15.5.4.19;
+* @assertion: The String.prototype.toLocaleUpperCase.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.toLocaleUpperCase.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.toLocaleUpperCase.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.toLocaleUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleUpperCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.toLocaleUpperCase.length) {
+ $ERROR('#1: delete String.prototype.toLocaleUpperCase.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.toLocaleUpperCase.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.toLocaleUpperCase.length; String.prototype.toLocaleUpperCase.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.toLocaleUpperCase.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1.1.js
new file mode 100644
index 000000000..5a9376591
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1.1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1.1;
+* @section: 15.5.4.4, 13.2;
+* @assertion: String.prototype.charAt() can accept many arguments;
+* @description: Checking by using eval;
+*/
+
+function __FACTORY(){this.toString = function(){ return "wizard";};};
+
+__FACTORY.prototype.charAt = String.prototype.charAt;
+
+__instance = new __FACTORY;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__instance){
+ if (__instance.charAt(eval("1"),true,null,{})!== "i") {
+ $ERROR('#1: __instance.charAt(eval("1"),true,null,{})=== "i". Actual: '+__instance.charAt(eval("1"),true,null,{}));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A10.js
new file mode 100644
index 000000000..2506e2ee3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A10;
+* @section: 15.5.4.4;
+* @assertion: The String.prototype.charAt.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.charAt.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.charAt.hasOwnProperty('length'))) {
+ $ERROR('#1: String.prototype.charAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charAt.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.charAt.length;
+
+String.prototype.charAt.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.charAt.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.charAt.length; String.prototype.charAt.length = function(){return "shifted";}; String.prototype.charAt.length === __obj. Actual: '+String.prototype.charAt.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A11.js
new file mode 100644
index 000000000..b83a8da50
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A11;
+* @section: 15.5.4.4;
+* @assertion: The length property of the charAt method is 1;
+* @description: Checking String.prototype.charAt.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.charAt.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.charAt.hasOwnProperty("length") return true. Actual: '+String.prototype.charAt.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.charAt.length !== 1) {
+ $ERROR('#2: String.prototype.charAt.length === 1. Actual: '+String.prototype.charAt.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T1.js
new file mode 100644
index 000000000..1f74c3c93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T1;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: pos is false and true, and instance is object;
+*/
+
+var __instance = new Object(42);
+
+__instance.charAt = String.prototype.charAt;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.charAt(false)+__instance.charAt(true) !== "42") {
+ $ERROR('#1: __instance = new Object(42); __instance.charAt = String.prototype.charAt; __instance = new Object(42); __instance.charAt = String.prototype.charAt; __instance.charAt(false)+__instance.charAt(true) === "42". Actual: '+__instance.charAt(false)+__instance.charAt(true) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T10.js
new file mode 100644
index 000000000..b5f436af0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T10.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T10;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: Call charAt() function with object argument;
+*/
+
+var __obj = {toString:function(){return 1;}}
+var __str = "lego";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (charAt(__obj) !== "e") {
+ $ERROR('#1: var __obj = {toString:function(){return 1;}}; var __str = "lego"; charAt(__obj) === "e". Actual: charAt(__obj) ==='+charAt(__obj) );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T2.js
new file mode 100644
index 000000000..ca6dd0fd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T2;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: pos is equation with false and true, and instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.charAt = String.prototype.charAt;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.charAt(false)+__instance.charAt(true)+__instance.charAt(true+1) !== "fal") {
+ $ERROR('#1: __instance = new Boolean; __instance.charAt = String.prototype.charAt; __instance = new Boolean; __instance.charAt = String.prototype.charAt; __instance.charAt(false)+__instance.charAt(true)+__instance.charAt(true+1) === "fal". Actual: '+__instance.charAt(false)+__instance.charAt(true)+__instance.charAt(true+1) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T3.js
new file mode 100644
index 000000000..564eba432
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T3;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: Use numbers and strings as pos;
+*/
+
+var charAt = String.prototype.charAt;
+
+if (typeof toString === "undefined"){
+ var toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (charAt("1") + charAt(2) + charAt("3") + charAt(4) + charAt("5") + charAt(6) !== "object") {
+ $ERROR('#1: charAt = String.prototype.charAt; charAt("1") + charAt(2) + charAt("3") + charAt(4) + charAt("5") + charAt(6) === "object". Actual: '+charAt("1") + charAt(2) + charAt("3") + charAt(4) + charAt("5") + charAt(6) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T4.js
new file mode 100644
index 000000000..0aeff7564
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T4;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: Call charAt() function without argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger() evaluates to 0 charAt() evaluates to charAt(0)
+if ("lego".charAt() !== "l") {
+ $ERROR('#1: "lego".charAt() === "l". Actual: "lego".charAt() ==='+("lego".charAt()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T5.js
new file mode 100644
index 000000000..c68b450cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T5;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: Call charAt() function with null argument of function object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(null) evaluates to 0 charAt() evaluates to charAt(0)
+if (function(){return "lego"}().charAt(null) !== "l") {
+ $ERROR('#1: function(){return "lego"}().charAt(null) === "l". Actual: function(){return "lego"}().charAt(null) ==='+function(){return "lego"}().charAt(null) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T6.js
new file mode 100644
index 000000000..4e0b48dd7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T6;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: Call charAt() function with x argument of new String object, where x is undefined variable;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(undefined) evaluates to 0 charAt() evaluates to charAt(0)
+if (new String("lego").charAt(x) !== "l") {
+ $ERROR('#1: var x; new String("lego").charAt(x) === "l". Actual: new String("lego").charAt(x) ==='+new String("lego").charAt(x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T7.js
new file mode 100644
index 000000000..95420e614
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T7;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: Call charAt() function with undefined argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(undefined) evaluates to 0 charAt() evaluates to charAt(0)
+if (String("lego").charAt(undefined) !== "l") {
+ $ERROR('#1: String("lego").charAt(undefined) === "l". Actual: String("lego").charAt(undefined) ==='+String("lego").charAt(undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T8.js
new file mode 100644
index 000000000..86e7ced1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T8.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T8;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: Call charAt() function with void 0 argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(void 0) evaluates to 0 charAt() evaluates to charAt(0)
+if (String(42).charAt(void 0) !== "4") {
+ $ERROR('#1: String(42).charAt(void 0) === "4". Actual: String(42).charAt(void 0) ==='+String(42).charAt(void 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T9.js
new file mode 100644
index 000000000..14a1c7497
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A1_T9.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A1_T9;
+* @section: 15.5.4.4;
+* @assertion: String.prototype.charAt(pos);
+* @description: Call charAt() function with function(){}() argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(undefined) evaluates to 0 charAt() evaluates to charAt(0)
+if (new String(42).charAt(function(){}()) !== "4") {
+ $ERROR('#1: new String(42).charAt(function(){}()) === "4". Actual: new String(42).charAt(function(){}()) ==='+new String(42).charAt(function(){}()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A2.js
new file mode 100644
index 000000000..535cdb532
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A2;
+* @section: 15.5.4.4;
+* @assertion: When String.prototype.charAt(pos) calls if ToInteger(pos) less than 0 the empty string returns;
+* @description: Call charAt(pos) with negative pos;
+*/
+
+function __FACTORY(){};
+
+__FACTORY.prototype.charAt = String.prototype.charAt;
+
+var __instance = new __FACTORY;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.charAt(-1) !== "") {
+ $ERROR('#1: __instance.charAt(-1) === "". Actual: __instance.charAt(-1) ==='+__instance.charAt(-1) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A3.js
new file mode 100644
index 000000000..d223f06b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.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.
+
+/**
+* @name: S15.5.4.4_A3;
+* @section: 15.5.4.4;
+* @assertion: When String.prototype.charAt(pos) calls if ToInteger(pos) not less than ToString(this value) the empty string returns;
+* @description: pos is bigger of string length;
+*/
+
+var __instance = new String("ABC");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.charAt(3) !== "") {
+ $ERROR('#1: __instance = new String("ABC"); __instance.charAt(3) === "". Actual: __instance.charAt(3) ==='+__instance.charAt(3) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T1.js
new file mode 100644
index 000000000..90b3945f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A4_T1;
+* @section: 15.5.4.4;
+* @assertion: If pos is a value of Number type that is an integer, then the result of x.charAt(pos) is equal to the result of x.substring(pos, pos+1);
+* @description: Compare results of x.charAt(pos) and x.substring(pos, pos+1);
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var i=0; i<6; i++) {
+ if ("ABC\u0041\u0042\u0043".charAt(i) !== "\u0041\u0042\u0043ABC".substring(i, i+1)) {
+ $ERROR('#'+i+': "ABC\\u0041\\u0042\\u0043".charAt('+i+') === "\\u0041\\u0042\\u0043ABC".substring('+i+', '+(i+1)+'). Actual: "ABC\\u0041\\u0042\\u0043".charAt('+i+') ==='+("ABC\u0041\u0042\u0043".charAt(i)) );
+ }
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T2.js
new file mode 100644
index 000000000..f16448e4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A4_T2;
+* @section: 15.5.4.4;
+* @assertion: If pos is a value of Number type that is an integer, then the result of x.charAt(pos) is equal to the result of x.substring(pos, pos+1);
+* @description: Compare results of x.charAt(pos) and x.substring(pos, pos+1), wheb pos is smaller of zero;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var i=-2; i<0; i++) {
+ if ("ABC\u0041\u0042\u0043".charAt(i) !== "\u0041\u0042\u0043ABC".substring(i, i+1)) {
+ $ERROR('#'+(i+2)+': "ABC\\u0041\\u0042\\u0043".charAt('+i+') === "\\u0041\\u0042\\u0043ABC".substring('+i+', '+(i+1)+'). Actual: "ABC\\u0041\\u0042\\u0043".charAt('+i+') ==='+("ABC\u0041\u0042\u0043".charAt(i)) );
+ }
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T3.js
new file mode 100644
index 000000000..4973d76d2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A4_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A4_T3;
+* @section: 15.5.4.4;
+* @assertion: If pos is a value of Number type that is an integer, then the result of x.charAt(pos) is equal to the result of x.substring(pos, pos+1);
+* @description: Compare results of x.charAt(pos) and x.substring(pos, pos+1), wheb pos is bigger string length;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var i=6; i<8; i++) {
+ if ("ABC\u0041\u0042\u0043".charAt(i) !== "\u0041\u0042\u0043ABC".substring(i, i+1)) {
+ $ERROR('#'+(i-5)+': "ABC\\u0041\\u0042\\u0043".charAt('+i+') === "\\u0041\\u0042\\u0043ABC".substring('+i+', '+(i+1)+'). Actual: "ABC\\u0041\\u0042\\u0043".charAt('+i+') ==='+("ABC\u0041\u0042\u0043".charAt(i)));
+ }
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A5.js
new file mode 100644
index 000000000..b37e0bd85
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A5.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A5;
+* @section: 15.5.4.4;
+* @assertion: When String.prototype.charAt(pos) calls first calls ToString, giving it the this value as its argument;
+* @description: Change toString function, it trow exception, and call charAt();
+*/
+
+var __obj={
+ valueOf:1,
+ toString:function(){throw 'intostring'},
+ charAt:String.prototype.charAt
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.charAt();
+ $FAIL('#1: __obj={valueOf:1,toString:function(){throw \'intostring\'},charAt:String.prototype.charAt}; "var x = __obj.charAt()" lead to throwing exception');
+} catch (e) {
+ if (e !== 'intostring') {
+ $ERROR('#1.1: Exception === \'intostring\'. Actual: exception ==='+e );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A6.js
new file mode 100644
index 000000000..8ae2d4200
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A6;
+* @section: 15.5.4.4, 13.2;
+* @assertion: String.prototype.charAt has not prototype property;
+* @description: Checking String.prototype.charAt.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.charAt.prototype !== undefined) {
+ $ERROR('#1: String.prototype.charAt.prototype === undefined. Actual: '+String.prototype.charAt.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A7.js
new file mode 100644
index 000000000..4999f21be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A7;
+* @section: 15.5.4.4, 13.2;
+* @assertion: String.prototype.charAt can't be used as constructor;
+* @description: Checking if creating the String.prototype.charAt object fails;
+*/
+
+var __FACTORY = String.prototype.charAt;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.charAt; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: undefined = 1 throw a TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A8.js
new file mode 100644
index 000000000..37da79d50
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A8;
+* @section: 15.5.4.4;
+* @assertion: The String.prototype.charAt.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.charAt.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.charAt.hasOwnProperty('length'))) {
+ $ERROR('#0: String.prototype.charAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charAt.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.charAt.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.charAt.propertyIsEnumerable(\'length\') return false. Actual: '+String.prototype.charAt.propertyIsEnumerable('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.charAt){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.charAt){if (p==="length") count++;}; count === 0. Actual: count ==='+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A9.js
new file mode 100644
index 000000000..526fa0f2f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.4_String.prototype.charAt/S15.5.4.4_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.4_A9;
+* @section: 15.5.4.4;
+* @assertion: The String.prototype.charAt.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.charAt.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.charAt.hasOwnProperty('length'))) {
+ $ERROR('#0: String.prototype.charAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charAt.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.charAt.length) {
+ $ERROR('#1: delete String.prototype.charAt.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.charAt.hasOwnProperty('length'))) {
+ $ERROR('#2: delete String.prototype.charAt.length; String.prototype.charAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charAt.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1.1.js
new file mode 100644
index 000000000..32483e953
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1.1;
+* @section: 15.5.4.5, 13.2;
+* @assertion: String.prototype.charCodeAt() can accept many arguments;
+* @description: Checking by using eval;
+*/
+
+function __FACTORY(){this.toString = function(){ return "wizard";};};
+
+__FACTORY.prototype.charCodeAt = String.prototype.charCodeAt;
+
+var __instance = new __FACTORY;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__instance){
+
+ if (__instance.charCodeAt(eval("1"),true,null,{})!== 0x69) {
+ $ERROR('#1: __instance.charCodeAt(eval("1"),true,null,{})=== 0x69. Actual: __instance.charCodeAt(eval("1"),true,null,{})==='+__instance.charCodeAt(eval("1"),true,null,{}));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A10.js
new file mode 100644
index 000000000..213be52b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A10;
+* @section: 15.5.4.5;
+* @assertion: The String.prototype.charCodeAt.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.charCodeAt.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.charCodeAt.hasOwnProperty('length'))) {
+ $ERROR('#1: String.prototype.charCodeAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charCodeAt.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.charCodeAt.length;
+
+String.prototype.charCodeAt.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.charCodeAt.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.charCodeAt.length; String.prototype.charCodeAt.length = function(){return "shifted";}; String.prototype.charCodeAt.length === __obj. Actual: '+String.prototype.charCodeAt.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A11.js
new file mode 100644
index 000000000..bf07f8849
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A11;
+* @section: 15.5.4.5;
+* @assertion: The length property of the charCodeAt method is 1;
+* @description: Checking String.prototype.charCodeAt.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.charCodeAt.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.charCodeAt.hasOwnProperty("length") return true. Actual: '+String.prototype.charCodeAt.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.charCodeAt.length !== 1) {
+ $ERROR('#2: String.prototype.charCodeAt.length === 1. Actual: '+String.prototype.charCodeAt.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T1.js
new file mode 100644
index 000000000..9779e579a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T1;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: pos is false and true, and instance is object;
+*/
+
+var __instance = new Object(42);
+
+__instance.charCodeAt = String.prototype.charCodeAt;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((__instance.charCodeAt(false) !== 52)||(__instance.charCodeAt(true) !== 50)) {
+ $ERROR('#1: __instance = new Object(42); __instance.charCodeAt = String.prototype.charCodeAt; __instance.charCodeAt(false) === 52 and __instance.charCodeAt(true) === 50. Actual: __instance.charCodeAt(false) ==='+__instance.charCodeAt(false)+' and __instance.charCodeAt(true) ==='+__instance.charCodeAt(true) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T10.js
new file mode 100644
index 000000000..b841ef4ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T10.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T10;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: Call charCodeAt() function with object argument;
+*/
+
+var __obj = {toString:function(){return 1;}}
+var __str = "lego";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (charCodeAt(__obj) !== 0x65) {
+ $ERROR('#1: var __obj = {toString:function(){return 1;}}; var __str = "lego"; charCodeAt(__obj) === 0x65. Actual: charCodeAt(__obj) ==='+charCodeAt(__obj) );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T2.js
new file mode 100644
index 000000000..1a0a01e87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T2;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: pos is equation with false and true, and instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.charCodeAt = String.prototype.charCodeAt;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.charCodeAt(false)!==0x66) {
+ $ERROR('#1: __instance = new Boolean; __instance.charCodeAt = String.prototype.charCodeAt; __instance.charCodeAt(false)===0x66. Actual: '+__instance.charCodeAt(false));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__instance.charCodeAt(true)!==0x61) {
+ $ERROR('#2: __instance = new Boolean; __instance.charCodeAt = String.prototype.charCodeAt; __instance.charCodeAt(true)===0x61. Actual: '+__instance.charCodeAt(true));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__instance.charCodeAt(true+1) !== 0x6C) {
+ $ERROR('#3: __instance = new Boolean; __instance.charCodeAt = String.prototype.charCodeAt; __instance.charCodeAt(true+1) === 0x6C. Actual: '+__instance.charCodeAt(true+1) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T3.js
new file mode 100644
index 000000000..304a460b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T3.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T3;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: Use numbers and strings as pos;
+*/
+
+var charCodeAt = String.prototype.charCodeAt;
+
+if (typeof toString === "undefined"){
+ var toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (charCodeAt("2") !== 0x62) {
+ $ERROR('#1: charCodeAt = String.prototype.charCodeAt; charCodeAt("2") === 0x62. Actual: '+charCodeAt("2") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (charCodeAt(3) !== 0x6A) {
+ $ERROR('#2: charCodeAt = String.prototype.charCodeAt; charCodeAt(3) === 0x6A. Actual: '+charCodeAt(3) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (charCodeAt("4") !== 0x65) {
+ $ERROR('#3: charCodeAt = String.prototype.charCodeAt; charCodeAt("4") === 0x65. Actual: '+charCodeAt("4") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (charCodeAt(5) !== 0x63) {
+ $ERROR('#4: charCodeAt = String.prototype.charCodeAt; charCodeAt(5) === 0x63. Actual: '+charCodeAt(5) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (charCodeAt("6") !== 0x74) {
+ $ERROR('#5: charCodeAt = String.prototype.charCodeAt; charCodeAt("6") === 0x74. Actual: '+charCodeAt("6") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T4.js
new file mode 100644
index 000000000..15a799277
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T4;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: Call charCodeAt() function without argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since Number() evaluates to 0 charCodeAt() evaluates to charCodeAt(0)
+if ("smart".charCodeAt() !== 0x73) {
+ $ERROR('#1: "smart".charCodeAt() === 0x73. Actual: "smart".charCodeAt() ==='+("smart".charCodeAt()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T5.js
new file mode 100644
index 000000000..b6ab5eb9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T5;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: Call charCodeAt() function with null argument of function object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(null) evaluates to 0 charCodeAt() evaluates to charCodeAt(0)
+if (function(){return "lego"}().charCodeAt(null) !== 0x6C) {
+ $ERROR('#1: function(){return "lego"}().charCodeAt(null) === 0x6C. Actual: '+function(){return "lego"}().charCodeAt(null) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T6.js
new file mode 100644
index 000000000..493d587f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T6;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: Call charCodeAt() function with x argument of new String object, where x is undefined variable;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(undefined) evaluates to 0 charCodeAt() evaluates to charCodeAt(0)
+if (new String("lego").charCodeAt(x) !== 0x6C) {
+ $ERROR('#1: var x; new String("lego").charCodeAt(x) === 0x6C. Actual: new String("lego").charCodeAt(x) ==='+new String("lego").charCodeAt(x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T7.js
new file mode 100644
index 000000000..21fa8e9af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T7;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: Call charCodeAt() function with undefined argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(undefined) evaluates to 0 charCodeAt() evaluates to charCodeAt(0)
+if (String("lego").charCodeAt(undefined) !== 0x6C) {
+ $ERROR('#1: String("lego").charCodeAt(undefined) === 0x6C. Actual: String("lego").charCodeAt(undefined) ==='+String("lego").charCodeAt(undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T8.js
new file mode 100644
index 000000000..7a0628e2c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T8.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T8;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: Call charCodeAt() function with void 0 argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(void 0) evaluates to 0 charCodeAt() evaluates to charCodeAt(0)
+if (String(42).charCodeAt(void 0) !== 0x34) {
+ $ERROR('#1: String(42).charCodeAt(void 0) === 0x34. Actual: String(42).charCodeAt(void 0) ==='+String(42).charCodeAt(void 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T9.js
new file mode 100644
index 000000000..4cbbc3468
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A1_T9.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A1_T9;
+* @section: 15.5.4.5;
+* @assertion: String.prototype.charCodeAt(pos);
+* @description: Call charCodeAt() function with function(){}() argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToInteger(undefined) evaluates to 0 charCodeAt() evaluates to charCodeAt(0)
+if (new String(42).charCodeAt(function(){}()) !== 0x34) {
+ $ERROR('#1: new String(42).charCodeAt(function(){}()) === 0x34. Actual: new String(42).charCodeAt(function(){}()) ==='+new String(42).charCodeAt(function(){}()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A2.js
new file mode 100644
index 000000000..1aecff819
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A2;
+* @section: 15.5.4.5;
+* @assertion: When String.prototype.charCodeAt(pos) calls if ToInteger(pos) less than 0 the NaN returns;
+* @description: Call charCodeAt(pos) with negative pos;
+*/
+
+function __FACTORY(){};
+
+__FACTORY.prototype.charCodeAt = String.prototype.charCodeAt;
+
+var __instance = new __FACTORY;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!isNaN(__instance.charCodeAt(-1))) {
+ $ERROR('#1: function __FACTORY(){}; __FACTORY.prototype.charCodeAt = String.prototype.charCodeAt; __instance = new __FACTORY; isNaN(__instance.charCodeAt(-1)) return true. Actual: '+isNaN(__instance.charCodeAt(-1)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A3.js
new file mode 100644
index 000000000..1aa7cbbc5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_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.
+
+/**
+* @name: S15.5.4.5_A3;
+* @section: 15.5.4.5;
+* @assertion: When String.prototype.charCodeAt(pos) calls if ToInteger(pos) not less than ToString(this value) the NaN returns;
+* @description: pos is bigger of string length;
+*/
+
+var __instance = new String("ABC");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!isNaN(__instance.charCodeAt(3))) {
+ $ERROR('#1: __instance = new String("ABC"); isNaN(__instance.charCodeAt(3)) return true. Actual: '+isNaN(__instance.charCodeAt(3)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A4.js
new file mode 100644
index 000000000..2c26ac566
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_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.
+
+/**
+* @name: S15.5.4.5_A4;
+* @section: 15.5.4.5;
+* @assertion: When String.prototype.charCodeAt(pos) calls first calls ToString, giving it the this value as its argument;
+* @description: Change toString function, it trow exception, and call charCodeAt();
+*/
+
+var __obj={
+ valueOf:1,
+ toString:function(){throw 'intostring'},
+ charCodeAt:String.prototype.charCodeAt
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __obj.charCodeAt();
+ $FAIL('#1: "var x = __obj.charCodeAt()" lead to throwing exception');
+} catch (e) {
+ if (e !== 'intostring') {
+ $ERROR('#1.1: Exception === \'intostring\'. Actual: exception ==='+e );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A6.js
new file mode 100644
index 000000000..6034b5f69
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A6;
+* @section: 15.5.4.5, 13.2;
+* @assertion: String.prototype.charCodeAt has not prototype property;
+* @description: Checking String.prototype.charCodeAt.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.charCodeAt.prototype !== undefined) {
+ $ERROR('#1: String.prototype.charCodeAt.prototype === undefined. Actual: '+String.prototype.charCodeAt.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A7.js
new file mode 100644
index 000000000..a4c5f6a65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A7.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.
+
+/**
+* @name: S15.5.4.5_A7;
+* @section: 15.5.4.5, 13.2;
+* @assertion: String.prototype.charCodeAt can't be used as constructor;
+* @description: Checking if creating the String.prototype.charCodeAt object fails;
+*/
+
+var __FACTORY = String.prototype.charCodeAt;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.charCodeAt; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A8.js
new file mode 100644
index 000000000..b365e36e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A8;
+* @section: 15.5.4.5;
+* @assertion: The String.prototype.charCodeAt.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.charCodeAt.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.charCodeAt.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.charCodeAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charCodeAt.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.charCodeAt.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.charCodeAt.propertyIsEnumerable(\'length\') return false. Actual: '+String.prototype.charCodeAt.propertyIsEnumerable('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.charCodeAt){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.charCodeAt){if (p==="length") count++;} count === 0. Actual: count ==='+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A9.js
new file mode 100644
index 000000000..d7c463283
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.5_String.prototype.charCodeAt/S15.5.4.5_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.5_A9;
+* @section: 15.5.4.5;
+* @assertion: The String.prototype.charCodeAt.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.charCodeAt.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.charCodeAt.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.charCodeAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charCodeAt.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.charCodeAt.length) {
+ $ERROR('#1: delete String.prototype.charCodeAt.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.charCodeAt.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.charCodeAt.length; String.prototype.charCodeAt.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.charCodeAt.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A10.js
new file mode 100644
index 000000000..f9700d583
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A10;
+* @section: 15.5.4.6;
+* @assertion: The String.prototype.concat.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.concat.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.concat.hasOwnProperty('length'))) {
+ $ERROR('#1: String.prototype.concat.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.concat.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.concat.length;
+
+String.prototype.concat.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.concat.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.concat.length; String.prototype.concat.length = function(){return "shifted";}; String.prototype.concat.length === __obj. Actual: '+String.prototype.concat.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A11.js
new file mode 100644
index 000000000..0f4341564
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A11;
+* @section: 15.5.4.6;
+* @assertion: The length property of the concat method is 1;
+* @description: Checking String.prototype.concat.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.concat.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.concat.hasOwnProperty("length") return true. Actual: '+String.prototype.concat.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.concat.length !== 1) {
+ $ERROR('#2: String.prototype.concat.length === 1. Actual: '+String.prototype.concat.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T1.js
new file mode 100644
index 000000000..26f229fe9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T1;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Arguments are false and true, and instance is object;
+*/
+
+var __instance = new Object(42);
+
+__instance.concat = String.prototype.concat;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.concat(false,true) !== "42falsetrue") {
+ $ERROR('#1: __instance = new Object(42); __instance.concat = String.prototype.concat; __instance.concat(false,true) === "42falsetrue". Actual: '+__instance.concat(false,true) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T10.js
new file mode 100644
index 000000000..768493795
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T10.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T10;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Call concat([,[...]]) function with object arguments;
+*/
+
+var __obj = {toString:function(){return "\u0041";}}
+var __obj2 = {toString:function(){return true;}}
+var __obj3 = {toString:function(){return 42;}}
+var __str = "lego";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (concat(__obj, __obj2, __obj3, x) !== "legoAtrue42undefined") {
+ $ERROR('#1: var x; var __obj = {toString:function(){return "\u0041";}}; var __obj2 = {toString:function(){return true;}}; var __obj3 = {toString:function(){return 42;}}; var __str = "lego"; concat(__obj, __obj2, __obj3, x) === "legoAtrue42undefined". Actual: '+concat(__obj, __obj2, __obj3, x) );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T2.js
new file mode 100644
index 000000000..c4fd29498
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T2;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Arguments are equation with false and true, and instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.concat = String.prototype.concat;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.concat("\u0041",true,true+1) !== "falseAtrue2") {
+ $ERROR('#1: __instance = new Boolean; __instance.concat = String.prototype.concat; __instance.concat("\\u0041",true,true+1) === "falseAtrue2". Actual: '+__instance.concat("\u0041",true,true+1) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T3.js
new file mode 100644
index 000000000..b3c40ff7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T3;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Use numbers and function object as arguments;
+*/
+
+var concat = String.prototype.concat;
+
+var __obj5 = {toString:function(){return 5;}};
+
+if (typeof toString === "undefined"){
+ var toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (concat(1,2,3,4,__obj5)!=__class__+"12345") {
+ $ERROR('#1: concat = String.prototype.concat; concat(1,2,3,4,__obj5)==__class__+"12345". Actual: concat(1,2,3,4,__obj5)=='+concat(1,2,3,4,__obj5));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T4.js
new file mode 100644
index 000000000..902f3c646
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T4;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Call concat([,[...]]) function without argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString() evaluates to "" concat() evaluates to concat("")
+if ("lego".concat() !== "lego") {
+ $ERROR('#1: "lego".concat() === "lego". Actual: '+("lego".concat()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T5.js
new file mode 100644
index 000000000..639fd60dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T5;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Call concat([,[...]]) function with null argument of function object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(null) evaluates to "null" concat(null) evaluates to concat("null")
+if (function(){return "lego"}().concat(null) !== "legonull") {
+ $ERROR('#1: function(){return "lego"}().concat(null) === "legonull". Actual: '+function(){return "lego"}().concat(null) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T6.js
new file mode 100644
index 000000000..5c378a5c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T6;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Call concat([,[...]]) function with x argument of new String object, where x is undefined variable;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" concat(undefined) evaluates to concat("undefined")
+if (new String("lego").concat(x) !== "legoundefined") {
+ $ERROR('#1: var x; new String("lego").concat(x) === "legoundefined". Actual: '+new String("lego").concat(x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T7.js
new file mode 100644
index 000000000..ca79866c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T7;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Call concat([,[...]]) function with undefined argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" concat(undefined) evaluates to concat("undefined")
+if (String("lego").concat(undefined) !== "legoundefined") {
+ $ERROR('#1: String("lego").concat(undefined) === "legoundefined". Actual: '+String("lego").concat(undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T8.js
new file mode 100644
index 000000000..7242e1478
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T8.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T8;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Call concat([,[...]]) function with void 0 argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(void 0) evaluates to "undefined" concat(void 0) evaluates to concat("undefined")
+if (String(42).concat(void 0) !== "42undefined") {
+ $ERROR('#1: String(42).concat(void 0) === "42undefined". Actual: '+String(42).concat(void 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T9.js
new file mode 100644
index 000000000..ad50529b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T9.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A1_T9;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]);
+* @description: Call concat([,[...]]) function with function(){}() argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" concat(undefined) evaluates to concat("undefined")
+if (new String(42).concat(function(){}()) !== "42undefined") {
+ $ERROR('#1: new String(42).concat(function(){}()) === "42undefined". Actual: '+new String(42).concat(function(){}()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A2.js
new file mode 100644
index 000000000..55343dcfb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A2;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]) can accept at least 128;
+* @description: Call concat([,[...]]) function with 128 arguments;
+*/
+
+var __instance = new Number();
+
+__instance.concat = String.prototype.concat;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.concat(
+0,1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,
+0,1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,
+0,1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,
+0,1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,
+0,1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,
+0,1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,
+0,1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,
+0,1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF
+) !== "001234567891011121314150123456789101112131415012345678910111213141501234567891011121314150123456789101112131415012345678910111213141501234567891011121314150123456789101112131415") {
+ $ERROR('#1: Call concat([,[...]]) function with 128 arguments does not lead to throwing any errors');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A3.js
new file mode 100644
index 000000000..baa5bcca3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A3;
+* @section: 15.5.4.6;
+* @assertion: String.prototype.concat([,[...]]) can't change the instance to be applied;
+* @description: Checking if varying the instance that is applied fails;
+*/
+
+var __instance = new String("one");
+
+__instance.concat("two");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance != "one") {
+ $ERROR('#1: __instance = new String("one"); __instance.concat("two"); __instance = new String("one"); __instance.concat("two"); __instance == "one". Actual: '+__instance);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A4_T1.js
new file mode 100644
index 000000000..91dc5276f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A4_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A4_T1;
+* @section: 15.5.4.6;
+* @assertion: when String.prototype.concat([,[...]]) is called first Call ToString, giving it the this value as its argument;
+* @description: Override toString function;
+*/
+
+var __instance = {toString:function(){return "one"}};
+
+__instance.concat = String.prototype.concat;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.concat("two",x) !== "onetwoundefined") {
+ $ERROR('#1: var x; __instance = {toString:function(){return "one"}}; __instance.concat = String.prototype.concat; __instance.concat("two",x) === "onetwoundefined". Actual: '+__instance.concat("two",x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A4_T2.js
new file mode 100644
index 000000000..d7390e9f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A4_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A4_T2;
+* @section: 15.5.4.6;
+* @assertion: when String.prototype.concat([,[...]]) is called first Call ToString, giving it the this value as its argument;
+* @description: Override toString function onto function, that throw exception;
+*/
+
+var __instance = {toString:function(){throw "intostring";}};
+var __obj = {toString:function(){throw "infirstarg";}};
+
+__instance.concat = String.prototype.concat;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ String.prototype.concat.call(__instance,__obj, notexist);
+ $FAIL('#1: "String.prototype.concat.call(__instance,__obj, notexist)" lead to throwing exception');
+} catch (e) {
+ if (e !== "intostring") {
+ $ERROR('#1: e === "intostring". Actual: '+e );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var notexist;
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A6.js
new file mode 100644
index 000000000..eb9123260
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A6;
+* @section: 15.5.4.6, 13.2;
+* @assertion: String.prototype.concat has not prototype property;
+* @description: Checking String.prototype.concat.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.concat.prototype !== undefined) {
+ $ERROR('#1: String.prototype.concat.prototype === undefined. Actual: '+String.prototype.concat.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A7.js
new file mode 100644
index 000000000..ad72d5cf1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A7.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.
+
+/**
+* @name: S15.5.4.6_A7;
+* @section: 15.5.4.6, 13.2;
+* @assertion: String.prototype.concat can't be used as constructor;
+* @description: Checking if creating the String.prototype.concat object fails;
+*/
+
+var __FACTORY = String.prototype.concat;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.concat; "__instance = new __FACTORY" lead throwing exception');
+} catch (e) {}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A8.js
new file mode 100644
index 000000000..209fd21e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A8;
+* @section: 15.5.4.6;
+* @assertion: The String.prototype.concat.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.concat.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.concat.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.concat.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.concat.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.concat.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.concat.propertyIsEnumerable(\'length\') return false. Actual: '+String.prototype.concat.propertyIsEnumerable('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+count = 0;
+
+for (p in String.prototype.concat){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count = 0; for (p in String.prototype.concat){ if (p==="length") count++;}; count === 0. Actual: '+count);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A9.js
new file mode 100644
index 000000000..58213078f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.6_String.prototype.concat/S15.5.4.6_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.6_A9;
+* @section: 15.5.4.6;
+* @assertion: The String.prototype.concat.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.concat.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.concat.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.concat.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.concat.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.concat.length) {
+ $ERROR('#1: delete String.prototype.concat.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.concat.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.concat.length; String.prototype.concat.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.concat.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A10.js
new file mode 100644
index 000000000..8f3582136
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A10;
+* @section: 15.5.4.7;
+* @assertion: The String.prototype.indexOf.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.indexOf.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.indexOf.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.indexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.indexOf.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.indexOf.length;
+
+String.prototype.indexOf.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.indexOf.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.indexOf.length; String.prototype.indexOf.length = function(){return "shifted";}; String.prototype.indexOf.length === __obj. Actual: '+String.prototype.indexOf.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A11.js
new file mode 100644
index 000000000..95688130b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A11;
+* @section: 15.5.4.7;
+* @assertion: The length property of the indexOf method is 1;
+* @description: Checking String.prototype.indexOf.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.indexOf.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.indexOf.hasOwnProperty("length") return true. Actual: '+String.prototype.indexOf.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.indexOf.length !== 1) {
+ $ERROR('#2: String.prototype.indexOf.length === 1. Actual: '+String.prototype.indexOf.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T1.js
new file mode 100644
index 000000000..94d85fcdb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T1;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Arguments are false and true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+__instance.indexOf = String.prototype.indexOf;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.indexOf(true, false) !== 0) {
+ $ERROR('#1: __instance = new Object(true); __instance.indexOf = String.prototype.indexOf; __instance.indexOf(true, false) === 0. Actual: '+__instance.indexOf(true, false) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T10.js
new file mode 100644
index 000000000..4fb387650
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T10.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T10;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Call indexOf(searchString, position) function with object arguments;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){return true;}}
+var __str = "ABB\u0041BABAB";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (indexOf(__obj, __obj2) !== 3) {
+ $ERROR('#1: var x; var __obj = {toString:function(){return "\u0041B";}}; var __obj2 = {valueOf:function(){return true;}}; var __str = "ABB\u0041BABAB"; indexOf(__obj, __obj2) === 3. Actual: '+indexOf(__obj, __obj2) );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T11.js
new file mode 100644
index 000000000..734090e51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T11.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T11;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Instance is Date(0) object;
+*/
+
+var __instance = new Date(0);
+
+__instance.indexOf = String.prototype.indexOf;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((__instance.getTimezoneOffset()>0 ? __instance.indexOf('31') : __instance.indexOf('01')) !== 8) {
+ $ERROR('#1: __instance = new Date(0); __instance.indexOf = String.prototype.indexOf; (__instance.getTimezoneOffset()>0 ? __instance.indexOf(\'31\') : __instance.indexOf(\'01\')) === 8. Actual: '+(__instance.getTimezoneOffset()>0 ? __instance.indexOf('31') : __instance.indexOf('01')) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T12.js
new file mode 100644
index 000000000..a432083d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T12.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T12;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Argument is string, and instance is array of strings;
+*/
+
+var __instance = new Array('new','zoo','revue');
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.indexOf('new') !== 0) {
+ $ERROR('#1: __instance = new Array(\'new\',\'zoo\',\'revue\'); __instance.indexOf(\'new\') === 0. Actual: '+__instance.indexOf('new') );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__instance.indexOf('zoo') !== 1) {
+ $ERROR('#2: __instance = new Array(\'new\',\'zoo\',\'revue\'); __instance.indexOf(\'zoo\') === 1. Actual: '+__instance.indexOf('zoo') );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T2.js
new file mode 100644
index 000000000..9e3b4a9ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T2;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Arguments are boolean equation, function and null, and instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.indexOf = String.prototype.indexOf;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.indexOf("A"!=="\u0041", function(){return 0;}(),null) !== 0) {
+ $ERROR('#1: __instance = new Boolean; __instance.indexOf = String.prototype.indexOf; __instance.indexOf("A"!=="\\u0041", function(){return 0;}(),null) === 0. Actual: '+__instance.indexOf("A"!=="\u0041", function(){return 0;}(),null) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T3.js
new file mode 100644
index 000000000..583733536
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T3;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Checking by using eval;
+*/
+
+var indexOf = String.prototype.indexOf;
+
+var __obj__pos = {valueOf:function(){return 5;}};
+
+if (typeof toString === "undefined"){
+ toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (indexOf(eval("\"[\""),__obj__pos)!=-1) {
+ $ERROR('#1: indexOf = String.prototype.indexOf; indexOf(eval("\\"[\\""),__obj__pos)==-1. Actual: indexOf(eval("\\"[\\""),__obj__pos)=='+indexOf(eval("\"[\""),__obj__pos));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T4.js
new file mode 100644
index 000000000..0fefab1fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T4;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Call indexOf(searchString, position) function without arguments of string;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString() evaluates to "" indexOf() evaluates to indexOf("",0)
+if ("".indexOf() !== -1) {
+ $ERROR('#1: "".indexOf() === -1. Actual: '+("".indexOf()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T5.js
new file mode 100644
index 000000000..a2c231c33
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T5;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Call indexOf(searchString, position) function with null argument of function object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(null) evaluates to "null" indexOf(null) evaluates to indexOf("",0)
+if (function(){return "gnulluna"}().indexOf(null) !== 1) {
+ $ERROR('#1: function(){return "gnulluna"}().indexOf(null) === 1. Actual: '+function(){return "gnulluna"}().indexOf(null) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T6.js
new file mode 100644
index 000000000..f4496568a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T6;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Call indexOf(searchString, position) function with x argument of new String object, where x is undefined variable;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "" indexOf(undefined) evaluates to indexOf("",0)
+if (new String("undefined").indexOf(x) !== 0) {
+ $ERROR('#1: var x; new String("undefined").indexOf(x) === 0. Actual: '+new String("undefined").indexOf(x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T7.js
new file mode 100644
index 000000000..11d75e74b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T7;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Call indexOf(searchString, position) function with undefined argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" indexOf(undefined) evaluates to indexOf("undefined",0)
+if (String("undefined").indexOf(undefined) !== 0) {
+ $ERROR('#1: String("undefined").indexOf(undefined) === 0. Actual: '+String("undefined").indexOf(undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T8.js
new file mode 100644
index 000000000..f3ccedb1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T8;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Call indexOf(searchString, position) function with void 0 argument of string object;
+*/
+
+var __obj = {toString:function(){}};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(void 0) evaluates to "undefined" indexOf(void 0) evaluates to indexOf("undefined")
+if (String(__obj).indexOf(void 0) !== 0) {
+ $ERROR('#1: __obj = {toString:function(){}}; String(__obj).indexOf(void 0) === 0. Actual: '+String(__obj).indexOf(void 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T9.js
new file mode 100644
index 000000000..f5dd7c30f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A1_T9;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf(searchString, position);
+* @description: Call indexOf(searchString, position) function with function(){}() argument of string object;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" indexOf(undefined) evaluates to indexOf("undefined")
+if (new String(__obj).indexOf(function(){}()) !== 0) {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; new String(__obj).indexOf(function(){}()) === 0. Actual: '+new String(__obj).indexOf(function(){}()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T1.js
new file mode 100644
index 000000000..8a26c01ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A2_T1;
+* @section: 15.5.4.7;
+* @assertion: When length of searchString less than length of ToString(this) -1 returns;
+* @description: Call "abcd".indexOf("abcdab") and check result;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("abcd".indexOf("abcdab")!==-1) {
+ $ERROR('#1: "abcd".indexOf("abcdab")===-1. Actual: '+("abcd".indexOf("abcdab")));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T2.js
new file mode 100644
index 000000000..9d342ed2c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_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.
+
+/**
+* @name: S15.5.4.7_A2_T2;
+* @section: 15.5.4.7;
+* @assertion: When length of searchString less than length of ToString(this) -1 returns;
+* @description: Call "abcd".indexOf("abcdab",0) and check result;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("abcd".indexOf("abcdab",0)!==-1) {
+ $ERROR('#1: "abcd".indexOf("abcdab",0)===-1. Actual: '+("abcd".indexOf("abcdab",0)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T3.js
new file mode 100644
index 000000000..da6d45a04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A2_T3;
+* @section: 15.5.4.7;
+* @assertion: When length of searchString less than length of ToString(this) -1 returns;
+* @description: Call "abcd".indexOf("abcdab",99) and check result;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("abcd".indexOf("abcdab",99)!==-1) {
+ $ERROR('#1: "abcd".indexOf("abcdab",99)===-1. Actual: '+("abcd".indexOf("abcdab",99)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T4.js
new file mode 100644
index 000000000..6c5e79c1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A2_T4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A2_T4;
+* @section: 15.5.4.7;
+* @assertion: When length of searchString less than length of ToString(this) -1 returns;
+* @description: Call "abcd".indexOf("abcdab",NaN) and check result;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("abcd".indexOf("abcdab",NaN)!==-1) {
+ $ERROR('#1: "abcd".indexOf("abcdab",NaN)===-1. Actual: '+("abcd".indexOf("abcdab",NaN)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T1.js
new file mode 100644
index 000000000..acd90d408
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A3_T1;
+* @section: 15.5.4.7;
+* @assertion: Since we deal with max(ToInteger(pos), 0) if ToInteger(pos) less than 0 indexOf(searchString,0) returns;
+* @description: Call "$$abcdabcd".indexOf("ab",NaN) and check result;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("$$abcdabcd".indexOf("ab",NaN)!==2) {
+ $ERROR('#1: "$$abcdabcd".indexOf("ab",NaN)===2. Actual: '+("$$abcdabcd".indexOf("ab",NaN)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T2.js
new file mode 100644
index 000000000..945ebb383
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_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.
+
+/**
+* @name: S15.5.4.7_A3_T2;
+* @section: 15.5.4.7;
+* @assertion: Since we deal with max(ToInteger(pos), 0) if ToInteger(pos) less than 0 indexOf(searchString,0) returns;
+* @description: Call "$$abcdabcd".indexOf("ab",eval("\"-99\"")) and check result;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("$$abcdabcd".indexOf("ab",eval("\"-99\""))!==2) {
+ $ERROR('#1: "$$abcdabcd".indexOf("ab",eval("\\"-99\\""))===2. Actual: '+("$$abcdabcd".indexOf("ab",eval("\"-99\""))));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T3.js
new file mode 100644
index 000000000..7e314656c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A3_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A3_T3;
+* @section: 15.5.4.7;
+* @assertion: Since we deal with max(ToInteger(pos), 0) if ToInteger(pos) less than 0 indexOf(searchString,0) returns;
+* @description: Call "$$abcdabcd".indexOf("ab",function(){return -Infinity;}()) and check result;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("$$abcdabcd".indexOf("ab", function(){return -Infinity;}())!==2) {
+ $ERROR('#1: "$$abcdabcd".indexOf("ab", function(){return -Infinity;}())===2. Actual: '+("$$abcdabcd".indexOf("ab", function(){return -Infinity;}())));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T1.js
new file mode 100644
index 000000000..f799682c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A4_T1;
+* @section: 15.5.4.7;
+* @assertion: when String.prototype.indexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions, valueOf throw exception;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){throw "intointeger";}}
+var __str = {str__:"ABB\u0041BABAB"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ with(str__){
+ try {
+ var x = indexOf(__obj, __obj2);
+ $FAIL('#1: "var x = indexOf(__obj, __obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="intointeger") {
+ $ERROR('#1.1: Exception === "intointeger". Actual: '+e);
+ }
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T2.js
new file mode 100644
index 000000000..c60f0de47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A4_T2;
+* @section: 15.5.4.7;
+* @assertion: when String.prototype.indexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions, second toString throw exception;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){return {};},toString:function(){throw "intointeger";}}
+var __str = new String("ABB\u0041BABAB");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ try {
+ var x = indexOf(__obj, __obj2);
+ $FAIL('#1: "var x = indexOf(__obj, __obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="intointeger") {
+ $ERROR('#1.1: Exception === "intointeger". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T3.js
new file mode 100644
index 000000000..9a757d803
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A4_T3;
+* @section: 15.5.4.7;
+* @assertion: when String.prototype.indexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){return {};},toString:function(){return "1";}}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("ABB\u0041BABAB".indexOf(__obj, __obj2)!==3) {
+ $ERROR('#1: var __obj = {toString:function(){return "\u0041B";}}; var __obj2 = {valueOf:function(){return {};},toString:function(){return "1";}}; "ABB\\u0041BABAB".indexOf(__obj, __obj2)===3. Actual: '+("ABB\u0041BABAB".indexOf(__obj, __obj2)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T4.js
new file mode 100644
index 000000000..3fd019909
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A4_T4;
+* @section: 15.5.4.7;
+* @assertion: when String.prototype.indexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions, and they throw exceptions;
+*/
+
+var __obj = {toString:function(){throw "intostr";}};
+var __obj2 = {valueOf:function(){throw "intoint";}};
+var __instance = new Number(10001.10001);
+Number.prototype.indexOf=String.prototype.indexOf;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__instance){
+ try {
+ var x = indexOf(__obj, __obj2);
+ $FAIL('#1: "var x = indexOf(__obj, __obj2)" lead to throwing exception');
+ } catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T5.js
new file mode 100644
index 000000000..83a3766e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A4_T5.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A4_T5;
+* @section: 15.5.4.7;
+* @assertion: when String.prototype.indexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions, first and second valueOf throw exception;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){throw "intostr";}};
+
+var __obj2 = {valueOf:function(){throw "intointeger";}};
+
+__FACTORY.prototype.indexOf = String.prototype.indexOf;
+
+var __instance = new __FACTORY(void 0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __instance.indexOf(__obj, __obj2);
+ $FAIL('#1: "var x = __instance.indexOf(__obj, __obj2)" lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __FACTORY( value ) {
+ this.value = value;
+ this.toString = function() { return new Number; };
+ this.valueOf=function(){return this.value+""};
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T1.js
new file mode 100644
index 000000000..a2c188747
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A5_T1;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf works properly;
+* @description: Search one symbol from begin of string;
+*/
+
+var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (var k = 0, i = 0x0020; i < 0x007e; i++, k++ ) {
+ if (TEST_STRING.indexOf( String.fromCharCode(i), 0 )!==k) {
+ $ERROR('#'+(i-0x0020)+': TEST_STRING.indexOf( String.fromCharCode('+i+'), 0 )==='+k+'. Actual: '+TEST_STRING.indexOf( String.fromCharCode(i), 0 ));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T2.js
new file mode 100644
index 000000000..3b78aafd3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A5_T2;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf works properly;
+* @description: Search one symbol from it`s position in the string;
+*/
+
+var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (var k = 0, i = 0x0020; i < 0x007e; i++, k++ ) {
+ if (TEST_STRING.indexOf( String.fromCharCode(i), k )!==k) {
+ $ERROR('#'+(i-0x0020)+': TEST_STRING.indexOf( String.fromCharCode('+i+'), '+k+' )==='+k+'. Actual: '+TEST_STRING.indexOf( String.fromCharCode(i), k ));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T3.js
new file mode 100644
index 000000000..afca07689
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A5_T3;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf works properly;
+* @description: Search one symbol from it`s position+1 in the string;
+*/
+
+var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for ( var k = 0, i = 0x0020; i < 0x007e; i++, k++ ) {
+ if (TEST_STRING.indexOf( String.fromCharCode(i), k+1 ) !== -1) {
+ $ERROR('#'+(i-0x0020)+': TEST_STRING.indexOf( String.fromCharCode('+i+'), '+(k+1)+' )===-1. Actual: '+TEST_STRING.indexOf( String.fromCharCode(i), k+1 ));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T4.js
new file mode 100644
index 000000000..98e205b15
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A5_T4;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf works properly;
+* @description: Search substring from begin of string;
+*/
+
+var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (var k = 0, i = 0x0020; i < 0x007d; i++, k++ ) {
+ if (TEST_STRING.indexOf( (String.fromCharCode(i)+ String.fromCharCode(i+1) + String.fromCharCode(i+2)), 0 )!==k) {
+ $ERROR('#'+(i-0x0020)+': TEST_STRING.indexOf( (String.fromCharCode('+i+')+ String.fromCharCode('+(i+1)+') + String.fromCharCode('+(i+2)+')), 0 )==='+k+'. Actual: '+TEST_STRING.indexOf( (String.fromCharCode(i)+ String.fromCharCode(i+1) + String.fromCharCode(i+2)), 0 ));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T5.js
new file mode 100644
index 000000000..d1354efc0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A5_T5;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf works properly;
+* @description: Search substring from it`s position in the string;
+*/
+
+var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for ( var k = 0, i = 0x0020; i < 0x007d; i++, k++ ) {
+ if (TEST_STRING.indexOf( (String.fromCharCode(i)+ String.fromCharCode(i+1)+ String.fromCharCode(i+2)),k ) !==k) {
+ $ERROR('#'+(i-0x0020)+': TEST_STRING.indexOf( (String.fromCharCode('+i+')+ String.fromCharCode('+(i+1)+') + String.fromCharCode('+(i+2)+')), '+k+' )==='+k+'. Actual: '+TEST_STRING.indexOf( (String.fromCharCode(i)+ String.fromCharCode(i+1) + String.fromCharCode(i+2)), k ));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T6.js
new file mode 100644
index 000000000..d2fe7750d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A5_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A5_T6;
+* @section: 15.5.4.7;
+* @assertion: String.prototype.indexOf works properly;
+* @description: Search substring from it`s position+1 in the string;
+*/
+
+var TEST_STRING = new String( " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (var k = 0, i = 0x0020; i < 0x007d; i++, k++ ) {
+ if (TEST_STRING.indexOf( (String.fromCharCode(i)+ String.fromCharCode(i+1)+ String.fromCharCode(i+2)), k+1 )!== -1) {
+ $ERROR('#'+(i-0x0020)+': TEST_STRING.indexOf( (String.fromCharCode('+i+')+ String.fromCharCode('+(i+1)+') + String.fromCharCode('+(i+2)+')), '+(k+1)+' )=== -1. Actual: '+TEST_STRING.indexOf( (String.fromCharCode(i)+ String.fromCharCode(i+1) + String.fromCharCode(i+2)), k+1 ));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A6.js
new file mode 100644
index 000000000..55d2b7387
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A6;
+* @section: 15.5.4.7, 13.2;
+* @assertion: String.prototype.indexOf has not prototype property;
+* @description: Checking String.prototype.indexOf.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.indexOf.prototype !== undefined) {
+ $ERROR('#1: String.prototype.indexOf.prototype === undefined. Actual: '+String.prototype.indexOf.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A7.js
new file mode 100644
index 000000000..98b949acd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A7;
+* @section: 15.5.4.7, 13.2;
+* @assertion: String.prototype.indexOf can't be used as constructor;
+* @description: Checking if creating the String.prototype.indexOf object fails;
+*/
+
+var __FACTORY = String.prototype.indexOf;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: var __FACTORY = String.prototype.indexOf; "__instance = new __FACTORY" lead to throwing exception');
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: var __FACTORY = String.prototype.indexOf; "__instance = new __FACTORY" throw a TypeError. Actual: ' + (e));
+ }
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A8.js
new file mode 100644
index 000000000..1347f62d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A8;
+* @section: 15.5.4.7;
+* @assertion: The String.prototype.indexOf.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.indexOf.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.indexOf.hasOwnProperty('length'))) {
+ $ERROR('#0: String.prototype.indexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.indexOf.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.indexOf.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.indexOf.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.indexOf){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.indexOf){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A9.js
new file mode 100644
index 000000000..d4b4186dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.7_A9;
+* @section: 15.5.4.7;
+* @assertion: The String.prototype.indexOf.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.indexOf.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.indexOf.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.indexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.indexOf.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.indexOf.length) {
+ $ERROR('#1: delete String.prototype.indexOf.length raturn false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.indexOf.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.indexOf.length; String.prototype.indexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.indexOf.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A10.js
new file mode 100644
index 000000000..d26b5f32a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A10;
+* @section: 15.5.4.8;
+* @assertion: The String.prototype.lastIndexOf.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.lastIndexOf.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.lastIndexOf.hasOwnProperty('length'))) {
+ $FAIL('#1: String.prototype.lastIndexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.lastIndexOf.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.lastIndexOf.length;
+
+String.prototype.lastIndexOf.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.lastIndexOf.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.lastIndexOf.length; String.prototype.lastIndexOf.length = function(){return "shifted";}; String.prototype.lastIndexOf.length === __obj. Actual: '+String.prototype.lastIndexOf.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A11.js
new file mode 100644
index 000000000..0861b86f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A11;
+* @section: 15.5.4.8;
+* @assertion: The length property of the lastIndexOf method is 1;
+* @description: Checking String.prototype.lastIndexOf.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.lastIndexOf.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.lastIndexOf.hasOwnProperty("length") return true. Actual: '+String.prototype.lastIndexOf.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.lastIndexOf.length !== 1) {
+ $ERROR('#2: String.prototype.lastIndexOf.length === 1. Actual: '+String.prototype.lastIndexOf.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T1.js
new file mode 100644
index 000000000..36b70ebd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T1;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Arguments are false and true, and instance is object;
+*/
+
+var __instance = new Object(true);
+
+var __instance.lastIndexOf = String.prototype.lastIndexOf;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.lastIndexOf(true, false) !== 0) {
+ $ERROR('#1: __instance = new Object(true); __instance.lastIndexOf = String.prototype.lastIndexOf; __instance.lastIndexOf(true, false) === 0. Actual: '+__instance.lastIndexOf(true, false) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T10.js
new file mode 100644
index 000000000..11d97a5ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T10.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T10;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Call lastIndexOf(searchString, position) function with object arguments;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){return NaN;}}
+var __str = "ABB\u0041BABAB";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ if (lastIndexOf(__obj, __obj2) !== 7) {
+ $ERROR('#1: var x; var __obj = {toString:function(){return "\u0041B";}}; var __obj2 = {valueOf:function(){return NaN;}}; var __str = "ABB\u0041BABAB";lastIndexOf(__obj, __obj2) === 7. Actual: '+lastIndexOf(__obj, __obj2) );
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T11.js
new file mode 100644
index 000000000..a43325666
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T11.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T11;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Instance is Date(0) object;
+*/
+
+var __instance = new Date(100000000);
+
+__instance.lastIndexOf = String.prototype.lastIndexOf;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((__instance.lastIndexOf('1970')) !== 11) {
+ $ERROR('#1: __instance = new Date(0); __instance.lastIndexOf = String.prototype.lastIndexOf; __instance.lastIndexOf(\'1970\') === 11. Actual: '+(__instance.lastIndexOf('1970')) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T12.js
new file mode 100644
index 000000000..97f5ee7e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T12.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T12;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Argument is string, and instance is array of strings;
+*/
+
+var __instance = new Array('new','zoo','revue');
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.lastIndexOf('new') !== 0) {
+ $ERROR('#1: __instance = new Array(\'new\',\'zoo\',\'revue\'); __instance.lastIndexOf(\'new\') === 0. Actual: '+__instance.lastIndexOf('new') );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__instance.lastIndexOf('zoo') !== 1) {
+ $ERROR('#2: __instance = new Array(\'new\',\'zoo\',\'revue\'); __instance.lastIndexOf(\'zoo\') === 1. Actual: '+__instance.lastIndexOf('zoo') );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T2.js
new file mode 100644
index 000000000..d4f21682e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T2;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Arguments are boolean equation, function and null, and instance is Boolean object;
+*/
+
+var __instance = new Boolean;
+
+__instance.lastIndexOf = String.prototype.lastIndexOf;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.lastIndexOf("A"!=="\u0041", function(){return 0;}(),null) !== 0) {
+ $ERROR('#1: __instance = new Boolean; __instance.lastIndexOf = String.prototype.lastIndexOf; __instance.lastIndexOf("A"!=="\\u0041", function(){return 0;}(),null) === 0. Actual: '+__instance.lastIndexOf("A"!=="\u0041", function(){return 0;}(),null) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T3.js
new file mode 100644
index 000000000..7d1bb15e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T3;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Checking by using eval;
+*/
+
+var lastIndexOf = String.prototype.lastIndexOf;
+
+var __obj__pos = {valueOf:function(){return 7;}};
+
+if (typeof toString === "undefined"){
+ var toString = Object.prototype.toString;
+}
+
+var __class__ = toString();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (lastIndexOf(eval("\"[\""),__obj__pos)!= 0) {
+ $ERROR('#1: lastIndexOf(eval("\\"[\\""),__obj__pos)== 0. Actual: '+lastIndexOf(eval("\"[\""),__obj__pos));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T4.js
new file mode 100644
index 000000000..2821d05b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T4;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Call lastIndexOf(searchString, position) function without arguments of string;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString() evaluates to "" lastIndexOf() evaluates to lastIndexOf("",0)
+if ("".lastIndexOf() !== -1) {
+ $ERROR('#1: "".lastIndexOf() === -1. Actual: '+("".lastIndexOf()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T5.js
new file mode 100644
index 000000000..04653e1b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T5;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Call lastIndexOf(searchString, position) function with null argument of function object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(null) evaluates to "null" lastIndexOf(null) evaluates to lastIndexOf("",0)
+if (function(){return "gnullunazzgnull"}().lastIndexOf(null) !== 11) {
+ $ERROR('#1: function(){return "gnullunazzgnull"}().lastIndexOf(null) === 11. Actual: '+function(){return "gnullunazzgnull"}().lastIndexOf(null) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T6.js
new file mode 100644
index 000000000..c61a0aa65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T6;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Call lastIndexOf(searchString, position) function with x argument of new String object, where x is undefined variable;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "" lastIndexOf(undefined) evaluates to lastIndexOf("",0)
+if (new String("undefined").lastIndexOf(x) !== 0) {
+ $ERROR('#1: var x; new String("undefined").lastIndexOf(x) === 0. Actual: '+new String("undefined").lastIndexOf(x) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T7.js
new file mode 100644
index 000000000..97ff9b544
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T7;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Call lastIndexOf(searchString, position) function with undefined argument of string object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" lastIndexOf(undefined) evaluates to lastIndexOf("undefined",0)
+if (String("undefined").lastIndexOf(undefined) !== 0) {
+ $ERROR('#1: String("undefined").lastIndexOf(undefined) === 0. Actual: '+String("undefined").lastIndexOf(undefined) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T8.js
new file mode 100644
index 000000000..512c32d4a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T8;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Call lastIndexOf(searchString, position) function with void 0 argument of string object;
+*/
+
+var __obj = {toString:function(){}};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(void 0) evaluates to "undefined" lastIndexOf(void 0) evaluates to lastIndexOf("undefined",0)
+if (String(__obj).lastIndexOf(void 0) !== 0) {
+ $ERROR('#1: __obj = {toString:function(){}}; String(__obj).lastIndexOf(void 0) === 0. Actual: '+String(__obj).lastIndexOf(void 0) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T9.js
new file mode 100644
index 000000000..c20233dc4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A1_T9;
+* @section: 15.5.4.8;
+* @assertion: String.prototype.lastIndexOf(searchString, position);
+* @description: Call lastIndexOf(searchString, position) function with function(){}() argument of string object;
+*/
+
+var __obj = {
+ valueOf:function(){},
+ toString:void 0
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+//since ToString(undefined) evaluates to "undefined" indexOf(undefined) evaluates to indexOf("undefined")
+if (new String(__obj).lastIndexOf(function(){}()) !== 0) {
+ $ERROR('#1: __obj = {valueOf:function(){}, toString:void 0}; new String(__obj).lastIndexOf(function(){}()) === 0. Actual: '+new String(__obj).lastIndexOf(function(){}()) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T1.js
new file mode 100644
index 000000000..100314059
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A4_T1;
+* @section: 15.5.4.8;
+* @assertion: when String.prototype.lastIndexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions, valueOf throw exception;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){throw "intointeger";}}
+var __str = {str__:"ABB\u0041BABAB"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ with(str__){
+ try {
+ var x = lastIndexOf(__obj, __obj2);
+ $FAIL('#1: var x = lastIndexOf(__obj, __obj2) lead to throwing exception');
+ } catch (e) {
+ if (e!=="intointeger") {
+ $ERROR('#1.1: Exception === "intointeger". Actual: '+e);
+ }
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T2.js
new file mode 100644
index 000000000..bbcba9e47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A4_T2;
+* @section: 15.5.4.8;
+* @assertion: when String.prototype.lastIndexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions, second toString throw exception;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){return {};},toString:function(){throw "intointeger";}}
+var __str = new String("ABB\u0041BABAB");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__str){
+ try {
+ var x = lastIndexOf(__obj, __obj2);
+ $FAIL('#1: var x = lastIndexOf(__obj, __obj2) lead to throwing exception');
+ } catch (e) {
+ if (e!=="intointeger") {
+ $ERROR('#1.1: Exception === "intointeger". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T3.js
new file mode 100644
index 000000000..491ef9d47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A4_T3;
+* @section: 15.5.4.8;
+* @assertion: when String.prototype.lastIndexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions;
+*/
+
+var __obj = {toString:function(){return "\u0041B";}}
+var __obj2 = {valueOf:function(){return {};},toString:function(){}}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ("ABB\u0041BABAB".lastIndexOf(__obj, __obj2)!==7) {
+ $ERROR('#1: var __obj = {toString:function(){return "\u0041B";}}; var __obj2 = {valueOf:function(){return {};},toString:function(){}}; "ABB\\u0041BABAB".lastIndexOf(__obj, __obj2)===7. Actual: '+("ABB\u0041BABAB".lastIndexOf(__obj, __obj2)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T4.js
new file mode 100644
index 000000000..86e1e4220
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A4_T4;
+* @section: 15.5.4.8;
+* @assertion: when String.prototype.lastIndexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions, and they throw exceptions;
+*/
+
+var __obj = {toString:function(){throw "intostr";}};
+var __obj2 = {valueOf:function(){throw "intoint";}};
+var __instance = new Number(10001.10001);
+Number.prototype.lastIndexOf=String.prototype.lastIndexOf;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+with(__instance){
+ try {
+ var x = lastIndexOf(__obj, __obj2);
+ $FAIL('#1: var x = lastIndexOf(__obj, __obj2) lead to throwing exception');
+ } catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T5.js
new file mode 100644
index 000000000..76234fd07
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A4_T5.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A4_T5;
+* @section: 15.5.4.8;
+* @assertion: when String.prototype.lastIndexOf(searchString, position) is called first Call ToString, giving it the this value as its argument.
+* Then Call ToString(searchString) and Call ToNumber(position);
+* @description: Override toString and valueOf functions, first and second valueOf throw exception;
+*/
+
+var __obj = {toString:function(){return {};},valueOf:function(){throw "intostr";}};
+
+var __obj2 = {valueOf:function(){throw "intointeger";}};
+
+__FACTORY.prototype.lastIndexOf = String.prototype.lastIndexOf;
+
+var __instance = new __FACTORY(void 0);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var x = __instance.lastIndexOf(__obj, __obj2);
+ $FAIL('#1: var x = __instance.lastIndexOf(__obj, __obj2) lead to throwing exception');
+} catch (e) {
+ if (e!=="intostr") {
+ $ERROR('#1.1: Exception === "intostr". Actual: '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __FACTORY( value ) {
+ this.value = value;
+ this.toString = function() { return new Number; };
+ this.valueOf=function(){return this.value+""};
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A6.js
new file mode 100644
index 000000000..43d7ffe84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A6;
+* @section: 15.5.4.8, 13.2;
+* @assertion: String.prototype.lastIndexOf has not prototype property;
+* @description: Checking String.prototype.lastIndexOf.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.lastIndexOf.prototype !== undefined) {
+ $ERROR('#1: String.prototype.lastIndexOf.prototype === undefined. Actual: '+String.prototype.lastIndexOf.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A7.js
new file mode 100644
index 000000000..20cd8158a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A7.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A7;
+* @section: 15.5.4.8, 13.2;
+* @assertion: String.prototype.lastIndexOf can't be used as constructor;
+* @description: Checking if creating the String.prototype.lastIndexOf object fails;
+*/
+
+var __FACTORY = String.prototype.lastIndexOf;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.lastIndexOf; __instance = new __FACTORY lead to throwing exception');
+} catch (e) {
+ $PRINT(e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A8.js
new file mode 100644
index 000000000..6bf4831bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A8;
+* @section: 15.5.4.8;
+* @assertion: The String.prototype.lastIndexOf.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.lastIndexOf.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.lastIndexOf.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.lastIndexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.lastIndexOf.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.lastIndexOf.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.lastIndexOf.propertyIsEnumerable(\'length\') return false. Actual: '+String.prototype.lastIndexOf.propertyIsEnumerable('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+count=0;
+
+for (p in String.prototype.lastIndexOf){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.lastIndexOf){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A9.js
new file mode 100644
index 000000000..6b017ff1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.8_A9;
+* @section: 15.5.4.8;
+* @assertion: The String.prototype.lastIndexOf.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.lastIndexOf.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.lastIndexOf.hasOwnProperty('length'))) {
+ $FAIL('#0: String.prototype.lastIndexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.lastIndexOf.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.lastIndexOf.length) {
+ $ERROR('#1: delete String.prototype.lastIndexOf.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.lastIndexOf.hasOwnProperty('length'))) {
+ $FAIL('#2: delete String.prototype.lastIndexOf.length; String.prototype.lastIndexOf.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.lastIndexOf.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A10.js
new file mode 100644
index 000000000..752c9e4c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.9_A10;
+* @section: 15.5.4.9;
+* @assertion: The String.prototype.localeCompare.length property has the attribute ReadOnly;
+* @description: Checking if varying the String.prototype.localeCompare.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.localeCompare.hasOwnProperty('length'))) {
+ $ERROR('#1: String.prototype.localeCompare.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.localeCompare.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = String.prototype.localeCompare.length;
+
+String.prototype.localeCompare.length = function(){return "shifted";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.localeCompare.length !== __obj) {
+ $ERROR('#2: __obj = String.prototype.localeCompare.length; String.prototype.localeCompare.length = function(){return "shifted";}; String.prototype.localeCompare.length === __obj. Actual: '+String.prototype.localeCompare.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A11.js
new file mode 100644
index 000000000..1ad93c2e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.9_A11;
+* @section: 15.5.4.9;
+* @assertion: The length property of the localeCompare method is 1;
+* @description: Checking String.prototype.localeCompare.length;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(String.prototype.localeCompare.hasOwnProperty("length"))) {
+ $ERROR('#1: String.prototype.localeCompare.hasOwnProperty("length") return true. Actual: '+String.prototype.localeCompare.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.localeCompare.length !== 1) {
+ $ERROR('#2: String.prototype.localeCompare.length === 1. Actual: '+String.prototype.localeCompare.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A1_T1.js
new file mode 100644
index 000000000..2ba261397
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A1_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.9_A1_T1;
+* @section: 15.5.4.9;
+* @assertion: String.prototype.localeCompare(that);
+* @description: This string is symbol and arguments are symbols;
+*/
+
+var str1 = new String("h");
+//CHECK#1
+var str2 = new String ("\x68");
+if (str1.localeCompare(str2)!==0){
+ $ERROR('#1: var str1 = new String("h"); var str2 = new String ("\\x68"); str1.localeCompare(str2)===0. Actual: '+str1.localeCompare(str2));
+}
+
+//CHECK#2
+var str2 = new String ("\u0068");
+if (str1.localeCompare(str2)!==0){
+ $ERROR('#2: var str1 = new String("h"); var str2 = new String ("\\u0068"); str1.localeCompare(str2)===0. Actual: '+str1.localeCompare(str2));
+}
+
+//CHECK#3
+var str2 = new String ("h");
+if (str1.localeCompare(str2)!==0){
+ $ERROR('#3: var str1 = new String("h"); var str2 = new String ("h"); str1.localeCompare(str2)===0. Actual: '+str1.localeCompare(str2));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A1_T2.js
new file mode 100644
index 000000000..59064e193
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.9_A1_T2;
+* @section: 15.5.4.9;
+* @assertion: String.prototype.localeCompare(that);
+* @description: Call string_1.localeCompare(string_2) is equal -string_2.localeCompare(string_1);
+*/
+
+//CHECK#1
+var str1 = "h";
+var str2 = "H";
+if (str1.localeCompare(str2)!==-str2.localeCompare(str1)){
+ $ERROR('#1.1: var str1 = "h"; var str2 = "H"; str1.localeCompare(str2)===-str2.localeCompare(str1). Actual: '+str1.localeCompare(str2));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A6.js
new file mode 100644
index 000000000..5c3c9ad86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A6.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.9_A6;
+* @section: 15.5.4.9, 13.2;
+* @assertion: String.prototype.localeCompare has not prototype property;
+* @description: Checking String.prototype.localeCompare.prototype;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.localeCompare.prototype !== undefined) {
+ $ERROR('#1: String.prototype.localeCompare.prototype === undefined. Actual: '+String.prototype.localeCompare.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A7.js
new file mode 100644
index 000000000..8542acd31
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A7.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.
+
+/**
+* @name: S15.5.4.9_A7;
+* @section: 15.5.4.9, 13.2;
+* @assertion: String.prototype.localeCompare can't be used as constructor;
+* @description: Checking if creating the String.prototype.localeCompare object fails;
+*/
+
+var __FACTORY = String.prototype.localeCompare;
+
+try {
+ var __instance = new __FACTORY;
+ $FAIL('#1: __FACTORY = String.prototype.localeCompare; __instance = new __FACTORY lead to throwing exception');
+} catch (e) {}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A8.js
new file mode 100644
index 000000000..f2ef8e319
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.9_A8;
+* @section: 15.5.4.9;
+* @assertion: The String.prototype.localeCompare.length property has the attribute DontEnum;
+* @description: Checking if enumerating the String.prototype.localeCompare.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.localeCompare.hasOwnProperty('length'))) {
+ $ERROR('#0: String.prototype.localeCompare.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.localeCompare.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (String.prototype.localeCompare.propertyIsEnumerable('length')) {
+ $ERROR('#1: String.prototype.localeCompare.propertyIsEnumerable(\'length\') return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+var count=0;
+
+for (p in String.prototype.localeCompare){
+ if (p==="length") count++;
+}
+
+if (count !== 0) {
+ $ERROR('#2: count=0; for (p in String.prototype.localeCompare){if (p==="length") count++;}; count === 0. Actual: '+count );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A9.js
new file mode 100644
index 000000000..b5e0aa914
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/15.5.4.9_String.prototype.localeCompare/S15.5.4.9_A9.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.9_A9;
+* @section: 15.5.4.9;
+* @assertion: The String.prototype.localeCompare.length property has the attribute DontDelete;
+* @description: Checking if deleting the String.prototype.localeCompare.length property fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (!(String.prototype.localeCompare.hasOwnProperty('length'))) {
+ $ERROR('#0: String.prototype.localeCompare.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.localeCompare.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete String.prototype.localeCompare.length) {
+ $ERROR('#1: delete String.prototype.localeCompare.length return false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(String.prototype.localeCompare.hasOwnProperty('length'))) {
+ $ERROR('#2: delete String.prototype.localeCompare.length; String.prototype.localeCompare.hasOwnProperty(\'length\') return true. Actual: '+String.prototype.localeCompare.hasOwnProperty('length'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.1_A1_T1.js
new file mode 100644
index 000000000..39c876071
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.1_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.
+
+/**
+* @name: S15.5.4.1_A1_T1;
+* @section: 15.5.4.1;
+* @assertion: The initial value of String.prototype.constructor is the built-in String constructor;
+* @description: Checking String.prototype.constructor;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.constructor !== String) {
+ $ERROR('#1: String.prototype.constructor === String. Actual: String.prototype.constructor ==='+String.prototype.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.1_A1_T2.js
new file mode 100644
index 000000000..e48469bab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.1_A1_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.1_A1_T2;
+* @section: 15.5.4.1;
+* @assertion: The initial value of String.prototype.constructor is the built-in String constructor;
+* @description: Create new String.prototype.constructor object and check it;
+*/
+
+var __constr = String.prototype.constructor;
+
+var __instance = new __constr("choosing one");
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#0
+if (__instance !="choosing one") {
+ $ERROR('#0: __constr = String.prototype.constructor; __instance = new __constr("choosing one"); __instance =="choosing one". Actual: __instance =='+__instance );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (__instance.constructor !== String) {
+ $ERROR('#1: __constr = String.prototype.constructor; __instance = new __constr("choosing one"); __instance.constructor === String. Actual: __instance.constructor ==='+__instance.constructor );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#2
+if (!(String.prototype.isPrototypeOf(__instance))) {
+ $ERROR('#2: __constr = String.prototype.constructor; __instance = new __constr("choosing one"); String.prototype.isPrototypeOf(__instance) return true. Actual: '+String.prototype.isPrototypeOf(__instance));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// CHECK#3
+var __to_string_result = '[object '+ 'String' +']';
+
+delete String.prototype.toString;
+
+if (__instance.toString() !== __to_string_result) {
+ $ERROR('#3: __constr = String.prototype.constructor; __instance = new __constr("choosing one"); delete String.prototype.toString; __instance.toString() === __to_string_result. Actual: __instance.toString() ==='+__instance.toString()+' __to_string_result ==='+__to_string_result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T1.js
new file mode 100644
index 000000000..3dd5b24a9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.2_A1_T1;
+* @section: 15.5.4.2;
+* @assertion: String.prototype.toString() returns this string value;
+* @description: Create new String(number) and check it`s method toString();
+*/
+
+var __string__obj = new String(1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__string__obj.toString() !== ""+1) {
+ $ERROR('#1: __string__obj = new String(1); __string__obj.toString() === ""+1. Actual: __string__obj.toString() ==='+__string__obj.toString() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T2.js
new file mode 100644
index 000000000..acfa26a26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.2_A1_T2;
+* @section: 15.5.4.2;
+* @assertion: String.prototype.toString() returns this string value;
+* @description: Create new String(boolean) and check it`s method toString();
+*/
+
+var __string__obj = new String(true);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__string__obj.toString() !== ""+true) {
+ $ERROR('#1: __string__obj = new String(true); __string__obj.toString() === ""+true. Actual: __string__obj.toString() ==='+__string__obj.toString() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T3.js
new file mode 100644
index 000000000..4cd2f9155
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.2_A1_T3;
+* @section: 15.5.4.2;
+* @assertion: String.prototype.toString() returns this string value;
+* @description: Create new String(string) and check it`s method toString();
+*/
+
+var __string__obj = new String("metal");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__string__obj.toString() !== "metal") {
+ $ERROR('#1: __string__obj = new String("metal"); __string__obj.toString() === "metal". Actual: __string__obj.toString() ==='+__string__obj.toString() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T4.js
new file mode 100644
index 000000000..19ecfb419
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A1_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.2_A1_T4;
+* @section: 15.5.4.2;
+* @assertion: String.prototype.toString() returns this string value;
+* @description: Create new String(function(){}()) and check it`s method toString();
+*/
+
+var __string__obj = new String(function(){}());
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__string__obj.toString() !== "undefined") {
+ $ERROR('#1: __string__obj = new String(function(){}()); __string__obj.toString() === "undefined". Actual: __string__obj.toString() ==='+__string__obj.toString() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A2_T1.js
new file mode 100644
index 000000000..ff3689755
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A2_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.2_A2_T1;
+* @section: 15.5.4.2;
+* @assertion: The toString function is not generic; it throws a TypeError exception if its this value is not a String object. Therefore, it cannot be transferred to other kinds of objects for use as a method;
+* @description: Checking if creating variable String.prototype.toString fails;
+*/
+
+var __toString = String.prototype.toString;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __toString !== "function") {
+ $ERROR('#1: __toString = String.prototype.toString; typeof __toString === "function". Actual: typeof __toString ==='+typeof __toString );
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ var x = __toString();
+ $FAIL('#2: "__toString = String.prototype.toString; var x = __toString();" lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2.1: "__toString = String.prototype.toString; var x = __toString();" lead to throwing exception. Exception is instance of TypeError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A2_T2.js
new file mode 100644
index 000000000..ea7198c72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A2_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.2_A2_T2;
+* @section: 15.5.4.2;
+* @assertion: The toString function is not generic; it throws a TypeError exception if its this value is not a String object. Therefore, it cannot be transferred to other kinds of objects for use as a method;
+* @description: Checking if creating the object String.prototype.toString fails;
+*/
+
+var __obj={toString : String.prototype.toString};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __obj["toString"] !== "function") {
+ $ERROR('#1: var __obj={toString : String.prototype.toString}; typeof __obj["toString"] === "function". Actual: typeof __obj["toString"] ==='+typeof __obj["toString"] );
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ var x = (__obj == 1);
+ $FAIL('#2: "var x = (__obj == 1)" lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2.1: Exception is instance of TypeError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A3_T1.js
new file mode 100644
index 000000000..82a26df5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A3_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.2_A3_T1;
+* @section: 15.5.4.2, 15.5.4.3;
+* @assertion: String.prototype.toString() is equal String.prototype.valueOf();
+* @description: Create new String() with various arguments and compare returned results of toString() and valueOf();
+*/
+
+//CHECK#1
+var str = new String();
+if(!(str.valueOf() == str.toString()))
+ $ERROR('#1: str = new String(),str.valueOf() == str.toString()');
+
+//CHECK#2
+str = new String(true);
+if(!(str.valueOf() == str.toString()))
+ $ERROR('#2: str = new String(true),str.valueOf() == str.toString()');
+
+//CHECK#3
+str = new String(false);
+if(!(str.valueOf() == str.toString()))
+ $ERROR('#3: str = new String(false),str.valueOf() == str.toString()');
+
+//CHECK#4
+str = new String(Math.PI);
+if(!(str.valueOf() == str.toString()))
+ $ERROR('#4: str = new String(Math.PI),str.valueOf() == str.toString()');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A4_T1.js
new file mode 100644
index 000000000..ae513dcc4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.2_A4_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.2_A4_T1;
+* @section: 15.5.4.2;
+* @assertion: String.prototype.toString have length property and it is equal 0;
+* @description: Checking String.prototype.toString.length property;
+*/
+
+//CHECK#1
+if (String.prototype.toString.hasOwnProperty('length')!==true){
+ $ERROR('#1: String.prototype.toString.hasOwnProperty(\'length\')===true. Actual: '+String.prototype.toString.hasOwnProperty('length'));
+}
+else{
+//CHECK#2
+if (String.prototype.toString.length!==0)
+ $ERROR('#2: String.prototype.toString.length===0. Actual: String.prototype.toString.length==='+String.prototype.toString.length);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T1.js
new file mode 100644
index 000000000..4d2d6ffd1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.3_A1_T1;
+* @section: 15.5.4.3;
+* @assertion: String.prototype.valueOf() returns this string value;
+* @description: Create String object as new String(1) and check it`s valueOf();
+*/
+
+var __string__obj = new String(1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__string__obj.valueOf() !== ""+1) {
+ $ERROR('#1: __string__obj = new String(1); __string__obj.valueOf() === ""+1. Actual: __string__obj.valueOf() ==='+__string__obj.valueOf() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T2.js
new file mode 100644
index 000000000..7bac198bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.3_A1_T2;
+* @section: 15.5.4.3;
+* @assertion: String.prototype.valueOf() returns this string value;
+* @description: Create String object as new String(true) and check it`s valueOf();
+*/
+
+var __string__obj = new String(true);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__string__obj.valueOf() !== ""+true) {
+ $ERROR('#1: __string__obj = new String(true); __string__obj.valueOf() === ""+true. Actual: __string__obj.valueOf() ==='+__string__obj.valueOf() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T3.js
new file mode 100644
index 000000000..55e59ec90
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.3_A1_T3;
+* @section: 15.5.4.3;
+* @assertion: String.prototype.valueOf() returns this string value;
+* @description: Create String object as new String(string) and check it`s valueOf();
+*/
+
+var __string__obj = new String("metal");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__string__obj.valueOf() !== "metal") {
+ $ERROR('#1: __string__obj = new String("metal"); __string__obj.valueOf() === "metal". Actual: __string__obj.valueOf() ==='+__string__obj.valueOf() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T4.js
new file mode 100644
index 000000000..2bf799f26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A1_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.3_A1_T4;
+* @section: 15.5.4.3;
+* @assertion: String.prototype.valueOf() returns this string value;
+* @description: Create String object as new String(function(){}()) and check it`s valueOf();
+*/
+
+var __string__obj = new String(function(){}());
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__string__obj.valueOf() !== "undefined") {
+ $ERROR('#1: __string__obj = new String(function(){}()); __string__obj.valueOf() === "undefined". Actual: __string__obj.valueOf() ==='+__string__obj.valueOf() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A2_T1.js
new file mode 100644
index 000000000..b12e7cbfd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.3_A2_T1;
+* @section: 15.5.4.3;
+* @assertion: The valueOf function is not generic; it throws a TypeError exception if its this value is not a String object.
+* Therefore, it cannot be transferred to other kinds of objects for use as a method;
+* @description: Checking if creating variable String.prototype.valueOf fails;
+*/
+
+var __valueOf = String.prototype.valueOf;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __valueOf !== "function") {
+ $ERROR('#1: __valueOf = String.prototype.valueOf; typeof __valueOf === "function". Actual: typeof __valueOf ==='+typeof __valueOf );
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ var x = __valueOf();
+ $FAIL('#2: "__valueOf = String.prototype.valueOf; var x = __valueOf()" lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2.1: Exception is instance of TypeError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A2_T2.js
new file mode 100644
index 000000000..7e1461f94
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4.3_A2_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.3_A2_T2;
+* @section: 15.5.4.3;
+* @assertion: The valueOf function is not generic; it throws a TypeError exception if its this value is not a String object.
+* Therefore, it cannot be transferred to other kinds of objects for use as a method;
+* @description: Checking if creating the object String.prototype.valueOf fails;
+*/
+
+var __obj={valueOf : String.prototype.valueOf};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __obj["valueOf"] !== "function") {
+ $ERROR('#1: var __obj={valueOf : String.prototype.valueOf}; typeof __obj["valueOf"] === "function". Actual: typeof __obj["valueOf"] ==='+typeof __obj["valueOf"] );
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ var x = (__obj == 1);
+ $FAIL('#2: "var __obj={valueOf : String.prototype.valueOf}; var x = (__obj == 1)" lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2.1: Exception is instance of TypeError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A1.js
new file mode 100644
index 000000000..6b12fb34c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4_A1;
+* @section: 15.5.4;
+* @assertion: The String prototype object is itself a String object (its [[Class]] is "String");
+* @description: first we delete String.prototype.toString cause it overrides Object prototype toString.
+* Object.prototype.toString returns [object+[[class]]+];
+*/
+
+delete String.prototype.toString;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype.toString() !== "[object "+"String"+"]") {
+ $ERROR('#1: delete String.prototype.toString; String.prototype.toString() === "[object "+"String"+"]". Actual: String.prototype.toString() ==='+String.prototype.toString() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A2.js
new file mode 100644
index 000000000..a0b501383
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4_A2;
+* @section: 15.5.4;
+* @assertion: The String prototype object is itself a String object whose value is an empty string;
+* @description: Checking String.prototype;
+*/
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (String.prototype !="") {
+ $ERROR('#1: String.prototype =="". Actual: String.prototype =='+String.prototype );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_A3.js
new file mode 100644
index 000000000..36baa1ac2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.4_Properties_of_the_String_Prototype_Object/S15.5.4_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.
+
+/**
+* @name: S15.5.4_A3;
+* @section: 15.5.4, 15.2.3.1;
+* @assertion: The value of the internal [[Prototype]] property of the String prototype object is the Object prototype object (15.2.3.1);
+* @description: Checking Object.prototype.isPrototypeOf(String.prototype);
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(Object.prototype.isPrototypeOf(String.prototype))) {
+ $ERROR('#1: Object.prototype.isPrototypeOf(String.prototype) return true. Actual: '+Object.prototype.isPrototypeOf(String.prototype));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+delete String.prototype.toString;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (String.prototype.toString() != "[object "+"String"+"]") {
+ $ERROR('#2: delete String.prototype.toString; String.prototype.toString() == "[object "+"String"+"]". Actual: String.prototype.toString() =='+String.prototype.toString() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A1.js
new file mode 100644
index 000000000..82ccd48e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.5.1_A1;
+* @section: 15.5.5.1;
+* @assertion: length property contains the number of characters in the String value represented by this String object;
+* @description: Create strings and check its length;
+*/
+
+var __str__instance = new String("ABC\u0041\u0042\u0043");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str__instance.length !== 6) {
+ $ERROR('#1: var __str__instance = new String("ABC\\u0041\\u0042\\u0043"); __str__instance.length === 6, where __str__instance is new String("ABC\\u0041\\u0042\\u0043"). Actual: __str__instance.length ==='+__str__instance.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str__instance = new String;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str__instance.length !== 0) {
+ $ERROR('#2: __str__instance = new String; __str__instance.length === 0, where __str__instance is new String. Actual: __str__instance.length ==='+__str__instance.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A2.js
new file mode 100644
index 000000000..592b089e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.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.
+
+/**
+* @name: S15.5.5.1_A2;
+* @section: 15.5.5.1;
+* @assertion: length property has the attributes {DontEnum};
+* @description: Checking if enumerating the length property of String fails;
+*/
+
+var __str__instance = new String("globglob");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__str__instance.hasOwnProperty("length"))) {
+ $ERROR('#1: var __str__instance = new String("globglob"); __str__instance.hasOwnProperty("length") return true. Actual: '+__str__instance.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+for(prop in __str__instance){
+ if (prop === "length") {
+ $ERROR('#2: length property has the attributes {DontEnum}');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A3.js
new file mode 100644
index 000000000..95e03a952
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.5.1_A3;
+* @section: 15.5.5.1;
+* @assertion: length property has the attributes {DontDelete};
+* @description: Checking if deleting the length property of String fails;
+*/
+
+var __str__instance = new String("globglob");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__str__instance.hasOwnProperty("length"))) {
+ $ERROR('#1: var __str__instance = new String("globglob"); __str__instance.hasOwnProperty("length") return true. Actual: '+__str__instance.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (delete __str__instance === true) {
+ $ERROR('#2: var __str__instance = new String("globglob"); delete __str__instance !== true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (!(__str__instance.hasOwnProperty("length"))) {
+ $ERROR('#3: var __str__instance = new String("globglob"); delete __str__instance; __str__instance.hasOwnProperty("length") return true. Actual: '+__str__instance.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A4.js
new file mode 100644
index 000000000..4901eed6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A4.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.5.1_A4;
+* @section: 15.5.5.1;
+* @assertion: length property has the attributes {ReadOnly};
+* @description: Checking if varying the length property of String fails;
+*/
+
+var __str__instance = new String("globglob");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__str__instance.hasOwnProperty("length"))) {
+ $ERROR('#1: var __str__instance = new String("globglob"); __str__instance.hasOwnProperty("length") return true. Actual: '+__str__instance.hasOwnProperty("length"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str__instance.length !== 8) {
+ $ERROR('#2: var __str__instance = new String("globglob"); __str__instance.length === 8. Actual: __str__instance.length ==='+__str__instance.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str__instance.length=-1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str__instance.length !== 8) {
+ $ERROR('#3: var __str__instance = new String("globglob"); __str__instance.length=-1; __str__instance.length === 8(after redefine length property). Actual: __str__instance.length ==='+__str__instance.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+with(__str__instance)
+ length = 0;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__str__instance.length !== 8) {
+ $ERROR('#4: var __str__instance = new String("globglob"); with(__str__instance) length = 0; __str__instance.length === 8(after redefine length property with using "with"). Actual: __str__instance.length ==='+__str__instance.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str__instance.length++;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__str__instance.length !== 8) {
+ $ERROR('#5: var __str__instance = new String("globglob"); __str__instance.length++; __str__instance.length === 8(after redefine length property with using "++"). Actual: __str__instance.length ==='+__str__instance.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A5.js
new file mode 100644
index 000000000..f02edf120
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5.1_A5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.5.1_A5;
+* @section: 15.5.5.1;
+* @assertion: Once a String object is created, the length property is unchanging;
+* @description: Change valueOf and toString of String object and check length property;
+*/
+
+var __str__instance = new String("ABC\u0041\u0042\u0043");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str__instance.length !== 6) {
+ $ERROR('#1: var __str__instance = new String("ABC\\u0041\\u0042\\u0043"); __str__instance.length === 6. Actual: __str__instance.length ==='+__str__instance.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str__instance.valueOf = function(){return "ed"};
+__str__instance.toString = function(){return "ed"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str__instance !="ed") {
+ $ERROR('#2: var __str__instance = new String("ABC\\u0041\\u0042\\u0043"); __str__instance.valueOf = function(){return "ed"}; __str__instance.toString = function(){return "ed"}; __str__instance =="ed". Actual: __str__instance =='+__str__instance );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str__instance.length !== 6) {
+ $ERROR('#3: var __str__instance = new String("ABC\\u0041\\u0042\\u0043"); __str__instance.valueOf = function(){return "ed"}; __str__instance.toString = function(){return "ed"}; __str__instance.length === 6. Actual: __str__instance.length ==='+__str__instance.length );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A1_T1.js
new file mode 100644
index 000000000..a2e469d05
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A1_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.5_A1_T1;
+* @section: 15.5.5;
+* @assertion: String instance has not [[call]] property;
+* @description: Create new String and try call it;
+*/
+
+var __str = new String;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __str();
+ $FAIL('#1: __str = new String; __str() lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Exception is instance of TypeError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A1_T2.js
new file mode 100644
index 000000000..4e2ba8b44
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A1_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.5_A1_T2;
+* @section: 15.5.5;
+* @assertion: String instance has not [[call]] property;
+* @description: Checking if creating new "String("a|b")()" fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ String("a|b")();
+ $FAIL('#1: String("a|b")() lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Exception is instance of TypeError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A2_T1.js
new file mode 100644
index 000000000..254827995
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A2_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.5_A2_T1;
+* @section: 15.5.5;
+* @assertion: String instance has not [[construct]] property;
+* @description: Create new string object and try new created_string;
+*/
+
+var __str = new Object("");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ new __str;
+ $FAIL('#1: __str = new Object(""); "new __str" lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Exception is instance of TypeError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A2_T2.js
new file mode 100644
index 000000000..c026f5c1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.5_String_Objects/15.5.5_Properties_of_String_Instances/S15.5.5_A2_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.5_A2_T2;
+* @section: 15.5.5;
+* @assertion: String instance has not [[construct]] property;
+* @description: Checking if creating "new String" fails;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ new new String;
+ $FAIL('#1: "new new String" lead to throwing exception');
+} catch (e) {
+ if (!(e instanceof TypeError)) {
+ $ERROR('#1.1: Exception is instance of TypeError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T1.js
new file mode 100644
index 000000000..16246b837
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.1.1_A1_T1;
+ * @section: 15.6.1.1;
+ * @assertion: Returns a boolean value (not a Boolean object) computed by
+ * ToBoolean(value);
+ * @description: Used values 1, new String("1"), new Object(1) and called without argument;
+*/
+
+//CHECK#1
+if( typeof Boolean() !== "boolean" ) {
+ $ERROR('#1: typeof Boolean() should be "boolean", actual is "'+typeof Boolean()+'"');
+}
+
+//CHECK#2
+if( typeof Boolean(1) !== "boolean" ) {
+ $ERROR('#2: typeof Boolean(1) should be "boolean", actual is "'+typeof Boolean(1)+'"');
+}
+
+//CHECK#3
+if( typeof Boolean(new String("1")) !== "boolean" ) {
+ $ERROR('#3: typeof Boolean(new String("1")) should be "boolean", actual is "'+typeof Boolean(new String("1"))+'"');
+}
+
+//CHECK#4
+if( typeof Boolean(new Object(1)) !== "boolean" ) {
+ $ERROR('#4: typeof Boolean(new Object(1)) should be "boolean", actual is "'+typeof Boolean(new Object(1))+'"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T2.js
new file mode 100644
index 000000000..3e4822bc9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T2.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.1.1_A1_T2;
+ * @section: 15.6.1.1;
+ * @assertion: Returns a boolean value (not a Boolean object) computed by
+ * ToBoolean(value);
+ * @description: Used various number values as argument;
+*/
+
+//CHECK#1
+if( typeof Boolean(0) !== "boolean" ) {
+ $ERROR('#1.1: typeof Boolean(0) should be "boolean", actual is "'+typeof Boolean(0)+'"');
+}
+if( Boolean(0) !== false ) {
+ $ERROR('#1.2: Boolean(0) should be false, actual is '+Boolean(0));
+}
+
+//CHECK#2
+if( typeof Boolean(-1) !== "boolean" ) {
+ $ERROR('#2.1: typeof Boolean(-1) should be "boolean", actual is "'+typeof Boolean(-1)+'"');
+}
+if( Boolean(-1) !== true ) {
+ $ERROR('#2.2: Boolean(-1) should be true, actual is '+Boolean(-1));
+}
+
+//CHECK#3
+if( typeof Boolean(-Infinity) !== "boolean" ) {
+ $ERROR('#3.1: typeof Boolean(-Infinity) should be "boolean", actual is "'+typeof Boolean(-Infinity)+'"');
+}
+if( Boolean(-Infinity) !== true ) {
+ $ERROR('#3.2: Boolean(-Infinity) should be true, actual is '+Boolean(-Infinity));
+}
+
+//CHECK#4
+if( typeof Boolean(NaN) !== "boolean" ) {
+ $ERROR('#4.1: typeof Boolean(NaN) should be "boolean", actual is "'+typeof Boolean(NaN)+'"');
+}
+if( Boolean(NaN) !== false ) {
+ $ERROR('#4.2: Boolean(NaN) should be false, actual is '+Boolean(NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T3.js
new file mode 100644
index 000000000..d34d60503
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T3.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.1.1_A1_T3;
+ * @section: 15.6.1.1;
+ * @assertion: Returns a boolean value (not a Boolean object) computed by
+ * ToBoolean(value);
+ * @description: Used various string values as argument;
+*/
+
+//CHECK#1
+if( typeof Boolean("0") !== "boolean" ) {
+ $ERROR('#1.1: typeof Boolean("0") should be "boolean", actual is "'+typeof Boolean("0")+'"');
+}
+if( Boolean("0") !== true ) {
+ $ERROR('#1.2: Boolean("0") should be true');
+}
+
+//CHECK#2
+if( typeof Boolean("-1") !== "boolean" ) {
+ $ERROR('#2.1: typeof Boolean("-1") should be "boolean", actual is "'+typeof Boolean("-1")+'"');
+}
+if( Boolean("-1") !== true ) {
+ $ERROR('#2.2: Boolean("-1") should be true');
+}
+
+//CHECK#3
+if( typeof Boolean("1") !== "boolean" ) {
+ $ERROR('#3.1: typeof Boolean("1") should be "boolean", actual is "'+typeof Boolean("1")+'"');
+}
+if( Boolean("1") !== true ) {
+ $ERROR('#3.2: Boolean("1") should be true');
+}
+
+//CHECK#4
+if( typeof Boolean("false") !== "boolean" ) {
+ $ERROR('#4.1: typeof Boolean("false") should be "boolean", actual is "'+typeof Boolean("false")+'"');
+}
+if( Boolean("false") !== true ) {
+ $ERROR('#4.2: Boolean("false") should be true');
+}
+
+//CHECK#5
+if( typeof Boolean("true") !== "boolean" ) {
+ $ERROR('#5.1: typeof Boolean("true") should be "boolean", actual is "'+typeof Boolean("true")+'"');
+}
+if( Boolean("true") !== true ) {
+ $ERROR('#5.2: Boolean("true") should be true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T4.js
new file mode 100644
index 000000000..468b8f11f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T4.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.1.1_A1_T4;
+ * @section: 15.6.1.1;
+ * @assertion: Returns a boolean value (not a Boolean object) computed by
+ * ToBoolean(value);
+ * @description: Used various undefined values and null as argument;
+*/
+
+//CHECK#1
+if( typeof Boolean(undefined) !== "boolean" ) {
+ $ERROR('#1.1: typeof Boolean(undefined) should be "boolean", actual is "'+typeof Boolean(undefined)+'"');
+}
+if( Boolean(undefined) !== false ) {
+ $ERROR('#1.2: Boolean(undefined) should be false');
+}
+
+//CHECK#2
+if( typeof Boolean(void 0) !== "boolean" ) {
+ $ERROR('#2.1: typeof Boolean(void 0) should be "boolean", actual is "'+typeof Boolean(void 0)+'"');
+}
+if( Boolean(void 0) !== false ) {
+ $ERROR('#2.2: Boolean(void 0) should be false');
+}
+
+//CHECK#3
+if( typeof Boolean(function(){}()) !== "boolean" ) {
+ $ERROR('#3.1: typeof Boolean(function(){}()) should be "boolean", actual is "'+typeof Boolean(function(){}())+'"');
+}
+if( Boolean(function(){}()) !== false ) {
+ $ERROR('#3.2: Boolean(function(){}()) should be false');
+}
+
+//CHECK#4
+if( typeof Boolean(null) !== "boolean" ) {
+ $ERROR('#4.1: typeof Boolean(null) should be "boolean", actual is "'+typeof Boolean(null)+'"');
+}
+if( Boolean(null) !== false ) {
+ $ERROR('#4.2: Boolean(null) should be false');
+}
+
+//CHECK#5
+if( typeof Boolean(x) !== "boolean" ) {
+ $ERROR('#5.1: var x; typeof Boolean(x) should be "boolean", actual is "'+typeof Boolean(x)+'"');
+}
+if( Boolean(x) !== false ) {
+ $ERROR('#5.2: var x; Boolean(x) should be false');
+}
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T5.js
new file mode 100644
index 000000000..d86561e14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A1_T5.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.1.1_A1_T5;
+ * @section: 15.6.1.1;
+ * @assertion: Returns a boolean value (not a Boolean object) computed by
+ * ToBoolean(value);
+ * @description: Used various assigning values to any variable as argument;
+*/
+
+//CHECK#1
+if( typeof Boolean(x=0) !== "boolean" ) {
+ $ERROR('#1.1: typeof Boolean(x=0) should be "boolean", actual is "'+typeof Boolean(x=0)+'"');
+}
+if( Boolean(x=0) !== false ) {
+ $ERROR('#1.2: Boolean(x=0) should be false');
+}
+
+//CHECK#2
+if( typeof Boolean(x=1) !== "boolean" ) {
+ $ERROR('#2.1: typeof Boolean(x=1) should be "boolean", actual is "'+typeof Boolean(x=1)+'"');
+}
+if( Boolean(x=1) !== true ) {
+ $ERROR('#2.2: Boolean(x=1) should be true');
+}
+
+//CHECK#3
+if( typeof Boolean(x=false) !== "boolean" ) {
+ $ERROR('#3.1: typeof Boolean(x=false) should be "boolean", actual is "'+typeof Boolean(x=false)+'"');
+}
+if( Boolean(x=false) !== false ) {
+ $ERROR('#3.2: Boolean(x=false) should be false');
+}
+
+//CHECK#4
+if( typeof Boolean(x=true) !== "boolean" ) {
+ $ERROR('#4.1: typeof Boolean(x=true) should be "boolean", actual is "'+typeof Boolean(x=true)+'"');
+}
+if( Boolean(x=true) !== true ) {
+ $ERROR('#4.2: Boolean(x=true) should be true');
+}
+
+//CHECK#5
+if( typeof Boolean(x=null) !== "boolean" ) {
+ $ERROR('#5.1: typeof Boolean(x=null) should be "boolean", actual is "'+typeof Boolean(x=null)+'"');
+}
+if( Boolean(x=null) !== false ) {
+ $ERROR('#5.2: Boolean(x=null) should be false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A2.js
new file mode 100644
index 000000000..719865783
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.1_The_Boolean_Constructor_Called_as_a_Function/S15.6.1.1_A2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.1.1_A2;
+ * @section: 15.6.1.1;
+ * @assertion: Boolean() returns false;
+ * @description: Call Boolean() and check result;
+*/
+
+//CHECK#1
+if( typeof Boolean() !== "boolean" ) {
+ $ERROR('#1: typeof Boolean() should be "boolean", actual is "'+typeof Boolean()+'"');
+}
+
+//CHECK#2
+if( Boolean() !== false ) {
+ $ERROR('#2: Boolean() should be false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A1.js
new file mode 100644
index 000000000..5b23ea900
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A1.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.2.1_A1;
+ * @section: 15.6.2.1;
+ * @assertion: When Boolean is called as part of a new expression it is
+ * a constructor: it initialises the newly created object;
+ * @description: Checking type of the newly created object and it value;
+*/
+
+//CHECK#1
+if (typeof new Boolean() !== "object") {
+ $ERROR("#1: typeof new Boolean() === 'object'");
+}
+
+//CHECK#2
+if (new Boolean() === undefined) {
+ $ERROR("#2: new Boolean() should not be undefined");
+}
+
+//CHECK#3
+var x3 = new Boolean();
+if(typeof x3 !== "object"){
+ $ERROR("#3: typeof new Boolean() !== 'object'");
+}
+
+//CHECK#4
+var x4 = new Boolean();
+if(x4 === undefined){
+ $ERROR("#4: new Boolean() should not be undefined");
+}
+
+//CHECK#5
+if (typeof new Boolean(1) !== "object") {
+ $ERROR("#5: typeof new Boolean(10) === 'object'");
+}
+
+//CHECK#6
+if (new Boolean(1) === undefined) {
+ $ERROR("#6: new Boolean(1) should not be undefined");
+}
+
+//CHECK#7
+var x7 = new Boolean(1);
+if(typeof x7 !== "object"){
+ $ERROR("#7: typeof new Boolean(1) !== 'object'");
+}
+
+//CHECK#8
+var x8 = new Boolean(1);
+if(x8 === undefined){
+ $ERROR("#8: new Boolean(1) should not be undefined");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A2.js
new file mode 100644
index 000000000..59d1439e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.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.
+
+/**
+ * @name: S15.6.2.1_A2;
+ * @section: 15.6.2.1;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Boolean prototype object, the one that is the
+ * initial value of Boolean.prototype;
+ * @description: Checking prototype property of the newly created object;
+ */
+
+// CHECK#1
+var x1 = new Boolean(1);
+if (typeof x1.constructor.prototype !== "object") {
+ $ERROR('#1: typeof x1.constructor.prototype === "object"');
+}
+
+//CHECK#2
+var x2 = new Boolean(2);
+if (!Boolean.prototype.isPrototypeOf(x2)) {
+ $ERROR('#2: Boolean.prototype.isPrototypeOf(x2)');
+}
+
+//CHECK#3
+var x3 = new Boolean(3);
+if (Boolean.prototype !== x3.constructor.prototype) {
+ $ERROR('#3: Boolean.prototype === x3.constructor.prototype');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A3.js
new file mode 100644
index 000000000..9f4f0c60c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.2.1_A3;
+ * @section: 15.6.2.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set to ToBoolean(value);
+ * @description: Checking value of the newly created object;
+ */
+
+// CHECK#1
+var x1 = new Boolean(1);
+if (x1.valueOf() !== true) {
+ $ERROR('#1: var x1 = new Boolean(1); x1.valueOf() === true');
+}
+
+//CHECK#2
+var x2 = new Boolean();
+if (x2.valueOf() !== false) {
+ $ERROR('#2: var x2 = new Boolean(); x2.valueOf() === false');
+}
+
+//CHECK#3
+var x2 = new Boolean(0);
+if (x2.valueOf() !== false) {
+ $ERROR('#3: var x2 = new Boolean(0); x2.valueOf() === false');
+}
+
+//CHECK#4
+var x2 = new Boolean(new Object());
+if (x2.valueOf() !== true) {
+ $ERROR('#4: var x2 = new Boolean(new Object()); x2.valueOf() === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A4.js
new file mode 100644
index 000000000..1aa660a79
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.2_The_Boolean_Constructor/S15.6.2.1_A4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.2.1_A4;
+ * @section: 15.6.2.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Boolean";
+ * @description: For testing toString function is used;
+ */
+
+delete Boolean.prototype.toString;
+
+var obj = new Boolean();
+
+//CHECK#1
+if (obj.toString() !== "[object Boolean]") {
+ $ERROR('#1: The [[Class]] property of the newly constructed object is set to "Boolean"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A1.js
new file mode 100644
index 000000000..50bef718f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_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.
+
+/**
+ * @name: S15.6.3.1_A1;
+ * @section: 15.6.3.1;
+ * @assertion: The initial value of Boolean.prototype is the Boolean
+ * prototype object;
+ * @description: Checking Boolean.prototype property;
+ */
+
+//CHECK#1
+if (typeof Boolean.prototype !== "object") {
+ $ERROR('#1: typeof Boolean.prototype === "object"');
+}
+
+//CHECK#2
+if (Boolean.prototype != false) {
+ $ERROR('#2: Boolean.prototype == false');
+}
+
+delete Boolean.prototype.toString;
+
+if (Boolean.prototype.toString() !== "[object Boolean]") {
+ $ERROR('#3: The [[Class]] property of the Boolean prototype object is set to "Boolean"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A2.js
new file mode 100644
index 000000000..373f54e96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A2.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.
+
+/**
+ * @name: S15.6.3.1_A2;
+ * @section: 15.6.3.1;
+ * @assertion: Boolean.prototype has the attribute ReadOnly;
+ * @description: Checking if varying the Boolean.prototype property fails;
+ */
+
+// CHECK#1
+x = Boolean.prototype;
+Boolean.prototype = 1;
+if (Boolean.prototype !== x) {
+ $ERROR('#1: Boolean.prototype has the attribute ReadOnly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A3.js
new file mode 100644
index 000000000..6158ea0de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A3.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.3.1_A3;
+ * @section: 15.6.3.1;
+ * @assertion: Boolean.prototype has the attribute DontDelete;
+ * @description: Checking if deleting the Boolean.prototype property fails;
+ */
+
+// CHECK#1
+if (delete Boolean.prototype !== false) {
+ $ERROR('#1: Boolean.prototype has the attribute DontDelete');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A4.js
new file mode 100644
index 000000000..236266aac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/15.6.3.1_Boolean.prototype/S15.6.3.1_A4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.3.1_A4;
+ * @section: 15.6.3.1;
+ * @assertion: Boolean.prototype has the attribute DontEnum;
+ * @description: Checking if enumerating the Boolean.prototype property fails;
+ */
+
+//CHECK#1
+for(x in Boolean) {
+ if(x === "prototype") {
+ $ERROR('#1: Boolean.prototype has the attribute DontEnum');
+ }
+}
+
+if (Boolean.propertyIsEnumerable('prototype')) {
+ $ERROR('#2: Boolean.prototype has the attribute DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A1.js
new file mode 100644
index 000000000..673d7c050
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.3_A1;
+ * @section: 15.6.3;
+ * @assertion: The Boolean constructor has the property "prototype";
+ * @description: Checking existence of the property "prototype";
+ */
+
+if(!Boolean.hasOwnProperty("prototype")){
+ $ERROR('#1: The Boolean constructor has the property "prototype"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A2.js
new file mode 100644
index 000000000..02415f8db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_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.
+
+/**
+* @name: S15.6.3_A2;
+* @section: 15.6.3;
+* @assertion: The value of the internal [[Prototype]] property of the Boolean
+* constructor is the Function prototype object;
+* @description: Checking prototype of the Boolean constructor;
+*/
+
+//CHECK#1
+if (!(Function.prototype.isPrototypeOf(Boolean))) {
+ $ERROR('#1: the value of the internal [[Prototype]] property of the Boolean constructor is the Function prototype object.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_A3.js
new file mode 100644
index 000000000..ab1b1e953
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.3_Properties_of_the_Boolean_Constructor/S15.6.3_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.
+
+/**
+* @name: S15.6.3_A3;
+* @section: 15.6.3;
+* @assertion: Boolean constructor has length property whose value is 1;
+* @description: Checking Boolean.length property;
+*/
+
+//CHECK#1
+if (!Boolean.hasOwnProperty("length")){
+ $ERROR('#1: Boolean constructor has length property');
+}
+
+//CHECK#2
+if (Boolean.length !== 1) {
+ $ERROR('#2: Boolean constructor length property value is 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.1_A1.js
new file mode 100644
index 000000000..de366a7cd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.1_A1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.1_A1;
+ * @section: 15.6.4.1;
+ * @assertion: The initial value of Boolean.prototype.constructor is the
+ * built-in Boolean constructor;
+ * @description: Compare Boolean.prototype.constructor with Boolean;
+ */
+
+//CHECK#1
+if(Boolean.prototype.constructor !== Boolean){
+ $ERROR('#1: Boolean.prototype.constructor === Boolean');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A1_T1.js
new file mode 100644
index 000000000..93f8590b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A1_T1.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.2_A1_T1;
+ * @section: 15.6.4.2;
+ * @assertion: toString: If this boolean value is true, then the string "true"
+ * is returned, otherwise, this boolean value must be false, and the string
+ * "false" is returned;
+ * @description: no arguments;
+ */
+
+//CHECK#1
+if(Boolean.prototype.toString() !== "false"){
+ $ERROR('#1: Boolean.prototype.toString() === "false"');
+}
+
+//CHECK#2
+if((new Boolean()).toString() !== "false"){
+ $ERROR('#2: (new Boolean()).toString() === "false"');
+}
+
+//CHECK#3
+if((new Boolean(false)).toString() !== "false"){
+ $ERROR('#3: (new Boolean(false)).toString() === "false"');
+}
+
+//CHECK#4
+if((new Boolean(true)).toString() !== "true"){
+ $ERROR('#4: (new Boolean(true)).toString() === "true"');
+}
+
+//CHECK#5
+if((new Boolean(1)).toString() !== "true"){
+ $ERROR('#5: (new Boolean(1)).toString() === "true"');
+}
+
+//CHECK#6
+if((new Boolean(0)).toString() !== "false"){
+ $ERROR('#6: (new Boolean(0)).toString() === "false"');
+}
+
+//CHECK#7
+if((new Boolean(new Object())).toString() !== "true"){
+ $ERROR('#7: (new Boolean(new Object())).toString() === "true"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A1_T2.js
new file mode 100644
index 000000000..d28f196f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A1_T2.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.2_A1_T2;
+ * @section: 15.6.4.2;
+ * @assertion: toString: If this boolean value is true, then the string "true"
+ * is returned, otherwise, this boolean value must be false, and the string
+ * "false" is returned;
+ * @description: with some argument;
+ */
+
+//CHECK#1
+if(Boolean.prototype.toString(true) !== "false"){
+ $ERROR('#1: Boolean.prototype.toString(true) === "false"');
+}
+
+//CHECK#2
+if((new Boolean()).toString(true) !== "false"){
+ $ERROR('#2: (new Boolean()).toString(true) === "false"');
+}
+
+//CHECK#3
+if((new Boolean(false)).toString(true) !== "false"){
+ $ERROR('#3: (new Boolean(false)).toString(true) === "false"');
+}
+
+//CHECK#4
+if((new Boolean(true)).toString(false) !== "true"){
+ $ERROR('#4: (new Boolean(true)).toString(false) === "true"');
+}
+
+//CHECK#5
+if((new Boolean(1)).toString(false) !== "true"){
+ $ERROR('#5: (new Boolean(1)).toString(false) === "true"');
+}
+
+//CHECK#6
+if((new Boolean(0)).toString(true) !== "false"){
+ $ERROR('#6: (new Boolean(0)).toString(true) === "false"');
+}
+
+//CHECK#7
+if((new Boolean(new Object())).toString(false) !== "true"){
+ $ERROR('#7: (new Boolean(new Object())).toString(false) === "true"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T1.js
new file mode 100644
index 000000000..26c0a0003
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.2_A2_T1;
+ * @section: 15.6.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the String objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new String();
+ s1.toString = Boolean.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = new String();
+ s2.myToString = Boolean.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T2.js
new file mode 100644
index 000000000..5fba5e924
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_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.
+
+/**
+ * @name: S15.6.4.2_A2_T2;
+ * @section: 15.6.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the Number objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Number();
+ s1.toString = Boolean.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#1
+try{
+ var s2 = new Number();
+ s2.myToString = Boolean.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T3.js
new file mode 100644
index 000000000..25facab8a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.2_A2_T3;
+ * @section: 15.6.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the Date objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Date();
+ s1.toString = Boolean.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#1
+try{
+ var s2 = new Date();
+ s2.myToString = Boolean.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T4.js
new file mode 100644
index 000000000..eab0866cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.2_A2_T4;
+ * @section: 15.6.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the Object objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Object();
+ s1.toString = Boolean.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#1
+try{
+ var s2 = new Object();
+ s2.myToString = Boolean.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T5.js
new file mode 100644
index 000000000..6978c515d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.2_A2_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.2_A2_T5;
+ * @section: 15.6.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the other objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = {x: 1};
+ s1.toString = Boolean.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#1
+try{
+ var s2 = {x: 1};
+ s2.myToString = Boolean.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.toString on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A1_T1.js
new file mode 100644
index 000000000..25ece6d6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.3_A1_T1;
+ * @section: 15.6.4.3;
+ * @assertion: Boolean.prototype.valueOf() returns this boolean value;
+ * @description: no arguments;
+*/
+
+//CHECK#1
+if(Boolean.prototype.valueOf() !== false){
+ $ERROR('#1: Boolean.prototype.valueOf() === false');
+}
+
+//CHECK#2
+if((new Boolean()).valueOf() !== false){
+ $ERROR('#2: (new Boolean()).valueOf() === false');
+}
+
+//CHECK#3
+if((new Boolean(0)).valueOf() !== false){
+ $ERROR('#3: (new Boolean(0)).valueOf() === false');
+}
+
+//CHECK#4
+if((new Boolean(-1)).valueOf() !== true){
+ $ERROR('#4: (new Boolean(-1)).valueOf() === true');
+}
+
+//CHECK#5
+if((new Boolean(1)).valueOf() !== true){
+ $ERROR('#5: (new Boolean(1)).valueOf() === true');
+}
+
+//CHECK#6
+if((new Boolean(new Object())).valueOf() !== true){
+ $ERROR('#6: (new Boolean(new Object())).valueOf() === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A1_T2.js
new file mode 100644
index 000000000..77362c781
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A1_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.
+
+/**
+ * @name: S15.6.4.3_A1_T2;
+ * @section: 15.6.4.3;
+ * @assertion: Boolean.prototype.valueOf() returns this boolean value;
+ * @description: calling with argument;
+*/
+
+//CHECK#1
+if(Boolean.prototype.valueOf(true) !== false){
+ $ERROR('#1: Boolean.prototype.valueOf(true) === false');
+}
+
+//CHECK#2
+if((new Boolean()).valueOf(true) !== false){
+ $ERROR('#2: (new Boolean()).valueOf(true) === false');
+}
+
+//CHECK#3
+if((new Boolean(0)).valueOf(true) !== false){
+ $ERROR('#3: (new Boolean(0)).valueOf(true) === false');
+}
+
+//CHECK#4
+if((new Boolean(-1)).valueOf(false) !== true){
+ $ERROR('#4: (new Boolean(-1)).valueOf(false) === true');
+}
+
+//CHECK#5
+if((new Boolean(1)).valueOf(false) !== true){
+ $ERROR('#5: (new Boolean(1)).valueOf(false) === true');
+}
+
+//CHECK#6
+if((new Boolean(new Object())).valueOf(false) !== true){
+ $ERROR('#6: (new Boolean(new Object())).valueOf(false) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T1.js
new file mode 100644
index 000000000..08b61cbd0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.3_A2_T1;
+ * @section: 15.6.4.3;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the String objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new String();
+ s1.valueOf = Boolean.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#1
+try{
+ var s2 = new String();
+ s2.myValueOf = Boolean.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T2.js
new file mode 100644
index 000000000..69d39940b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_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.
+
+/**
+ * @name: S15.6.4.3_A2_T2;
+ * @section: 15.6.4.3;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the Number objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Number();
+ s1.valueOf = Boolean.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#1
+try{
+ var s2 = new Number();
+ s2.myValueOf = Boolean.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T3.js
new file mode 100644
index 000000000..3393c28ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T3.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.3_A2_T3;
+ * @section: 15.6.4.3;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the Date objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Date();
+ s1.valueOf = Boolean.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#1
+try{
+ var s2 = new Date();
+ s2.myValueOf = Boolean.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T4.js
new file mode 100644
index 000000000..d1d277000
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.3_A2_T4;
+ * @section: 15.6.4.3;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the Object objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Object();
+ s1.valueOf = Boolean.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#1
+try{
+ var s2 = new Object();
+ s2.myValueOf = Boolean.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T5.js
new file mode 100644
index 000000000..4922cf395
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4.3_A2_T5.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.6.4.3_A2_T5;
+ * @section: 15.6.4.3;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Boolean object;
+ * @description: transferring to the other objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = {x: 1};
+ s1.valueOf = Boolean.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#1
+try{
+ var s2 = {x: 1};
+ s2.myValueOf = Boolean.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Boolean.prototype.valueOf on not a Boolean object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4_A1.js
new file mode 100644
index 000000000..7af82b2a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4_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.
+
+/**
+ * @name: S15.6.4_A1;
+ * @section: 15.6.4;
+ * @assertion: The Boolean prototype object is itself a Boolean object
+ * (its [[Class]] is "Boolean") whose value is false;
+ * @description: Checking type and value of Boolean.prototype;
+ */
+
+//CHECK#1
+if (typeof Boolean.prototype !== "object") {
+ $ERROR('#1: typeof Boolean.prototype === "object"');
+}
+
+//CHECK#2
+if (Boolean.prototype != false) {
+ $ERROR('#2: Boolean.prototype == false');
+}
+
+delete Boolean.prototype.toString;
+
+if (Boolean.prototype.toString() !== "[object Boolean]") {
+ $ERROR('#3: The [[Class]] property of the Boolean prototype object is set to "Boolean"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4_A2.js
new file mode 100644
index 000000000..515d1f436
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.6_Boolean_Objects/15.6.4_Properties_of_the_Boolean_Prototype_Object/S15.6.4_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.
+
+/**
+ * @name: S15.6.4_A2;
+ * @section: 15.6.4;
+ * @assertion: The value of the internal [[Prototype]] property of the Boolean
+ * prototype object is the Object prototype object;
+ * @description: Checking Object.prototype.isPrototypeOf(Boolean.prototype);
+ */
+
+//CHECK#1
+if (!Object.prototype.isPrototypeOf(Boolean.prototype)) {
+ $ERROR('#1: Object prototype object is the prototype of Boolean prototype object');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.1_The_Number_Constructor_Called_as_a_Function/S15.7.1.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.1_The_Number_Constructor_Called_as_a_Function/S15.7.1.1_A1.js
new file mode 100644
index 000000000..10da19f0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.1_The_Number_Constructor_Called_as_a_Function/S15.7.1.1_A1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.1.1_A1;
+ * @section: 15.7.1.1;
+ * @assertion: Number([value]) returns a number value (not a Number object) computed by ToNumber(value) if value was supplied;
+ * @description: Used values "10", 10, new String("10"), new Object(10) and "abc";
+*/
+
+//CHECK#1
+if( typeof Number("10") !== "number" ) {
+ $ERROR('#1: typeof Number("10") should be "number", actual is "'+typeof Number("10")+'"');
+}
+
+//CHECK#2
+if( typeof Number(10) !== "number" ) {
+ $ERROR('#2: typeof Number(10) should be "number", actual is "'+typeof Number(10)+'"');
+}
+
+//CHECK#3
+if( typeof Number(new String("10")) !== "number" ) {
+ $ERROR('#3: typeof Number(new String("10")) should be "number", actual is "'+typeof Number(new String("10"))+'"');
+}
+
+//CHECK#4
+if( typeof Number(new Object(10)) !== "number" ) {
+ $ERROR('#4: typeof Number(new Object(10)) should be "number", actual is "'+typeof Number(new Object(10))+'"');
+}
+
+//CHECK #5
+if( typeof Number("abc") !== "number" ) {
+ $ERROR('#5: typeof Number("abc") should be "number", actual is "'+typeof Number("abc")+'"');
+}
+
+//CHECK #6
+if( !isNaN(Number("abc"))) {
+ $ERROR('#6: Number("abc")) should be NaN');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.1_The_Number_Constructor_Called_as_a_Function/S15.7.1.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.1_The_Number_Constructor_Called_as_a_Function/S15.7.1.1_A2.js
new file mode 100644
index 000000000..77bd87a84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.1_The_Number_Constructor_Called_as_a_Function/S15.7.1.1_A2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.1.1_A2;
+ * @section: 15.7.1.1;
+ * @assertion: Number() returns +0;
+ * @description: Call Number() and check result;
+*/
+
+//CHECK#1
+if( typeof Number() !== "number" ) {
+ $ERROR('#1: typeof Number() should be "number", actual is "'+typeof Number()+'"');
+}
+
+//CHECK#2
+if( Number() !== 0 ) {
+ $ERROR('#2: Number() === 0, actual is '+Number());
+} else if( 1/Number() !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#2: Number() === +0, actual is '+Number());
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A1.js
new file mode 100644
index 000000000..7bd549518
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A1.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.2.1_A1;
+ * @section: 15.7.2.1;
+ * @assertion: When Number is called as part of a new expression it is
+ * a constructor: it initialises the newly created object;
+ * @description: Checking type of the newly created object and it value;
+*/
+
+//CHECK#1
+if (typeof new Number() !== "object") {
+ $ERROR("#1: typeof new Number() === 'object'");
+}
+
+//CHECK#2
+if (new Number() === undefined) {
+ $ERROR("#2: new Number() should not be undefined");
+}
+
+//CHECK#3
+var x3 = new Number();
+if(typeof x3 !== "object"){
+ $ERROR("#3: typeof new Number() === 'object'");
+}
+
+//CHECK#4
+var x4 = new Number();
+if(x4 === undefined){
+ $ERROR("#4: new Number() should not be undefined");
+}
+
+//CHECK#5
+if (typeof new Number(10) !== "object") {
+ $ERROR("#5: typeof new Number(10) === 'object'");
+}
+
+//CHECK#6
+if (new Number(10) === undefined) {
+ $ERROR("#6: new Number(10) should not be undefined");
+}
+
+//CHECK#7
+var x7 = new Number(10);
+if(typeof x7 !== "object"){
+ $ERROR("#7: typeof new Number(10) === 'object'");
+}
+
+//CHECK#8
+var x8 = new Number(10);
+if(x8 === undefined){
+ $ERROR("#8: new Number(10) should not be undefined");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A2.js
new file mode 100644
index 000000000..fcf738567
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.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.
+
+/**
+ * @name: S15.7.2.1_A2;
+ * @section: 15.7.2.1;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Number prototype object, the one that is the
+ * initial value of Number.prototype;
+ * @description: Checking prototype property of the newly created objects;
+*/
+
+// CHECK#1
+var x1 = new Number(1);
+if (typeof x1.constructor.prototype !== "object") {
+ $ERROR('#1: typeof x1.constructor.prototype === "object"');
+}
+
+//CHECK#2
+var x2 = new Number(2);
+if (!Number.prototype.isPrototypeOf(x2)) {
+ $ERROR('#2: Number.prototype.isPrototypeOf(x2)');
+}
+
+//CHECK#3
+var x3 = new Number(3);
+if (Number.prototype !== x3.constructor.prototype) {
+ $ERROR('#3: Number.prototype === x3.constructor.prototype');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A3.js
new file mode 100644
index 000000000..3008843b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.2.1_A3;
+ * @section: 15.7.2.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set to ToNumber(value) if value was supplied, else to +0;
+ * @description: Checking value of the newly created object;
+*/
+
+//CHECK#1
+var x1 = new Number(1);
+if (x1.valueOf() !== 1) {
+ $ERROR('#1: var x1 = new Number(1); x1.valueOf() === 1');
+}
+
+//CHECK#2
+var x2 = new Number();
+if (x2.valueOf() !== 0) {
+ $ERROR('#2.1: var x2 = new Number(); x2.valueOf() === 0');
+} else if( 1/x2.valueOf() !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#2.2: var x2 = new Number(); x2.valueOf() === +0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A4.js
new file mode 100644
index 000000000..788ef319c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.2_The_Number_Constructor/S15.7.2.1_A4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.2.1_A4;
+ * @section: 15.7.2.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Number";
+ * @description: For testing toString function is used;
+*/
+
+delete Number.prototype.toString;
+
+var obj = new Number();
+
+//CHECK#1
+if (obj.toString() !== "[object Number]") {
+ $ERROR('#1: The [[Class]] property of the newly constructed object is set to "Number"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T1.js
new file mode 100644
index 000000000..f9361f6fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.1_A1_T1;
+ * @section: 15.7.3.1;
+ * @assertion: The Number property "prototype" has { DontEnum, DontDelete, ReadOnly } attributes;
+ * @description: Checking if varying the Number.prototype property fails;
+*/
+
+//CHECK#1
+var x = Number.prototype;
+Number.prototype = 1;
+if (Number.prototype !== x) {
+ $ERROR('#1: The Number.prototype property has the attributes ReadOnly');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T2.js
new file mode 100644
index 000000000..5c07e1251
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.1_A1_T2;
+ * @section: 15.7.3.1;
+ * @assertion: The Number property "prototype" has { DontEnum, DontDelete, ReadOnly } attributes;
+ * @description: Checking if deleting the Number.prototype property fails;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+if (delete Number.prototype !== false) {
+ $ERROR('#1: The Number.prototype property has the attributes DontDelete');
+}
+
+if (!Number.hasOwnProperty('prototype')) {
+ $FAIL('#2: The Number.prototype property has the attributes DontDelete');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T3.js
new file mode 100644
index 000000000..16ef37d26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A1_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.1_A1_T3;
+ * @section: 15.7.3.1;
+ * @assertion: The Number property "prototype" has { DontEnum, DontDelete, ReadOnly } attributes;
+ * @description: Checking if enumerating the Number.prototype property fails;
+*/
+
+if (Number.propertyIsEnumerable('prototype')) {
+ $ERROR('#1: The Number.prototype property has the attribute DontEnum');
+}
+
+for(x in Number) {
+ if(x === "prototype") {
+ $ERROR('#2: The Number.prototype has the attribute DontEnum');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A2_T1.js
new file mode 100644
index 000000000..e092bcc7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_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.
+
+/**
+ * @name: S15.7.3.1_A2_T1;
+ * @section: 15.7.3.1;
+ * @assertion: Number.prototype is itself Number object;
+ * @description: Checking type of Number.prototype property - test based on
+ * deleting Number.prototype.toString;
+*/
+
+//CHECK#1
+if (typeof Number.prototype !== "object") {
+ $ERROR('#1: typeof Number.prototype === "object"');
+}
+
+delete Number.prototype.toString;
+
+if (Number.prototype.toString() !== "[object Number]") {
+ $ERROR('#3: The [[Class]] property of the Number prototype object is set to "Number"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A2_T2.js
new file mode 100644
index 000000000..6d5c12758
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A2_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.1_A2_T2;
+ * @section: 15.7.3.1;
+ * @assertion: Number.prototype is itself Number object;
+ * @description: Checking type of Number.prototype property - test based on
+ * overwriting of Number.prototype.toString;
+*/
+
+//CHECK#1
+if (typeof Number.prototype !== "object") {
+ $ERROR('#1: typeof Number.prototype === "object"');
+}
+
+Number.prototype.toString = Object.prototype.toString;
+
+if (Number.prototype.toString() !== "[object Number]") {
+ $ERROR('#3: The [[Class]] property of the Number prototype object is set to "Number"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.1_A3.js
new file mode 100644
index 000000000..215ee69bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.1_Number.prototype/S15.7.3.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.
+
+/**
+ * @name: S15.7.3.1_A3;
+ * @section: 15.7.3.1;
+ * @assertion: Number.prototype value is +0;
+ * @description: Checking value of Number.prototype property;
+*/
+
+//CHECK#1
+if (Number.prototype != 0) {
+ $ERROR('#2: Number.prototype == +0');
+} else if( 1/Number.prototype != Number.POSITIVE_INFINITY){
+ $ERROR('#2: Number.prototype == +0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A1.js
new file mode 100644
index 000000000..003933ea1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_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.
+
+/**
+ * @name: S15.7.3.2_A1;
+ * @section: 15.7.3.2;
+ * @assertion: Number.MAX_VALUE is approximately 1.7976931348623157e308;
+ * @description: Checking Number.MAX_VALUE value;
+*/
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Number.MAX_VALUE, 1.7976931348623157e308)) {
+ $ERROR('#1: Number.MAX_VALUE approximately equal to 1.7976931348623157e308');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A2.js
new file mode 100644
index 000000000..2f66dacde
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A2.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.
+
+/**
+ * @name: S15.7.3.2_A2;
+ * @section: 15.7.3.2;
+ * @assertion: Number.MAX_VALUE is ReadOnly;
+ * @description: Checking if varying Number.MAX_VALUE fails;
+*/
+
+// CHECK#1
+var x = Number.MAX_VALUE;
+Number.MAX_VALUE = 1;
+if (Number.MAX_VALUE !== x) {
+ $ERROR('#1: x = Number.MAX_VALUE; Number.MAX_VALUE = 1; Number.MAX_VALUE === x');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A3.js
new file mode 100644
index 000000000..74a4ba268
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.2_A3;
+ * @section: 15.7.3.2;
+ * @assertion: Number.MAX_VALUE is DontDelete;
+ * @description: Checking if deleting Number.MAX_VALUE fails;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+if (delete Number.MAX_VALUE !== false) {
+ $ERROR('#1: delete Number.MAX_VALUE === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A4.js
new file mode 100644
index 000000000..46dee3a16
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.2_Number.MAX_VALUE/S15.7.3.2_A4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.2_A4;
+ * @section: 15.7.3.2;
+ * @assertion: Number.MAX_VALUE has the attribute DontEnum;
+ * @description: Checking if enumerating Number.MAX_VALUE fails;
+*/
+
+//CHECK#1
+for(var x in Number) {
+ if(x === "MAX_VALUE") {
+ $ERROR('#1: Number.MAX_VALUE has the attribute DontEnum');
+ }
+}
+
+if (Number.propertyIsEnumerable('MAX_VALUE')) {
+ $ERROR('#2: Number.MAX_VALUE has the attribute DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A1.js
new file mode 100644
index 000000000..56e331836
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_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.
+
+/**
+ * @name: S15.7.3.3_A1;
+ * @section: 15.7.3.3;
+ * @assertion: Number.MIN_VALUE is approximately 5e-324;
+ * @description: Checking Number.MIN_VALUE value;
+*/
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Number.MIN_VALUE, 5e-324)) {
+ $ERROR('#1: Number.MIN_VALUE approximately equal to 5e-324');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A2.js
new file mode 100644
index 000000000..14af8d289
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A2.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.
+
+/**
+ * @name: S15.7.3.3_A2;
+ * @section: 15.7.3.3;
+ * @assertion: Number.MIN_VALUE is ReadOnly;
+ * @description: Checking if varying Number.MIN_VALUE fails;
+*/
+
+// CHECK#1
+var x = Number.MIN_VALUE;
+Number.MIN_VALUE = 1;
+if (Number.MIN_VALUE !== x) {
+ $ERROR('#1: x = Number.MIN_VALUE; Number.MIN_VALUE = 1; Number.MIN_VALUE === x');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A3.js
new file mode 100644
index 000000000..c166cd3e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.3_A3;
+ * @section: 15.7.3.3;
+ * @assertion: Number.MIN_VALUE is DontDelete;
+ * @description: Checking if deleting Number.MIN_VALUE fails;
+ * @strict_mode_negative
+*/
+
+//CHECK#1
+if (delete Number.MIN_VALUE !== false) {
+ $ERROR('#1: delete Number.MIN_VALUE === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A4.js
new file mode 100644
index 000000000..1e55a72f1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.3_Number.MIN_VALUE/S15.7.3.3_A4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.3_A4;
+ * @section: 15.7.3.3;
+ * @assertion: Number.MIN_VALUE has the attribute DontEnum;
+ * @description: Checking if enumerating Number.MIN_VALUE fails;
+*/
+
+//CHECK#1
+for(var x in Number) {
+ if(x === "MIN_VALUE") {
+ $ERROR('#1: Number.MIN_VALUE has the attribute DontEnum');
+ }
+}
+
+if (Number.propertyIsEnumerable('MIN_VALUE')) {
+ $ERROR('#2: Number.MIN_VALUE has the attribute DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A1.js
new file mode 100644
index 000000000..ba287c313
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.4_A1;
+ * @section: 15.7.3.4;
+ * @assertion: Number.NaN is Not-a-Number;
+ * @description: Checking isNaN(Number.NaN);
+*/
+
+// CHECK#1
+if (isNaN(Number.NaN) !== true) {
+ $ERROR('#1: Number.NaN === Not-a-Number');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A2.js
new file mode 100644
index 000000000..bef1a7a06
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_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.
+
+/**
+ * @name: S15.7.3.4_A2;
+ * @section: 15.7.3.4;
+ * @assertion: Number.NaN is ReadOnly;
+ * @description: Checking if varying Number.NaN fails;
+*/
+
+// CHECK#1
+Number.NaN = 1;
+if (isNaN(Number.NaN) !== true) {
+ $ERROR('#1: Number.NaN = 1; Number.NaN === Not-a-Number');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A3.js
new file mode 100644
index 000000000..b8f427cab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.4_A3;
+ * @section: 15.7.3.4;
+ * @assertion: Number.NaN is DontDelete;
+ * @description: Checking if deleting Number.NaN fails;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+if (delete Number.NaN !== false) {
+ $ERROR('#1: delete Number.NaN === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A4.js
new file mode 100644
index 000000000..b129a4d77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.4_Number.NaN/S15.7.3.4_A4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.4_A4;
+ * @section: 15.7.3.4;
+ * @assertion: Number.NaN has the attribute DontEnum;
+ * @description: Checking if enumerating Number.NaN fails;
+*/
+
+//CHECK#1
+for(var x in Number) {
+ if(x === "NaN") {
+ $ERROR('#1: Number.NaN has the attribute DontEnum');
+ }
+}
+
+if (Number.propertyIsEnumerable('NaN')) {
+ $ERROR('#2: Number.NaN has the attribute DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A1.js
new file mode 100644
index 000000000..aea96e07b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.5_A1;
+ * @section: 15.7.3.5;
+ * @assertion: Number.NEGATIVE_INFINITY is -Infinity;
+ * @description: Checking sign and finiteness of Number.NEGATIVE_INFINITY;
+*/
+
+// CHECK#1
+if (isFinite(Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#1: Number.NEGATIVE_INFINITY === Not-a-Finite');
+} else {
+ if ((Number.NEGATIVE_INFINITY < 0) !== true) {
+ $ERROR('#1: Number.NEGATIVE_INFINITY === -Infinity');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A2.js
new file mode 100644
index 000000000..b9eb44bb6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.5_A2;
+ * @section: 15.7.3.5;
+ * @assertion: Number.NEGATIVE_INFINITY is ReadOnly;
+ * @description: Checking if varying Number.NEGATIVE_INFINITY fails;
+*/
+
+// CHECK#1
+Number.NEGATIVE_INFINITY = 1;
+if (isFinite(Number.NEGATIVE_INFINITY)) {
+ $ERROR('#1: Number.NEGATIVE_INFINITY = 1; Number.NEGATIVE_INFINITY === -Infinity');
+} else {
+ if (Number.NEGATIVE_INFINITY >= 0) {
+ $ERROR('#1: Number.NEGATIVE_INFINITY = 1; Number.NEGATIVE_INFINITY === -Infinity');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A3.js
new file mode 100644
index 000000000..f898c7a49
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.5_A3;
+ * @section: 15.7.3.5;
+ * @assertion: Number.NEGATIVE_INFINITY is DontDelete;
+ * @description: Checking if deleting Number.NEGATIVE_INFINITY fails;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+if (delete Number.NEGATIVE_INFINITY !== false) {
+ $ERROR('#1: delete Number.NEGATIVE_INFINITY === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A4.js
new file mode 100644
index 000000000..105d708d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.5_Number.NEGATIVE_INFINITY/S15.7.3.5_A4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.5_A4;
+ * @section: 15.7.3.5;
+ * @assertion: Number.NEGATIVE_INFINITY has the attribute DontEnum;
+ * @description: Checking if enumerating Number.NEGATIVE_INFINITY fails;
+*/
+
+//CHECK#1
+for(var x in Number) {
+ if(x === "NEGATIVE_INFINITY") {
+ $ERROR('#1: Number.NEGATIVE_INFINITY has the attribute DontEnum');
+ }
+}
+
+if (Number.propertyIsEnumerable('NEGATIVE_INFINITY')) {
+ $ERROR('#2: Number.NEGATIVE_INFINITY has the attribute DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A1.js
new file mode 100644
index 000000000..1e442e874
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.6_A1;
+ * @section: 15.7.3.6;
+ * @assertion: Number.POSITIVE_INFINITY is +Infinity;
+ * @description: Checking sign and finiteness of Number.POSITIVE_INFINITY;
+*/
+
+// CHECK#1
+if (isFinite(Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#1: Number.POSITIVE_INFINITY === Not-a-Finite');
+} else {
+ if ((Number.POSITIVE_INFINITY > 0) !== true) {
+ $ERROR('#1: Number.POSITIVE_INFINITY === +Infinity');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A2.js
new file mode 100644
index 000000000..bd5e8f7cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.6_A2;
+ * @section: 15.7.3.6;
+ * @assertion: Number.POSITIVE_INFINITY is ReadOnly;
+ * @description: Checking if varying Number.POSITIVE_INFINITY fails;
+*/
+
+// CHECK#1
+Number.POSITIVE_INFINITY = 1;
+if (isFinite(Number.POSITIVE_INFINITY)) {
+ $ERROR('#1: Number.POSITIVE_INFINITY = 1; Number.POSITIVE_INFINITY === +Infinity');
+} else {
+ if (Number.POSITIVE_INFINITY <= 0) {
+ $ERROR('#1: Number.POSITIVE_INFINITY = 1; Number.POSITIVE_INFINITY === +Infinity');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A3.js
new file mode 100644
index 000000000..8e8fd41fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.6_A3;
+ * @section: 15.7.3.6;
+ * @assertion: Number.POSITIVE_INFINITY is DontDelete;
+ * @description: Checking if deleting Number.POSITIVE_INFINITY fails;
+ * @strict_mode_negative
+*/
+
+// CHECK#1
+if (delete Number.POSITIVE_INFINITY !== false) {
+ $ERROR('#1: delete Number.POSITIVE_INFINITY === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A4.js
new file mode 100644
index 000000000..2dd66d164
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/15.7.3.6_Number.POSITIVE_INFINITY/S15.7.3.6_A4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3.6_A4;
+ * @section: 15.7.3.6;
+ * @assertion: Number.POSITIVE_INFINITY has the attribute DontEnum;
+ * @description: Checking if enumerating Number.POSITIVE_INFINITY fails;
+*/
+
+//CHECK#1
+for(var x in Number) {
+ if(x === "POSITIVE_INFINITY") {
+ $ERROR('#1: Number.POSITIVE_INFINITY has the attribute DontEnum');
+ }
+}
+
+if (Number.propertyIsEnumerable('POSITIVE_INFINITY')) {
+ $ERROR('#2: Number.POSITIVE_INFINITY has the attribute DontEnum');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A1.js
new file mode 100644
index 000000000..bf9c53762
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3_A1;
+ * @section: 15.7.3;
+ * @assertion: The Number constructor has the property "prototype";
+ * @description: Checking existence of the property "prototype";
+ */
+
+if(!Number.hasOwnProperty("prototype")){
+ $ERROR('#1: The Number constructor has the property "prototype"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A2.js
new file mode 100644
index 000000000..4110bca7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3_A2;
+ * @section: 15.7.3;
+ * @assertion: The Number constructor has the property "MAX_VALUE";
+ * @description: Checking existence of the property "MAX_VALUE";
+ */
+
+if(!Number.hasOwnProperty("MAX_VALUE")){
+ $ERROR('#1: The Number constructor has the property "MAX_VALUE"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A3.js
new file mode 100644
index 000000000..814c4e710
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A3.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3_A3;
+ * @section: 15.7.3;
+ * @assertion: The Number constructor has the property "MIN_VALUE";
+ * @description: Checking existence of the property "MIN_VALUE";
+ */
+
+if(!Number.hasOwnProperty("MIN_VALUE")){
+ $ERROR('#1: The Number constructor has the property "MIN_VALUE"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A4.js
new file mode 100644
index 000000000..0f9d15c5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3_A4;
+ * @section: 15.7.3;
+ * @assertion: The Number constructor has the property "NaN";
+ * @description: Checking existence of the property "NaN";
+ */
+
+if(!Number.hasOwnProperty("NaN")){
+ $ERROR('#1: The Number constructor has the property "NaN"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A5.js
new file mode 100644
index 000000000..6d5bef400
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A5.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3_A5;
+ * @section: 15.7.3;
+ * @assertion: The Number constructor has the property "NEGATIVE_INFINITY";
+ * @description: Checking existence of the property "NEGATIVE_INFINITY";
+ */
+
+if(!Number.hasOwnProperty("NEGATIVE_INFINITY")){
+ $ERROR('#1: The Number constructor has the property "NEGATIVE_INFINITY"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A6.js
new file mode 100644
index 000000000..03b665296
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.3_A6;
+ * @section: 15.7.3;
+ * @assertion: The Number constructor has the property "POSITIVE_INFINITY";
+ * @description: Checking existence of the property "POSITIVE_INFINITY";
+ */
+
+if(!Number.hasOwnProperty("POSITIVE_INFINITY")){
+ $ERROR('#1: The Number constructor has the property "POSITIVE_INFINITY"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A7.js
new file mode 100644
index 000000000..df4084894
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A7.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.7.3_A7;
+* @section: 15.7.3;
+* @assertion: The value of the internal [[Prototype]] property of the Number
+* constructor is the Function prototype object;
+* @description: Checking Function.prototype.isPrototypeOf(Number);
+*/
+
+//CHECK#1
+if (!(Function.prototype.isPrototypeOf(Number))) {
+ $ERROR('#1: the value of the internal [[Prototype]] property of the Number constructor is the Function prototype object.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A8.js
new file mode 100644
index 000000000..a94f3732d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.3_Properties_of_Number_Constructor/S15.7.3_A8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.7.3_A8;
+* @section: 15.7.3;
+* @assertion: Number constructor has length property whose value is 1;
+* @description: Checking Number.length property;
+*/
+
+//CHECK#1
+if (!Number.hasOwnProperty("length")){
+ $ERROR('#1: Number constructor has length property');
+}
+
+//CHECK#2
+if (Number.length !== 1) {
+ $ERROR('#2: Number constructor length property value is 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.1_Number.prototype.constructor/S15.7.4.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.1_Number.prototype.constructor/S15.7.4.1_A1.js
new file mode 100644
index 000000000..86f4e69ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.1_Number.prototype.constructor/S15.7.4.1_A1.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.
+
+/**
+ * @name: S15.7.4.1_A1;
+ * @section: 15.7.4.1;
+ * @assertion: The initial value of Number.prototype.constructor is the
+ * built-in Number constructor;
+ * @description: Compare Number.prototype.constructor with Number;
+*/
+
+//CHECK#1
+if(Number.prototype.constructor !== Number){
+ $ERROR('#1: Number.prototype.constructor === Number');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T01.js
new file mode 100644
index 000000000..84df44553
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T01.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A1_T01;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is the number 10 or undefined, then this
+ * number value is given as an argument to the ToString operator.
+ * the resulting string value is returned;
+ * @description: undefined radix;
+*/
+
+//CHECK#1
+if(Number.prototype.toString() !== "0"){
+ $ERROR('#1: Number.prototype.toString() === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString() !== "0"){
+ $ERROR('#2: (new Number()).toString() === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString() !== "0"){
+ $ERROR('#3: (new Number(0)).toString() === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString() !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString() === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString() !== "1"){
+ $ERROR('#5: (new Number(1)).toString() === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString() !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString() === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString() !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString() === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString() !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString() === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T02.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T02.js
new file mode 100644
index 000000000..6048f024e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T02.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A1_T02;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is the number 10 or undefined, then this
+ * number value is given as an argument to the ToString operator.
+ * the resulting string value is returned;
+ * @description: radix is 10;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(10) !== "0"){
+ $ERROR('#1: Number.prototype.toString(10) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(10) !== "0"){
+ $ERROR('#2: (new Number()).toString(10) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(10) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(10) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(10) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(10) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(10) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(10) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(10) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(10) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(10) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(10) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(10) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(10) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T03.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T03.js
new file mode 100644
index 000000000..bc7dccd3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A1_T03.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A1_T03;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is the number 10 or undefined, then this
+ * number value is given as an argument to the ToString operator.
+ * the resulting string value is returned;
+ * @description: radix is undefined value;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(undefined) !== "0"){
+ $ERROR('#1: Number.prototype.toString(undefined) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(undefined) !== "0"){
+ $ERROR('#2: (new Number()).toString(undefined) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(undefined) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(undefined) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(undefined) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(undefined) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(undefined) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(undefined) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(undefined) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(undefined) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(undefined) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(undefined) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(undefined) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(undefined) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T01.js
new file mode 100644
index 000000000..8a86633fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T01.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T01;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 2;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(2) !== "0"){
+ $ERROR('#1: Number.prototype.toString(2) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(2) !== "0"){
+ $ERROR('#2: (new Number()).toString(2) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(2) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(2) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(2) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(2) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(2) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(2) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(2) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(2) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(2) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(2) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(2) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(2) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T02.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T02.js
new file mode 100644
index 000000000..e031f44fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T02.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T02;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 3;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(3) !== "0"){
+ $ERROR('#1: Number.prototype.toString(3) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(3) !== "0"){
+ $ERROR('#2: (new Number()).toString(3) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(3) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(3) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(3) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(3) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(3) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(3) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(3) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(3) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(3) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(3) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(3) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(3) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T03.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T03.js
new file mode 100644
index 000000000..6857aa6d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T03.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T03;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 4;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(4) !== "0"){
+ $ERROR('#1: Number.prototype.toString(4) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(4) !== "0"){
+ $ERROR('#2: (new Number()).toString(4) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(4) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(4) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(4) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(4) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(4) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(4) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(4) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(4) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(4) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(4) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(4) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(4) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T04.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T04.js
new file mode 100644
index 000000000..444f03547
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T04.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T04;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 5;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(5) !== "0"){
+ $ERROR('#1: Number.prototype.toString(5) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(5) !== "0"){
+ $ERROR('#2: (new Number()).toString(5) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(5) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(5) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(5) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(5) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(5) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(5) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(5) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(5) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(5) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(5) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(5) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(5) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T05.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T05.js
new file mode 100644
index 000000000..0eb9f51d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T05.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T05;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 6;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(6) !== "0"){
+ $ERROR('#1: Number.prototype.toString(6) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(6) !== "0"){
+ $ERROR('#2: (new Number()).toString(6) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(6) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(6) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(6) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(6) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(6) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(6) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(6) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(6) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(6) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(6) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(6) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(6) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T06.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T06.js
new file mode 100644
index 000000000..8c1ef484b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T06.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T06;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 7;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(7) !== "0"){
+ $ERROR('#1: Number.prototype.toString(7) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(7) !== "0"){
+ $ERROR('#2: (new Number()).toString(7) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(7) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(7) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(7) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(7) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(7) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(7) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(7) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(7) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(7) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(7) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(7) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(7) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T07.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T07.js
new file mode 100644
index 000000000..8b8554ad7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T07.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T07;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 8;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(8) !== "0"){
+ $ERROR('#1: Number.prototype.toString(8) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(8) !== "0"){
+ $ERROR('#2: (new Number()).toString(8) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(8) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(8) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(8) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(8) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(8) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(8) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(8) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(8) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(8) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(8) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(8) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(8) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T08.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T08.js
new file mode 100644
index 000000000..1eedcd387
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T08.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T08;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 9;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(9) !== "0"){
+ $ERROR('#1: Number.prototype.toString(9) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(9) !== "0"){
+ $ERROR('#2: (new Number()).toString(9) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(9) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(9) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(9) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(9) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(9) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(9) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(9) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(9) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(9) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(9) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(9) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(9) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T09.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T09.js
new file mode 100644
index 000000000..d9b04e8ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T09.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T09;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 11;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(11) !== "0"){
+ $ERROR('#1: Number.prototype.toString(11) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(11) !== "0"){
+ $ERROR('#2: (new Number()).toString(11) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(11) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(11) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(11) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(11) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(11) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(11) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(11) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(11) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(11) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(11) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(11) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(11) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T10.js
new file mode 100644
index 000000000..87f640f42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T10.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T10;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 12;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(12) !== "0"){
+ $ERROR('#1: Number.prototype.toString(12) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(12) !== "0"){
+ $ERROR('#2: (new Number()).toString(12) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(12) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(12) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(12) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(12) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(12) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(12) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(12) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(12) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(12) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(12) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(12) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(12) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T11.js
new file mode 100644
index 000000000..8fba514a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T11.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T11;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 13;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(13) !== "0"){
+ $ERROR('#1: Number.prototype.toString(13) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(13) !== "0"){
+ $ERROR('#2: (new Number()).toString(13) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(13) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(13) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(13) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(13) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(13) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(13) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(13) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(13) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(13) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(13) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(13) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(13) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T12.js
new file mode 100644
index 000000000..101be9822
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T12.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T12;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 14;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(14) !== "0"){
+ $ERROR('#1: Number.prototype.toString(14) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(14) !== "0"){
+ $ERROR('#2: (new Number()).toString(14) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(14) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(14) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(14) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(14) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(14) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(14) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(14) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(14) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(14) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(14) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(14) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(14) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T13.js
new file mode 100644
index 000000000..288b33432
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T13.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T13;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 15;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(15) !== "0"){
+ $ERROR('#1: Number.prototype.toString(15) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(15) !== "0"){
+ $ERROR('#2: (new Number()).toString(15) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(15) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(15) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(15) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(15) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(15) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(15) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(15) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(15) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(15) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(15) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(15) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(15) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T14.js
new file mode 100644
index 000000000..3c99a17be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T14.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T14;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 16;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(16) !== "0"){
+ $ERROR('#1: Number.prototype.toString(16) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(16) !== "0"){
+ $ERROR('#2: (new Number()).toString(16) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(16) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(16) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(16) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(16) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(16) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(16) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(16) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(16) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(16) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(16) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(16) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(16) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T15.js
new file mode 100644
index 000000000..53566eb72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T15.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T15;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 17;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(17) !== "0"){
+ $ERROR('#1: Number.prototype.toString(17) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(17) !== "0"){
+ $ERROR('#2: (new Number()).toString(17) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(17) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(17) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(17) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(17) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(17) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(17) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(17) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(17) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(17) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(17) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(17) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(17) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T16.js
new file mode 100644
index 000000000..e4aeaf34f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T16.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T16;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 18;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(18) !== "0"){
+ $ERROR('#1: Number.prototype.toString(18) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(18) !== "0"){
+ $ERROR('#2: (new Number()).toString(18) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(18) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(18) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(18) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(18) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(18) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(18) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(18) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(18) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(18) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(18) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(18) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(18) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T17.js
new file mode 100644
index 000000000..c2695f5db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T17.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T17;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 19;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(19) !== "0"){
+ $ERROR('#1: Number.prototype.toString(19) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(19) !== "0"){
+ $ERROR('#2: (new Number()).toString(19) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(19) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(19) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(19) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(19) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(19) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(19) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(19) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(19) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(19) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(19) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(19) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(19) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T18.js
new file mode 100644
index 000000000..49a9a365e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T18.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T18;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 20;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(20) !== "0"){
+ $ERROR('#1: Number.prototype.toString(20) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(20) !== "0"){
+ $ERROR('#2: (new Number()).toString(20) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(20) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(20) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(20) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(20) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(20) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(20) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(20) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(20) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(20) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(20) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(20) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(20) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T19.js
new file mode 100644
index 000000000..7ca7d4093
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T19.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T19;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 21;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(21) !== "0"){
+ $ERROR('#1: Number.prototype.toString(21) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(21) !== "0"){
+ $ERROR('#2: (new Number()).toString(21) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(21) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(21) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(21) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(21) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(21) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(21) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(21) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(21) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(21) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(21) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(21) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(21) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T20.js
new file mode 100644
index 000000000..fc632d378
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T20.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T20;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 22;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(22) !== "0"){
+ $ERROR('#1: Number.prototype.toString(22) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(22) !== "0"){
+ $ERROR('#2: (new Number()).toString(22) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(22) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(22) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(22) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(22) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(22) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(22) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(22) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(22) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(22) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(22) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(22) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(22) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T21.js
new file mode 100644
index 000000000..a217412b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T21.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T21;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 23;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(23) !== "0"){
+ $ERROR('#1: Number.prototype.toString(23) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(23) !== "0"){
+ $ERROR('#2: (new Number()).toString(23) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(23) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(23) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(23) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(23) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(23) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(23) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(23) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(23) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(23) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(23) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(23) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(23) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T22.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T22.js
new file mode 100644
index 000000000..a3c14f796
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T22.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T22;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 24;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(24) !== "0"){
+ $ERROR('#1: Number.prototype.toString(24) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(24) !== "0"){
+ $ERROR('#2: (new Number()).toString(24) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(24) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(24) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(24) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(24) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(24) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(24) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(24) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(24) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(24) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(24) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(24) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(24) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T23.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T23.js
new file mode 100644
index 000000000..0471ec426
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T23.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T23;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 25;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(25) !== "0"){
+ $ERROR('#1: Number.prototype.toString(25) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(25) !== "0"){
+ $ERROR('#2: (new Number()).toString(25) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(25) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(25) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(25) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(25) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(25) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(25) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(25) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(25) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(25) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(25) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(25) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(25) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T24.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T24.js
new file mode 100644
index 000000000..e4cdd5a10
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T24.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T24;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 26;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(26) !== "0"){
+ $ERROR('#1: Number.prototype.toString(26) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(26) !== "0"){
+ $ERROR('#2: (new Number()).toString(26) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(26) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(26) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(26) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(26) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(26) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(26) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(26) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(26) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(26) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(26) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(26) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(26) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T25.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T25.js
new file mode 100644
index 000000000..77ba1578b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T25.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T25;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 27;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(27) !== "0"){
+ $ERROR('#1: Number.prototype.toString(27) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(27) !== "0"){
+ $ERROR('#2: (new Number()).toString(27) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(27) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(27) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(27) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(27) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(27) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(27) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(27) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(27) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(27) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(27) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(27) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(27) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T26.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T26.js
new file mode 100644
index 000000000..11cb0f55c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T26.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T26;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 28;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(28) !== "0"){
+ $ERROR('#1: Number.prototype.toString(28) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(28) !== "0"){
+ $ERROR('#2: (new Number()).toString(28) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(28) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(28) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(28) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(28) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(28) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(28) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(28) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(28) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(28) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(28) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(28) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(28) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T27.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T27.js
new file mode 100644
index 000000000..92f149590
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T27.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T27;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 29;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(29) !== "0"){
+ $ERROR('#1: Number.prototype.toString(29) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(29) !== "0"){
+ $ERROR('#2: (new Number()).toString(29) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(29) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(29) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(29) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(29) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(29) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(29) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(29) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(29) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(29) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(29) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(29) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(29) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T28.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T28.js
new file mode 100644
index 000000000..8bbd3b23c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T28.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T28;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 30;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(30) !== "0"){
+ $ERROR('#1: Number.prototype.toString(30) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(30) !== "0"){
+ $ERROR('#2: (new Number()).toString(30) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(30) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(30) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(30) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(30) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(30) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(30) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(30) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(30) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(30) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(30) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(30) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(30) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T29.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T29.js
new file mode 100644
index 000000000..0bf12bbed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T29.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T29;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 31;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(31) !== "0"){
+ $ERROR('#1: Number.prototype.toString(31) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(31) !== "0"){
+ $ERROR('#2: (new Number()).toString(31) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(31) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(31) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(31) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(31) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(31) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(31) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(31) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(31) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(31) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(31) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(31) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(31) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T30.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T30.js
new file mode 100644
index 000000000..a41f7be83
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T30.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T30;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 32;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(32) !== "0"){
+ $ERROR('#1: Number.prototype.toString(32) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(32) !== "0"){
+ $ERROR('#2: (new Number()).toString(32) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(32) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(32) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(32) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(32) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(32) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(32) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(32) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(32) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(32) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(32) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(32) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(32) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T31.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T31.js
new file mode 100644
index 000000000..334a78152
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T31.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T31;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 33;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(33) !== "0"){
+ $ERROR('#1: Number.prototype.toString(33) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(33) !== "0"){
+ $ERROR('#2: (new Number()).toString(33) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(33) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(33) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(33) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(33) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(33) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(33) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(33) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(33) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(33) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(33) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(33) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(33) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T32.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T32.js
new file mode 100644
index 000000000..b7a9cba80
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T32.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T32;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 34;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(34) !== "0"){
+ $ERROR('#1: Number.prototype.toString(34) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(34) !== "0"){
+ $ERROR('#2: (new Number()).toString(34) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(34) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(34) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(34) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(34) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(34) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(34) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(34) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(34) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(34) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(34) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(34) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(34) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T33.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T33.js
new file mode 100644
index 000000000..b3d901484
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T33.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T33;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 35;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(35) !== "0"){
+ $ERROR('#1: Number.prototype.toString(35) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(35) !== "0"){
+ $ERROR('#2: (new Number()).toString(35) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(35) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(35) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(35) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(35) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(35) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(35) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(35) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(35) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(35) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(35) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(35) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(35) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T34.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T34.js
new file mode 100644
index 000000000..9fa153309
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A2_T34.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A2_T34;
+ * @section: 15.7.4.2;
+ * @assertion: toString: If radix is an integer from 2 to 36, but not 10,
+ * the result is a string, the choice of which is implementation-dependent;
+ * @description: radix is 36;
+*/
+
+//CHECK#1
+if(Number.prototype.toString(36) !== "0"){
+ $ERROR('#1: Number.prototype.toString(36) === "0"');
+}
+
+//CHECK#2
+if((new Number()).toString(36) !== "0"){
+ $ERROR('#2: (new Number()).toString(36) === "0"');
+}
+
+//CHECK#3
+if((new Number(0)).toString(36) !== "0"){
+ $ERROR('#3: (new Number(0)).toString(36) === "0"');
+}
+
+//CHECK#4
+if((new Number(-1)).toString(36) !== "-1"){
+ $ERROR('#4: (new Number(-1)).toString(36) === "-1"');
+}
+
+//CHECK#5
+if((new Number(1)).toString(36) !== "1"){
+ $ERROR('#5: (new Number(1)).toString(36) === "1"');
+}
+
+//CHECK#6
+if((new Number(Number.NaN)).toString(36) !== "NaN"){
+ $ERROR('#6: (new Number(Number.NaN)).toString(36) === "NaN"');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).toString(36) !== "Infinity"){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(36) === "Infinity"');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).toString(36) !== "-Infinity"){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(36) === "-Infinity"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T01.js
new file mode 100644
index 000000000..6a3950f2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T01.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A3_T01;
+ * @section: 15.7.4.2;
+ * @assertion: toString: radix should be an integer between 2 and 36;
+ * @description: radix is 1;
+*/
+
+//CHECK#1
+try{
+ var n = Number.prototype.toString(1);
+ $ERROR('#1: Number.prototype.toString(1) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#2
+try{
+ var n = (new Number()).toString(1);
+ $ERROR('#2: (new Number()).toString(1) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#3
+try{
+ var n = (new Number(0)).toString(1);
+ $ERROR('#3: (new Number(0)).toString(1) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#4
+try{
+ var n = (new Number(-1)).toString(1);
+ $ERROR('#4: (new Number(-1)).toString(1) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#5
+try{
+ var n =(new Number(1)).toString(1);
+ $ERROR('#5: (new Number(1)).toString(1) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#6
+try{
+ var n =(new Number(Number.NaN)).toString(1);
+ $ERROR('#6: (new Number(Number.NaN)).toString(1) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#7
+try{
+ var n =(new Number(Number.POSITIVE_INFINITY)).toString(1);
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(1) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#8
+try{
+ var n =(new Number(Number.NEGATIVE_INFINITY)).toString(1);
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(1) should throw an Error');
+}
+catch(e){
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T02.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T02.js
new file mode 100644
index 000000000..d40f4e8f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T02.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A3_T02;
+ * @section: 15.7.4.2;
+ * @assertion: toString: radix should be an integer between 2 and 36;
+ * @description: radix is 37;
+*/
+
+//CHECK#1
+try{
+ var n =Number.prototype.toString(37);
+ $ERROR('#1: Number.prototype.toString(37) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#2
+try{
+ var n =(new Number()).toString(37);
+ $ERROR('#2: (new Number()).toString(37) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#3
+try{
+ var n =(new Number(0)).toString(37);
+ $ERROR('#3: (new Number(0)).toString(37) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#4
+try{
+ var n =(new Number(-1)).toString(37);
+ $ERROR('#4: (new Number(-1)).toString(37) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#5
+try{
+ var n =(new Number(1)).toString(37);
+ $ERROR('#5: (new Number(1)).toString(37) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#6
+try{
+ var n =(new Number(Number.NaN)).toString(37);
+ $ERROR('#6: (new Number(Number.NaN)).toString(37) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#7
+try{
+ var n =(new Number(Number.POSITIVE_INFINITY)).toString(37);
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(37) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#8
+try{
+ var n =(new Number(Number.NEGATIVE_INFINITY)).toString(37);
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(37) should throw an Error');
+}
+catch(e){
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T03.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T03.js
new file mode 100644
index 000000000..7c6a3de7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T03.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A3_T03;
+ * @section: 15.7.4.2;
+ * @assertion: toString: radix should be an integer between 2 and 36;
+ * @description: radix is null value;
+*/
+
+//CHECK#1
+try{
+ var n = Number.prototype.toString(null);
+ $ERROR('#1: Number.prototype.toString(null) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#2
+try{
+ var n = (new Number()).toString(null);
+ $ERROR('#2: (new Number()).toString(null) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#3
+try{
+ var n = (new Number(0)).toString(null);
+ $ERROR('#3: (new Number(0)).toString(null) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#4
+try{
+ var n = (new Number(-1)).toString(null);
+ $ERROR('#4: (new Number(-1)).toString(null) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#5
+try{
+ var n = (new Number(1)).toString(null);
+ $ERROR('#5: (new Number(1)).toString(null) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#6
+try{
+ var n = (new Number(Number.NaN)).toString(null);
+ $ERROR('#6: (new Number(Number.NaN)).toString(null) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#7
+try{
+ var n = (new Number(Number.POSITIVE_INFINITY)).toString(null);
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(null) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#8
+try{
+ var n = (new Number(Number.NEGATIVE_INFINITY)).toString(null);
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(null) should throw an Error');
+}
+catch(e){
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T04.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T04.js
new file mode 100644
index 000000000..fb55efc64
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A3_T04.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A3_T04;
+ * @section: 15.7.4.2;
+ * @assertion: toString: radix should be an integer between 2 and 36;
+ * @description: radix is 0;
+*/
+
+//CHECK#1
+try{
+ var n = Number.prototype.toString(0);
+ $ERROR('#1: Number.prototype.toString(0) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#2
+try{
+ var n = (new Number()).toString(0);
+ $ERROR('#2: (new Number()).toString(0) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#3
+try{
+ var n = (new Number(0)).toString(0);
+ $ERROR('#3: (new Number(0)).toString(0) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#4
+try{
+ var n = (new Number(-1)).toString(0);
+ $ERROR('#4: (new Number(-1)).toString(0) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#5
+try{
+ var n = (new Number(1)).toString(0);
+ $ERROR('#5: (new Number(1)).toString(0) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#6
+try{
+ var n = (new Number(Number.NaN)).toString(0);
+ $ERROR('#6: (new Number(Number.NaN)).toString(0) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#7
+try{
+ var n = (new Number(Number.POSITIVE_INFINITY)).toString(0);
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).toString(0) should throw an Error');
+}
+catch(e){
+}
+
+//CHECK#8
+try{
+ var n = (new Number(Number.NEGATIVE_INFINITY)).toString(0);
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).toString(0) should throw an Error');
+}
+catch(e){
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T01.js
new file mode 100644
index 000000000..a4af9788a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T01.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A4_T01;
+ * @section: 15.7.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the String objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new String();
+ s1.toString = Number.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = new String();
+ s2.myToString = Number.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T02.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T02.js
new file mode 100644
index 000000000..3c0a02f1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T02.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A4_T02;
+ * @section: 15.7.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the Boolean objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Boolean();
+ s1.toString = Number.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = new Boolean();
+ s2.myToString = Number.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T03.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T03.js
new file mode 100644
index 000000000..c2ba988b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T03.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A4_T03;
+ * @section: 15.7.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the Date objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Date();
+ s1.toString = Number.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = new Date();
+ s2.myToString = Number.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T04.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T04.js
new file mode 100644
index 000000000..70f213b97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T04.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A4_T04;
+ * @section: 15.7.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the Object objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Object();
+ s1.toString = Number.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = new Object();
+ s2.myToString = Number.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T05.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T05.js
new file mode 100644
index 000000000..62abc528d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.2_Number.prototype.toString/S15.7.4.2_A4_T05.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.2_A4_T05;
+ * @section: 15.7.4.2;
+ * @assertion: The toString function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the other objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = {x: 1};
+ s1.toString = Number.prototype.toString;
+ var v1 = s1.toString();
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = {x: 1};
+ s2.myToString = Number.prototype.toString;
+ var v2 = s2.myToString();
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.toString on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A1_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A1_T01.js
new file mode 100644
index 000000000..c46587a12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A1_T01.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.4_A1_T01;
+ * @section: 15.7.4.4;
+ * @assertion: Number.prototype.valueOf() returns this number value;
+ * @description: Call without argument;
+*/
+
+//CHECK#1
+if(Number.prototype.valueOf() !== 0){
+ $ERROR('#1: Number.prototype.valueOf() === 0');
+}
+
+//CHECK#2
+if((new Number()).valueOf() !== 0){
+ $ERROR('#2: (new Number()).valueOf() === 0');
+}
+
+//CHECK#3
+if((new Number(0)).valueOf() !== 0){
+ $ERROR('#3: (new Number(0)).valueOf() === 0');
+}
+
+//CHECK#4
+if((new Number(-1)).valueOf() !== -1){
+ $ERROR('#4: (new Number(-1)).valueOf() === -1');
+}
+
+//CHECK#5
+if((new Number(1)).valueOf() !== 1){
+ $ERROR('#5: (new Number(1)).valueOf() === 1');
+}
+
+//CHECK#6
+if(!isNaN((new Number(Number.NaN)).valueOf())){
+ $ERROR('#6: (new Number(Number.NaN)).valueOf() === NaN');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).valueOf() !== Number.POSITIVE_INFINITY){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).valueOf() === Infinity');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).valueOf() !== Number.NEGATIVE_INFINITY){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).valueOf() === -Infinity');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A1_T02.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A1_T02.js
new file mode 100644
index 000000000..30f6dc713
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A1_T02.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.4_A1_T02;
+ * @section: 15.7.4.4;
+ * @assertion: Number.prototype.valueOf() returns this number value;
+ * @description: calling with argument;
+*/
+
+//CHECK#1
+if(Number.prototype.valueOf("argument") !== 0){
+ $ERROR('#1: Number.prototype.valueOf("argument") === 0');
+}
+
+//CHECK#2
+if((new Number()).valueOf("argument") !== 0){
+ $ERROR('#2: (new Number()).valueOf("argument") === 0');
+}
+
+//CHECK#3
+if((new Number(0)).valueOf("argument") !== 0){
+ $ERROR('#3: (new Number(0)).valueOf("argument") === 0');
+}
+
+//CHECK#4
+if((new Number(-1)).valueOf("argument") !== -1){
+ $ERROR('#4: (new Number(-1)).valueOf("argument") === -1');
+}
+
+//CHECK#5
+if((new Number(1)).valueOf("argument") !== 1){
+ $ERROR('#5: (new Number(1)).valueOf("argument") === 1');
+}
+
+//CHECK#6
+if(!isNaN((new Number(Number.NaN)).valueOf("argument"))){
+ $ERROR('#6: (new Number(Number.NaN)).valueOf("argument") === NaN');
+}
+
+//CHECK#7
+if((new Number(Number.POSITIVE_INFINITY)).valueOf("argument") !== Number.POSITIVE_INFINITY){
+ $ERROR('#7: (new Number(Number.POSITIVE_INFINITY)).valueOf("argument") === Infinity');
+}
+
+//CHECK#8
+if((new Number(Number.NEGATIVE_INFINITY)).valueOf("argument") !== Number.NEGATIVE_INFINITY){
+ $ERROR('#8: (new Number(Number.NEGATIVE_INFINITY)).valueOf("argument") === -Infinity');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T01.js
new file mode 100644
index 000000000..a88708ef9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T01.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.4_A2_T01;
+ * @section: 15.7.4.4;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the String objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new String();
+ s1.valueOf = Number.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = new String();
+ s2.myValueOf = Number.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T02.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T02.js
new file mode 100644
index 000000000..285ac1533
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T02.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.4_A2_T02;
+ * @section: 15.7.4.4;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the Boolean objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Boolean();
+ s1.valueOf = Number.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = new Boolean();
+ s2.myValueOf = Number.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T03.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T03.js
new file mode 100644
index 000000000..6515d3a64
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T03.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.4_A2_T03;
+ * @section: 15.7.4.4;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the Date objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Date();
+ s1.valueOf = Number.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = new Date();
+ s2.myValueOf = Number.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T04.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T04.js
new file mode 100644
index 000000000..6b70d2077
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T04.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.4_A2_T04;
+ * @section: 15.7.4.4;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the Object objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = new Object();
+ s1.valueOf = Number.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = new Object();
+ s2.myValueOf = Number.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T05.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T05.js
new file mode 100644
index 000000000..d69ce0959
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.4_Number.prototype.valueOf/S15.7.4.4_A2_T05.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.4_A2_T05;
+ * @section: 15.7.4.4;
+ * @assertion: The valueOf function is not generic, it cannot be transferred
+ * to other kinds of objects for use as a method and there is should be
+ * a TypeError exception if its this value is not a Number object;
+ * @description: transferring to the other objects;
+*/
+
+//CHECK#1
+try{
+ var s1 = {x: 1};
+ s1.valueOf = Number.prototype.valueOf;
+ var v1 = s1.valueOf();
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#1: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
+//CHECK#2
+try{
+ var s2 = {x: 1};
+ s2.myValueOf = Number.prototype.valueOf;
+ var v2 = s2.myValueOf();
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError');
+}
+catch(e){
+ if(!(e instanceof TypeError)){
+ $ERROR('#2: Number.prototype.valueOf on not a Number object should throw TypeError, not '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.1_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.1_T01.js
new file mode 100644
index 000000000..911af9eec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.1_T01.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.5_A1.1_T01;
+ * @section: 15.7.4.5;
+ * @assertion: Step 1: Let f be ToInteger(fractionDigits). (If fractionDigits
+ * is undefined, this step produces the value 0);
+ * @description: calling on Number prototype object;
+*/
+
+//CHECK#1
+if(Number.prototype.toFixed() !== "0"){
+ $ERROR('#1: Number.prototype.toFixed() === "0"');
+}
+
+//CHECK#2
+if(Number.prototype.toFixed(0) !== "0"){
+ $ERROR('#2: Number.prototype.toFixed(0) === "0"');
+}
+
+//CHECK#3
+if(Number.prototype.toFixed(1) !== "0.0"){
+ $ERROR('#3: Number.prototype.toFixed(1) === "0.0"');
+}
+
+//CHECK#4
+if(Number.prototype.toFixed(1.1) !== "0.0"){
+ $ERROR('#4: Number.prototype.toFixed(1.1) === "0.0"');
+}
+
+//CHECK#5
+if(Number.prototype.toFixed(0.9) !== "0"){
+ $ERROR('#5: Number.prototype.toFixed(0.9) === "0"');
+}
+
+//CHECK#6
+if(Number.prototype.toFixed("1") !== "0.0"){
+ $ERROR('#6: Number.prototype.toFixed("1") === "0.0"');
+}
+
+//CHECK#7
+if(Number.prototype.toFixed("1.1") !== "0.0"){
+ $ERROR('#7: Number.prototype.toFixed("1.1") === "0.0"');
+}
+
+//CHECK#8
+if(Number.prototype.toFixed("0.9") !== "0"){
+ $ERROR('#8: Number.prototype.toFixed("0.9") === "0"');
+}
+
+//CHECK#9
+if(Number.prototype.toFixed(Number.NaN) !== "0"){
+ $ERROR('#9: Number.prototype.toFixed(Number.NaN) === "0"');
+}
+
+//CHECK#10
+if(Number.prototype.toFixed("some string") !== "0"){
+ $ERROR('#9: Number.prototype.toFixed("some string") === "0"');
+}
+
+//CHECK#10
+try{
+ if(Number.prototype.toFixed(-0.1) !== "0"){
+ $ERROR('#10: Number.prototype.toFixed(-0.1) === "0"');
+ }
+}
+catch(e){
+ $ERROR('#10: Number.prototype.toFixed(-0.1) should not throw '+e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.1_T02.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.1_T02.js
new file mode 100644
index 000000000..47cafb7ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.1_T02.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.5_A1.1_T02;
+ * @section: 15.7.4.5;
+ * @assertion: Step 1: Let f be ToInteger(fractionDigits). (If fractionDigits
+ * is undefined, this step produces the value 0);
+ * @description: calling on Number object;
+*/
+
+//CHECK#1
+if((new Number(1)).toFixed() !== "1"){
+ $ERROR('#1: (new Number(1)).prototype.toFixed() === "1"');
+}
+
+//CHECK#2
+if((new Number(1)).toFixed(0) !== "1"){
+ $ERROR('#2: (new Number(1)).prototype.toFixed(0) === "1"');
+}
+
+//CHECK#3
+if((new Number(1)).toFixed(1) !== "1.0"){
+ $ERROR('#3: (new Number(1)).prototype.toFixed(1) === "1.0"');
+}
+
+//CHECK#4
+if((new Number(1)).toFixed(1.1) !== "1.0"){
+ $ERROR('#4: (new Number(1)).toFixed(1.1) === "1.0"');
+}
+
+//CHECK#5
+if((new Number(1)).toFixed(0.9) !== "1"){
+ $ERROR('#5: (new Number(1)).toFixed(0.9) === "1"');
+}
+
+//CHECK#6
+if((new Number(1)).toFixed("1") !== "1.0"){
+ $ERROR('#6: (new Number(1)).toFixed("1") === "1.0"');
+}
+
+//CHECK#7
+if((new Number(1)).toFixed("1.1") !== "1.0"){
+ $ERROR('#7: (new Number(1)).toFixed("1.1") === "1.0"');
+}
+
+//CHECK#8
+if((new Number(1)).toFixed("0.9") !== "1"){
+ $ERROR('#8: (new Number(1)).toFixed("0.9") === "1"');
+}
+
+//CHECK#9
+if((new Number(1)).toFixed(Number.NaN) !== "1"){
+ $ERROR('#9: (new Number(1)).toFixed(Number.NaN) === "1"');
+}
+
+//CHECK#10
+if((new Number(1)).toFixed("some string") !== "1"){
+ $ERROR('#9: (new Number(1)).toFixed("some string") === "1"');
+}
+
+//CHECK#10
+try{
+ if((new Number(1)).toFixed(-0.1) !== "1"){
+ $ERROR('#10: (new Number(1)).toFixed(-0.1) === "1"');
+ }
+}
+catch(e){
+ $ERROR('#10: (new Number(1)).toFixed(-0.1) should not throw '+e);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.3_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.3_T01.js
new file mode 100644
index 000000000..4c031994c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.3_T01.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.5_A1.3_T01;
+ * @section: 15.7.4.5;
+ * @assertion: Step 4: If this number value is NaN, return the string "NaN";
+ * @description: NaN is computed by new Number("string");
+*/
+
+//CHECK#1
+if((new Number("a")).toFixed() !== "NaN"){
+ $ERROR('#1: (new Number("a")).prototype.toFixed() === "NaN"');
+}
+
+//CHECK#2
+if((new Number("a")).toFixed(0) !== "NaN"){
+ $ERROR('#2: (new Number("a")).prototype.toFixed(0) === "NaN"');
+}
+
+//CHECK#3
+if((new Number("a")).toFixed(1) !== "NaN"){
+ $ERROR('#3: (new Number("a")).prototype.toFixed(1) === "NaN"');
+}
+
+//CHECK#4
+if((new Number("a")).toFixed(1.1) !== "NaN"){
+ $ERROR('#4: (new Number("a")).toFixed(1.1) === "NaN"');
+}
+
+//CHECK#5
+if((new Number("a")).toFixed(0.9) !== "NaN"){
+ $ERROR('#5: (new Number("a")).toFixed(0.9) === "NaN"');
+}
+
+//CHECK#6
+if((new Number("a")).toFixed("1") !== "NaN"){
+ $ERROR('#6: (new Number("a")).toFixed("1") === "NaN"');
+}
+
+//CHECK#7
+if((new Number("a")).toFixed("1.1") !== "NaN"){
+ $ERROR('#7: (new Number("a")).toFixed("1.1") === "NaN"');
+}
+
+//CHECK#8
+if((new Number("a")).toFixed("0.9") !== "NaN"){
+ $ERROR('#8: (new Number("a")).toFixed("0.9") === "NaN"');
+}
+
+//CHECK#9
+if((new Number("a")).toFixed(Number.NaN) !== "NaN"){
+ $ERROR('#9: (new Number("a")).toFixed(Number.NaN) === "NaN"');
+}
+
+//CHECK#10
+if((new Number("a")).toFixed("some string") !== "NaN"){
+ $ERROR('#9: (new Number("a")).toFixed("some string") === "NaN"');
+}
+
+//CHECK#10
+try{
+ s = (new Number("a")).toFixed(Number.POSITIVE_INFINITY);
+ $ERROR('#10: (new Number("a")).toFixed(Number.POSITIVE_INFINITY) should throw RangeError, not return NaN');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#10: (new Number("a")).toFixed(Number.POSITIVE_INFINITY) should throw RangeError, not '+e);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.3_T02.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.3_T02.js
new file mode 100644
index 000000000..177a68419
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.3_T02.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.5_A1.3_T02;
+ * @section: 15.7.4.5;
+ * @assertion: Step 4: If this number value is NaN, return the string "NaN";
+ * @description: direct usage of NaN;
+*/
+
+//CHECK#1
+if(Number.NaN.toFixed() !== "NaN"){
+ $ERROR('#1: Number.NaN.prototype.toFixed() === "NaN"');
+}
+
+//CHECK#2
+if(Number.NaN.toFixed(0) !== "NaN"){
+ $ERROR('#2: Number.NaN.prototype.toFixed(0) === "NaN"');
+}
+
+//CHECK#3
+if(Number.NaN.toFixed(1) !== "NaN"){
+ $ERROR('#3: Number.NaN.prototype.toFixed(1) === "NaN"');
+}
+
+//CHECK#4
+if(Number.NaN.toFixed(1.1) !== "NaN"){
+ $ERROR('#4: Number.NaN.toFixed(1.1) === "NaN"');
+}
+
+//CHECK#5
+if(Number.NaN.toFixed(0.9) !== "NaN"){
+ $ERROR('#5: Number.NaN.toFixed(0.9) === "NaN"');
+}
+
+//CHECK#6
+if(Number.NaN.toFixed("1") !== "NaN"){
+ $ERROR('#6: Number.NaN.toFixed("1") === "NaN"');
+}
+
+//CHECK#7
+if(Number.NaN.toFixed("1.1") !== "NaN"){
+ $ERROR('#7: Number.NaN.toFixed("1.1") === "NaN"');
+}
+
+//CHECK#8
+if(Number.NaN.toFixed("0.9") !== "NaN"){
+ $ERROR('#8: Number.NaN.toFixed("0.9") === "NaN"');
+}
+
+//CHECK#9
+if(Number.NaN.toFixed(Number.NaN) !== "NaN"){
+ $ERROR('#9: Number.NaN.toFixed(Number.NaN) === "NaN"');
+}
+
+//CHECK#10
+if(Number.NaN.toFixed("some string") !== "NaN"){
+ $ERROR('#9: Number.NaN.toFixed("some string") === "NaN"');
+}
+
+//CHECK#10
+try{
+ s = Number.NaN.toFixed(Number.POSITIVE_INFINITY);
+ $ERROR('#10: Number.NaN.toFixed(Number.POSITIVE_INFINITY) should throw RangeError, not return NaN');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#10: Number.NaN.toFixed(Number.POSITIVE_INFINITY) should throw RangeError, not '+e);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.4_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.4_T01.js
new file mode 100644
index 000000000..1c28cd4e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A1.4_T01.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.5_A1.4_T01;
+ * @section: 15.7.4.5;
+ * @assertion: Step 9: If x >= 10^21, let m = ToString(x);
+ * @description: x is 10^21;
+*/
+
+//CHECK#1
+if((new Number(1e21)).toFixed() !== String(1e21)){
+ $ERROR('#1: (new Number(1e21)).prototype.toFixed() === String(1e21)');
+}
+
+//CHECK#2
+if((new Number(1e21)).toFixed(0) !== String(1e21)){
+ $ERROR('#2: (new Number(1e21)).prototype.toFixed(0) === String(1e21)');
+}
+
+//CHECK#3
+if((new Number(1e21)).toFixed(1) !== String(1e21)){
+ $ERROR('#3: (new Number(1e21)).prototype.toFixed(1) === String(1e21)');
+}
+
+//CHECK#4
+if((new Number(1e21)).toFixed(1.1) !== String(1e21)){
+ $ERROR('#4: (new Number(1e21)).toFixed(1.1) === String(1e21)');
+}
+
+//CHECK#5
+if((new Number(1e21)).toFixed(0.9) !== String(1e21)){
+ $ERROR('#5: (new Number(1e21)).toFixed(0.9) === String(1e21)');
+}
+
+//CHECK#6
+if((new Number(1e21)).toFixed("1") !== String(1e21)){
+ $ERROR('#6: (new Number(1e21)).toFixed("1") === String(1e21)');
+}
+
+//CHECK#7
+if((new Number(1e21)).toFixed("1.1") !== String(1e21)){
+ $ERROR('#7: (new Number(1e21)).toFixed("1.1") === String(1e21)');
+}
+
+//CHECK#8
+if((new Number(1e21)).toFixed("0.9") !== String(1e21)){
+ $ERROR('#8: (new Number(1e21)).toFixed("0.9") === String(1e21)');
+}
+
+//CHECK#9
+if((new Number(1e21)).toFixed(Number.NaN) !== String(1e21)){
+ $ERROR('#9: (new Number(1e21)).toFixed(Number.NaN) === String(1e21)');
+}
+
+//CHECK#10
+if((new Number(1e21)).toFixed("some string") !== String(1e21)){
+ $ERROR('#9: (new Number(1e21)).toFixed("some string") === String(1e21)');
+}
+
+//CHECK#10
+try{
+ s = (new Number(1e21)).toFixed(Number.POSITIVE_INFINITY);
+ $ERROR('#10: (new Number(1e21)).toFixed(Number.POSITIVE_INFINITY) should throw RangeError, not return NaN');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#10: (new Number(1e21)).toFixed(Number.POSITIVE_INFINITY) should throw RangeError, not '+e);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A2_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A2_T01.js
new file mode 100644
index 000000000..3426da074
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/15.7.4.5_Number.prototype.toFixed/S15.7.4.5_A2_T01.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.5_A2_T01;
+ * @section: 15.7.4.5;
+ * @assertion: The length property of the toFixed method is 1;
+ * @description: Checking Number prototype itself;
+*/
+
+//CHECK#1
+if(Number.prototype.toFixed.hasOwnProperty("length") !== true){
+ $ERROR('#1: The length property of the toFixed method is 1');
+}
+
+//CHECK#2
+if(Number.prototype.toFixed.length !== 1){
+ $ERROR('#2: The length property of the toFixed method is 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A1.js
new file mode 100644
index 000000000..ab5c760ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_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.
+
+/**
+ * @name: S15.7.4_A1;
+ * @section: 15.7.4;
+ * @assertion: The Number prototype object is itself a Number object
+ * (its [[Class]] is "Number") whose value is +0;
+ * @description: Checking type and value of Number.prototype property;
+*/
+
+//CHECK#1
+if (typeof Number.prototype !== "object") {
+ $ERROR('#1: typeof Number.prototype === "object"');
+}
+
+//CHECK#2
+if (Number.prototype != 0) {
+ $ERROR('#2: Number.prototype == +0');
+} else if( 1/Number.prototype != Number.POSITIVE_INFINITY){
+ $ERROR('#2: Number.prototype == +0');
+}
+
+delete Number.prototype.toString;
+
+if (Number.prototype.toString() !== "[object Number]") {
+ $ERROR('#3: The [[Class]] property of the Number prototype object is set to "Number"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A2.js
new file mode 100644
index 000000000..62f2025f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_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.
+
+/**
+ * @name: S15.7.4_A2;
+ * @section: 15.7.4;
+ * @assertion: The value of the internal [[Prototype]] property of the Number
+ * prototype object is the Object prototype object;
+ * @description: Checking Object.prototype.isPrototypeOf(Number.prototype);
+*/
+
+//CHECK#1
+if (!Object.prototype.isPrototypeOf(Number.prototype)) {
+ $ERROR('#1: Object prototype object is the prototype of Number prototype object');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.1.js
new file mode 100644
index 000000000..1f7c32adf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4_A3.1;
+ * @section: 15.7.4;
+ * @assertion: The Number prototype object has the property constructor;
+ * @description: The test uses hasOwnProperty() method;
+*/
+
+//CHECK#1
+if(Number.prototype.hasOwnProperty("constructor") !== true){
+ $ERROR('#1: The Number prototype object has the property constructor');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.2.js
new file mode 100644
index 000000000..b87d8e441
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4_A3.2;
+ * @section: 15.7.4;
+ * @assertion: The Number prototype object has the property toString;
+ * @description: The test uses hasOwnProperty() method;
+*/
+
+//CHECK#1
+if(Number.prototype.hasOwnProperty("toString") !== true){
+ $ERROR('#1: The Number prototype object has the property toString');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.3.js
new file mode 100644
index 000000000..e93393fc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4_A3.3;
+ * @section: 15.7.4;
+ * @assertion: The Number prototype object has the property toLocaleString;
+ * @description: The test uses hasOwnProperty() method;
+*/
+
+//CHECK#1
+if(Number.prototype.hasOwnProperty("toLocaleString") !== true){
+ $ERROR('#1: The Number prototype object has the property toLocaleString');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.4.js
new file mode 100644
index 000000000..ecb000e19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4_A3.4;
+ * @section: 15.7.4;
+ * @assertion: The Number prototype object has the property valueOf;
+ * @description: The test uses hasOwnProperty() method;
+*/
+
+//CHECK#1
+if(Number.prototype.hasOwnProperty("valueOf") !== true){
+ $ERROR('#1: The Number prototype object has the property valueOf');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.5.js
new file mode 100644
index 000000000..aee9eb019
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.5.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4_A3.5;
+ * @section: 15.7.4;
+ * @assertion: The Number prototype object has the property toFixed;
+ * @description: The test uses hasOwnProperty() method;
+*/
+
+//CHECK#1
+if(Number.prototype.hasOwnProperty("toFixed") !== true){
+ $ERROR('#1: The Number prototype object has the property toFixed');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.6.js
new file mode 100644
index 000000000..a60c3c8ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4_A3.6;
+ * @section: 15.7.4;
+ * @assertion: The Number prototype object has the property toExponential;
+ * @description: The test uses hasOwnProperty() method;
+*/
+
+//CHECK#1
+if(Number.prototype.hasOwnProperty("toExponential") !== true){
+ $ERROR('#1: The Number prototype object has the property toExponential');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.7.js
new file mode 100644
index 000000000..0e9e26554
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.4_Properties_of_the_Number_Prototype_Object/S15.7.4_A3.7.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4_A3.7;
+ * @section: 15.7.4;
+ * @assertion: The Number prototype object has the property toPrecision;
+ * @description: The test uses hasOwnProperty() method;
+*/
+
+//CHECK#1
+if(Number.prototype.hasOwnProperty("toPrecision") !== true){
+ $ERROR('#1: The Number prototype object has the property toPrecision');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T01.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T01.js
new file mode 100644
index 000000000..fe3836f09
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T01.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.5_A1_T01;
+ * @section: 15.7.5;
+ * @assertion: Number instances have no special properties beyond those
+ * inherited from the Number prototype object;
+ * @description: Checking property constructor;
+*/
+
+//CHECK#1
+if((new Number()).hasOwnProperty("constructor") !== false){
+ $ERROR('#1: Number instance must have no special property "constructor"');
+}
+
+//CHECK#2
+if((new Number()).constructor !== Number.prototype.constructor){
+ $ERROR('#2: Number instance property "constructor" must be inherited from Number prototype object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T02.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T02.js
new file mode 100644
index 000000000..f204adf64
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T02.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.5_A1_T02;
+ * @section: 15.7.5;
+ * @assertion: Number instances have no special properties beyond those
+ * inherited from the Number prototype object;
+ * @description: Checking property toString;
+*/
+
+//CHECK#1
+if((new Number()).hasOwnProperty("toString") !== false){
+ $ERROR('#1: Number instance must have no special property "toString"');
+}
+
+//CHECK#2
+if((new Number()).toString !== Number.prototype.toString){
+ $ERROR('#2: Number instance property "toString" must be inherited from Number prototype object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T03.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T03.js
new file mode 100644
index 000000000..915d9482a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T03.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.5_A1_T03;
+ * @section: 15.7.5;
+ * @assertion: Number instances have no special properties beyond those
+ * inherited from the Number prototype object;
+ * @description: Checking property toLocaleString;
+*/
+
+//CHECK#1
+if((new Number()).hasOwnProperty("toLocaleString") !== false){
+ $ERROR('#1: Number instance must have no special property "toLocaleString"');
+}
+
+//CHECK#2
+if((new Number()).toLocaleString !== Number.prototype.toLocaleString){
+ $ERROR('#2: Number instance property "toLocaleString" must be inherited from Number prototype object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T04.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T04.js
new file mode 100644
index 000000000..a950ab5ff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T04.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.5_A1_T04;
+ * @section: 15.7.5;
+ * @assertion: Number instances have no special properties beyond those
+ * inherited from the Number prototype object;
+ * @description: Checking property valueOf;
+*/
+
+//CHECK#1
+if((new Number()).hasOwnProperty("valueOf") !== false){
+ $ERROR('#1: Number instance must have no special property "valueOf"');
+}
+
+//CHECK#2
+if((new Number()).valueOf !== Number.prototype.valueOf){
+ $ERROR('#2: Number instance property "valueOf" must be inherited from Number prototype object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T05.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T05.js
new file mode 100644
index 000000000..337b8cba3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T05.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.5_A1_T05;
+ * @section: 15.7.5;
+ * @assertion: Number instances have no special properties beyond those
+ * inherited from the Number prototype object;
+ * @description: Checking property toFixed;
+*/
+
+//CHECK#1
+if((new Number()).hasOwnProperty("toFixed") !== false){
+ $ERROR('#1: Number instance must have no special property "toFixed"');
+}
+
+//CHECK#2
+if((new Number()).toFixed !== Number.prototype.toFixed){
+ $ERROR('#2: Number instance property "toFixed" must be inherited from Number prototype object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T06.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T06.js
new file mode 100644
index 000000000..5f0bf3417
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T06.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.5_A1_T06;
+ * @section: 15.7.5;
+ * @assertion: Number instances have no special properties beyond those
+ * inherited from the Number prototype object;
+ * @description: Checking property toExponential;
+*/
+
+//CHECK#1
+if((new Number()).hasOwnProperty("toExponential") !== false){
+ $ERROR('#1: Number instance must have no special property "toExponential"');
+}
+
+//CHECK#2
+if((new Number()).toExponential !== Number.prototype.toExponential){
+ $ERROR('#2: Number instance property "toExponential" must be inherited from Number prototype object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T07.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T07.js
new file mode 100644
index 000000000..4f7b3942f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.7_Number_Objects/15.7.5_Properties_of_Number_Instances/S15.7.5_A1_T07.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.5_A1_T07;
+ * @section: 15.7.5;
+ * @assertion: Number instances have no special properties beyond those
+ * inherited from the Number prototype object;
+ * @description: Checking property toPrecision;
+*/
+
+//CHECK#1
+if((new Number()).hasOwnProperty("toPrecision") !== false){
+ $ERROR('#1: Number instance must have no special property "toPrecision"');
+}
+
+//CHECK#2
+if((new Number()).toPrecision !== Number.prototype.toPrecision){
+ $ERROR('#2: Number instance property "toPrecision" must be inherited from Number prototype object');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A1.js
new file mode 100644
index 000000000..b887c09c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A1.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.
+
+/**
+ * @name: S15.8.1.1_A1;
+ * @section: 15.8.1.1;
+ * @assertion: Math.E is approximately 2.7182818284590452354;
+ * @description: Comparing Math.E with 2.7182818284590452354;
+ */
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Math.E, 2.7182818284590452354)) {
+ $ERROR('#1: \'Math.E is not approximately equal to 2.7182818284590452354\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A2.js
new file mode 100644
index 000000000..7dfd10e9d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.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.
+
+/**
+ * @name: S15.8.1.1_A2;
+ * @section: 15.8.1.1;
+ * @assertion: Value Property E of the Math Object has the attribute DontEnum;
+ * @description: Checking if Math.E property has the attribute DontEnum;
+ */
+
+// CHECK#1
+for(x in Math) {
+ if(x === "E") {
+ $ERROR('#1: Value Property E of the Math Object hasn\'t attribute DontEnum: \'for(x in Math) {x==="E"}\'');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A3.js
new file mode 100644
index 000000000..bc5274c7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.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.
+
+/**
+ * @name: S15.8.1.1_A3;
+ * @section: 15.8.1.1;
+ * @assertion: Value Property E of the Math Object has the attribute DontDelete;
+ * @description: Checking if Math.E property has the attribute DontDelete;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+if (delete Math.E === true) {
+ $ERROR('#1: Value Property E of the Math Object hasn\'t attribute DontDelete: \'Math.E === true\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A4.js
new file mode 100644
index 000000000..7ff450c3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.1_E/S15.8.1.1_A4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.1.1_A4;
+ * @section: 15.8.1.1;
+ * @assertion: Value Property E of the Math Object has the attribute ReadOnly;
+ * @description: Checking if Math.E property has the attribute ReadOnly;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+var x = Math.E;
+Math.E = 1;
+if (Math.E !== x) {
+ $ERROR('#1: Math.E hasn\'t ReadOnly: \'x = Math.E;Math.E = 1;Math.E === x\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A1.js
new file mode 100644
index 000000000..4c0184b49
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A1.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.
+
+/**
+ * @name: S15.8.1.2_A1;
+ * @section: 15.8.1.2;
+ * @assertion: Math.LN10 is approximately 2.302585092994046;
+ * @description: Comparing Math.LN10 with 2.302585092994046;
+ */
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Math.LN10, 2.302585092994046)) {
+ $ERROR('#1: \'Math.LN10 is not approximately equal to 2.302585092994046\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A2.js
new file mode 100644
index 000000000..4cdf4e357
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_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.
+
+/**
+ * @name: S15.8.1.2_A2;
+ * @section: 15.8.1.2;
+ * @assertion: Value Property LN10 of the Math Object has the attribute DontEnum;
+ * @description: Checking if Math.LN10 property has the attribute DontEnum;
+ */
+
+// CHECK#1
+for(x in Math) {
+ if(x === "LN10") {
+ $ERROR('#1: Value Property LN10 of the Math Object hasn\'t attribute DontEnum: \'for(x in Math) {x==="LN10"}\'');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A3.js
new file mode 100644
index 000000000..68abfbaa2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_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.
+
+/**
+ * @name: S15.8.1.2_A3;
+ * @section: 15.8.1.2;
+ * @assertion: Value Property LN10 of the Math Object has the attribute DontDelete;
+ * @description: Checking if Math.LN10 property has the attribute DontDelete;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+if (delete Math.LN10 === true) {
+ $ERROR('#1: Value Property LN10 of the Math Object hasn\'t attribute DontDelete: \'Math.LN10 === true\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A4.js
new file mode 100644
index 000000000..af085993d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.2_LN10/S15.8.1.2_A4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.1.2_A4;
+ * @section: 15.8.1.2;
+ * @assertion: Value Property LN10 of the Math Object has the attribute ReadOnly;
+ * @description: Checking if Math.LN10 property has the attribute ReadOnly;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+var x = Math.LN10;
+Math.LN10 = 1;
+if (Math.LN10 !== x) {
+ $ERROR('#1: Math.LN10 hasn\'t ReadOnly: \'x = Math.LN10;Math.LN10 = 1;Math.LN10 === x\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A1.js
new file mode 100644
index 000000000..c4812b9aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_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.
+
+/**
+ * @name: S15.8.1.3_A1;
+ * @section: 15.8.1.3;
+ * @assertion: Math.LN2 is approximately 0.6931471805599453;
+ * @description: Comparing Math.LN2 with 0.6931471805599453;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Math.LN2, 0.6931471805599453)) {
+ $ERROR('#1: \'Math.LN2 is not approximately equal to 0.6931471805599453\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A2.js
new file mode 100644
index 000000000..cab0663e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_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.
+
+/**
+ * @name: S15.8.1.3_A2;
+ * @section: 15.8.1.3;
+ * @assertion: Value Property LN2 of the Math Object has the attribute DontEnum;
+ * @description: Checking if Math.LN2 property has the attribute DontEnum;
+ */
+
+// CHECK#1
+for(x in Math) {
+ if(x === "LN2") {
+ $ERROR('#1: Value Property LN2 of the Math Object hasn\'t attribute DontEnum: \'for(x in Math) {x==="LN2"}\'');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A3.js
new file mode 100644
index 000000000..1b6cef27e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_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.
+
+/**
+ * @name: S15.8.1.3_A3;
+ * @section: 15.8.1.3;
+ * @assertion: Value Property LN2 of the Math Object has the attribute DontDelete;
+ * @description: Checking if Math.LN2 property has the attribute DontDelete;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+if (delete Math.LN2 === true) {
+ $ERROR('#1: Value Property LN2 of the Math Object hasn\'t attribute DontDelete: \'Math.LN2 === true\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A4.js
new file mode 100644
index 000000000..bef8ea652
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.3_LN2/S15.8.1.3_A4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.1.3_A4;
+ * @section: 15.8.1.3;
+ * @assertion: Value Property LN2 of the Math Object has the attribute ReadOnly;
+ * @description: Checking if Math.LN2 property has the attribute DontDelete;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+var x = Math.LN2;
+Math.LN2 = 1;
+if (Math.LN2 !== x) {
+ $ERROR('#1: Math.LN2 hasn\'t ReadOnly: \'x = Math.LN2;Math.LN2 = 1;Math.LN2 === x\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A1.js
new file mode 100644
index 000000000..9b20178ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A1.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.
+
+/**
+ * @name: S15.8.1.4_A1;
+ * @section: 15.8.1.4;
+ * @assertion: Math.LOG2E is approximately 1.4426950408889634;
+ * @description: Comparing Math.LOG2E with 1.4426950408889634;
+ */
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Math.LOG2E, 1.4426950408889634)) {
+ $ERROR('#1: \'Math.LOG2E is not approximatley equal to 1.4426950408889634\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A2.js
new file mode 100644
index 000000000..02c9e6d9a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_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.
+
+/**
+ * @name: S15.8.1.4_A2;
+ * @section: 15.8.1.4;
+ * @assertion: Value Property LOG2E of the Math Object has the attribute DontEnum;
+ * @description: Checking if Math.LOG2E property has the attribute DontEnum;
+ */
+
+// CHECK#1
+for(x in Math) {
+ if(x === "LOG2E") {
+ $ERROR('#1: Value Property LOG2E of the Math Object hasn\'t attribute DontEnum: \'for(x in Math) {x==="LOG2E"}\'');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A3.js
new file mode 100644
index 000000000..770b5c0ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_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.
+
+/**
+ * @name: S15.8.1.4_A3;
+ * @section: 15.8.1.4;
+ * @assertion: Value Property LOG2E of the Math Object has the attribute DontDelete;
+ * @description: Checking if Math.LOG2E property has the attribute DontDelete;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+if (delete Math.LOG2E === true) {
+ $ERROR('#1: Value Property LOG2E of the Math Object hasn\'t attribute DontDelete: \'Math.LOG2E === true\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A4.js
new file mode 100644
index 000000000..de8ece86a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.4_LOG2E/S15.8.1.4_A4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.1.4_A4;
+ * @section: 15.8.1.4;
+ * @assertion: Value Property LOG2E of the Math Object has the attribute ReadOnly;
+ * @description: Checking if Math.LOG2E property has the attribute ReadOnly;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+var x = Math.LOG2E;
+Math.LOG2E = 1;
+if (Math.LOG2E !== x) {
+ $ERROR('#1: Math.LOG2E hasn\'t ReadOnly: \'x = Math.LOG2E;Math.LOG2E = 1;Math.LOG2E === x\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A1.js
new file mode 100644
index 000000000..a9edfc0f1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A1.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.
+
+/**
+ * @name: S15.8.1.5_A1;
+ * @section: 15.8.1.5;
+ * @assertion: Math.LOG10E is approximately 0.4342944819032518;
+ * @description: Comparing Math.LOG10E with 0.4342944819032518;
+ */
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Math.LOG10E, 0.4342944819032518)) {
+ $ERROR('#1: \'Math.LOG10E is not approximatley equal to 0.4342944819032518\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A2.js
new file mode 100644
index 000000000..b56c76319
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_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.
+
+/**
+ * @name: S15.8.1.5_A2;
+ * @section: 15.8.1.5;
+ * @assertion: Value Property LOG10E of the Math Object has the attribute DontEnum;
+ * @description: Checking if Math.LOG10E property has the attribute DontEnum;
+ */
+
+// CHECK#1
+for(x in Math) {
+ if(x === "LOG10E") {
+ $ERROR('#1: Value Property LOG10E of the Math Object hasn\'t attribute DontEnum: \'for(x in Math) {x==="LOG10E"}\'');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A3.js
new file mode 100644
index 000000000..ad2442b9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_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.
+
+/**
+ * @name: S15.8.1.5_A3;
+ * @section: 15.8.1.5;
+ * @assertion: Value Property LOG10E of the Math Object has the attribute DontDelete;
+ * @description: Checking if Math.LOG10E property has the attribute DontDelete;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+if (delete Math.LOG10E === true) {
+ $ERROR('#1: Value Property LOG10E of the Math Object hasn\'t attribute DontDelete: \'Math.LOG10E === true\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A4.js
new file mode 100644
index 000000000..c91e36c61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.5_LOG10E/S15.8.1.5_A4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.1.5_A4;
+ * @section: 15.8.1.5;
+ * @assertion: Value Property LOG10E of the Math Object has the attribute ReadOnly;
+ * @description: Checking if Math.LOG10E property has the attribute ReadOnly;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+var x = Math.LOG10E;
+Math.LOG10E = 1;
+if (Math.LOG10E !== x) {
+ $ERROR('#1: Math.LOG10E hasn\'t ReadOnly: \'x = Math.LOG10E;Math.LOG10E = 1;Math.LOG10E === x\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A1.js
new file mode 100644
index 000000000..5e7935807
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_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.
+
+/**
+ * @name: S15.8.1.6_A1;
+ * @section: 15.8.1.6;
+ * @assertion: Math.PI is approximately 3.1415926535897932;
+ * @description: Comparing Math.PI with 3.1415926535897932;
+ */
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Math.PI, 3.1415926535897932)) {
+ $ERROR('#1: \'Math.PI is not approximatley equal to 3.1415926535897932\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A2.js
new file mode 100644
index 000000000..18234eabd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_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.
+
+/**
+ * @name: S15.8.1.6_A2;
+ * @section: 15.8.1.6;
+ * @assertion: Value Property PI of the Math Object has the attribute DontEnum;
+ * @description: Checking if Math.PI property has the attribute DontEnum;
+ */
+
+// CHECK#1
+for(x in Math) {
+ if(x === "PI") {
+ $ERROR('#1: Value Property PI of the Math Object hasn\'t attribute DontEnum: \'for(x in Math) {x==="PI"}\'');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A3.js
new file mode 100644
index 000000000..24ba8fc54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_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.
+
+/**
+ * @name: S15.8.1.6_A3;
+ * @section: 15.8.1.6;
+ * @assertion: Value Property PI of the Math Object has the attribute DontDelete;
+ * @description: Checking if Math.PI property has the attribute DontDelete;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+if (delete Math.PI === true) {
+ $ERROR('#1: Value Property PI of the Math Object hasn\'t attribute DontDelete: \'Math.PI === true\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A4.js
new file mode 100644
index 000000000..569ed8efe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.6_PI/S15.8.1.6_A4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.1.6_A4;
+ * @section: 15.8.1.6;
+ * @assertion: Value Property PI of the Math Object has the attribute ReadOnly;
+ * @description: Checking if Math.PI property has the attribute ReadOnly;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+var x = Math.PI;
+Math.PI = 1;
+if (Math.PI !== x) {
+ $ERROR('#1: Math.PI hasn\'t ReadOnly: \'x = Math.PI;Math.PI = 1;Math.PI === x\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A1.js
new file mode 100644
index 000000000..bd2082780
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_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.
+
+/**
+ * @name: S15.8.1.7_A1;
+ * @section: 15.8.1.7;
+ * @assertion: Math.SQRT1_2 is approximately 0.7071067811865476;
+ * @description: Comparing Math.SQRT1_2 with 0.7071067811865476;
+ */
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Math.SQRT1_2, 0.7071067811865476)) {
+ $ERROR('#1: \'Math.SQRT1_2 is not approximatley equal to 0.7071067811865476\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A2.js
new file mode 100644
index 000000000..32a2479dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_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.
+
+/**
+ * @name: S15.8.1.7_A2;
+ * @section: 15.8.1.7;
+ * @assertion: Value Property SQRT1_2 of the Math Object has the attribute DontEnum;
+ * @description: Checking if Math.SQRT1_2 property has the attribute DontEnum;
+ */
+
+// CHECK#1
+for(x in Math) {
+ if(x === "SQRT1_2") {
+ $ERROR('#1: Value Property SQRT1_2 of the Math Object hasn\'t attribute DontEnum: \'for(x in Math) {x==="SQRT1_2"}\'');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A3.js
new file mode 100644
index 000000000..aabc3e2ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_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.
+
+/**
+ * @name: S15.8.1.7_A3;
+ * @section: 15.8.1.7;
+ * @assertion: Value Property SQRT1_2 of the Math Object has the attribute DontDelete;
+ * @description: Checking if Math.SQRT1_2 property has the attribute DontDelete;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+if (delete Math.SQRT1_2 === true) {
+ $ERROR("#1: Value Property SQRT1_2 of the Math Object hasn't attribute DontDelete: 'Math.SQRT1_2 === true'");
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A4.js
new file mode 100644
index 000000000..c0cd5ec0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.7_SQRT1_2/S15.8.1.7_A4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.1.7_A4;
+ * @section: 15.8.1.7;
+ * @assertion: Value Property SQRT1_2 of the Math Object has the attribute ReadOnly;
+ * @description: Checking if Math.SQRT1_2 property has the attribute ReadOnly;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+var x = Math.SQRT1_2;
+Math.SQRT1_2 = 1;
+if (Math.SQRT1_2 !== x) {
+ $ERROR('#1: Math.SQRT1_2 hasn\'t ReadOnly: \'x = Math.SQRT1_2;Math.SQRT1_2 = 1;Math.SQRT1_2 === x\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A1.js
new file mode 100644
index 000000000..f5f40b157
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_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.
+
+/**
+ * @name: S15.8.1.8_A1;
+ * @section: 15.8.1.8;
+ * @assertion: Math.SQRT2 is approximately 1.4142135623730951;
+ * @description: Comparing Math.SQRT2 with 1.4142135623730951;
+ */
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+if (!isEqual(Math.SQRT2, 1.4142135623730951)) {
+ $ERROR('#1: \'Math.SQRT2 is not approximatley equal to 1.4142135623730951\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A2.js
new file mode 100644
index 000000000..40336846a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_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.
+
+/**
+ * @name: S15.8.1.8_A2;
+ * @section: 15.8.1.8;
+ * @assertion: Value Property SQRT2 of the Math Object has the attribute DontEnum;
+ * @description: Checking if Math.SQRT2 property has the attribute DontEnum;
+ */
+
+// CHECK#1
+for(x in Math) {
+ if(x === "SQRT2") {
+ $ERROR('#1: Value Property SQRT2 of the Math Object hasn\'t attribute DontEnum: \'for(x in Math) {x==="SQRT2"}\'');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A3.js
new file mode 100644
index 000000000..656407fc3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_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.
+
+/**
+ * @name: S15.8.1.8_A3;
+ * @section: 15.8.1.8;
+ * @assertion: Value Property SQRT2 of the Math Object has the attribute DontDelete;
+ * @description: Checking if Math.SQRT2 property has the attribute DontDelete;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+if (delete Math.SQRT2 === true) {
+ $ERROR('#1: Value Property SQRT2 of the Math Object hasn\'t attribute DontDelete: \'Math.SQRT2 === true\'');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A4.js
new file mode 100644
index 000000000..686bf427e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.1_Value_Properties_of_the_Math_Object/15.8.1.8_SQRT2/S15.8.1.8_A4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.1.8_A4;
+ * @section: 15.8.1.8;
+ * @assertion: Value Property SQRT2 of the Math Object has the attribute ReadOnly;
+ * @description: Checking if Math.SQRT2 property has the attribute ReadOnly;
+ * @strict_mode_negative
+ */
+
+// CHECK#1
+var x = Math.SQRT2;
+Math.SQRT2 = 1;
+if (Math.SQRT2 !== x) {
+ $ERROR('#1: Math.SQRT2 hasn\'t ReadOnly: \'x = Math.SQRT2;Math.SQRT2 = 1;Math.SQRT2 === x\'');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A1.js
new file mode 100644
index 000000000..dd0538b7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A1.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.
+
+/**
+ * @name: S15.8.2.10_A1;
+ * @section: 15.8.2.10;
+ * @assertion: If x is NaN, Math.log(x) is NaN;
+ * @description: Checking if Math.log(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.log(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.log(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A2.js
new file mode 100644
index 000000000..9ebfd7cf5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.10_A2;
+ * @section: 15.8.2.10;
+ * @assertion: If x is less than 0, Math.log(x) is NaN;
+ * @description: Checking if Math.log(x) is NaN, where x is less than 0;
+ */
+
+// CHECK#1
+var x = -0.000000000000001;
+if (!isNaN(Math.log(x)))
+{
+ $ERROR("#1: 'var x=-0.000000000000001; isNaN(Math.log(x)) === false'");
+}
+
+// CHECK#2
+x = -1;
+if (!isNaN(Math.log(x)))
+{
+ $ERROR("#1: 'var x=-1; isNaN(Math.log(x)) === false'");
+}
+
+// CHECK#3
+x = -Infinity;
+if (!isNaN(Math.log(x)))
+{
+ $ERROR("#1: 'var x=-Infinity; isNaN(Math.log(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A3.js
new file mode 100644
index 000000000..7a64c6e86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_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.
+
+/**
+ * @name: S15.8.2.10_A3;
+ * @section: 15.8.2.10;
+ * @assertion: If x is +0 or -0, Math.log(x) is -Infinity;
+ * @description: Checking if Math.log(+0) and Math.log(-0) equals to -Infinity;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.log(x) !== -Infinity)
+{
+ $ERROR("#1: 'var x=+0; Math.log(x) !== -Infinity'");
+}
+
+// CHECK#2
+var x = -0;
+if (Math.log(x) !== -Infinity)
+{
+ $ERROR("#1: 'var x=-0; Math.log(x) !== -Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A4.js
new file mode 100644
index 000000000..cc9c92080
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_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.
+
+/**
+ * @name: S15.8.2.10_A4;
+ * @section: 15.8.2.10;
+ * @assertion: If x is 1, Math.log(x) is +0;
+ * @description: Checking if Math.log(1) equals to +0;
+ */
+
+// CHECK#1
+var x = 1;
+if (Math.log(x) !== +0)
+{
+ $ERROR("#1: 'var x=1; Math.log(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A5.js
new file mode 100644
index 000000000..2bc7b1610
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A5.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.
+
+/**
+ * @name: S15.8.2.10_A5;
+ * @section: 15.8.2.10;
+ * @assertion: If x is +Infinity, Math.log(x) is +Infinity;
+ * @description: Checking if Math.log(+Infinity) equals to +Infinity;
+ */
+
+// CHECK#1
+var x = +Infinity;
+if (Math.log(x) !== +Infinity)
+{
+ $ERROR("#1: 'var x=+Infinity; Math.log(x) !== +Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A6.js
new file mode 100644
index 000000000..ef47483ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.10_log/S15.8.2.10_A6.js
@@ -0,0 +1,159 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.10_A6;
+ * @section: 15.8.2.10;
+ * @assertion: Math.log, recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.log is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x = new Array();
+x[0] = 0.00000000000000000000;
+x[1] = 0.25396825396825395000;
+x[2] = 0.50793650793650791000;
+x[3] = 0.76190476190476186000;
+x[4] = 1.01587301587301580000;
+x[5] = 1.26984126984126980000;
+x[6] = 1.52380952380952370000;
+x[7] = 1.77777777777777770000;
+x[8] = 2.03174603174603160000;
+x[9] = 2.28571428571428560000;
+x[10] = 2.53968253968253950000;
+x[11] = 2.79365079365079350000;
+x[12] = 3.04761904761904740000;
+x[13] = 3.30158730158730140000;
+x[14] = 3.55555555555555540000;
+x[15] = 3.80952380952380930000;
+x[16] = 4.06349206349206330000;
+x[17] = 4.31746031746031720000;
+x[18] = 4.57142857142857120000;
+x[19] = 4.82539682539682510000;
+x[20] = 5.07936507936507910000;
+x[21] = 5.33333333333333300000;
+x[22] = 5.58730158730158700000;
+x[23] = 5.84126984126984090000;
+x[24] = 6.09523809523809490000;
+x[25] = 6.34920634920634890000;
+x[26] = 6.60317460317460280000;
+x[27] = 6.85714285714285680000;
+x[28] = 7.11111111111111070000;
+x[29] = 7.36507936507936470000;
+x[30] = 7.61904761904761860000;
+x[31] = 7.87301587301587260000;
+x[32] = 8.12698412698412650000;
+x[33] = 8.38095238095238140000;
+x[34] = 8.63492063492063440000;
+x[35] = 8.88888888888888930000;
+x[36] = 9.14285714285714230000;
+x[37] = 9.39682539682539720000;
+x[38] = 9.65079365079365030000;
+x[39] = 9.90476190476190510000;
+x[40] = 10.15873015873015800000;
+x[41] = 10.41269841269841300000;
+x[42] = 10.66666666666666600000;
+x[43] = 10.92063492063492100000;
+x[44] = 11.17460317460317400000;
+x[45] = 11.42857142857142900000;
+x[46] = 11.68253968253968200000;
+x[47] = 11.93650793650793700000;
+x[48] = 12.19047619047619000000;
+x[49] = 12.44444444444444500000;
+x[50] = 12.69841269841269800000;
+x[51] = 12.95238095238095300000;
+x[52] = 13.20634920634920600000;
+x[53] = 13.46031746031746000000;
+x[54] = 13.71428571428571400000;
+x[55] = 13.96825396825396800000;
+x[56] = 14.22222222222222100000;
+x[57] = 14.47619047619047600000;
+x[58] = 14.73015873015872900000;
+x[59] = 14.98412698412698400000;
+x[60] = 15.23809523809523700000;
+x[61] = 15.49206349206349200000;
+x[62] = 15.74603174603174500000;
+x[63] = 16.00000000000000000000;
+
+
+
+var y = new Array();
+y[0] = -Infinity;
+y[1] = -1.37054600415175140000;
+y[2] = -0.67739882359180614000;
+y[3] = -0.27193371548364181000;
+y[4] = 0.01574835696813911200;
+y[5] = 0.23889190828234888000;
+y[6] = 0.42121346507630347000;
+y[7] = 0.57536414490356180000;
+y[8] = 0.70889553752808443000;
+y[9] = 0.82667857318446791000;
+y[10] = 0.93203908884229414000;
+y[11] = 1.02734926864661900000;
+y[12] = 1.11436064563624870000;
+y[13] = 1.19440335330978530000;
+y[14] = 1.26851132546350720000;
+y[15] = 1.33750419695045860000;
+y[16] = 1.40204271808802970000;
+y[17] = 1.46266733990446450000;
+y[18] = 1.51982575374441310000;
+y[19] = 1.57389297501468910000;
+y[20] = 1.62518626940223940000;
+y[21] = 1.67397643357167160000;
+y[22] = 1.72049644920656440000;
+y[23] = 1.76494821177739820000;
+y[24] = 1.80750782619619410000;
+y[25] = 1.84832982071644910000;
+y[26] = 1.88755053386973050000;
+y[27] = 1.92529086185257750000;
+y[28] = 1.96165850602345240000;
+y[29] = 1.99674982583472250000;
+y[30] = 2.03065137751040400000;
+y[31] = 2.06344120033339480000;
+y[32] = 2.09518989864797510000;
+y[33] = 2.12596155731472880000;
+y[34] = 2.15581452046440970000;
+y[35] = 2.18480205733766210000;
+y[36] = 2.21297293430435850000;
+y[37] = 2.24037190849247290000;
+y[38] = 2.26704015557463420000;
+y[39] = 2.29301564197789490000;
+y[40] = 2.31833344996218480000;
+y[41] = 2.34302606255255650000;
+y[42] = 2.36712361413161700000;
+y[43] = 2.39065411154181100000;
+y[44] = 2.41364362976650960000;
+y[45] = 2.43611648561856820000;
+y[46] = 2.45809539233734360000;
+y[47] = 2.47960159755830700000;
+y[48] = 2.50065500675613930000;
+y[49] = 2.52127429395887500000;
+y[50] = 2.54147700127639450000;
+y[51] = 2.56127962857257430000;
+y[52] = 2.58069771442967570000;
+y[53] = 2.59974590940037050000;
+y[54] = 2.61843804241252310000;
+y[55] = 2.63678718108071930000;
+y[56] = 2.65480568658339780000;
+y[57] = 2.67250526368279880000;
+y[58] = 2.68989700639466770000;
+y[59] = 2.70699143975396780000;
+y[60] = 2.72379855807034900000;
+y[61] = 2.74032786002155990000;
+y[62] = 2.75658838089334020000;
+y[63] = 2.77258872223978110000;
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.log(x[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx = " + x[i] + "\nlibc.log(x) = " + y[i] + "\nMath.log(x) = " + Math.log(x[i]) + "\nMath.abs(libc.log(x) - Math.log(x)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A1.js
new file mode 100644
index 000000000..79d7e1d8a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.11_A1;
+ * @section: 15.8.2.11;
+ * @assertion: If no arguments are given, Math.max() is -Infinity;
+ * @description: Checking if Math.max() equals to -Infinity;
+ */
+
+// CHECK#1
+if (Math.max() != -Infinity)
+{
+ $ERROR("#1: 'Math.max() != -Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A2.js
new file mode 100644
index 000000000..0a2d5fa8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A2.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.11_A2;
+ * @section: 15.8.2.11;
+ * @assertion: If any value is NaN, the result of Math.max is NaN;
+ * @description: The script tests Math.max giving 1, 2 and 3 arguments to the function where at least one of the arguments is NaN
+ */
+
+// CHECK#1
+if (!isNaN(Math.max(NaN)))
+{
+ $ERROR("#1: 'isNaN(Math.max(NaN)) === false");
+}
+
+// CHECK#2
+vals = new Array();
+vals[0] = -Infinity;
+vals[1] = -0.000000000000001;
+vals[2] = -0;
+vals[3] = +0
+vals[4] = 0.000000000000001;
+vals[5] = +Infinity;
+vals[6] = NaN;
+valnum = 7;
+
+args = new Array();
+for (i = 0; i <= 1; i++)
+{
+ args[i] = NaN;
+ for (j = 0; j < valnum; j++)
+ {
+ args[1-i] = vals[j];
+ if (!isNaN(Math.max(args[0], args[1])))
+ {
+ $ERROR("#2: 'isNaN(Math.max(" + args[0] + ", " + args[1] + ")) === false");
+ }
+ }
+}
+
+// CHECK #3
+var k = 1;
+var l = 2;
+for (i = 0; i <= 2; i++)
+{
+ args[i] = NaN;
+ if (i === 1)
+ {
+ k = 0;
+ } else if (i === 2)
+ {
+ l = 1;
+ }
+ for (j = 0; j < valnum; j++)
+ {
+ for (jj = 0; jj < valnum; jj++)
+ {
+ args[k] = vals[j];
+ args[l] = vals[jj];
+ if (!isNaN(Math.max(args[0], args[1], args[2])))
+ {
+ $ERROR("#3: 'isNaN(Math.max(" + args[0] + ", " + args[1] + ", " + args[2] + ")) === false");
+ }
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A3.js
new file mode 100644
index 000000000..36b6734c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.11_A3;
+ * @section: 15.8.2.11;
+ * @assertion: +0 is considered to be larger than -0;
+ * @description: Checking if Math.max(-0,+0) and Math.max(+0,-0) equals to +0;
+ */
+
+// CHECK#1
+if (Math.max(-0, +0) !== +0)
+{
+ $ERROR("#1: 'Math.max(-0, +0) !== +0'");
+}
+
+// CHECK#1
+if (Math.max(+0, -0) !== +0)
+{
+ $ERROR("#2: 'Math.max(+0, -0) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_A4.js
new file mode 100644
index 000000000..a4e7481b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.11_max/S15.8.2.11_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.
+
+/**
+ * @name: S15.8.2.11_A4;
+ * @section: 15.8.2.11;
+ * @assertion: The length property of the Math.max method is 2;
+ * @description: Checking if Math.max.length property is defined and equals to 2;
+ */
+
+// CHECK#1
+if (typeof Math.max !== "function") {
+ $ERROR('#1: Math.max method is not defined');
+}
+
+// CHECK#2
+if (typeof Math.max.length === "undefined") {
+ $ERROR('#2: length property of Math.max method is undefined');
+}
+
+// CHECK#3
+if (Math.max.length !== 2) {
+ $ERROR('#3: The length property of the Math.max method is not 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A1.js
new file mode 100644
index 000000000..64a2c0160
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.12_A1;
+ * @section: 15.8.2.12;
+ * @assertion: If no arguments are given, Math.min() is +Infinity;
+ * @description: Checking if Math.min() equals to +Infinity;
+ */
+
+// CHECK#1
+if (Math.min() != +Infinity)
+{
+ $ERROR("#1: 'Math.min() != +Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A2.js
new file mode 100644
index 000000000..2bcd769ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A2.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.12_A2;
+ * @section: 15.8.2.12;
+ * @assertion: If any value is NaN, the result of Math.min is NaN;
+ * @description: The script tests Math.min giving 1, 2 and 3 arguments to the function where at least one of the arguments is NaN
+ */
+
+// CHECK#1
+if (!isNaN(Math.min(NaN)))
+{
+ $ERROR("#1: 'isNaN(Math.min(NaN)) === false");
+}
+
+// CHECK#2
+vals = new Array();
+vals[0] = -Infinity;
+vals[1] = -0.000000000000001;
+vals[2] = -0;
+vals[3] = +0
+vals[4] = 0.000000000000001;
+vals[5] = +Infinity;
+vals[6] = NaN;
+valnum = 7;
+
+args = new Array();
+for (i = 0; i <= 1; i++)
+{
+ args[i] = NaN;
+ for (j = 0; j < valnum; j++)
+ {
+ args[1-i] = vals[j];
+ if (!isNaN(Math.min(args[0], args[1])))
+ {
+ $ERROR("#2: 'isNaN(Math.min(" + args[0] + ", " + args[1] + ")) === false");
+ }
+ }
+}
+
+// CHECK #3
+var k = 1;
+var l = 2;
+for (i = 0; i <= 2; i++)
+{
+ args[i] = NaN;
+ if (i === 1)
+ {
+ k = 0;
+ } else if (i === 2)
+ {
+ l = 1;
+ }
+ for (j = 0; j < valnum; j++)
+ {
+ for (jj = 0; jj < valnum; jj++)
+ {
+ args[k] = vals[j];
+ args[l] = vals[jj];
+ if (!isNaN(Math.min(args[0], args[1], args[2])))
+ {
+ $ERROR("#3: 'isNaN(Math.min(" + args[0] + ", " + args[1] + ", " + args[2] + ")) === false");
+ }
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A3.js
new file mode 100644
index 000000000..b85137077
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.12_A3;
+ * @section: 15.8.2.12;
+ * @assertion: +0 is considered to be larger than -0;
+ * @description: Checking if Math.max(-0,+0) and Math.max(+0,-0) equals to -0;
+ */
+
+// CHECK#1
+if (Math.max(-0, +0) !== -0)
+{
+ $ERROR("#1: 'Math.max(-0, +0) !== -0'");
+}
+
+// CHECK#1
+if (Math.max(+0, -0) !== -0)
+{
+ $ERROR("#2: 'Math.max(+0, -0) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_A4.js
new file mode 100644
index 000000000..c44a736d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.12_min/S15.8.2.12_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.
+
+/**
+ * @name: S15.8.2.12_A4;
+ * @section: 15.8.2.12;
+ * @assertion: The length property of the Math.min method is 2;
+ * @description: Checking if Math.min.length property is defined and equals to 2;
+ */
+
+// CHECK#1
+if (typeof Math.min !== "function") {
+ $ERROR('#1: Math.min method is not defined');
+}
+
+// CHECK#2
+if (typeof Math.min.length === "undefined") {
+ $ERROR('#2: length property of Math.min method is undefined');
+}
+
+// CHECK#3
+if (Math.min.length !== 2) {
+ $ERROR('#3: The length property of the Math.min method is not 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A1.js
new file mode 100644
index 000000000..8da5cd806
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_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.
+
+/**
+ * @name: S15.8.2.13_A1;
+ * @section: 15.8.2.13;
+ * @assertion: If y is NaN, Math.pow(x,y) is NaN;
+ * @description: Checking if Math.pow(x,y) is NaN, where y is NaN;
+ */
+
+// CHECK#1
+
+y = NaN;
+x = new Array();
+x[0] = -Infinity;
+x[1] = -1.7976931348623157E308; //largest (by module) finite number
+x[2] = -0.000000000000001;
+x[3] = -0;
+x[4] = +0
+x[5] = 0.000000000000001;
+x[6] = 1.7976931348623157E308; //largest finite number
+x[7] = +Infinity;
+x[8] = NaN;
+xnum = 9;
+
+for (i = 0; i < xnum; i++)
+{
+ if (!isNaN(Math.pow(x[i],y)))
+ {
+ $ERROR("#1: isNaN(Math.pow(" + x[i] + ", " + y + ")) === false");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A10.js
new file mode 100644
index 000000000..29c8dd5a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A10.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A10;
+ * @section: 15.8.2.13;
+ * @assertion: If abs(x)<1 and y is -Infinity, Math.pow(x,y) is +Infinity;
+ * @description: Checking if Math.pow(x,y) equals to +Infinity, where abs(x)<1 and y is -Infinity;
+ */
+
+// CHECK#1
+
+y = -Infinity;
+x = new Array();
+x[0] = 0.999999999999999;
+x[1] = 0.5;
+x[2] = +0;
+x[3] = -0;
+x[4] = -0.5;
+x[5] = -0.999999999999999;
+xnum = 6;
+
+for (i = 0; i < xnum; i++)
+{
+ if (Math.pow(x[i],y) !== +Infinity)
+ {
+ $ERROR("#1: Math.pow(" + x[i] + ", " + y + ") !== +Infinity");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A11.js
new file mode 100644
index 000000000..2bfe428da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A11.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A11;
+ * @section: 15.8.2.13;
+ * @assertion: If x is +Infinity and y>0, Math.pow(x,y) is +Infinity;
+ * @description: Checking if Math.pow(x,y) equals to +Infinity, where x is +Infinity and y>0;
+ */
+
+// CHECK#1
+
+x = +Infinity;
+y = new Array();
+y[3] = Infinity;
+y[2] = 1.7976931348623157E308; //largest (by module) finite number
+y[1] = 1;
+y[0] = 0.000000000000001;
+ynum = 4;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== +Infinity)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== +Infinity");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A12.js
new file mode 100644
index 000000000..01ab6c3de
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A12.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A12;
+ * @section: 15.8.2.13;
+ * @assertion: If x is +Infinity and y<0, Math.pow(x,y) is +0;
+ * @description: Checking if Math.pow(x,y) equals to +0, where x is +Infinity and y<0;
+ */
+
+// CHECK#1
+
+x = +Infinity;
+y = new Array();
+y[0] = -Infinity;
+y[1] = -1.7976931348623157E308; //largest (by module) finite number
+y[2] = -1;
+y[3] = -0.000000000000001;
+ynum = 4;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== +0)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== +0");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A13.js
new file mode 100644
index 000000000..27028ec71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A13.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A13;
+ * @section: 15.8.2.13;
+ * @assertion: If x is -Infinity and y>0 and y is an odd integer, Math.pow(x,y) is -Infinity;
+ * @description: Checking if Math.pow(x,y) equals to -Infinity, where x is -Infinity and y>0;
+ */
+
+// CHECK#1
+
+x = -Infinity;
+y = new Array();
+y[0] = 1;
+y[1] = 111;
+y[2] = 111111;
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== -Infinity)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== -Infinity");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A14.js
new file mode 100644
index 000000000..64862f38d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A14.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A14;
+ * @section: 15.8.2.13;
+ * @assertion: If x is -Infinity and y>0 and y is NOT an odd integer, Math.pow(x,y) is +Infinity;
+ * @description: Checking if Math.pow(x,y) equals to +Infinity, where x is -Infinity and y>0;
+ */
+
+// CHECK#1
+
+x = -Infinity;
+y = new Array();
+y[0] = 0.000000000000001;
+y[1] = 2;
+y[2] = Math.PI;
+y[3] = 1.7976931348623157E308; //largest finite number
+y[4] = +Infinity;
+ynum = 5;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== +Infinity)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== +Infinity");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A15.js
new file mode 100644
index 000000000..8b3df2d64
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A15.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A15;
+ * @section: 15.8.2.13;
+ * @assertion: If x is -Infinity and y<0 and y is an odd integer, Math.pow(x,y) is -0;
+ * @description: Checking if Math.pow(x,y) equals to -0, where x is -Infinity and y<0;
+ */
+
+// CHECK#1
+
+x = -Infinity;
+y = new Array();
+y[2] = -1;
+y[1] = -111;
+y[0] = -111111;
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== -0)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== -0");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A16.js
new file mode 100644
index 000000000..ebfee99f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A16.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A16;
+ * @section: 15.8.2.13;
+ * @assertion: If x is -Infinity and y<0 and y is NOT an odd integer, Math.pow(x,y) is +0;
+ * @description: Checking if Math.pow(x,y) equals to +0, where x is -Infinity and y<0;
+ */
+
+// CHECK#1
+
+x = -Infinity;
+y = new Array();
+y[4] = -0.000000000000001;
+y[3] = -2;
+y[2] = -Math.PI;
+y[1] = -1.7976931348623157E308; //largest (by module) finite number
+y[0] = -Infinity;
+ynum = 5;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== +0)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== +0");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A17.js
new file mode 100644
index 000000000..a2dd0e6a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A17.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A17;
+ * @section: 15.8.2.13;
+ * @assertion: If x is +0 and y>0, Math.pow(x,y) is +0;
+ * @description: Checking if Math.pow(x,y) equals to +0, where x is +0 and y>0;
+ */
+
+// CHECK#1
+
+x = +0;
+y = new Array();
+y[3] = Infinity;
+y[2] = 1.7976931348623157E308; //largest finite number
+y[1] = 1;
+y[0] = 0.000000000000001;
+ynum = 4;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== +0)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== +0");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A18.js
new file mode 100644
index 000000000..12de1057e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A18.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A18;
+ * @section: 15.8.2.13;
+ * @assertion: If x is +0 and y<0, Math.pow(x,y) is +Infinity;
+ * @description: Checking if Math.pow(x,y) equals to +Infinity, where x is +0 and y<0;
+ */
+
+// CHECK#1
+
+x = +0;
+y = new Array();
+y[0] = -Infinity;
+y[1] = -1.7976931348623157E308; //largest (by module) finite number
+y[2] = -1;
+y[3] = -0.000000000000001;
+ynum = 4;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== +Infinity)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== +Infinity");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A19.js
new file mode 100644
index 000000000..2167070b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A19.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A19;
+ * @section: 15.8.2.13;
+ * @assertion: If x is -0 and y>0 and y is an odd integer, Math.pow(x,y) is -0;
+ * @description: Checking if Math.pow(x,y) equals to -0, where x is -0 and y>0;
+ */
+
+// CHECK#1
+
+x = -0;
+y = new Array();
+y[0] = 1;
+y[1] = 111;
+y[2] = 111111;
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== -0)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== -0");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A2.js
new file mode 100644
index 000000000..cbddb6463
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A2;
+ * @section: 15.8.2.13;
+ * @assertion: If y is +0, Math.pow(x,y) is 1, even if x is NaN;
+ * @description: Checking if Math.pow(x,y) equals to 1, where y is +0 and x is number or NaN;
+ */
+
+// CHECK#1
+
+y = +0;
+x = new Array();
+x[0] = -Infinity;
+x[1] = -1.7976931348623157E308; //largest (by module) finite number
+x[2] = -0.000000000000001;
+x[3] = -0;
+x[4] = +0
+x[5] = 0.000000000000001;
+x[6] = 1.7976931348623157E308; //largest finite number
+x[7] = +Infinity;
+x[8] = NaN;
+xnum = 9;
+
+for (i = 0; i < xnum; i++)
+{
+ if (Math.pow(x[i],y) !== 1)
+ {
+ $ERROR("#1: Math.pow(" + x[i] + ", " + y + ") !== 1");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A20.js
new file mode 100644
index 000000000..85e41bde6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A20.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A20;
+ * @section: 15.8.2.13;
+ * @assertion: If x is -0 and y>0 and y is NOT an odd integer, Math.pow(x,y) is +0;
+ * @description: Checking if Math.pow(x,y) equals to +0, where x is -0 and y>0 and y is NOT an odd integer;
+ */
+
+// CHECK#1
+
+x = -0;
+y = new Array();
+y[0] = 0.000000000000001;
+y[1] = 2;
+y[2] = Math.PI;
+y[3] = 1.7976931348623157E308; //largest finite number
+y[4] = +Infinity;
+ynum = 5;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== +0)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== +0");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A21.js
new file mode 100644
index 000000000..1d2e0d1ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A21.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A21;
+ * @section: 15.8.2.13;
+ * @assertion: If x is -0 and y<0 and y is an odd integer, Math.pow(x,y) is -Infinity;
+ * @description: Checking if Math.pow(x,y) equals to -Infinity, where x is -0 and y is an odd integer;
+ */
+
+// CHECK#1
+
+x = -0;
+y = new Array();
+y[2] = -1;
+y[1] = -111;
+y[0] = -111111;
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== -Infinity)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== -Infinity");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A22.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A22.js
new file mode 100644
index 000000000..7f4e05ad1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A22.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A22;
+ * @section: 15.8.2.13;
+ * @assertion: If x is -0 and y<0 and y is NOT an odd integer, Math.pow(x,y) is +Infinity;
+ * @description: Checking if Math.pow(x,y) equals to +Infinity, where x is -0 and y<0 and y is NOT an odd integer;
+ */
+
+// CHECK#1
+
+x = -0;
+y = new Array();
+y[4] = -0.000000000000001;
+y[3] = -2;
+y[2] = -Math.PI;
+y[1] = -1.7976931348623157E308; //largest (by module) finite number
+y[0] = -Infinity;
+ynum = 5;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.pow(x,y[i]) !== +Infinity)
+ {
+ $ERROR("#1: Math.pow(" + x + ", " + y[i] + ") !== +Infinity");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A23.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A23.js
new file mode 100644
index 000000000..62114395b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A23.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A23;
+ * @section: 15.8.2.13;
+ * @assertion: If x<0 and x is finite and y is finite and y is not an integer, Math.pow(x,y) is NaN;
+ * @description: Checking if Math.pow(x,y) is NaN, where x<0 and x is finite and y is finite and y is not an integer;
+ */
+
+// CHECK#1
+
+y = NaN;
+x = new Array();
+x[0] = -1.7976931348623157E308; //largest (by module) finite number
+x[1] = -Math.PI;
+x[2] = -1;
+x[3] = -0.000000000000001;
+xnum = 4;
+
+y[0] = -Math.PI;
+y[1] = -Math.E;
+y[2] = -1.000000000000001;
+y[3] = -0.000000000000001;
+y[4] = 0.000000000000001;
+y[5] = 1.000000000000001;
+y[6] = Math.E;
+y[7] = Math.PI;
+ynum = 8;
+
+for (i = 0; i < xnum; i++)
+ for (j = 0; j < ynum; j++)
+ if (!isNaN(Math.pow(x[i],y[j])))
+ $ERROR("#1: isNaN(Math.pow(" + x[i] + ", " + y[j] + ")) === false");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A24.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A24.js
new file mode 100644
index 000000000..988f30368
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A24.js
@@ -0,0 +1,227 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A24;
+ * @section: 15.8.2.13;
+ * @assertion: Math.pow, recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.pow(argument1, argument2) is approximately equals to its mathematical value on the set of 64 argument1 values and 64 argument2 values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x1 = new Array();
+x1[0] = 0.00000000000000000000;
+x1[1] = 0.25396825396825395000;
+x1[2] = 0.50793650793650791000;
+x1[3] = 0.76190476190476186000;
+x1[4] = 1.01587301587301580000;
+x1[5] = 1.26984126984126980000;
+x1[6] = 1.52380952380952370000;
+x1[7] = 1.77777777777777770000;
+x1[8] = 2.03174603174603160000;
+x1[9] = 2.28571428571428560000;
+x1[10] = 2.53968253968253950000;
+x1[11] = 2.79365079365079350000;
+x1[12] = 3.04761904761904740000;
+x1[13] = 3.30158730158730140000;
+x1[14] = 3.55555555555555540000;
+x1[15] = 3.80952380952380930000;
+x1[16] = 4.06349206349206330000;
+x1[17] = 4.31746031746031720000;
+x1[18] = 4.57142857142857120000;
+x1[19] = 4.82539682539682510000;
+x1[20] = 5.07936507936507910000;
+x1[21] = 5.33333333333333300000;
+x1[22] = 5.58730158730158700000;
+x1[23] = 5.84126984126984090000;
+x1[24] = 6.09523809523809490000;
+x1[25] = 6.34920634920634890000;
+x1[26] = 6.60317460317460280000;
+x1[27] = 6.85714285714285680000;
+x1[28] = 7.11111111111111070000;
+x1[29] = 7.36507936507936470000;
+x1[30] = 7.61904761904761860000;
+x1[31] = 7.87301587301587260000;
+x1[32] = 8.12698412698412650000;
+x1[33] = 8.38095238095238140000;
+x1[34] = 8.63492063492063440000;
+x1[35] = 8.88888888888888930000;
+x1[36] = 9.14285714285714230000;
+x1[37] = 9.39682539682539720000;
+x1[38] = 9.65079365079365030000;
+x1[39] = 9.90476190476190510000;
+x1[40] = 10.15873015873015800000;
+x1[41] = 10.41269841269841300000;
+x1[42] = 10.66666666666666600000;
+x1[43] = 10.92063492063492100000;
+x1[44] = 11.17460317460317400000;
+x1[45] = 11.42857142857142900000;
+x1[46] = 11.68253968253968200000;
+x1[47] = 11.93650793650793700000;
+x1[48] = 12.19047619047619000000;
+x1[49] = 12.44444444444444500000;
+x1[50] = 12.69841269841269800000;
+x1[51] = 12.95238095238095300000;
+x1[52] = 13.20634920634920600000;
+x1[53] = 13.46031746031746000000;
+x1[54] = 13.71428571428571400000;
+x1[55] = 13.96825396825396800000;
+x1[56] = 14.22222222222222100000;
+x1[57] = 14.47619047619047600000;
+x1[58] = 14.73015873015872900000;
+x1[59] = 14.98412698412698400000;
+x1[60] = 15.23809523809523700000;
+x1[61] = 15.49206349206349200000;
+x1[62] = 15.74603174603174500000;
+x1[63] = 16.00000000000000000000;
+
+
+
+var x2 = new Array();
+x2[0] = -16.00000000000000000000;
+x2[1] = -15.49206349206349200000;
+x2[2] = -14.98412698412698400000;
+x2[3] = -14.47619047619047600000;
+x2[4] = -13.96825396825396800000;
+x2[5] = -13.46031746031746000000;
+x2[6] = -12.95238095238095300000;
+x2[7] = -12.44444444444444500000;
+x2[8] = -11.93650793650793700000;
+x2[9] = -11.42857142857142900000;
+x2[10] = -10.92063492063492100000;
+x2[11] = -10.41269841269841300000;
+x2[12] = -9.90476190476190510000;
+x2[13] = -9.39682539682539720000;
+x2[14] = -8.88888888888888930000;
+x2[15] = -8.38095238095238140000;
+x2[16] = -7.87301587301587350000;
+x2[17] = -7.36507936507936560000;
+x2[18] = -6.85714285714285770000;
+x2[19] = -6.34920634920634970000;
+x2[20] = -5.84126984126984180000;
+x2[21] = -5.33333333333333390000;
+x2[22] = -4.82539682539682600000;
+x2[23] = -4.31746031746031810000;
+x2[24] = -3.80952380952381020000;
+x2[25] = -3.30158730158730230000;
+x2[26] = -2.79365079365079440000;
+x2[27] = -2.28571428571428650000;
+x2[28] = -1.77777777777777860000;
+x2[29] = -1.26984126984127070000;
+x2[30] = -0.76190476190476275000;
+x2[31] = -0.25396825396825484000;
+x2[32] = 0.25396825396825307000;
+x2[33] = 0.76190476190476275000;
+x2[34] = 1.26984126984126890000;
+x2[35] = 1.77777777777777860000;
+x2[36] = 2.28571428571428470000;
+x2[37] = 2.79365079365079440000;
+x2[38] = 3.30158730158730050000;
+x2[39] = 3.80952380952381020000;
+x2[40] = 4.31746031746031630000;
+x2[41] = 4.82539682539682600000;
+x2[42] = 5.33333333333333210000;
+x2[43] = 5.84126984126984180000;
+x2[44] = 6.34920634920634800000;
+x2[45] = 6.85714285714285770000;
+x2[46] = 7.36507936507936380000;
+x2[47] = 7.87301587301587350000;
+x2[48] = 8.38095238095237960000;
+x2[49] = 8.88888888888888930000;
+x2[50] = 9.39682539682539540000;
+x2[51] = 9.90476190476190510000;
+x2[52] = 10.41269841269841100000;
+x2[53] = 10.92063492063492100000;
+x2[54] = 11.42857142857142700000;
+x2[55] = 11.93650793650793700000;
+x2[56] = 12.44444444444444300000;
+x2[57] = 12.95238095238095300000;
+x2[58] = 13.46031746031745900000;
+x2[59] = 13.96825396825396800000;
+x2[60] = 14.47619047619047400000;
+x2[61] = 14.98412698412698400000;
+x2[62] = 15.49206349206349000000;
+x2[63] = 16.00000000000000000000;
+
+
+var y = new Array();
+y[0] = +Infinity;
+y[1] = 1664158979.11096290000000000000;
+y[2] = 25596.98862206424700000000;
+y[3] = 51.24224360332205900000;
+y[4] = 0.80253721621001273000;
+y[5] = 0.04013281604184240600;
+y[6] = 0.00427181167466968250;
+y[7] = 0.00077698684629307839;
+y[8] = 0.00021140449751288852;
+y[9] = 0.00007886641216275820;
+y[10] = 0.00003797970495625904;
+y[11] = 0.00002260186576944384;
+y[12] = 0.00001608735704675994;
+y[13] = 0.00001335526639440840;
+y[14] = 0.00001267782407825002;
+y[15] = 0.00001354410739307298;
+y[16] = 0.00001607404700077214;
+y[17] = 0.00002096489798949858;
+y[18] = 0.00002978033411316872;
+y[19] = 0.00004572015769326707;
+y[20] = 0.00007536620884896827;
+y[21] = 0.00013263967558882687;
+y[22] = 0.00024800091950917796;
+y[23] = 0.00049049578772052680;
+y[24] = 0.00102225521238885490;
+y[25] = 0.00223744147356661880;
+y[26] = 0.00512739755878587920;
+y[27] = 0.01226918030754863000;
+y[28] = 0.03058049475427409400;
+y[29] = 0.07921771472569966200;
+y[30] = 0.21285098601167457000;
+y[31] = 0.59211846233860321000;
+y[32] = 1.70252376919407730000;
+y[33] = 5.05197994186350920000;
+y[34] = 15.44896866758827700000;
+y[35] = 48.62279949816147700000;
+y[36] = 157.31086033139039000000;
+y[37] = 522.60021277476767000000;
+y[38] = 1780.82316713426990000000;
+y[39] = 6218.58509846337710000000;
+y[40] = 22232.54916898025500000000;
+y[41] = 81310.50695814844200000000;
+y[42] = 303962.39599994919000000000;
+y[43] = 1160609.39151835810000000000;
+y[44] = 4523160.16396183520000000000;
+y[45] = 17980506.53105686600000000000;
+y[46] = 72861260.63140085300000000000;
+y[47] = 300795965.18372804000000000000;
+y[48] = 1264408843.88636260000000000000;
+y[49] = 5408983705.82595920000000000000;
+y[50] = 23536438485.32324600000000000000;
+y[51] = 104125724201.77888000000000000000;
+y[52] = 468137079409.17462000000000000000;
+y[53] = 2137965865913.91260000000000000000;
+y[54] = 9914368643808.25200000000000000000;
+y[55] = 46665726995317.89800000000000000000;
+y[56] = 222863786409039.87000000000000000000;
+y[57] = 1079534443702065.00000000000000000000;
+y[58] = 5302037850329952.00000000000000000000;
+y[59] = 26394813313751084.00000000000000000000;
+y[60] = 133146543235024720.00000000000000000000;
+y[61] = 680375082351885950.00000000000000000000;
+y[62] = 3520878542447823900.00000000000000000000;
+y[63] = 18446744073709552000.00000000000000000000;
+
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.pow(x1[i], x2[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx1 = " + x1[i] + "\nx2 = " + x2[i] + "\nlibc.pow(x1,x2) = " + y[i] + "\nMath.pow(x1,x2) = " + Math.pow(x1[i], x2[i]) + "\nMath.abs(libc.pow(x1,x2) - Math.pow(x1,x2)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A3.js
new file mode 100644
index 000000000..51281ee6b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A3;
+ * @section: 15.8.2.13;
+ * @assertion: If y is -0, Math.pow(x,y) is 1, even if x is NaN;
+ * @description: Checking if Math.pow(x,y) equals to 1, where x is number or NaN and y is -0;
+ */
+
+// CHECK#1
+
+y = +0;
+x = new Array();
+x[0] = -Infinity;
+x[1] = -1.7976931348623157E308; //largest (by module) finite number
+x[2] = -0.000000000000001;
+x[3] = -0;
+x[4] = +0
+x[5] = 0.000000000000001;
+x[6] = 1.7976931348623157E308; //largest finite number
+x[7] = +Infinity;
+x[8] = NaN;
+xnum = 9;
+
+for (i = 0; i < xnum; i++)
+{
+ if (Math.pow(x[i],y) !== 1)
+ {
+ $ERROR("#1: Math.pow(" + x[i] + ", -0) !== 1");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A4.js
new file mode 100644
index 000000000..84e9df16d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A4;
+ * @section: 15.8.2.13;
+ * @assertion: If x is NaN and y is nonzero, Math.pow(x,y) is NaN;
+ * @description: Checking if Math.pow(x,y) is NaN, where x is NaN and y is nonzero;
+ */
+
+// CHECK#1
+
+x = NaN;
+y = new Array();
+y[0] = -Infinity;
+y[1] = -1.7976931348623157E308; //largest (by module) finite number
+y[2] = -0.000000000000001;
+y[3] = 0.000000000000001;
+y[4] = 1.7976931348623157E308; //largest finite number
+y[5] = +Infinity;
+y[6] = NaN;
+ynum = 7;
+
+for (i = 0; i < ynum; i++)
+{
+ if (!isNaN(Math.pow(x,y[i])))
+ {
+ $ERROR("#1: isNaN(Math.pow(" + x + ", " + y[i] + ")) === false");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A5.js
new file mode 100644
index 000000000..dba2f7511
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A5;
+ * @section: 15.8.2.13;
+ * @assertion: If abs(x)>1 and y is +Infinity, Math.pow(x,y) is +Infinity;
+ * @description: Checking if Math.pow(x,y) equals to +Infinity, where abs(x)>1 and y is +Infinity;
+ */
+
+// CHECK#1
+
+y = +Infinity;
+x = new Array();
+x[0] = -Infinity;
+x[1] = -1.7976931348623157E308; //largest (by module) finite number
+x[2] = -1.000000000000001;
+x[3] = 1.000000000000001;
+x[4] = 1.7976931348623157E308; //largest finite number
+x[5] = +Infinity;
+xnum = 6;
+
+for (i = 0; i < xnum; i++)
+{
+ if (Math.pow(x[i],y) !== +Infinity)
+ {
+ $ERROR("#1: Math.pow(" + x[i] + ", " + y + ") !== +Infinity");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A6.js
new file mode 100644
index 000000000..bf96c6c7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A6;
+ * @section: 15.8.2.13;
+ * @assertion: If abs(x)>1 and y is -Infinity, Math.pow(x,y) is +0;
+ * @description: Checking if Math.pow(x,y) equals to +0, where abs(x)>1 and y is -Infinity;
+ */
+
+// CHECK#1
+
+y = -Infinity;
+x = new Array();
+x[0] = -Infinity;
+x[1] = -1.7976931348623157E308; //largest (by module) finite number
+x[2] = -1.000000000000001;
+x[3] = 1.000000000000001;
+x[4] = 1.7976931348623157E308; //largest finite number
+x[5] = +Infinity;
+xnum = 6;
+
+for (i = 0; i < xnum; i++)
+{
+ if (Math.pow(x[i],y) !== +0)
+ {
+ $ERROR("#1: Math.pow(" + x[i] + ", " + y + ") !== +0");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A7.js
new file mode 100644
index 000000000..1faf6790d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A7.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A7;
+ * @section: 15.8.2.13;
+ * @assertion: If abs(x)==1 and y is +Infinity, Math.pow(x,y) is NaN;
+ * @description: Checking if Math.pow(x,y) is NaN, where abs(x)==1 and y is +Infinity;
+ */
+
+// CHECK#1
+
+y = +Infinity;
+x = new Array();
+x[0] = -1;
+x[1] = 1
+xnum = 2;
+
+for (i = 0; i < xnum; i++)
+{
+ if (!isNaN(Math.pow(x[i],y)))
+ {
+ $FAIL("#1: isNaN(Math.pow(" + x[i] + ", " + y + ")) === false");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A8.js
new file mode 100644
index 000000000..daef4b9f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A8.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A8;
+ * @section: 15.8.2.13;
+ * @assertion: If abs(x)==1 and y is -Infinity, Math.pow(x,y) is NaN;
+ * @description: Checking if Math.pow(x,y) is NaN, where abs(x)==1 and y is -Infinity;
+ */
+
+// CHECK#1
+
+y = -Infinity;
+x = new Array();
+x[0] = -1;
+x[1] = 1
+xnum = 2;
+
+for (i = 0; i < xnum; i++)
+{
+ if (!isNaN(Math.pow(x[i],y)))
+ {
+ $FAIL("#1: isNaN(Math.pow(" + x[i] + ", " + y + ")) === false");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A9.js
new file mode 100644
index 000000000..23c3d56d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.13_pow/S15.8.2.13_A9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.13_A9;
+ * @section: 15.8.2.13;
+ * @assertion: If abs(x)<1 and y is +Infinity, Math.pow(x,y) is +0;
+ * @description: Checking if Math.pow(x,y) equals to +0, where abs(x)<1 and y is +Infinity;
+ */
+
+// CHECK#1
+
+y = +Infinity;
+x = new Array();
+x[0] = 0.999999999999999;
+x[1] = 0.5;
+x[2] = +0;
+x[3] = -0;
+x[4] = -0.5;
+x[5] = -0.999999999999999;
+xnum = 6;
+
+for (i = 0; i < xnum; i++)
+{
+ if (Math.pow(x[i],y) !== +0)
+ {
+ $ERROR("#1: Math.pow(" + x[i] + ", " + y + ") !== +0");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.14_random/S15.8.2.14_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.14_random/S15.8.2.14_A1.js
new file mode 100644
index 000000000..d9554ef87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.14_random/S15.8.2.14_A1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.14_A1;
+ * @section: 15.8.2.14;
+ * @assertion: Math.random() returns a number value with positive sign, greater than or equal to 0 but less than 1;
+ * @description: Checking if Math.random() is a number between 0 and 1, calling Math.random() 100 times;
+ */
+
+// CHECK#1
+for (i = 0; i < 100; i++)
+{
+ val = Math.random();
+ if (val < 0 || val >= 1)
+ {
+ $ERROR("#1: Math.random() = " + val);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A1.js
new file mode 100644
index 000000000..cc0e12f9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A1.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.
+
+/**
+ * @name: S15.8.2.15_A1;
+ * @section: 15.8.2.15;
+ * @assertion: If x is NaN, Math.round(x) is NaN;
+ * @description: Checking if Math.round(x) is NaN, where x is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.round(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.round(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A2.js
new file mode 100644
index 000000000..a1488cea5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A2.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.
+
+/**
+ * @name: S15.8.2.15_A2;
+ * @section: 15.8.2.15;
+ * @assertion: If x is +0, Math.round(x) is +0;
+ * @description: Checking if Math.round(x) equals to +0, where x is +0;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.round(x) !== +0)
+{
+ $ERROR("#1: 'var x=+0; Math.round(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A3.js
new file mode 100644
index 000000000..c06aae518
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_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.
+
+/**
+ * @name: S15.8.2.15_A3;
+ * @section: 15.8.2.15;
+ * @assertion: If x is -0, Math.round(x) is -0;
+ * @description: Checking if Math.round(x) equals to -0, where x is -0;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.round(x) !== -0)
+{
+ $ERROR("#1: 'var x=-0; Math.round(x) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A4.js
new file mode 100644
index 000000000..6faa46440
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_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.
+
+/**
+ * @name: S15.8.2.15_A4;
+ * @section: 15.8.2.15;
+ * @assertion: If x is +Infinity, Math.round(x) is +Infinity;
+ * @description: Checking if Math.round(x) is +Infinity, where x is +Infinity;
+ */
+
+// CHECK#1
+var x = +Infinity;
+if (Math.round(x) !== +Infinity)
+{
+ $ERROR("#1: 'var x=+Infinity; Math.round(x) !== +Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A5.js
new file mode 100644
index 000000000..c7649ef4f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A5.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.
+
+/**
+ * @name: S15.8.2.15_A5;
+ * @section: 15.8.2.15;
+ * @assertion: If x is -Infinity, Math.round(x) is -Infinity;
+ * @description: Checking if Math.round(x) is -Infinity, where x is -Infinity;
+ */
+
+// CHECK#1
+var x = -Infinity;
+if (Math.round(x) !== -Infinity)
+{
+ $ERROR("#1: 'var x=-Infinity; Math.round(x) !== -Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A6.js
new file mode 100644
index 000000000..5d65cd420
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A6.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.15_A6;
+ * @section: 15.8.2.15;
+ * @assertion: If x is equal to 0 or greater than 0, or if x is less than -0.5, Math.round(x) is equal to Math.floor(x+0.5);
+ * @description: Checking if Math.round(x) is equal to Math.floor(x+0.5), where x equals to 0, greater than 0, or is less than -0.5; this check is performed on 2000 argument x values;
+ */
+
+// CHECK#1
+for (i = 0; i <= 1000; i++)
+{
+ x = i/10.0;
+ if (Math.round(x) !== Math.floor(x + 0.5))
+ {
+ $ERROR("#1: 'x = " + x + "; Math.round(x) !== Math.floor(x + 0.5)'")
+ }
+}
+
+for (i = -5; i >= -1000; i--)
+{
+ if (i === -5)
+ {
+ x = -0.500000000000001;
+ } else
+ {
+ x = i/10.0;
+ }
+
+ if (Math.round(x) !== Math.floor(x + 0.5))
+ {
+ $ERROR("#2: 'x = " + x + "; Math.round(x) !== Math.floor(x + 0.5)'")
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A7.js
new file mode 100644
index 000000000..d29a0d1c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.15_round/S15.8.2.15_A7.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.15_A7;
+ * @section: 15.8.2.15;
+ * @assertion: If x is less than or equal to -0 and x is greater than or equal to -0.5, Math.round(x) is equal to -0;
+ * @description: Checking if Math.round(x) is equal -0, where x is equal to 0, equal to -0.5, or less than -0 while greater than -0.5;
+ */
+
+// CHECK#1
+if (Math.round(-0) !== -0)
+{
+ $ERROR("#1: 'Math.round(-0) !== -0'");
+}
+
+// CHECK#2
+if (Math.round(-0.5) !== -0)
+{
+ $ERROR("#2: 'Math.round(-0.5) !== -0'");
+}
+
+// CHECK#3
+if (Math.round(-0.25) !== -0)
+{
+ $ERROR("#3: 'Math.round(-0.25) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A1.js
new file mode 100644
index 000000000..896202514
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A1.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.
+
+/**
+ * @name: S15.8.2.16_A1;
+ * @section: 15.8.2.16;
+ * @assertion: If x is NaN, Math.sin(x) is NaN;
+ * @description: Checking if Math.sin(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.sin(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.sin(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A2.JS b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A2.JS
new file mode 100644
index 000000000..4d463c27d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A2.JS
@@ -0,0 +1,13 @@
+/**
+ * @name: S15.8.2.16_A2;
+ * @section: 15.8.2.16;
+ * @assertion: If x is +0, Math.sin(x) is +0;
+ * @description: Checking if Math.sin(+0) equals to +0;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.sin(x) !== +0)
+{
+ $ERROR("#1: 'var x = +0; Math.sin(x) !== +0'");
+} \ No newline at end of file
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A3.js
new file mode 100644
index 000000000..b1b5a629c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_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.
+
+/**
+ * @name: S15.8.2.16_A3;
+ * @section: 15.8.2.16;
+ * @assertion: If x is -0, Math.sin(x) is -0;
+ * @description: Checking if Math.sin(-0) equals to -0;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.sin(x) !== -0)
+{
+ $ERROR("#1: 'var x = -0; Math.sin(x) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A4.js
new file mode 100644
index 000000000..3281634b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_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.
+
+/**
+ * @name: S15.8.2.16_A4;
+ * @section: 15.8.2.16;
+ * @assertion: If x is +Infinity, Math.sin(x) is NaN;
+ * @description: Checking if Math.sin(+Infinity) is NaN;
+ */
+
+// CHECK#1
+var x = +Infinity;
+if (!isNaN(Math.sin(x)))
+{
+ $ERROR("#1: 'var x = +Infinity; isNaN(Math.sin(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A5.js
new file mode 100644
index 000000000..23c228029
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A5.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.
+
+/**
+ * @name: S15.8.2.16_A5;
+ * @section: 15.8.2.16;
+ * @assertion: If x is -Infinity, Math.sin(x) is NaN;
+ * @description: Checking if Math.sin(-Infinity) is NaN;
+ */
+
+// CHECK#1
+var x = -Infinity;
+if (!isNaN(Math.sin(x)))
+{
+ $ERROR("#1: 'var x = -Infinity; isNaN(Math.sin(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A6.js
new file mode 100644
index 000000000..e52fee37d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A6.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.16_A6;
+ * @section: 15.8.2.16;
+ * @assertion: Sine is a periodic function with period 2*PI;
+ * @description: Checking if Math.sin(x) equals to Math.sin(x+n*2*Math.PI) with precision 0.000000000003, where n is an integer from 1 to 100 and x is one of 10 float point values from 0 to 2*Math.PI;
+ */
+
+// CHECK#1
+ prec = 0.000000000003;
+//prec = 0.000000000000001;
+period = 2*Math.PI;
+pernum = 100;
+
+a = -pernum * period;
+b = pernum * period;
+snum = 9;
+step = period/snum + 0.0;
+x = new Array();
+for (i = 0; i < snum; i++)
+{
+ x[i] = a + i*step;
+}
+x[9] = a + period;
+
+var curval;
+var curx;
+var j;
+for (i = 0; i < snum; i++)
+{
+ curval = Math.sin(x[i]);
+ curx = x[i] + period;
+ j = 0;
+ while (curx <= b)
+ {
+ curx += period;
+ j++;
+ if (Math.abs(Math.sin(curx) - curval) >= prec)
+ {
+ $FAIL("#1: sin is found out to not be periodic:\n Math.abs(Math.sin(" + x[i] + ") - Math.sin(" + x[i] + " + 2*Math.PI*" + j + ")) >= " + prec + "\n Math.sin(" + x[i] + ") === " + curval + "\n Math.sin(" + curx + ") === " + Math.sin(curx));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A7.js
new file mode 100644
index 000000000..56676ba83
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.16_sin/S15.8.2.16_A7.js
@@ -0,0 +1,158 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.16_A7;
+ * @section: 15.8.2.16;
+ * @assertion: Math.sin it is recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.sin is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x = new Array();
+x[0] = 0.00000000000000000000;
+x[1] = 0.09973310011396169200;
+x[2] = 0.19946620022792338000;
+x[3] = 0.29919930034188508000;
+x[4] = 0.39893240045584677000;
+x[5] = 0.49866550056980841000;
+x[6] = 0.59839860068377015000;
+x[7] = 0.69813170079773179000;
+x[8] = 0.79786480091169354000;
+x[9] = 0.89759790102565518000;
+x[10] = 0.99733100113961681000;
+x[11] = 1.09706410125357840000;
+x[12] = 1.19679720136754030000;
+x[13] = 1.29653030148150190000;
+x[14] = 1.39626340159546360000;
+x[15] = 1.49599650170942520000;
+x[16] = 1.59572960182338710000;
+x[17] = 1.69546270193734870000;
+x[18] = 1.79519580205131040000;
+x[19] = 1.89492890216527200000;
+x[20] = 1.99466200227923360000;
+x[21] = 2.09439510239319570000;
+x[22] = 2.19412820250715690000;
+x[23] = 2.29386130262111850000;
+x[24] = 2.39359440273508060000;
+x[25] = 2.49332750284904230000;
+x[26] = 2.59306060296300390000;
+x[27] = 2.69279370307696550000;
+x[28] = 2.79252680319092720000;
+x[29] = 2.89225990330488880000;
+x[30] = 2.99199300341885040000;
+x[31] = 3.09172610353281210000;
+x[32] = 3.19145920364677420000;
+x[33] = 3.29119230376073580000;
+x[34] = 3.39092540387469740000;
+x[35] = 3.49065850398865910000;
+x[36] = 3.59039160410262070000;
+x[37] = 3.69012470421658230000;
+x[38] = 3.78985780433054400000;
+x[39] = 3.88959090444450560000;
+x[40] = 3.98932400455846730000;
+x[41] = 4.08905710467242840000;
+x[42] = 4.18879020478639140000;
+x[43] = 4.28852330490035260000;
+x[44] = 4.38825640501431380000;
+x[45] = 4.48798950512827590000;
+x[46] = 4.58772260524223710000;
+x[47] = 4.68745570535619920000;
+x[48] = 4.78718880547016120000;
+x[49] = 4.88692190558412240000;
+x[50] = 4.98665500569808450000;
+x[51] = 5.08638810581204570000;
+x[52] = 5.18612120592600780000;
+x[53] = 5.28585430603996990000;
+x[54] = 5.38558740615393110000;
+x[55] = 5.48532050626789310000;
+x[56] = 5.58505360638185430000;
+x[57] = 5.68478670649581550000;
+x[58] = 5.78451980660977760000;
+x[59] = 5.88425290672373970000;
+x[60] = 5.98398600683770090000;
+x[61] = 6.08371910695166300000;
+x[62] = 6.18345220706562420000;
+x[63] = 6.28318530717958620000;
+
+
+var y = new Array();
+y[0] = 0.00000000000000000000;
+y[1] = 0.09956784659581666100;
+y[2] = 0.19814614319939758000;
+y[3] = 0.29475517441090421000;
+y[4] = 0.38843479627469474000;
+y[5] = 0.47825397862131819000;
+y[6] = 0.56332005806362206000;
+y[7] = 0.64278760968653925000;
+y[8] = 0.71586684925971844000;
+y[9] = 0.78183148246802980000;
+y[10] = 0.84002592315077140000;
+y[11] = 0.88987180881146855000;
+y[12] = 0.93087374864420425000;
+y[13] = 0.96262424695001203000;
+y[14] = 0.98480775301220802000;
+y[15] = 0.99720379718118013000;
+y[16] = 0.99968918200081625000;
+y[17] = 0.99223920660017206000;
+y[18] = 0.97492791218182362000;
+y[19] = 0.94792734616713181000;
+y[20] = 0.91150585231167325000;
+y[21] = 0.86602540378443849000;
+y[22] = 0.81193800571585661000;
+y[23] = 0.74978120296773443000;
+y[24] = 0.68017273777091936000;
+y[25] = 0.60380441032547738000;
+y[26] = 0.52143520337949811000;
+y[27] = 0.43388373911755823000;
+y[28] = 0.34202014332566888000;
+y[29] = 0.24675739769029384000;
+y[30] = 0.14904226617617472000;
+y[31] = 0.04984588566069748200;
+y[32] = -0.04984588566069723300;
+y[33] = -0.14904226617617447000;
+y[34] = -0.24675739769029362000;
+y[35] = -0.34202014332566866000;
+y[36] = -0.43388373911755801000;
+y[37] = -0.52143520337949789000;
+y[38] = -0.60380441032547716000;
+y[39] = -0.68017273777091913000;
+y[40] = -0.74978120296773398000;
+y[41] = -0.81193800571585595000;
+y[42] = -0.86602540378443882000;
+y[43] = -0.91150585231167314000;
+y[44] = -0.94792734616713159000;
+y[45] = -0.97492791218182362000;
+y[46] = -0.99223920660017195000;
+y[47] = -0.99968918200081625000;
+y[48] = -0.99720379718118013000;
+y[49] = -0.98480775301220813000;
+y[50] = -0.96262424695001203000;
+y[51] = -0.93087374864420447000;
+y[52] = -0.88987180881146866000;
+y[53] = -0.84002592315077129000;
+y[54] = -0.78183148246802991000;
+y[55] = -0.71586684925971833000;
+y[56] = -0.64278760968653958000;
+y[57] = -0.56332005806362273000;
+y[58] = -0.47825397862131858000;
+y[59] = -0.38843479627469474000;
+y[60] = -0.29475517441090471000;
+y[61] = -0.19814614319939772000;
+y[62] = -0.09956784659581728600;
+y[63] = -0.0000000000000002449293598294706400;
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.sin(x[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx = " + x[i] + "\nlibc.sin(x) = " + y[i] + "\nMath.sin(x) = " + Math.sin(x[i]) + "\nMath.abs(libc.sin(x) - Math.sin(x)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A1.js
new file mode 100644
index 000000000..a79dadc4f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A1.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.
+
+/**
+ * @name: S15.8.2.17_A1;
+ * @section: 15.8.2.17;
+ * @assertion: If x is NaN, Math.sqrt(x) is NaN;
+ * @description: Checking if Math.sqrt(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.sqrt(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.sqrt(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A2.js
new file mode 100644
index 000000000..fb777026f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.17_A2;
+ * @section: 15.8.2.17;
+ * @assertion: If x less than 0, Math.sqrt(x) is NaN;
+ * @description: Checking if Math.sqrt(x) is NaN, where x is less than 0;
+ */
+
+// CHECK#1
+var x = -0.000000000000001;
+if (!isNaN(Math.sqrt(x)))
+{
+ $ERROR("#1: 'var x=-0.000000000000001; isNaN(Math.sqrt(x)) === false'");
+}
+
+// CHECK#2
+var x = -1;
+if (!isNaN(Math.sqrt(x)))
+{
+ $ERROR("#2: 'var x=-1; isNaN(Math.sqrt(x)) === false'");
+}
+
+// CHECK#3
+var x = -Infinity;
+if (!isNaN(Math.sqrt(x)))
+{
+ $ERROR("#3: 'var x=-Infinity; isNaN(Math.sqrt(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A3.js
new file mode 100644
index 000000000..d8738a0ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_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.
+
+/**
+ * @name: S15.8.2.17_A3;
+ * @section: 15.8.2.17;
+ * @assertion: If x is equal to +0, Math.sqrt(x) is +0;
+ * @description: Checking if Math.sqrt(+0) equals to +0;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.sqrt(x) !== +0)
+{
+ $ERROR("#1: 'var x=+0; Math.sqrt(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A4.js
new file mode 100644
index 000000000..00bc22d72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_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.
+
+/**
+ * @name: S15.8.2.17_A4;
+ * @section: 15.8.2.17;
+ * @assertion: If x is equal to -0, Math.sqrt(x) is -0;
+ * @description: Checking if Math.sqrt(-0) equals to -0;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.sqrt(x) !== -0)
+{
+ $ERROR("#1: 'var x=-0; Math.sqrt(x) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A5.js
new file mode 100644
index 000000000..203a8ae84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A5.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.
+
+/**
+ * @name: S15.8.2.17_A5;
+ * @section: 15.8.2.17;
+ * @assertion: If x is equal to +Infinity, Math.sqrt(x) is +Infinity;
+ * @description: Checking if Math.sqrt(+Infinity) is +Infinity;
+ */
+
+// CHECK#1
+var x = +Infinity;
+if (Math.sqrt(x) !== +Infinity)
+{
+ $ERROR("#1: 'var x=+Infinity; Math.sqrt(x) !== +Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A6.js
new file mode 100644
index 000000000..0ceab6cc0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.17_sqrt/S15.8.2.17_A6.js
@@ -0,0 +1,159 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.17_A6;
+ * @section: 15.8.2.17;
+ * @assertion: Math.sqrt, recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.sqrt is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x = new Array();
+x[0] = 0.00000000000000000000;
+x[1] = 0.25396825396825395000;
+x[2] = 0.50793650793650791000;
+x[3] = 0.76190476190476186000;
+x[4] = 1.01587301587301580000;
+x[5] = 1.26984126984126980000;
+x[6] = 1.52380952380952370000;
+x[7] = 1.77777777777777770000;
+x[8] = 2.03174603174603160000;
+x[9] = 2.28571428571428560000;
+x[10] = 2.53968253968253950000;
+x[11] = 2.79365079365079350000;
+x[12] = 3.04761904761904740000;
+x[13] = 3.30158730158730140000;
+x[14] = 3.55555555555555540000;
+x[15] = 3.80952380952380930000;
+x[16] = 4.06349206349206330000;
+x[17] = 4.31746031746031720000;
+x[18] = 4.57142857142857120000;
+x[19] = 4.82539682539682510000;
+x[20] = 5.07936507936507910000;
+x[21] = 5.33333333333333300000;
+x[22] = 5.58730158730158700000;
+x[23] = 5.84126984126984090000;
+x[24] = 6.09523809523809490000;
+x[25] = 6.34920634920634890000;
+x[26] = 6.60317460317460280000;
+x[27] = 6.85714285714285680000;
+x[28] = 7.11111111111111070000;
+x[29] = 7.36507936507936470000;
+x[30] = 7.61904761904761860000;
+x[31] = 7.87301587301587260000;
+x[32] = 8.12698412698412650000;
+x[33] = 8.38095238095238140000;
+x[34] = 8.63492063492063440000;
+x[35] = 8.88888888888888930000;
+x[36] = 9.14285714285714230000;
+x[37] = 9.39682539682539720000;
+x[38] = 9.65079365079365030000;
+x[39] = 9.90476190476190510000;
+x[40] = 10.15873015873015800000;
+x[41] = 10.41269841269841300000;
+x[42] = 10.66666666666666600000;
+x[43] = 10.92063492063492100000;
+x[44] = 11.17460317460317400000;
+x[45] = 11.42857142857142900000;
+x[46] = 11.68253968253968200000;
+x[47] = 11.93650793650793700000;
+x[48] = 12.19047619047619000000;
+x[49] = 12.44444444444444500000;
+x[50] = 12.69841269841269800000;
+x[51] = 12.95238095238095300000;
+x[52] = 13.20634920634920600000;
+x[53] = 13.46031746031746000000;
+x[54] = 13.71428571428571400000;
+x[55] = 13.96825396825396800000;
+x[56] = 14.22222222222222100000;
+x[57] = 14.47619047619047600000;
+x[58] = 14.73015873015872900000;
+x[59] = 14.98412698412698400000;
+x[60] = 15.23809523809523700000;
+x[61] = 15.49206349206349200000;
+x[62] = 15.74603174603174500000;
+x[63] = 16.00000000000000000000;
+
+
+
+var y = new Array();
+y[0] = 0.00000000000000000000;
+y[1] = 0.50395263067896967000;
+y[2] = 0.71269664509979835000;
+y[3] = 0.87287156094396945000;
+y[4] = 1.00790526135793930000;
+y[5] = 1.12687233963802200000;
+y[6] = 1.23442679969673530000;
+y[7] = 1.33333333333333330000;
+y[8] = 1.42539329019959670000;
+y[9] = 1.51185789203690880000;
+y[10] = 1.59363814577919150000;
+y[11] = 1.67142178807468980000;
+y[12] = 1.74574312188793890000;
+y[13] = 1.81702705031799170000;
+y[14] = 1.88561808316412670000;
+y[15] = 1.95180014589706640000;
+y[16] = 2.01581052271587870000;
+y[17] = 2.07784992659727900000;
+y[18] = 2.13808993529939520000;
+y[19] = 2.19667858946110380000;
+y[20] = 2.25374467927604400000;
+y[21] = 2.30940107675850290000;
+y[22] = 2.36374736114111530000;
+y[23] = 2.41687191246657520000;
+y[24] = 2.46885359939347060000;
+y[25] = 2.51976315339484810000;
+y[26] = 2.56966429775848400000;
+y[27] = 2.61861468283190830000;
+y[28] = 2.66666666666666650000;
+y[29] = 2.71386797119523940000;
+y[30] = 2.76026223736941700000;
+y[31] = 2.80588949764880670000;
+y[32] = 2.85078658039919340000;
+y[33] = 2.89498745782298350000;
+y[34] = 2.93852354676981160000;
+y[35] = 2.98142396999971960000;
+y[36] = 3.02371578407381760000;
+y[37] = 3.06542417893925380000;
+y[38] = 3.10657265339049320000;
+y[39] = 3.14718316987777280000;
+y[40] = 3.18727629155838300000;
+y[41] = 3.22687130401855570000;
+y[42] = 3.26598632371090410000;
+y[43] = 3.30463839483761390000;
+y[44] = 3.34284357614937950000;
+y[45] = 3.38061701891406630000;
+y[46] = 3.41797303712883060000;
+y[47] = 3.45492517089848670000;
+y[48] = 3.49148624377587780000;
+y[49] = 3.52766841475278750000;
+y[50] = 3.56348322549899170000;
+y[51] = 3.59894164336974940000;
+y[52] = 3.63405410063598340000;
+y[53] = 3.66883053033489940000;
+y[54] = 3.70328039909020570000;
+y[55] = 3.73741273720925400000;
+y[56] = 3.77123616632825340000;
+y[57] = 3.80475892484536750000;
+y[58] = 3.83798889135426350000;
+y[59] = 3.87093360626696680000;
+y[60] = 3.90360029179413280000;
+y[61] = 3.93599587043272870000;
+y[62] = 3.96812698209517300000;
+y[63] = 4.00000000000000000000;
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.sqrt(x[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx = " + x[i] + "\nlibc.sqrt(x) = " + y[i] + "\nMath.sqrt(x) = " + Math.sqrt(x[i]) + "\nMath.abs(libc.sqrt(x) - Math.sqrt(x)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A1.js
new file mode 100644
index 000000000..4d6c98357
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A1.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.
+
+/**
+ * @name: S15.8.2.18_A1;
+ * @section: 15.8.2.18;
+ * @assertion: If x is NaN, Math.tan(x) is NaN;
+ * @description: Checking if Math.tan(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.tan(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.tan(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A2.js
new file mode 100644
index 000000000..f63e5d6c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A2.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.
+
+/**
+ * @name: S15.8.2.18_A2;
+ * @section: 15.8.2.18;
+ * @assertion: If x is +0, Math.tan(x) is +0;
+ * @description: Checking if Math.tan(+0) equals to +0;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.tan(x) !== +0)
+{
+ $ERROR("#1: 'var x=+0; Math.tan(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A3.js
new file mode 100644
index 000000000..62a126cae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_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.
+
+/**
+ * @name: S15.8.2.18_A3;
+ * @section: 15.8.2.18;
+ * @assertion: If x is -0, Math.tan(x) is -0;
+ * @description: Checking if Math.tan(-0) equals to -0;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.tan(x) !== -0)
+{
+ $ERROR("#1: 'var x=-0; Math.tan(x) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A4.js
new file mode 100644
index 000000000..800dc06a1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_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.
+
+/**
+ * @name: S15.8.2.18_A4;
+ * @section: 15.8.2.18;
+ * @assertion: If x is +Infinity, Math.tan(x) is NaN;
+ * @description: Checking if Math.tan(+Infinity) is NaN;
+ */
+
+// CHECK#1
+var x = +Infinity;
+if (!isNaN(Math.tan(x)))
+{
+ $ERROR("#1: 'var x=+Infinity; isNaN(Math.tan(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A5.js
new file mode 100644
index 000000000..df4b7009f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A5.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.
+
+/**
+ * @name: S15.8.2.18_A5;
+ * @section: 15.8.2.18;
+ * @assertion: If x is -Infinity, Math.tan(x) is NaN;
+ * @description: Checking if Math.tan(-Infinity) is NaN;
+ */
+
+// CHECK#1
+var x = -Infinity;
+if (!isNaN(Math.tan(x)))
+{
+ $ERROR("#1: 'var x=-Infinity; isNaN(Math.tan(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A6.js
new file mode 100644
index 000000000..a96d6200d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A6.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.18_A6;
+ * @section: 15.8.2.18;
+ * @assertion: Tangent is a periodic function with period PI;
+ * @description: Checking if Math.tan(x) equals to Math.tan(x+n*Math.PI) with precision 0.000000000003, where n is an integer from 1 to 100 and x is one of 10 float point values from 0 to Math.PI;
+ */
+
+// CHECK#1
+ prec = 0.00000000003;
+//prec = 0.000000000000001;
+period = Math.PI;
+pernum = 100;
+
+a = -pernum * period + period/2;
+b = pernum * period - period/2;
+snum = 9;
+step = period/(snum + 2);
+x = new Array();
+for (i = 0; i <= snum; i++) //// We exlude special points
+{ //// in this cycle.
+ x[i] = a + (i+1)*step; ////
+} ////
+
+
+var curval;
+var curx;
+var j;
+for (i = 0; i < snum; i++)
+{
+ curval = Math.tan(x[i]);
+ curx = x[i] + period;
+ j = 0;
+ while (curx <= b)
+ {
+ curx += period;
+ j++;
+ if (Math.abs(Math.tan(curx) - curval) >= prec)
+ {
+ $FAIL("#1: tan is found out to not be periodic:\n Math.abs(Math.tan(" + x[i] + ") - Math.tan(" + x[i] + " + 2*Math.PI*" + j + ")) >= " + prec + "\n Math.tan(" + x[i] + ") === " + curval + "\n Math.tan(" + curx + ") === " + Math.tan(curx));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A7.js
new file mode 100644
index 000000000..c96a15853
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.18_tan/S15.8.2.18_A7.js
@@ -0,0 +1,159 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.18_A7;
+ * @section: 15.8.2.18;
+ * @assertion: Math.tan, recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.tan is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x = new Array();
+x[0] = -1.57079632679489660000;
+x[1] = -1.52092977673791570000;
+x[2] = -1.47106322668093490000;
+x[3] = -1.42119667662395410000;
+x[4] = -1.37133012656697330000;
+x[5] = -1.32146357650999220000;
+x[6] = -1.27159702645301140000;
+x[7] = -1.22173047639603060000;
+x[8] = -1.17186392633904980000;
+x[9] = -1.12199737628206900000;
+x[10] = -1.07213082622508820000;
+x[11] = -1.02226427616810730000;
+x[12] = -0.97239772611112640000;
+x[13] = -0.92253117605414559000;
+x[14] = -0.87266462599716477000;
+x[15] = -0.82279807594018395000;
+x[16] = -0.77293152588320302000;
+x[17] = -0.72306497582622220000;
+x[18] = -0.67319842576924138000;
+x[19] = -0.62333187571226056000;
+x[20] = -0.57346532565527975000;
+x[21] = -0.52359877559829870000;
+x[22] = -0.47373222554131811000;
+x[23] = -0.42386567548433729000;
+x[24] = -0.37399912542735625000;
+x[25] = -0.32413257537037543000;
+x[26] = -0.27426602531339461000;
+x[27] = -0.22439947525641379000;
+x[28] = -0.17453292519943298000;
+x[29] = -0.12466637514245216000;
+x[30] = -0.07479982508547133900;
+x[31] = -0.02493327502849052000;
+x[32] = 0.02493327502849052000;
+x[33] = 0.07479982508547133900;
+x[34] = 0.12466637514245216000;
+x[35] = 0.17453292519943298000;
+x[36] = 0.22439947525641379000;
+x[37] = 0.27426602531339461000;
+x[38] = 0.32413257537037543000;
+x[39] = 0.37399912542735625000;
+x[40] = 0.42386567548433707000;
+x[41] = 0.47373222554131766000;
+x[42] = 0.52359877559829915000;
+x[43] = 0.57346532565527975000;
+x[44] = 0.62333187571226034000;
+x[45] = 0.67319842576924138000;
+x[46] = 0.72306497582622198000;
+x[47] = 0.77293152588320302000;
+x[48] = 0.82279807594018406000;
+x[49] = 0.87266462599716466000;
+x[50] = 0.92253117605414570000;
+x[51] = 0.97239772611112629000;
+x[52] = 1.02226427616810730000;
+x[53] = 1.07213082622508840000;
+x[54] = 1.12199737628206900000;
+x[55] = 1.17186392633905000000;
+x[56] = 1.22173047639603060000;
+x[57] = 1.27159702645301120000;
+x[58] = 1.32146357650999220000;
+x[59] = 1.37133012656697330000;
+x[60] = 1.42119667662395390000;
+x[61] = 1.47106322668093490000;
+x[62] = 1.52092977673791550000;
+x[63] = 1.57079632679489660000;
+
+
+
+var y = new Array();
+y[0] = -16331239353195370.00000000000000000000;
+y[1] = -20.03689788997828100000;
+y[2] = -9.99349498241742220000;
+y[3] = -6.63456649978931170000;
+y[4] = -4.94671494494940060000;
+y[5] = -3.92724714760272690000;
+y[6] = -3.24192037576928720000;
+y[7] = -2.74747741945462160000;
+y[8] = -2.37228029184788760000;
+y[9] = -2.07652139657233640000;
+y[10] = -1.83630792973623100000;
+y[11] = -1.63642745273401610000;
+y[12] = -1.46673061342097340000;
+y[13] = -1.32018331365488460000;
+y[14] = -1.19175359259421000000;
+y[15] = -1.07774368351222650000;
+y[16] = -0.97537247158200291000;
+y[17] = -0.88250523616465493000;
+y[18] = -0.79747338888240393000;
+y[19] = -0.71895103828786056000;
+y[20] = -0.64586847728552887000;
+y[21] = -0.57735026918962551000;
+y[22] = -0.51267008667516678000;
+y[23] = -0.45121718317830323000;
+y[24] = -0.39247107881010240000;
+y[25] = -0.33598213147817668000;
+y[26] = -0.28135637451595324000;
+y[27] = -0.22824347439014994000;
+y[28] = -0.17632698070846500000;
+y[29] = -0.12531625823730441000;
+y[30] = -0.07493964001908703900;
+y[31] = -0.02493844305504610100;
+y[32] = 0.02493844305504610100;
+y[33] = 0.07493964001908703900;
+y[34] = 0.12531625823730441000;
+y[35] = 0.17632698070846500000;
+y[36] = 0.22824347439014994000;
+y[37] = 0.28135637451595324000;
+y[38] = 0.33598213147817668000;
+y[39] = 0.39247107881010240000;
+y[40] = 0.45121718317830301000;
+y[41] = 0.51267008667516623000;
+y[42] = 0.57735026918962618000;
+y[43] = 0.64586847728552887000;
+y[44] = 0.71895103828786022000;
+y[45] = 0.79747338888240393000;
+y[46] = 0.88250523616465459000;
+y[47] = 0.97537247158200291000;
+y[48] = 1.07774368351222670000;
+y[49] = 1.19175359259420950000;
+y[50] = 1.32018331365488510000;
+y[51] = 1.46673061342097320000;
+y[52] = 1.63642745273401610000;
+y[53] = 1.83630792973623190000;
+y[54] = 2.07652139657233640000;
+y[55] = 2.37228029184788890000;
+y[56] = 2.74747741945462160000;
+y[57] = 3.24192037576928450000;
+y[58] = 3.92724714760272690000;
+y[59] = 4.94671494494940060000;
+y[60] = 6.63456649978930190000;
+y[61] = 9.99349498241742220000;
+y[62] = 20.03689788997819200000;
+y[63] = 16331239353195370.00000000000000000000;
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.tan(x[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx = " + x[i] + "\nlibc.tan(x) = " + y[i] + "\nMath.tan(x) = " + Math.tan(x[i]) + "\nMath.abs(libc.tan(x) - Math.tan(x)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A1.js
new file mode 100644
index 000000000..129b217aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A1.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.
+
+/**
+ * @name: S15.8.2.1_A1;
+ * @section: 15.8.2.1;
+ * @assertion: If x is NaN, Math.abs(x) is NaN;
+ * @description: Checking if Math.abs(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.abs(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.abs(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A2.js
new file mode 100644
index 000000000..aa2bd1e96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A2.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.
+
+/**
+ * @name: S15.8.2.1_A2;
+ * @section: 15.8.2.1;
+ * @assertion: If x is -0, Math.abs(x) is +0;
+ * @description: Checking if Math.abs(-0) equals to +0;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.abs(x) !== +0)
+{
+ $ERROR("#1: 'var x=-0; Math.abs(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.1_A3.js
new file mode 100644
index 000000000..1e6589692
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.1_abs/S15.8.2.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.
+
+/**
+ * @name: S15.8.2.1_A3;
+ * @section: 15.8.2.1;
+ * @assertion: If x is -Infinity, Math.abs(x) is +Infinity;
+ * @description: Checking if Math.abs(-Infinity) equals to +Infinity;
+ */
+
+// CHECK#1
+var x = -Infinity;
+if (Math.abs(x) !== +Infinity)
+{
+ $ERROR("#1: 'var x=-Infinity; Math.abs(x) !== +Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A1.js
new file mode 100644
index 000000000..7f74a4582
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A1.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.
+
+/**
+ * @name: S15.8.2.2_A1;
+ * @section: 15.8.2.2;
+ * @assertion: If x is NaN, Math.acos(x) is NaN;
+ * @description: Checking if Math.acos(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.acos(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.acos(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A2.js
new file mode 100644
index 000000000..7988ff783
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.2_A2;
+ * @section: 15.8.2.2;
+ * @assertion: If x is greater than 1, Math.acos(x) is NaN;
+ * @description: Checking if Math.acos(x) is NaN, where x is greater than 1;
+ */
+
+// CHECK#1
+var x = 1.000000000000001;
+if (!isNaN(Math.acos(x)))
+{
+ $ERROR("#1: 'var x = 1.000000000000001; isNaN(Math.acos(x)) === false'");
+}
+
+// CHECK#2
+x = 2;
+if (!isNaN(Math.acos(x)))
+{
+ $ERROR("#2: 'x = 2; isNaN(Math.acos(x)) === false'");
+}
+
+// CHECK#3
+x = +Infinity;
+if (!isNaN(Math.acos(x)))
+{
+ $ERROR("#3: 'x = +Infinity; isNaN(Math.acos(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A3.js
new file mode 100644
index 000000000..4c3f85681
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.2_A3;
+ * @section: 15.8.2.2;
+ * @assertion: If x is less than -1, Math.acos(x) is NaN;
+ * @description: Checking if Math.acos(x) is NaN, where x is less than -1;
+ */
+
+// CHECK#1
+var x = -1.000000000000001;
+if (!isNaN(Math.acos(x)))
+{
+ $ERROR("#1: 'var x = -1.000000000000001; isNaN(Math.acos(x)) === false'");
+}
+
+// CHECK#2
+x = -2;
+if (!isNaN(Math.acos(x)))
+{
+ $ERROR("#2: 'x = -2; isNaN(Math.acos(x)) === false'");
+}
+
+// CHECK#3
+x = -Infinity;
+if (!isNaN(Math.acos(x)))
+{
+ $ERROR("#3: 'x = -Infinity; isNaN(Math.acos(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A4.js
new file mode 100644
index 000000000..fe2f02604
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_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.
+
+/**
+ * @name: S15.8.2.2_A4;
+ * @section: 15.8.2.2;
+ * @assertion: If x is exactly 1, Math.acos(x) is +0;
+ * @description: Checking if Math.acos(1) equals to +0;
+ */
+
+// CHECK#1
+var x = 1;
+if (Math.acos(x) !== +0)
+{
+ $ERROR("#1: 'var x = 1; Math.acos(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A5.js
new file mode 100644
index 000000000..0dd4529f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.2_acos/S15.8.2.2_A5.js
@@ -0,0 +1,162 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.2_A5;
+ * @section: 15.8.2.2;
+ * @assertion: Math.acos, recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.acos is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x = new Array();
+x[0] = -1.00000000000000000000;
+x[1] = -0.96825396825396826000;
+x[2] = -0.93650793650793651000;
+x[3] = -0.90476190476190477000;
+x[4] = -0.87301587301587302000;
+x[5] = -0.84126984126984128000;
+x[6] = -0.80952380952380953000;
+x[7] = -0.77777777777777779000;
+x[8] = -0.74603174603174605000;
+x[9] = -0.71428571428571430000;
+x[10] = -0.68253968253968256000;
+x[11] = -0.65079365079365081000;
+x[12] = -0.61904761904761907000;
+x[13] = -0.58730158730158732000;
+x[14] = -0.55555555555555558000;
+x[15] = -0.52380952380952384000;
+x[16] = -0.49206349206349209000;
+x[17] = -0.46031746031746035000;
+x[18] = -0.42857142857142860000;
+x[19] = -0.39682539682539686000;
+x[20] = -0.36507936507936511000;
+x[21] = -0.33333333333333337000;
+x[22] = -0.30158730158730163000;
+x[23] = -0.26984126984126988000;
+x[24] = -0.23809523809523814000;
+x[25] = -0.20634920634920639000;
+x[26] = -0.17460317460317465000;
+x[27] = -0.14285714285714290000;
+x[28] = -0.11111111111111116000;
+x[29] = -0.07936507936507941600;
+x[30] = -0.04761904761904767200;
+x[31] = -0.01587301587301592800;
+x[32] = 0.01587301587301581700;
+x[33] = 0.04761904761904767200;
+x[34] = 0.07936507936507930500;
+x[35] = 0.11111111111111116000;
+x[36] = 0.14285714285714279000;
+x[37] = 0.17460317460317465000;
+x[38] = 0.20634920634920628000;
+x[39] = 0.23809523809523814000;
+x[40] = 0.26984126984126977000;
+x[41] = 0.30158730158730163000;
+x[42] = 0.33333333333333326000;
+x[43] = 0.36507936507936511000;
+x[44] = 0.39682539682539675000;
+x[45] = 0.42857142857142860000;
+x[46] = 0.46031746031746024000;
+x[47] = 0.49206349206349209000;
+x[48] = 0.52380952380952372000;
+x[49] = 0.55555555555555558000;
+x[50] = 0.58730158730158721000;
+x[51] = 0.61904761904761907000;
+x[52] = 0.65079365079365070000;
+x[53] = 0.68253968253968256000;
+x[54] = 0.71428571428571419000;
+x[55] = 0.74603174603174605000;
+x[56] = 0.77777777777777768000;
+x[57] = 0.80952380952380953000;
+x[58] = 0.84126984126984117000;
+x[59] = 0.87301587301587302000;
+x[60] = 0.90476190476190466000;
+x[61] = 0.93650793650793651000;
+x[62] = 0.96825396825396814000;
+x[63] = 1.00000000000000000000;
+
+
+
+
+var y = new Array();
+y[0] = 3.14159265358979310000;
+y[1] = 2.88894492730522990000;
+y[2] = 2.78333143507717650000;
+y[3] = 2.70161669879887430000;
+y[4] = 2.63214880477790030000;
+y[5] = 2.57042415502425570000;
+y[6] = 2.51413688066660250000;
+y[7] = 2.46191883468154950000;
+y[8] = 2.41287920284638750000;
+y[9] = 2.36639928027943200000;
+y[10] = 2.32202832592153240000;
+y[11] = 2.27942559835728040000;
+y[12] = 2.23832577143072960000;
+y[13] = 2.19851714445280910000;
+y[14] = 2.15982729701117070000;
+y[15] = 2.12211329592677920000;
+y[16] = 2.08525480235608330000;
+y[17] = 2.04914909144415440000;
+y[18] = 2.01370737086853560000;
+y[19] = 1.97885200409617520000;
+y[20] = 1.94451437773781040000;
+y[21] = 1.91063323624901860000;
+y[22] = 1.87715336135181590000;
+y[23] = 1.84402450933553450000;
+y[24] = 1.81120054356415610000;
+y[25] = 1.77863871614824330000;
+y[26] = 1.74629906437061930000;
+y[27] = 1.71414389570026190000;
+y[28] = 1.68213734113586070000;
+y[29] = 1.65024496088003380000;
+y[30] = 1.61843338941929970000;
+y[31] = 1.58667000928485250000;
+y[32] = 1.55492264430494110000;
+y[33] = 1.52315926417049340000;
+y[34] = 1.49134769270975950000;
+y[35] = 1.45945531245393270000;
+y[36] = 1.42744875788953140000;
+y[37] = 1.39529358921917380000;
+y[38] = 1.36295393744155000000;
+y[39] = 1.33039211002563730000;
+y[40] = 1.29756814425425880000;
+y[41] = 1.26443929223797750000;
+y[42] = 1.23095941734077470000;
+y[43] = 1.19707827585198270000;
+y[44] = 1.16274064949361830000;
+y[45] = 1.12788528272125750000;
+y[46] = 1.09244356214563900000;
+y[47] = 1.05633785123370980000;
+y[48] = 1.01947935766301390000;
+y[49] = 0.98176535657862274000;
+y[50] = 0.94307550913698401000;
+y[51] = 0.90326688215906359000;
+y[52] = 0.86216705523251280000;
+y[53] = 0.81956432766826082000;
+y[54] = 0.77519337331036142000;
+y[55] = 0.72871345074340554000;
+y[56] = 0.67967381890824408000;
+y[57] = 0.62745577292319077000;
+y[58] = 0.57116849856553775000;
+y[59] = 0.50944384881189297000;
+y[60] = 0.43997595479091917000;
+y[61] = 0.35826121851261677000;
+y[62] = 0.25264772628456394000;
+y[63] = 0.00000000000000000000;
+
+
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.acos(x[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx = " + x[i] + "\nlibc.acos(x) = " + y[i] + "\nMath.acos(x) = " + Math.acos(x[i]) + "\nMath.abs(libc.acos(x) - Math.acos(x)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A1.js
new file mode 100644
index 000000000..c2b0188f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A1.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.
+
+/**
+ * @name: S15.8.2.3_A1;
+ * @section: 15.8.2.3;
+ * @assertion: If x is NaN, Math.asin(x) is NaN;
+ * @description: Checking if Math.asin(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.asin(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.asin(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A2.js
new file mode 100644
index 000000000..f035f3a14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.3_A2;
+ * @section: 15.8.2.3;
+ * @assertion: If x is greater than 1, Math.asin(x) is NaN;
+ * @description: Checking if Math.asin(x) is NaN, where x is greater than 1;
+ */
+
+// CHECK#1
+var x = 1.000000000000001;
+if (!isNaN(Math.asin(x)))
+{
+ $ERROR("#1: 'var x = 1.000000000000001; isNaN(Math.asin(x)) === false'");
+}
+
+// CHECK#2
+x = 2;
+if (!isNaN(Math.asin(x)))
+{
+ $ERROR("#2: 'x = 2; isNaN(Math.asin(x)) === false'");
+}
+
+// CHECK#3
+x = +Infinity;
+if (!isNaN(Math.asin(x)))
+{
+ $ERROR("#3: 'x = +Infinity; isNaN(Math.asin(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A3.js
new file mode 100644
index 000000000..436b6ff51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.3_A3;
+ * @section: 15.8.2.3;
+ * @assertion: If x is less than -1, Math.asin(x) is NaN;
+ * @description: Checking if Math.asin(x) is NaN, where x is less than -1;
+ */
+
+// CHECK#1
+var x = -1.000000000000001;
+if (!isNaN(Math.asin(x)))
+{
+ $ERROR("#1: 'var x = -1.000000000000001; isNaN(Math.asin(x)) === false'");
+}
+
+// CHECK#2
+x = -2;
+if (!isNaN(Math.asin(x)))
+{
+ $ERROR("#2: 'x = -2; isNaN(Math.asin(x)) === false'");
+}
+
+// CHECK#3
+x = -Infinity;
+if (!isNaN(Math.asin(x)))
+{
+ $ERROR("#3: 'x = -Infinity; isNaN(Math.asin(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A4.js
new file mode 100644
index 000000000..1b60f1f22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_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.
+
+/**
+ * @name: S15.8.2.3_A4;
+ * @section: 15.8.2.3;
+ * @assertion: If x is +0, Math.asin(x) is +0;
+ * @description: Checking if Math.asin(+0) equals +0;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.asin(x) !== +0)
+{
+ $ERROR("#1: 'var x = +0; Math.asin(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A5.js
new file mode 100644
index 000000000..6e6812e88
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A5.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.
+
+/**
+ * @name: S15.8.2.3_A5;
+ * @section: 15.8.2.3;
+ * @assertion: If x is -0, Math.asin(x) is -0;
+ * @description: Checking if Math.asin(-0) equals to -0;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.asin(x) !== -0)
+{
+ $ERROR("#1: 'var x = -0; Math.asin(x) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A6.js
new file mode 100644
index 000000000..8cbf9fe4f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.3_asin/S15.8.2.3_A6.js
@@ -0,0 +1,161 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.3_A6;
+ * @section: 15.8.2.3;
+ * @assertion: Math.asin, recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.asin is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x = new Array();
+x[0] = -1.00000000000000000000;
+x[1] = -0.96825396825396826000;
+x[2] = -0.93650793650793651000;
+x[3] = -0.90476190476190477000;
+x[4] = -0.87301587301587302000;
+x[5] = -0.84126984126984128000;
+x[6] = -0.80952380952380953000;
+x[7] = -0.77777777777777779000;
+x[8] = -0.74603174603174605000;
+x[9] = -0.71428571428571430000;
+x[10] = -0.68253968253968256000;
+x[11] = -0.65079365079365081000;
+x[12] = -0.61904761904761907000;
+x[13] = -0.58730158730158732000;
+x[14] = -0.55555555555555558000;
+x[15] = -0.52380952380952384000;
+x[16] = -0.49206349206349209000;
+x[17] = -0.46031746031746035000;
+x[18] = -0.42857142857142860000;
+x[19] = -0.39682539682539686000;
+x[20] = -0.36507936507936511000;
+x[21] = -0.33333333333333337000;
+x[22] = -0.30158730158730163000;
+x[23] = -0.26984126984126988000;
+x[24] = -0.23809523809523814000;
+x[25] = -0.20634920634920639000;
+x[26] = -0.17460317460317465000;
+x[27] = -0.14285714285714290000;
+x[28] = -0.11111111111111116000;
+x[29] = -0.07936507936507941600;
+x[30] = -0.04761904761904767200;
+x[31] = -0.01587301587301592800;
+x[32] = 0.01587301587301581700;
+x[33] = 0.04761904761904767200;
+x[34] = 0.07936507936507930500;
+x[35] = 0.11111111111111116000;
+x[36] = 0.14285714285714279000;
+x[37] = 0.17460317460317465000;
+x[38] = 0.20634920634920628000;
+x[39] = 0.23809523809523814000;
+x[40] = 0.26984126984126977000;
+x[41] = 0.30158730158730163000;
+x[42] = 0.33333333333333326000;
+x[43] = 0.36507936507936511000;
+x[44] = 0.39682539682539675000;
+x[45] = 0.42857142857142860000;
+x[46] = 0.46031746031746024000;
+x[47] = 0.49206349206349209000;
+x[48] = 0.52380952380952372000;
+x[49] = 0.55555555555555558000;
+x[50] = 0.58730158730158721000;
+x[51] = 0.61904761904761907000;
+x[52] = 0.65079365079365070000;
+x[53] = 0.68253968253968256000;
+x[54] = 0.71428571428571419000;
+x[55] = 0.74603174603174605000;
+x[56] = 0.77777777777777768000;
+x[57] = 0.80952380952380953000;
+x[58] = 0.84126984126984117000;
+x[59] = 0.87301587301587302000;
+x[60] = 0.90476190476190466000;
+x[61] = 0.93650793650793651000;
+x[62] = 0.96825396825396814000;
+x[63] = 1.00000000000000000000;
+
+
+
+
+var y = new Array();
+y[0] = -1.57079632679489660000;
+y[1] = -1.31814860051033310000;
+y[2] = -1.21253510828227990000;
+y[3] = -1.13082037200397780000;
+y[4] = -1.06135247798300370000;
+y[5] = -0.99962782822935903000;
+y[6] = -0.94334055387170590000;
+y[7] = -0.89112250788665281000;
+y[8] = -0.84208287605149101000;
+y[9] = -0.79560295348453536000;
+y[10] = -0.75123199912663585000;
+y[11] = -0.70862927156238398000;
+y[12] = -0.66752944463583297000;
+y[13] = -0.62772081765791266000;
+y[14] = -0.58903097021627393000;
+y[15] = -0.55131696913188277000;
+y[16] = -0.51445847556118673000;
+y[17] = -0.47835276464925774000;
+y[18] = -0.44291104407363896000;
+y[19] = -0.40805567730127851000;
+y[20] = -0.37371805094291394000;
+y[21] = -0.33983690945412198000;
+y[22] = -0.30635703455691915000;
+y[23] = -0.27322818254063785000;
+y[24] = -0.24040421676925938000;
+y[25] = -0.20784238935334678000;
+y[26] = -0.17550273757572274000;
+y[27] = -0.14334756890536540000;
+y[28] = -0.11134101434096394000;
+y[29] = -0.07944863408513722100;
+y[30] = -0.04763706262440318300;
+y[31] = -0.01587368248995573600;
+y[32] = 0.01587368248995562500;
+y[33] = 0.04763706262440318300;
+y[34] = 0.07944863408513711000;
+y[35] = 0.11134101434096394000;
+y[36] = 0.14334756890536529000;
+y[37] = 0.17550273757572274000;
+y[38] = 0.20784238935334667000;
+y[39] = 0.24040421676925938000;
+y[40] = 0.27322818254063774000;
+y[41] = 0.30635703455691915000;
+y[42] = 0.33983690945412187000;
+y[43] = 0.37371805094291394000;
+y[44] = 0.40805567730127840000;
+y[45] = 0.44291104407363896000;
+y[46] = 0.47835276464925758000;
+y[47] = 0.51445847556118673000;
+y[48] = 0.55131696913188266000;
+y[49] = 0.58903097021627393000;
+y[50] = 0.62772081765791254000;
+y[51] = 0.66752944463583297000;
+y[52] = 0.70862927156238387000;
+y[53] = 0.75123199912663585000;
+y[54] = 0.79560295348453514000;
+y[55] = 0.84208287605149101000;
+y[56] = 0.89112250788665259000;
+y[57] = 0.94334055387170590000;
+y[58] = 0.99962782822935881000;
+y[59] = 1.06135247798300370000;
+y[60] = 1.13082037200397760000;
+y[61] = 1.21253510828227990000;
+y[62] = 1.31814860051033270000;
+y[63] = 1.57079632679489660000;
+
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.asin(x[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx = " + x[i] + "\nlibc.asin(x) = " + y[i] + "\nMath.asin(x) = " + Math.asin(x[i]) + "\nMath.abs(libc.asin(x) - Math.asin(x)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A1.js
new file mode 100644
index 000000000..9b167391d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A1.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.
+
+/**
+ * @name: S15.8.2.4_A1;
+ * @section: 15.8.2.4;
+ * @assertion: If x is NaN, Math.atan(x) is NaN;
+ * @description: Checking if Math.atan(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.atan(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.atan(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A2.js
new file mode 100644
index 000000000..32b32ae31
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A2.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.
+
+/**
+ * @name: S15.8.2.4_A2;
+ * @section: 15.8.2.4;
+ * @assertion: If x is +0, Math.atan(x) is +0;
+ * @description: Checking if Math.atan(+0) equals to +0;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.atan(x) !== +0)
+{
+ $ERROR("#1: 'var x = +0; Math.atan(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A3.js
new file mode 100644
index 000000000..c630f2018
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_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.
+
+/**
+ * @name: S15.8.2.4_A3;
+ * @section: 15.8.2.4;
+ * @assertion: If x is -0, Math.atan(x) is -0;
+ * @description: Checking if Math.atan(-0) equals to -0;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.atan(x) !== -0)
+{
+ $ERROR("#1: 'var x = -0; Math.atan(x) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A4.js
new file mode 100644
index 000000000..02fe0e3ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.4_A4;
+ * @section: 15.8.2.4;
+ * @assertion: If x is +Infinity, Math.atan(x) is an implementation-dependent approximation to +PI/2;
+ * @description: Checking if Math.atan(+Infinity) is an approximation to +PI/2;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+
+var x = +Infinity;
+if (!isEqual(Math.atan(x),Math.PI/2))
+{
+ $ERROR("#1: '!isEqual(Math.atan(+Infinity), Math.PI/2)'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A5.js
new file mode 100644
index 000000000..41f33a8d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.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.
+
+/**
+ * @name: S15.8.2.4_A5;
+ * @section: 15.8.2.4;
+ * @assertion: If x is -Infinity, Math.atan(x) is an implementation-dependent approximation to -PI/2;
+ * @description: Checking if Math.atan(-Infinity) is an approximation to -PI/2;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+
+var x = -Infinity;
+if (!isEqual(Math.atan(x), -Math.PI/2))
+{
+ $ERROR("#1: '!isEqual(Math.atan(-Infinity), -Math.PI/2)'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A6.js
new file mode 100644
index 000000000..42a98d945
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.4_atan/S15.8.2.4_A6.js
@@ -0,0 +1,161 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.4_A6;
+ * @section: 15.8.2.4;
+ * @assertion: Math.atan, recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.atan is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x = new Array();
+x[0] = -16.00000000000000000000;
+x[1] = -15.49206349206349200000;
+x[2] = -14.98412698412698400000;
+x[3] = -14.47619047619047600000;
+x[4] = -13.96825396825396800000;
+x[5] = -13.46031746031746000000;
+x[6] = -12.95238095238095300000;
+x[7] = -12.44444444444444500000;
+x[8] = -11.93650793650793700000;
+x[9] = -11.42857142857142900000;
+x[10] = -10.92063492063492100000;
+x[11] = -10.41269841269841300000;
+x[12] = -9.90476190476190510000;
+x[13] = -9.39682539682539720000;
+x[14] = -8.88888888888888930000;
+x[15] = -8.38095238095238140000;
+x[16] = -7.87301587301587350000;
+x[17] = -7.36507936507936560000;
+x[18] = -6.85714285714285770000;
+x[19] = -6.34920634920634970000;
+x[20] = -5.84126984126984180000;
+x[21] = -5.33333333333333390000;
+x[22] = -4.82539682539682600000;
+x[23] = -4.31746031746031810000;
+x[24] = -3.80952380952381020000;
+x[25] = -3.30158730158730230000;
+x[26] = -2.79365079365079440000;
+x[27] = -2.28571428571428650000;
+x[28] = -1.77777777777777860000;
+x[29] = -1.26984126984127070000;
+x[30] = -0.76190476190476275000;
+x[31] = -0.25396825396825484000;
+x[32] = 0.25396825396825307000;
+x[33] = 0.76190476190476275000;
+x[34] = 1.26984126984126890000;
+x[35] = 1.77777777777777860000;
+x[36] = 2.28571428571428470000;
+x[37] = 2.79365079365079440000;
+x[38] = 3.30158730158730050000;
+x[39] = 3.80952380952381020000;
+x[40] = 4.31746031746031630000;
+x[41] = 4.82539682539682600000;
+x[42] = 5.33333333333333210000;
+x[43] = 5.84126984126984180000;
+x[44] = 6.34920634920634800000;
+x[45] = 6.85714285714285770000;
+x[46] = 7.36507936507936380000;
+x[47] = 7.87301587301587350000;
+x[48] = 8.38095238095237960000;
+x[49] = 8.88888888888888930000;
+x[50] = 9.39682539682539540000;
+x[51] = 9.90476190476190510000;
+x[52] = 10.41269841269841100000;
+x[53] = 10.92063492063492100000;
+x[54] = 11.42857142857142700000;
+x[55] = 11.93650793650793700000;
+x[56] = 12.44444444444444300000;
+x[57] = 12.95238095238095300000;
+x[58] = 13.46031746031745900000;
+x[59] = 13.96825396825396800000;
+x[60] = 14.47619047619047400000;
+x[61] = 14.98412698412698400000;
+x[62] = 15.49206349206349000000;
+x[63] = 16.00000000000000000000;
+
+
+
+var y = new Array();
+y[0] = -1.50837751679893930000;
+y[1] = -1.50633657314382670000;
+y[2] = -1.50415785436419310000;
+y[3] = -1.50182694519358660000;
+y[4] = -1.49932735026103090000;
+y[5] = -1.49664010557682300000;
+y[6] = -1.49374329974393950000;
+y[7] = -1.49061147949358030000;
+y[8] = -1.48721490565349580000;
+y[9] = -1.48351861384543530000;
+y[10] = -1.47948121756761840000;
+y[11] = -1.47505336756015580000;
+y[12] = -1.47017574693777100000;
+y[13] = -1.46477643093971600000;
+y[14] = -1.45876736436890870000;
+y[15] = -1.45203959426707030000;
+y[16] = -1.44445671565255360000;
+y[17] = -1.43584570229039390000;
+y[18] = -1.42598382855595760000;
+y[19] = -1.41457960835077490000;
+y[20] = -1.40124433129607070000;
+y[21] = -1.38544837679920190000;
+y[22] = -1.36645204745321510000;
+y[23] = -1.34319210978762000000;
+y[24] = -1.31408799636151090000;
+y[25] = -1.27669520176831860000;
+y[26] = -1.22705270315911450000;
+y[27] = -1.15838588519750950000;
+y[28] = -1.05840686648415900000;
+y[29] = -0.90372394590298166000;
+y[30] = -0.65107672144448037000;
+y[31] = -0.24870998909352368000;
+y[32] = 0.24870998909352202000;
+y[33] = 0.65107672144448037000;
+y[34] = 0.90372394590298100000;
+y[35] = 1.05840686648415900000;
+y[36] = 1.15838588519750910000;
+y[37] = 1.22705270315911450000;
+y[38] = 1.27669520176831840000;
+y[39] = 1.31408799636151090000;
+y[40] = 1.34319210978761980000;
+y[41] = 1.36645204745321510000;
+y[42] = 1.38544837679920190000;
+y[43] = 1.40124433129607070000;
+y[44] = 1.41457960835077490000;
+y[45] = 1.42598382855595760000;
+y[46] = 1.43584570229039390000;
+y[47] = 1.44445671565255360000;
+y[48] = 1.45203959426707030000;
+y[49] = 1.45876736436890870000;
+y[50] = 1.46477643093971600000;
+y[51] = 1.47017574693777100000;
+y[52] = 1.47505336756015580000;
+y[53] = 1.47948121756761840000;
+y[54] = 1.48351861384543530000;
+y[55] = 1.48721490565349580000;
+y[56] = 1.49061147949358030000;
+y[57] = 1.49374329974393950000;
+y[58] = 1.49664010557682300000;
+y[59] = 1.49932735026103090000;
+y[60] = 1.50182694519358660000;
+y[61] = 1.50415785436419310000;
+y[62] = 1.50633657314382670000;
+y[63] = 1.50837751679893930000;
+
+
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.atan(x[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx = " + x[i] + "\nlibc.atan(x) = " + y[i] + "\nMath.atan(x) = " + Math.atan(x[i]) + "\nMath.abs(libc.atan(x) - Math.atan(x)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A1.js
new file mode 100644
index 000000000..9bc9f7dfc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A1;
+ * @section: 15.8.2.5;
+ * @assertion: If either x or y is NaN, Math(x,y) is NaN;
+ * @description: Checking if Math.atan2(NaN,y) and Math.atan2(x,NaN) is NaN for different x and y values;
+ */
+
+// CHECK#1
+
+vals = new Array();
+vals[0] = -Infinity;
+vals[1] = -0.000000000000001;
+vals[2] = -0;
+vals[3] = +0
+vals[4] = 0.000000000000001;
+vals[5] = +Infinity;
+vals[6] = NaN;
+valnum = 7;
+
+args = new Array();
+for (i = 0; i < 2; i++)
+{
+ args[i] = NaN;
+ for (j = 0; j < valnum; j++)
+ {
+ args[1-i] = vals[j];
+ if (!isNaN(Math.atan2(args[0], args[1])))
+ {
+ $ERROR("#1: isNaN(Math.atan2(" + args[0] + ", " + args[1] + ")) === false'");
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A10.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A10.js
new file mode 100644
index 000000000..090b6f680
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A10.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A10;
+ * @section: 15.8.2.5;
+ * @assertion: If y is -0 and x is -0, Math.atan2(y,x) is an implementation-dependent approximation to -PI;
+ * @description: Checking if Math.atan2(-0,-0) is an approximation to -PI;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+//prec = 0.00000000000001;
+y = -0;
+x = -0;
+if (!isEqual(Math.atan2(y,x), -Math.PI))
+ $ERROR("#1: !isEqual(Math.atan2(-0,-0), -Math.PI)");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A11.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A11.js
new file mode 100644
index 000000000..c90887297
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A11.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A11;
+ * @section: 15.8.2.5;
+ * @assertion: If y is equal to -0 and x<0, Math.atan2(y,x) is an implementation-dependent approximation to -PI;
+ * @description: Checking if Math.atan2(-0,x) is an approximation to -PI, where x<0;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+y = -0;
+//prec = 0.00000000000001;
+x = new Array();
+x[0] = -0.000000000000001;
+x[2] = -Infinity;
+x[1] = -1;
+xnum = 3;
+
+for (i = 0; i < xnum; i++)
+{
+ if (!isEqual(Math.atan2(y,x[i]), - Math.PI))
+ $FAIL("#1: Math.abs(Math.atan2(" + y + ", " + x[i] + ") + Math.PI) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A12.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A12.js
new file mode 100644
index 000000000..4828c427e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A12.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A12;
+ * @section: 15.8.2.5;
+ * @assertion: If y<0 and x is +0, Math.atan2(y,x) is an implementation-dependent approximation to -PI/2;
+ * @description: Checking if Math.atan2(y,+0) is an approximation to -PI/2, where y<0;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+x = +0;
+//prec = 0.00000000000001;
+y = new Array();
+y[0] = -0.000000000000001;
+y[2] = -Infinity;
+y[1] = -1;
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (!isEqual(Math.atan2(y[i],x), -(Math.PI)/2))
+ $FAIL("#1: Math.abs(Math.atan2(" + y[i] + ", " + x + ") + ((Math.PI)/2)) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A13.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A13.js
new file mode 100644
index 000000000..77e8ac2ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A13.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A13;
+ * @section: 15.8.2.5;
+ * @assertion: If y<0 and x is -0, Math.atan2(y,x) is an implementation-dependent approximation to -PI/2;
+ * @description: Checking if Math.atan2(y,-0) is an approximation to -PI/2, where y<0;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+x = -0;
+//prec = 0.00000000000001;
+y = new Array();
+y[0] = -0.000000000000001;
+y[2] = -Infinity;
+y[1] = -1;
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (!isEqual(Math.atan2(y[i],x), -(Math.PI)/2))
+ $FAIL("#1: Math.abs(Math.atan2(" + y[i] + ", -0) + ((Math.PI)/2)) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A14.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A14.js
new file mode 100644
index 000000000..45d54e07d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A14.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A14;
+ * @section: 15.8.2.5;
+ * @assertion: If y>0 and y is finite and x is equal to +Infinity, Math.atan2(y,x) is +0;
+ * @description: Checking if Math.atan2(y,x) equals to +0, where y>0 and y is finite and x is equal to +Infinity;
+ */
+
+// CHECK#1
+x = +Infinity;
+y = new Array();
+y[0] = 0.000000000000001;
+y[1] = 1;
+y[2] = 1.7976931348623157E308; //largest finite number
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.atan2(y[i],x) !== +0)
+ $FAIL("#1: Math.atan2(" + y[i] + ", " + x + ") !== +0");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A15.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A15.js
new file mode 100644
index 000000000..a42e7c21b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A15.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A15;
+ * @section: 15.8.2.5;
+ * @assertion: If y>0 and y is finite and x is equal to -Infinity, Math.atan2(y,x) is an implementation-dependent approximation to +PI;
+ * @description: Checking if Math.atan2(y,x) is an approximation to +PI, where y>0 and y is finite and x is equal to -Infinity;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+x = -Infinity;
+y = new Array();
+y[0] = 0.000000000000001;
+y[1] = 1;
+y[2] = 1.7976931348623157E308; //largest finite number
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (!isEqual(Math.atan2(y[i],x),Math.PI))
+ $FAIL("#1: Math.abs(Math.atan2(" + y[i] + ", " + x + ") - Math.PI) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A16.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A16.js
new file mode 100644
index 000000000..c89fb0b66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A16.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A16;
+ * @section: 15.8.2.5;
+ * @assertion: If y<0 and y is finite and x is equal to +Infinity, Math.atan2(y,x) is -0;
+ * @description: Checking if Math.atan2(y,x) is -0, where y<0 and y is finite and x is equal to +Infinity;
+ */
+
+// CHECK#1
+x = +Infinity;
+y = new Array();
+y[0] = -0.000000000000001;
+y[1] = -1;
+y[2] = -1.7976931348623157E308; //largest by abs() finite number
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (Math.atan2(y[i],x) !== -0)
+ $FAIL("#1: Math.atan2(" + y[i] + ", " + x + ") !== -0");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A17.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A17.js
new file mode 100644
index 000000000..6a9e01aea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A17.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A17;
+ * @section: 15.8.2.5;
+ * @assertion: If y<0 and y is finite and x is equal to -Infinity, Math.atan2(y,x) is an implementation-dependent approximation to -PI;
+ * @description: Checking if Math.atan2(y,x) is an approximation to -PI, where y<0 and y is finite and x is equal to -Infinity;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+x = -Infinity;
+y = new Array();
+y[0] = -0.000000000000001;
+y[1] = -1;
+y[2] = -1.7976931348623157E308; //largest (by module) finite number
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (!isEqual(Math.atan2(y[i],x), -Math.PI))
+ $FAIL("#1: Math.abs(Math.atan2(" + y[i] + ", " + x + ") + Math.PI) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A18.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A18.js
new file mode 100644
index 000000000..6fd88b008
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A18.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A18;
+ * @section: 15.8.2.5;
+ * @assertion: If y is +Infinity and x is finite, Math.atan2(y,x) is an implementation-dependent approximation to +PI/2;
+ * @description: Checking if Math.atan2(y,x) is an approximation to +PI/2, where y is +Infinity and x is finite;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+y = +Infinity;
+x = new Array();
+x[0] = 0.000000000000001;
+x[1] = 1;
+x[2] = 1.7976931348623157E308; //largest finite number
+x[3] = -0.000000000000001;
+x[4] = -1;
+x[5] = -1.7976931348623157E308; //largest (by module) finite number
+
+xnum = 6;
+
+for (i = 0; i < xnum; i++)
+{
+ if (!isEqual(Math.atan2(y,x[i]), (Math.PI)/2))
+ $FAIL("#1: Math.abs(Math.atan2(" + y + ", " + x[i] + ") - (Math.PI/2)) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A19.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A19.js
new file mode 100644
index 000000000..e725a6a1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A19.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A19;
+ * @section: 15.8.2.5;
+ * @assertion: If y is -Infinity and x is finite, Math.atan2(y,x) is an implementation-dependent approximation to -PI/2;
+ * @description: Checking if Math.atan2(y,x) is an approximation to -PI/2, where y is -Infinity and x is finite;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+//prec = 0.00000000000001;
+y = -Infinity;
+x = new Array();
+x[0] = 0.000000000000001;
+x[1] = 1;
+x[2] = 1.7976931348623157E308; //largest finite number
+x[3] = -0.000000000000001;
+x[4] = -1;
+x[5] = -1.7976931348623157E308; //largest (by module) finite number
+
+xnum = 6;
+
+for (i = 0; i < xnum; i++)
+{
+ if (!isEqual(Math.atan2(y,x[i]), -(Math.PI)/2))
+ $FAIL("#1: Math.abs(Math.atan2(" + y + ", " + x[i] + ") + (Math.PI/2)) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A2.js
new file mode 100644
index 000000000..76924d39e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A2;
+ * @section: 15.8.2.5;
+ * @assertion: If y>0 and x is +0, Math.atan2(y,x) is an implementation-dependent approximation to +PI/2;
+ * @description: Checking if Math.atan2(y,x) is an approximation to +PI/2, where y>0 and x is +0;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+x = +0;
+//prec = 0.00000000000001;
+y = new Array();
+y[0] = 0.000000000000001;
+y[2] = +Infinity;
+y[1] = 1;
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (!isEqual(Math.atan2(y[i],x),(Math.PI)/2))
+ $FAIL("#1: Math.abs(Math.atan2(" + y[i] + ", " + x + ") - ((Math.PI)/2)) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A20.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A20.js
new file mode 100644
index 000000000..b9b6e77ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A20.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A20;
+ * @section: 15.8.2.5;
+ * @assertion: If y is equal to +Infinity and x is equal to +Infinity, Math.atan2(y,x) is an implementation-dependent approximation to +PI/4;
+ * @description: Checking if Math.atan2(y,x) is an approximation to +PI/4, where y is equal to +Infinity and x is equal to +Infinity;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+//prec = 0.00000000000001;
+y = +Infinity;
+x = +Infinity;
+
+if (!isEqual(Math.atan2(y,x),(Math.PI)/4))
+ $ERROR("#1: Math.abs(Math.atan2(" + y + ", " + x + ") - (Math.PI/4)) >= " + prec);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A21.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A21.js
new file mode 100644
index 000000000..14ea8dbcb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A21.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A21;
+ * @section: 15.8.2.5;
+ * @assertion: If y is equal to +Infinity and x is equal to -Infinity, Math.atan2(y,x) is an implementation-dependent approximation to +3*PI/4;
+ * @description: Checking if Math.atan2(y,x) is an approximation to +3*PI/4, where y is equal to +Infinity and x is equal to -Infinity;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+//prec = 0.00000000000001;
+y = +Infinity;
+x = -Infinity;
+
+if (!isEqual(Math.atan2(y,x), (3*Math.PI)/4))
+ $ERROR("#1: Math.abs(Math.atan2(" + y + ", " + x + ") - (3*Math.PI/4)) >= " + prec);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A22.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A22.js
new file mode 100644
index 000000000..bf346b7c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A22.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A22;
+ * @section: 15.8.2.5;
+ * @assertion: If y is equal to -Infinity and x is equal to +Infinity, Math.atan2(y,x) is an implementation-dependent approximation to -PI/4;
+ * @description: Checking if Math.atan2(y,x) is an approximation to -PI/4, where y is equal to -Infinity and x is equal to +Infinity;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+//prec = 0.00000000000001;
+y = -Infinity;
+x = +Infinity;
+
+if (!isEqual(Math.atan2(y,x),- (Math.PI)/4))
+ $ERROR("#1: Math.abs(Math.atan2(" + y + ", " + x + ") + (Math.PI/4)) >= " + prec);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A23.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A23.js
new file mode 100644
index 000000000..169d79570
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A23.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A23;
+ * @section: 15.8.2.5;
+ * @assertion: If y is equal to -Infinity and x is equal to -Infinity, Math.atan2(y,x) is an implementation-dependent approximation to -3*PI/4;
+ * @description: Checking if Math.atan2(y,x) is an approximation to -3*PI/4, where y is equal to -Infinity and x is equal to -Infinity;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+//prec = 0.00000000000001;
+y = -Infinity;
+x = -Infinity;
+
+if (!isEqual(Math.atan2(y,x), -(3*Math.PI)/4))
+ $ERROR("#1: Math.abs(Math.atan2(" + y + ", " + x + ") + (3*Math.PI/4)) >= " + prec);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A24.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A24.js
new file mode 100644
index 000000000..b6da3ded2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A24.js
@@ -0,0 +1,226 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A24;
+ * @section: 15.8.2.5;
+ * @assertion: Math.atan2, recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.atan2(argument1, argument2) is approximately equals to its mathematical values on the set of 64 argument1 values and 64 argument2 values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x1 = new Array();
+x1[0] = -16.00000000000000000000;
+x1[1] = -15.49206349206349200000;
+x1[2] = -14.98412698412698400000;
+x1[3] = -14.47619047619047600000;
+x1[4] = -13.96825396825396800000;
+x1[5] = -13.46031746031746000000;
+x1[6] = -12.95238095238095300000;
+x1[7] = -12.44444444444444500000;
+x1[8] = -11.93650793650793700000;
+x1[9] = -11.42857142857142900000;
+x1[10] = -10.92063492063492100000;
+x1[11] = -10.41269841269841300000;
+x1[12] = -9.90476190476190510000;
+x1[13] = -9.39682539682539720000;
+x1[14] = -8.88888888888888930000;
+x1[15] = -8.38095238095238140000;
+x1[16] = -7.87301587301587350000;
+x1[17] = -7.36507936507936560000;
+x1[18] = -6.85714285714285770000;
+x1[19] = -6.34920634920634970000;
+x1[20] = -5.84126984126984180000;
+x1[21] = -5.33333333333333390000;
+x1[22] = -4.82539682539682600000;
+x1[23] = -4.31746031746031810000;
+x1[24] = -3.80952380952381020000;
+x1[25] = -3.30158730158730230000;
+x1[26] = -2.79365079365079440000;
+x1[27] = -2.28571428571428650000;
+x1[28] = -1.77777777777777860000;
+x1[29] = -1.26984126984127070000;
+x1[30] = -0.76190476190476275000;
+x1[31] = -0.25396825396825484000;
+x1[32] = 0.25396825396825307000;
+x1[33] = 0.76190476190476275000;
+x1[34] = 1.26984126984126890000;
+x1[35] = 1.77777777777777860000;
+x1[36] = 2.28571428571428470000;
+x1[37] = 2.79365079365079440000;
+x1[38] = 3.30158730158730050000;
+x1[39] = 3.80952380952381020000;
+x1[40] = 4.31746031746031630000;
+x1[41] = 4.82539682539682600000;
+x1[42] = 5.33333333333333210000;
+x1[43] = 5.84126984126984180000;
+x1[44] = 6.34920634920634800000;
+x1[45] = 6.85714285714285770000;
+x1[46] = 7.36507936507936380000;
+x1[47] = 7.87301587301587350000;
+x1[48] = 8.38095238095237960000;
+x1[49] = 8.88888888888888930000;
+x1[50] = 9.39682539682539540000;
+x1[51] = 9.90476190476190510000;
+x1[52] = 10.41269841269841100000;
+x1[53] = 10.92063492063492100000;
+x1[54] = 11.42857142857142700000;
+x1[55] = 11.93650793650793700000;
+x1[56] = 12.44444444444444300000;
+x1[57] = 12.95238095238095300000;
+x1[58] = 13.46031746031745900000;
+x1[59] = 13.96825396825396800000;
+x1[60] = 14.47619047619047400000;
+x1[61] = 14.98412698412698400000;
+x1[62] = 15.49206349206349000000;
+x1[63] = 16.00000000000000000000;
+
+
+var x2 = new Array();
+x2[0] = -8.00000000000000000000;
+x2[1] = -7.74603174603174600000;
+x2[2] = -7.49206349206349210000;
+x2[3] = -7.23809523809523810000;
+x2[4] = -6.98412698412698420000;
+x2[5] = -6.73015873015873020000;
+x2[6] = -6.47619047619047630000;
+x2[7] = -6.22222222222222230000;
+x2[8] = -5.96825396825396840000;
+x2[9] = -5.71428571428571440000;
+x2[10] = -5.46031746031746050000;
+x2[11] = -5.20634920634920650000;
+x2[12] = -4.95238095238095260000;
+x2[13] = -4.69841269841269860000;
+x2[14] = -4.44444444444444460000;
+x2[15] = -4.19047619047619070000;
+x2[16] = -3.93650793650793670000;
+x2[17] = -3.68253968253968280000;
+x2[18] = -3.42857142857142880000;
+x2[19] = -3.17460317460317490000;
+x2[20] = -2.92063492063492090000;
+x2[21] = -2.66666666666666700000;
+x2[22] = -2.41269841269841300000;
+x2[23] = -2.15873015873015910000;
+x2[24] = -1.90476190476190510000;
+x2[25] = -1.65079365079365110000;
+x2[26] = -1.39682539682539720000;
+x2[27] = -1.14285714285714320000;
+x2[28] = -0.88888888888888928000;
+x2[29] = -0.63492063492063533000;
+x2[30] = -0.38095238095238138000;
+x2[31] = -0.12698412698412742000;
+x2[32] = 0.12698412698412653000;
+x2[33] = 0.38095238095238138000;
+x2[34] = 0.63492063492063444000;
+x2[35] = 0.88888888888888928000;
+x2[36] = 1.14285714285714230000;
+x2[37] = 1.39682539682539720000;
+x2[38] = 1.65079365079365030000;
+x2[39] = 1.90476190476190510000;
+x2[40] = 2.15873015873015820000;
+x2[41] = 2.41269841269841300000;
+x2[42] = 2.66666666666666610000;
+x2[43] = 2.92063492063492090000;
+x2[44] = 3.17460317460317400000;
+x2[45] = 3.42857142857142880000;
+x2[46] = 3.68253968253968190000;
+x2[47] = 3.93650793650793670000;
+x2[48] = 4.19047619047618980000;
+x2[49] = 4.44444444444444460000;
+x2[50] = 4.69841269841269770000;
+x2[51] = 4.95238095238095260000;
+x2[52] = 5.20634920634920560000;
+x2[53] = 5.46031746031746050000;
+x2[54] = 5.71428571428571350000;
+x2[55] = 5.96825396825396840000;
+x2[56] = 6.22222222222222140000;
+x2[57] = 6.47619047619047630000;
+x2[58] = 6.73015873015872930000;
+x2[59] = 6.98412698412698420000;
+x2[60] = 7.23809523809523720000;
+x2[61] = 7.49206349206349210000;
+x2[62] = 7.74603174603174520000;
+x2[63] = 8.00000000000000000000;
+
+
+var y = new Array();
+y[0] = -2.03444393579570270000;
+y[1] = -2.03444393579570270000;
+y[2] = -2.03444393579570270000;
+y[3] = -2.03444393579570270000;
+y[4] = -2.03444393579570270000;
+y[5] = -2.03444393579570270000;
+y[6] = -2.03444393579570270000;
+y[7] = -2.03444393579570270000;
+y[8] = -2.03444393579570270000;
+y[9] = -2.03444393579570270000;
+y[10] = -2.03444393579570270000;
+y[11] = -2.03444393579570270000;
+y[12] = -2.03444393579570270000;
+y[13] = -2.03444393579570270000;
+y[14] = -2.03444393579570270000;
+y[15] = -2.03444393579570270000;
+y[16] = -2.03444393579570270000;
+y[17] = -2.03444393579570270000;
+y[18] = -2.03444393579570270000;
+y[19] = -2.03444393579570270000;
+y[20] = -2.03444393579570270000;
+y[21] = -2.03444393579570270000;
+y[22] = -2.03444393579570270000;
+y[23] = -2.03444393579570270000;
+y[24] = -2.03444393579570270000;
+y[25] = -2.03444393579570270000;
+y[26] = -2.03444393579570270000;
+y[27] = -2.03444393579570270000;
+y[28] = -2.03444393579570270000;
+y[29] = -2.03444393579570270000;
+y[30] = -2.03444393579570270000;
+y[31] = -2.03444393579570270000;
+y[32] = 1.10714871779409040000;
+y[33] = 1.10714871779409040000;
+y[34] = 1.10714871779409040000;
+y[35] = 1.10714871779409040000;
+y[36] = 1.10714871779409040000;
+y[37] = 1.10714871779409040000;
+y[38] = 1.10714871779409040000;
+y[39] = 1.10714871779409040000;
+y[40] = 1.10714871779409040000;
+y[41] = 1.10714871779409040000;
+y[42] = 1.10714871779409040000;
+y[43] = 1.10714871779409040000;
+y[44] = 1.10714871779409040000;
+y[45] = 1.10714871779409040000;
+y[46] = 1.10714871779409040000;
+y[47] = 1.10714871779409040000;
+y[48] = 1.10714871779409040000;
+y[49] = 1.10714871779409040000;
+y[50] = 1.10714871779409040000;
+y[51] = 1.10714871779409040000;
+y[52] = 1.10714871779409040000;
+y[53] = 1.10714871779409040000;
+y[54] = 1.10714871779409040000;
+y[55] = 1.10714871779409040000;
+y[56] = 1.10714871779409040000;
+y[57] = 1.10714871779409040000;
+y[58] = 1.10714871779409040000;
+y[59] = 1.10714871779409040000;
+y[60] = 1.10714871779409040000;
+y[61] = 1.10714871779409040000;
+y[62] = 1.10714871779409040000;
+y[63] = 1.10714871779409040000;
+
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.atan2(x1[i], x2[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx1 = " + x1[i] + "\nx2 = " + x2[i] + "\nlibc.atan2(x1,x2) = " + y[i] + "\nMath.atan2(x1,x2) = " + Math.atan2(x1[i],x2[i]) + "\nMath.abs(libc.atan2(x1,x2) - Math.atan2(x1,x2)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A3.js
new file mode 100644
index 000000000..91f81c34b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A3;
+ * @section: 15.8.2.5;
+ * @assertion: If y>0 and x is -0, Math.atan2(y,x) is an implementation-dependent approximation to +PI/2;
+ * @description: Checking if Math.atan2(y,x) is an approximation to +PI/2, where y>0 and x is -0;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+x = -0;
+//prec = 0.00000000000001;
+y = new Array();
+y[0] = 0.000000000000001;
+y[2] = +Infinity;
+y[1] = 1;
+ynum = 3;
+
+for (i = 0; i < ynum; i++)
+{
+ if (!isEqual(Math.atan2(y[i],x), (Math.PI)/2))
+ $FAIL("#1: Math.abs(Math.atan2(" + y[i] + ", " + x + ") - ((Math.PI)/2)) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A4.js
new file mode 100644
index 000000000..b97cafadf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A4;
+ * @section: 15.8.2.5;
+ * @assertion: If y is +0 and x>0, Math.atan2(y,x) is +0;
+ * @description: Checking if Math.atan2(y,x) equals to +0, where y is +0 and x>0;
+ */
+
+// CHECK#1
+y = +0;
+x = new Array();
+x[0] = 0.000000000000001;
+x[2] = +Infinity;
+x[1] = 1;
+xnum = 3;
+
+for (i = 0; i < xnum; i++)
+{
+ if (Math.atan2(y,x[i]) !== +0)
+ $FAIL("#1: Math.atan2(" + y + ", " + x[i] + ") !== +0");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A5.js
new file mode 100644
index 000000000..cbef4e9fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A5.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A5;
+ * @section: 15.8.2.5;
+ * @assertion: If y is +0 and x is +0, Math.atan2(y,x) is +0;
+ * @description: Checking if Math.atan2(y,x) is +0, where y is +0 and x is +0;
+ */
+
+// CHECK#1
+y = +0;
+x = +0;
+if (Math.atan2(y,x) !== +0)
+ $ERROR("#1: Math.atan2(" + y + ", " + x + ") !== +0");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A6.js
new file mode 100644
index 000000000..8c4857d38
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A6;
+ * @section: 15.8.2.5;
+ * @assertion: If y is +0 and x is -0, Math.atan2(y,x) is an implementation-dependent approximation to +PI;
+ * @description: Checking if Math.atan2(y,x) is an approximation to +PI, where y is +0 and x is -0;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+//prec = 0.00000000000001;
+y = +0;
+x = -0;
+if (!isEqual(Math.atan2(y,x), Math.PI))
+ $ERROR("#1: Math.abs(Math.atan2(" + y + ", -0) - Math.PI) >= " + prec);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A7.js
new file mode 100644
index 000000000..d1cc2dbdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A7.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A7;
+ * @section: 15.8.2.5;
+ * @assertion: If y is equal to +0 and x<0, Math.atan2(y,x) is an implementation-dependent approximation to +PI;
+ * @description: Checking if Math.atan2(y,x) is an approximation to +PI, where y is equal to +0 and x<0;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+y = +0;
+//prec = 0.00000000000001;
+x = new Array();
+x[0] = -0.000000000000001;
+x[2] = -Infinity;
+x[1] = -1;
+xnum = 3;
+
+for (i = 0; i < xnum; i++)
+{
+ if (!isEqual(Math.atan2(y,x[i]), Math.PI))
+ $FAIL("#1: Math.abs(Math.atan2(" + y + ", " + x[i] + ") - Math.PI) >= " + prec);
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A8.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A8.js
new file mode 100644
index 000000000..8584cade8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A8;
+ * @section: 15.8.2.5;
+ * @assertion: If y is equal to -0 and x>0, Math.atan2(y,x) is -0;
+ * @description: Checking if Math.atan2(y,x) is -0, where y is equal to -0 and x>0;
+ */
+
+// CHECK#1
+y = -0;
+x = new Array();
+x[0] = 0.000000000000001;
+x[2] = +Infinity;
+x[1] = 1;
+xnum = 3;
+
+for (i = 0; i < xnum; i++)
+{
+ if (Math.atan2(y,x[i]) !== -0)
+ $FAIL("#1: Math.atan2(" + y + ", " + x[i] + ") !== -0");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A9.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A9.js
new file mode 100644
index 000000000..d70b55ee1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.5_atan2/S15.8.2.5_A9.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.5_A9;
+ * @section: 15.8.2.5;
+ * @assertion: If y is -0 and x is +0, Math.atan2(y,x) is -0;
+ * @description: Checking if Math.atan2(y,x) is -0, where y is -0 and x is +0;
+ */
+
+// CHECK#1
+y = -0;
+x = +0;
+if (Math.atan2(y,x) !== -0)
+ $ERROR("#1: Math.atan2(" + y + ", " + x + ") !== -0");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A1.js
new file mode 100644
index 000000000..3c9cb6b3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A1.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.
+
+/**
+ * @name: S15.8.2.6_A1;
+ * @section: 15.8.2.6;
+ * @assertion: If x is NaN, Math.ceil(x) is NaN;
+ * @description: Checking if Math.ceil(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.ceil(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.ceil(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A2.js
new file mode 100644
index 000000000..b514d1d42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A2.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.
+
+/**
+ * @name: S15.8.2.6_A2;
+ * @section: 15.8.2.6;
+ * @assertion: If x is +0, Math.ceil(x) is +0;
+ * @description: Checking if Math.ceil(x) is +0, where x is +0;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.ceil(x) !== +0)
+{
+ $ERROR("#1: 'var x = +0; Math.ceil(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A3.js
new file mode 100644
index 000000000..abcd9653e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_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.
+
+/**
+ * @name: S15.8.2.6_A3;
+ * @section: 15.8.2.6;
+ * @assertion: If x is -0, Math.ceil(x) is -0;
+ * @description: Checking if Math.ceil(x) is -0, where x is -0;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.ceil(x) !== -0)
+{
+ $ERROR("#1: 'var x = -0; Math.ceil(x) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A4.js
new file mode 100644
index 000000000..e0eebde29
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_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.
+
+/**
+ * @name: S15.8.2.6_A4;
+ * @section: 15.8.2.6;
+ * @assertion: If x is +Infinity, Math.ceil(x) is +Infinity;
+ * @description: Checking if Math.ceil(x) is +Infinity, where x is +Infinity;
+ */
+
+// CHECK#1
+var x = +Infinity;
+if (Math.ceil(x) !== +Infinity)
+{
+ $ERROR("#1: 'var x = +Infinity; Math.ceil(x) !== +Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A5.js
new file mode 100644
index 000000000..2a5bf87e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A5.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.
+
+/**
+ * @name: S15.8.2.6_A5;
+ * @section: 15.8.2.6;
+ * @assertion: If x is -Infinity, Math.ceil(x) is -Infinity;
+ * @description: Checking if Math.ceil(x) is -Infinity, where x is -Infinity;
+ */
+
+// CHECK#1
+var x = -Infinity;
+if (Math.ceil(x) !== -Infinity)
+{
+ $ERROR("#1: 'var x = -Infinity; Math.ceil(x) !== -Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A6.js
new file mode 100644
index 000000000..b2af7bd6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A6.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.6_A6;
+ * @section: 15.8.2.6;
+ * @assertion: If x is less than 0 but greater than -1, Math.ceil(x) is -0;
+ * @description: Checking if Math.ceil(x) is -0, where x is less than 0 but greater than -1;
+ */
+
+// CHECK#1
+var x = -0.000000000000001;
+if (Math.ceil(x) !== -0)
+{
+ $ERROR("#1: 'var x = -0.000000000000001; Math.ceil(x) !== -0'");
+}
+
+// CHECK#2
+var x = -0.999999999999999;
+if (Math.ceil(x) !== -0)
+{
+ $ERROR("#2: 'var x = -0.999999999999999; Math.ceil(x) !== -0'");
+}
+
+// CHECK#3
+var x = -0.5;
+if (Math.ceil(x) !== -0)
+{
+ $ERROR("#3: 'var x = -0.5; Math.ceil(x) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A7.js
new file mode 100644
index 000000000..548c99a85
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.6_ceil/S15.8.2.6_A7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.6_A7;
+ * @section: 15.8.2.6;
+ * @assertion: The value of Math.ceil(x) is the same as the value of -Math.floor(-x);
+ * @description: Checking if Math.ceil(x) equals to -Math.floor(-x) on 2000 floating point argument values;
+ */
+
+// CHECK#1
+for (i=-1000; i<1000; i++)
+{
+ x = i/10.0;
+ if (Math.ceil(x) !== -Math.floor(-x))
+ {
+ $ERROR("#1: 'x = " + x + "; Math.ceil(x) !== -Math.floor(-x)'");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A1.js
new file mode 100644
index 000000000..e3af43e29
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A1.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.
+
+/**
+ * @name: S15.8.2.7_A1;
+ * @section: 15.8.2.7;
+ * @assertion: If x is NaN, Math.cos(x) is NaN;
+ * @description: Checking if Math.cos(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.cos(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.cos(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A2.js
new file mode 100644
index 000000000..dab7d39c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A2.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.
+
+/**
+ * @name: S15.8.2.7_A2;
+ * @section: 15.8.2.7;
+ * @assertion: If x is +0, Math.cos(x) is 1;
+ * @description: Checking if Math.cos(+0) is 1;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.cos(x) !== 1)
+{
+ $ERROR("#1: 'var x = +0; Math.cos(x) !== 1'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A3.js
new file mode 100644
index 000000000..d3b8290e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_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.
+
+/**
+ * @name: S15.8.2.7_A3;
+ * @section: 15.8.2.7;
+ * @assertion: If x is -0, Math.cos(x) is 1;
+ * @description: Checking if Math.cos(-0) is 1;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.cos(x) !== 1)
+{
+ $ERROR("#1: 'var x = -0; Math.cos(x) !== 1'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A4.js
new file mode 100644
index 000000000..12bdfac57
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_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.
+
+/**
+ * @name: S15.8.2.7_A4;
+ * @section: 15.8.2.7;
+ * @assertion: If x is +Infinity, Math.cos(x) is NaN;
+ * @description: Checking if Math.cos(+Infinity) is NaN;
+ */
+
+// CHECK#1
+var x = +Infinity;
+if (!isNaN(Math.cos(x)))
+{
+ $ERROR("#1: 'var x = +Infinity; isNaN(Math.cos(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A5.js
new file mode 100644
index 000000000..4a9a465f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A5.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.
+
+/**
+ * @name: S15.8.2.7_A5;
+ * @section: 15.8.2.7;
+ * @assertion: If x is -Infinity, Math.cos(x) is NaN;
+ * @description: Checking if Math.cos(-Infinity) is NaN;
+ */
+
+// CHECK#1
+var x = -Infinity;
+if (!isNaN(Math.cos(x)))
+{
+ $ERROR("#1: 'var x = -Infinity; isNaN(Math.cos(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A6.js
new file mode 100644
index 000000000..8e624dc8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A6.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.7_A6;
+ * @section: 15.8.2.7;
+ * @assertion: Cosine is a periodic function with period 2*PI;
+ * @description: Checking if Math.cos(x) equals to Math.cos(x+n*2*Math.PI) with precision 0.000000000003, where n is an integer from 1 to 100 and x is one of 10 float point values from -Math.PI to +Math.PI;
+ */
+
+// CHECK#1
+ prec = 0.000000000003;
+//prec = 0.000000000000001;
+period = 2*Math.PI;
+pernum = 100;
+
+a = -pernum * period;
+b = pernum * period;
+snum = 9;
+step = period/snum + 0.0;
+x = new Array();
+for (i = 0; i < snum; i++)
+{
+ x[i] = a + i*step;
+}
+x[9] = a + period;
+
+var curval;
+var curx;
+var j;
+for (i = 0; i < snum; i++)
+{
+ curval = Math.cos(x[i]);
+ curx = x[i] + period;
+ j = 0;
+ while (curx <= b)
+ {
+ curx += period;
+ j++;
+ if (Math.abs(Math.cos(curx) - curval) >= prec)
+ {
+ $FAIL("#1: cos is found out to not be periodic:\n Math.abs(Math.cos(" + x[i] + ") - Math.cos(" + x[i] + " + 2*Math.PI*" + j + ")) >= " + prec + "\n Math.cos(" + x[i] + ") === " + curval + "\n Math.cos(" + curx + ") === " + Math.cos(curx));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A7.js
new file mode 100644
index 000000000..8ea0cf813
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.7_cos/S15.8.2.7_A7.js
@@ -0,0 +1,158 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.7_A7;
+ * @section: 15.8.2.7;
+ * @assertion: Math.cos it is recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.cos is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x = new Array();
+x[0] = -3.14159265358979310000;
+x[1] = -3.04185955347583150000;
+x[2] = -2.94212645336186980000;
+x[3] = -2.84239335324790820000;
+x[4] = -2.74266025313394660000;
+x[5] = -2.64292715301998450000;
+x[6] = -2.54319405290602290000;
+x[7] = -2.44346095279206120000;
+x[8] = -2.34372785267809960000;
+x[9] = -2.24399475256413790000;
+x[10] = -2.14426165245017630000;
+x[11] = -2.04452855233621470000;
+x[12] = -1.94479545222225280000;
+x[13] = -1.84506235210829120000;
+x[14] = -1.74532925199432950000;
+x[15] = -1.64559615188036790000;
+x[16] = -1.54586305176640600000;
+x[17] = -1.44612995165244440000;
+x[18] = -1.34639685153848280000;
+x[19] = -1.24666375142452110000;
+x[20] = -1.14693065131055950000;
+x[21] = -1.04719755119659740000;
+x[22] = -0.94746445108263622000;
+x[23] = -0.84773135096867458000;
+x[24] = -0.74799825085471250000;
+x[25] = -0.64826515074075086000;
+x[26] = -0.54853205062678922000;
+x[27] = -0.44879895051282759000;
+x[28] = -0.34906585039886595000;
+x[29] = -0.24933275028490431000;
+x[30] = -0.14959965017094268000;
+x[31] = -0.04986655005698104000;
+x[32] = 0.04986655005698104000;
+x[33] = 0.14959965017094268000;
+x[34] = 0.24933275028490431000;
+x[35] = 0.34906585039886595000;
+x[36] = 0.44879895051282759000;
+x[37] = 0.54853205062678922000;
+x[38] = 0.64826515074075086000;
+x[39] = 0.74799825085471250000;
+x[40] = 0.84773135096867414000;
+x[41] = 0.94746445108263533000;
+x[42] = 1.04719755119659830000;
+x[43] = 1.14693065131055950000;
+x[44] = 1.24666375142452070000;
+x[45] = 1.34639685153848280000;
+x[46] = 1.44612995165244400000;
+x[47] = 1.54586305176640600000;
+x[48] = 1.64559615188036810000;
+x[49] = 1.74532925199432930000;
+x[50] = 1.84506235210829140000;
+x[51] = 1.94479545222225260000;
+x[52] = 2.04452855233621470000;
+x[53] = 2.14426165245017670000;
+x[54] = 2.24399475256413790000;
+x[55] = 2.34372785267810000000;
+x[56] = 2.44346095279206120000;
+x[57] = 2.54319405290602240000;
+x[58] = 2.64292715301998450000;
+x[59] = 2.74266025313394660000;
+x[60] = 2.84239335324790780000;
+x[61] = 2.94212645336186980000;
+x[62] = 3.04185955347583100000;
+x[63] = 3.14159265358979310000;
+
+
+var y = new Array();
+y[0] = -1.00000000000000000000;
+y[1] = -0.99503077536540141000;
+y[2] = -0.98017248784854383000;
+y[3] = -0.95557280578614079000;
+y[4] = -0.92147621187040774000;
+y[5] = -0.87822157337022844000;
+y[6] = -0.82623877431599468000;
+y[7] = -0.76604444311897790000;
+y[8] = -0.69823681808607274000;
+y[9] = -0.62348980185873348000;
+y[10] = -0.54254626386575933000;
+y[11] = -0.45621065735316296000;
+y[12] = -0.36534102436639487000;
+y[13] = -0.27084046814300500000;
+y[14] = -0.17364817766693030000;
+y[15] = -0.07473009358642426800;
+y[16] = 0.02493069173807303500;
+y[17] = 0.12434370464748527000;
+y[18] = 0.22252093395631445000;
+y[19] = 0.31848665025168443000;
+y[20] = 0.41128710313061151000;
+y[21] = 0.50000000000000033000;
+y[22] = 0.58374367223478973000;
+y[23] = 0.66168583759685928000;
+y[24] = 0.73305187182982645000;
+y[25] = 0.79713250722292250000;
+y[26] = 0.85329088163215572000;
+y[27] = 0.90096886790241915000;
+y[28] = 0.93969262078590832000;
+y[29] = 0.96907728622907796000;
+y[30] = 0.98883082622512852000;
+y[31] = 0.99875692121892234000;
+y[32] = 0.99875692121892234000;
+y[33] = 0.98883082622512852000;
+y[34] = 0.96907728622907796000;
+y[35] = 0.93969262078590832000;
+y[36] = 0.90096886790241915000;
+y[37] = 0.85329088163215572000;
+y[38] = 0.79713250722292250000;
+y[39] = 0.73305187182982645000;
+y[40] = 0.66168583759685962000;
+y[41] = 0.58374367223479051000;
+y[42] = 0.49999999999999950000;
+y[43] = 0.41128710313061151000;
+y[44] = 0.31848665025168482000;
+y[45] = 0.22252093395631445000;
+y[46] = 0.12434370464748572000;
+y[47] = 0.02493069173807303500;
+y[48] = -0.07473009358642449000;
+y[49] = -0.17364817766693008000;
+y[50] = -0.27084046814300522000;
+y[51] = -0.36534102436639465000;
+y[52] = -0.45621065735316296000;
+y[53] = -0.54254626386575977000;
+y[54] = -0.62348980185873348000;
+y[55] = -0.69823681808607307000;
+y[56] = -0.76604444311897790000;
+y[57] = -0.82623877431599446000;
+y[58] = -0.87822157337022844000;
+y[59] = -0.92147621187040774000;
+y[60] = -0.95557280578614057000;
+y[61] = -0.98017248784854383000;
+y[62] = -0.99503077536540141000;
+y[63] = -1.00000000000000000000;
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.cos(x[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx = " + x[i] + "\nlibc.cos(x) = " + y[i] + "\nMath.cos(x) = " + Math.cos(x[i]) + "\nMath.abs(libc.cos(x) - Math.cos(x)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A1.js
new file mode 100644
index 000000000..4fad83203
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A1.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.
+
+/**
+ * @name: S15.8.2.8_A1;
+ * @section: 15.8.2.8;
+ * @assertion: If x is NaN, Math.exp(x) is NaN;
+ * @description: Checking if Math.exp(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.exp(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.exp(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A2.js
new file mode 100644
index 000000000..1ca3b9a9d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A2.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.
+
+/**
+ * @name: S15.8.2.8_A2;
+ * @section: 15.8.2.8;
+ * @assertion: If x is +0, Math.exp(x) is 1;
+ * @description: Checking if Math.exp(+0) is 1;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.exp(x) !== 1)
+{
+ $ERROR("#1: 'var x = +0; Math.exp(x) !== 1'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A3.js
new file mode 100644
index 000000000..f4ebf711e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_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.
+
+/**
+ * @name: S15.8.2.8_A3;
+ * @section: 15.8.2.8;
+ * @assertion: If x is -0, Math.exp(x) is 1;
+ * @description: Checking if Math.exp(-0) is 1;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.exp(x) !== 1)
+{
+ $ERROR("#1: 'var x = -0; Math.exp(x) !== 1'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A4.js
new file mode 100644
index 000000000..efd0b400b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_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.
+
+/**
+ * @name: S15.8.2.8_A4;
+ * @section: 15.8.2.8;
+ * @assertion: If x is +Infinity, Math.exp(x) is +Ifinity;
+ * @description: Checking if Math.exp(+Infinity) is +Ifinity
+ */
+
+// CHECK#1
+var x = +Infinity;
+if (Math.exp(x) !== +Infinity)
+{
+ $ERROR("#1: 'var x = +Infinity; Math.exp(x) !== +Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A5.js
new file mode 100644
index 000000000..de4172dd0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A5.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.
+
+/**
+ * @name: S15.8.2.8_A5;
+ * @section: 15.8.2.8;
+ * @assertion: If x is -Infinity, Math.exp(x) is +0;
+ * @description: Checking if Math.exp(-Infinity) is +0;
+ */
+
+// CHECK#1
+var x = -Infinity;
+if (Math.exp(x) !== +0)
+{
+ $ERROR("#1: 'var x = -Infinity; Math.exp(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A6.js
new file mode 100644
index 000000000..74d8a618d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.8_exp/S15.8.2.8_A6.js
@@ -0,0 +1,160 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.8_A6;
+ * @section: 15.8.2.8;
+ * @assertion: Math.exp, recommended that implementations use the approximation algorithms for IEEE 754 arithmetic contained in fdlibm;
+ * @description: Checking if Math.exp is approximately equals to its mathematical values on the set of 64 argument values; all the sample values is calculated with LibC;
+ */
+
+$INCLUDE("math_precision.js");
+$INCLUDE("math_isequal.js");
+
+// CHECK#1
+vnum = 64;
+var x = new Array();
+x[0] = -16.00000000000000000000;
+x[1] = -15.49206349206349200000;
+x[2] = -14.98412698412698400000;
+x[3] = -14.47619047619047600000;
+x[4] = -13.96825396825396800000;
+x[5] = -13.46031746031746000000;
+x[6] = -12.95238095238095300000;
+x[7] = -12.44444444444444500000;
+x[8] = -11.93650793650793700000;
+x[9] = -11.42857142857142900000;
+x[10] = -10.92063492063492100000;
+x[11] = -10.41269841269841300000;
+x[12] = -9.90476190476190510000;
+x[13] = -9.39682539682539720000;
+x[14] = -8.88888888888888930000;
+x[15] = -8.38095238095238140000;
+x[16] = -7.87301587301587350000;
+x[17] = -7.36507936507936560000;
+x[18] = -6.85714285714285770000;
+x[19] = -6.34920634920634970000;
+x[20] = -5.84126984126984180000;
+x[21] = -5.33333333333333390000;
+x[22] = -4.82539682539682600000;
+x[23] = -4.31746031746031810000;
+x[24] = -3.80952380952381020000;
+x[25] = -3.30158730158730230000;
+x[26] = -2.79365079365079440000;
+x[27] = -2.28571428571428650000;
+x[28] = -1.77777777777777860000;
+x[29] = -1.26984126984127070000;
+x[30] = -0.76190476190476275000;
+x[31] = -0.25396825396825484000;
+x[32] = 0.25396825396825307000;
+x[33] = 0.76190476190476275000;
+x[34] = 1.26984126984126890000;
+x[35] = 1.77777777777777860000;
+x[36] = 2.28571428571428470000;
+x[37] = 2.79365079365079440000;
+x[38] = 3.30158730158730050000;
+x[39] = 3.80952380952381020000;
+x[40] = 4.31746031746031630000;
+x[41] = 4.82539682539682600000;
+x[42] = 5.33333333333333210000;
+x[43] = 5.84126984126984180000;
+x[44] = 6.34920634920634800000;
+x[45] = 6.85714285714285770000;
+x[46] = 7.36507936507936380000;
+x[47] = 7.87301587301587350000;
+x[48] = 8.38095238095237960000;
+x[49] = 8.88888888888888930000;
+x[50] = 9.39682539682539540000;
+x[51] = 9.90476190476190510000;
+x[52] = 10.41269841269841100000;
+x[53] = 10.92063492063492100000;
+x[54] = 11.42857142857142700000;
+x[55] = 11.93650793650793700000;
+x[56] = 12.44444444444444300000;
+x[57] = 12.95238095238095300000;
+x[58] = 13.46031746031745900000;
+x[59] = 13.96825396825396800000;
+x[60] = 14.47619047619047400000;
+x[61] = 14.98412698412698400000;
+x[62] = 15.49206349206349000000;
+x[63] = 16.00000000000000000000;
+
+
+
+var y = new Array();
+y[0] = 0.0000001125351747192591200;
+y[1] = 0.0000001870175279627160400;
+y[2] = 0.0000003107966540465112000;
+y[3] = 0.0000005165000372893601900;
+y[4] = 0.0000008583499373194266000;
+y[5] = 0.000001426456073000250500;
+y[6] = 0.000002370568039596737700;
+y[7] = 0.000003939548463303105900;
+y[8] = 0.000006546971795567619300;
+y[9] = 0.00001088014022196331600;
+y[10] = 0.00001808125266855845500;
+y[11] = 0.00003004848204109428100;
+y[12] = 0.00004993632297081056800;
+y[13] = 0.00008298709893014922600;
+y[14] = 0.0001379128093365619200;
+y[15] = 0.0002291915638009238700;
+y[16] = 0.0003808839307255494700;
+y[17] = 0.0006329751683659501200;
+y[18] = 0.001051915114939835700;
+y[19] = 0.001748133993779607700;
+y[20] = 0.002905151201656255000;
+y[21] = 0.004827949993831437100;
+y[22] = 0.008023369361859111100;
+y[23] = 0.01333370395283075800;
+y[24] = 0.02215872822045164600;
+y[25] = 0.03682466913056056000;
+y[26] = 0.06119738655956222900;
+y[27] = 0.1017013923042267600;
+y[28] = 0.1690133154060659600;
+y[29] = 0.2808762017642814100;
+y[30] = 0.4667764816516809500;
+y[31] = 0.7757164275739275600;
+y[32] = 1.289130878828392400;
+y[33] = 2.142353009006615400;
+y[34] = 3.560287392519015300;
+y[35] = 5.916693590664334800;
+y[36] = 9.832707078469738300;
+y[37] = 16.340567076777361000;
+y[38] = 27.155709029035226000;
+y[39] = 45.128943775619703000;
+y[40] = 74.997915323273489000;
+y[41] = 124.635917268588530000;
+y[42] = 207.127248889834330000;
+y[43] = 344.216163148372520000;
+y[44] = 572.038529974419700000;
+y[45] = 950.647049174870860000;
+y[46] = 1579.840805732611900000;
+y[47] = 2625.471749609100700000;
+y[48] = 4363.162340777078500000;
+y[49] = 7250.958085841060000000;
+y[50] = 12050.065767953940000000;
+y[51] = 20025.503291152076000000;
+y[52] = 33279.551314186152000000;
+y[53] = 55305.902656783459000000;
+y[54] = 91910.580157904318000000;
+y[55] = 152742.371775148380000000;
+y[56] = 253836.197045168550000000;
+y[57] = 421839.822058054970000000;
+y[58] = 701038.061338060300000000;
+y[59] = 1165026.006902193900000000;
+y[60] = 1936108.282291886200000000;
+y[61] = 3217537.856280616000000000;
+y[62] = 5347092.386973262800000000;
+y[63] = 8886110.520507872100000000;
+
+
+
+var val;
+for (i = 0; i < vnum; i++)
+{
+ val = Math.exp(x[i]);
+ if (!isEqual(val, y[i]))
+ {
+ $ERROR("\nx = " + x[i] + "\nlibc.exp(x) = " + y[i] + "\nMath.exp(x) = " + Math.exp(x[i]) + "\nMath.abs(libc.exp(x) - Math.exp(x)) > " + prec + "\n\n");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A1.js
new file mode 100644
index 000000000..991d70916
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A1.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.
+
+/**
+ * @name: S15.8.2.9_A1;
+ * @section: 15.8.2.9;
+ * @assertion: If x is NaN, Math.floor(x) is NaN;
+ * @description: Checking if Math.floor(NaN) is NaN;
+ */
+
+// CHECK#1
+var x = NaN;
+if (!isNaN(Math.floor(x)))
+{
+ $ERROR("#1: 'var x=NaN; isNaN(Math.floor(x)) === false'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A2.js
new file mode 100644
index 000000000..f4d62e012
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A2.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.
+
+/**
+ * @name: S15.8.2.9_A2;
+ * @section: 15.8.2.9;
+ * @assertion: If x is +0, Math.floor(x) is +0;
+ * @description: Checking if Math.floor(x) is +0, where x is +0;
+ */
+
+// CHECK#1
+var x = +0;
+if (Math.floor(x) !== +0)
+{
+ $ERROR("#1: 'var x = +0; Math.floor(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A3.js
new file mode 100644
index 000000000..b2be48e7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_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.
+
+/**
+ * @name: S15.8.2.9_A3;
+ * @section: 15.8.2.9;
+ * @assertion: If x is -0, Math.floor(x) is -0;
+ * @description: Checking if Math.floor(x) is -0, where x is -0;
+ */
+
+// CHECK#1
+var x = -0;
+if (Math.floor(x) !== -0)
+{
+ $ERROR("#1: 'var x = -0; Math.floor(x) !== -0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A4.js
new file mode 100644
index 000000000..ff4b4063e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_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.
+
+/**
+ * @name: S15.8.2.9_A4;
+ * @section: 15.8.2.9;
+ * @assertion: If x is +Infinity, Math.floor(x) is +Infinity;
+ * @description: Checking if Math.floor(x) is +Infinity, where x is +Infinity;
+ */
+
+// CHECK#1
+var x = +Infinity;
+if (Math.floor(x) !== +Infinity)
+{
+ $ERROR("#1: 'var x = +Infinity; Math.floor(x) !== +Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A5.js
new file mode 100644
index 000000000..1123918cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A5.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.
+
+/**
+ * @name: S15.8.2.9_A5;
+ * @section: 15.8.2.9;
+ * @assertion: If x is -Infinity, Math.floor(x) is -Infinity;
+ * @description: Checking if Math.floor(x) is -Infinity, where x is -Infinity;
+ */
+
+// CHECK#1
+var x = -Infinity;
+if (Math.floor(x) !== -Infinity)
+{
+ $ERROR("#1: 'var x = -Infinity; Math.floor(x) !== -Infinity'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A6.js
new file mode 100644
index 000000000..786b6309a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A6.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.9_A6;
+ * @section: 15.8.2.9;
+ * @assertion: If x is greater than 0 but less than 1, Math.floor(x) is +0;
+ * @description: Checking if Math.floor(x) is +0, where x is greater than 0 but less than 1;
+ */
+
+// CHECK#1
+var x = 0.000000000000001;
+if (Math.floor(x) !== +0)
+{
+ $ERROR("#1: 'var x = 0.000000000000001; Math.floor(x) !== +0'");
+}
+
+// CHECK#2
+var x = 0.999999999999999;
+if (Math.floor(x) !== +0)
+{
+ $ERROR("#2: 'var x = 0.999999999999999; Math.ceil(x) !== +0'");
+}
+
+// CHECK#3
+var x = 0.5;
+if (Math.floor(x) !== +0)
+{
+ $ERROR("#3: 'var x = 0.5; Math.ceil(x) !== +0'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A7.js
new file mode 100644
index 000000000..ae62dff37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.8_The_Math_Object/15.8.2_Function_Properties_of_the_Math_Object/15.8.2.9_floor/S15.8.2.9_A7.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.8.2.9_A7;
+ * @section: 15.8.2.9;
+ * @assertion: The value of Math.floor(x) is the same as the value of -Math.ceil(-x);
+ * @description: Checking if Math.floor(x) is equal to -Math.ceil(-x) on 2000 floating-point argument values;
+ */
+
+// CHECK#1
+for (i=-1000; i<1000; i++)
+{
+ x = i/10.0;
+ if (-Math.ceil(-x) !== Math.floor(x))
+ {
+ $ERROR("#1: 'x = " + x + "; Math.floor(x) !== -Math.ceil(-x)'");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.2_The_Date_Constructor_Called_as_a_Function/S15.9.2.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.2_The_Date_Constructor_Called_as_a_Function/S15.9.2.1_A1.js
new file mode 100644
index 000000000..74b567225
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.2_The_Date_Constructor_Called_as_a_Function/S15.9.2.1_A1.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.2.1_A1;
+ * @section: 15.9.2.1;
+ * @assertion: When Date is called as a function rather than as a constructor,
+ * it should be "string" representing the current time (UTC);
+ * @description: Checking type of returned value;
+*/
+
+//CHECK#1
+if( typeof Date() !== "string" ) {
+ $ERROR('#1: typeof Date() should be "string", actual is '+(typeof Date()));
+}
+
+//CHECK#2
+if( typeof Date(1) !== "string" ) {
+ $ERROR('#2: typeof Date(1) should be "string", actual is '+(typeof Date(1)));
+}
+
+//CHECK#3
+if( typeof Date(1970, 1) !== "string" ) {
+ $ERROR('#3: typeof Date(1970, 1) should be "string", actual is '+(typeof Date(1970, 1)));
+}
+
+//CHECK#4
+if( typeof Date(1970, 1, 1) !== "string" ) {
+ $ERROR('#4: typeof Date(1970, 1, 1) should be "string", actual is '+(typeof Date(1970, 1, 1)));
+}
+
+//CHECK#5
+if( typeof Date(1970, 1, 1, 1) !== "string" ) {
+ $ERROR('#5: typeof Date(1970, 1, 1, 1) should be "string", actual is '+(typeof Date(1970, 1, 1, 1)));
+}
+
+//CHECK#6
+if( typeof Date(1970, 1, 1, 1) !== "string" ) {
+ $ERROR('#7: typeof Date(1970, 1, 1, 1) should be "string", actual is '+(typeof Date(1970, 1, 1, 1)));
+}
+
+//CHECK#8
+if( typeof Date(1970, 1, 1, 1, 0) !== "string" ) {
+ $ERROR('#8: typeof Date(1970, 1, 1, 1, 0) should be "string", actual is '+(typeof Date(1970, 1, 1, 1, 0)));
+}
+
+//CHECK#9
+if( typeof Date(1970, 1, 1, 1, 0, 0) !== "string" ) {
+ $ERROR('#9: typeof Date(1970, 1, 1, 1, 0, 0) should be "string", actual is '+(typeof Date(1970, 1, 1, 1, 0, 0)));
+}
+
+//CHECK#10
+if( typeof Date(1970, 1, 1, 1, 0, 0, 0) !== "string" ) {
+ $ERROR('#10: typeof Date(1970, 1, 1, 1, 0, 0, 0) should be "string", actual is '+(typeof Date(1970, 1, 1, 1, 0, 0, 0)));
+}
+
+//CHECK#11
+if( typeof Date(Number.NaN) !== "string" ) {
+ $ERROR('#11: typeof Date(Number.NaN) should be "string", actual is '+(typeof Date(Number.NaN)));
+}
+
+//CHECK#12
+if( typeof Date(Number.POSITIVE_INFINITY) !== "string" ) {
+ $ERROR('#12: typeof Date(Number.POSITIVE_INFINITY) should be "string", actual is '+(typeof Date(Number.POSITIVE_INFINITY)));
+}
+
+//CHECK#13
+if( typeof Date(Number.NEGATIVE_INFINITY) !== "string" ) {
+ $ERROR('#13: typeof Date(Number.NEGATIVE_INFINITY) should be "string", actual is '+(typeof Date(Number.NEGATIVE_INFINITY)));
+}
+
+//CHECK#14
+if( typeof Date(undefined) !== "string" ) {
+ $ERROR('#14: typeof Date(undefined) should be "string", actual is '+(typeof Date(undefined)));
+}
+
+//CHECK#15
+if( typeof Date(null) !== "string" ) {
+ $ERROR('#15: typeof Date(null) should be "string", actual is '+(typeof Date(null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.2_The_Date_Constructor_Called_as_a_Function/S15.9.2.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.2_The_Date_Constructor_Called_as_a_Function/S15.9.2.1_A2.js
new file mode 100644
index 000000000..27c040e08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.2_The_Date_Constructor_Called_as_a_Function/S15.9.2.1_A2.js
@@ -0,0 +1,91 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.2.1_A2;
+ * @section: 15.9.2.1;
+ * @assertion: All of the arguments are optional, any arguments supplied are
+ * accepted but are completely ignored. A string is created and returned as
+ * if by the expression (new Date()).toString();
+ * @description: Use various number arguments and various types of ones;
+*/
+
+function isEqual(d1, d2) {
+ if (d1 === d2) {
+ return true;
+ } else if (Math.abs(Date.parse(d1) - Date.parse(d2)) <= 1000) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+//CHECK#1
+if( !isEqual(Date(), (new Date()).toString()) ) {
+ $ERROR('#1: Date() is equal to (new Date()).toString()');
+}
+
+//CHECK#2
+if( !isEqual(Date(1), (new Date()).toString()) ) {
+ $ERROR('#2: Date(1) is equal to (new Date()).toString()');
+}
+
+//CHECK#3
+if( !isEqual(Date(1970, 1), (new Date()).toString()) ) {
+ $ERROR('#3: Date(1970, 1) is equal to (new Date()).toString()');
+}
+
+//CHECK#4
+if( !isEqual(Date(1970, 1, 1), (new Date()).toString()) ) {
+ $ERROR('#4: Date(1970, 1, 1) is equal to (new Date()).toString()');
+}
+
+//CHECK#5
+if( !isEqual(Date(1970, 1, 1, 1), (new Date()).toString()) ) {
+ $ERROR('#5: Date(1970, 1, 1, 1) is equal to (new Date()).toString()');
+}
+
+//CHECK#6
+if( !isEqual(Date(1970, 1, 1, 1), (new Date()).toString()) ) {
+ $ERROR('#7: Date(1970, 1, 1, 1) is equal to (new Date()).toString()');
+}
+
+//CHECK#8
+if( !isEqual(Date(1970, 1, 1, 1, 0), (new Date()).toString()) ) {
+ $ERROR('#8: Date(1970, 1, 1, 1, 0) is equal to (new Date()).toString()');
+}
+
+//CHECK#9
+if( !isEqual(Date(1970, 1, 1, 1, 0, 0), (new Date()).toString()) ) {
+ $ERROR('#9: Date(1970, 1, 1, 1, 0, 0) is equal to (new Date()).toString()');
+}
+
+//CHECK#10
+if( !isEqual(Date(1970, 1, 1, 1, 0, 0, 0), (new Date()).toString()) ) {
+ $ERROR('#10: Date(1970, 1, 1, 1, 0, 0, 0) is equal to (new Date()).toString()');
+}
+
+//CHECK#11
+if( !isEqual(Date(Number.NaN), (new Date()).toString()) ) {
+ $ERROR('#11: Date(Number.NaN) is equal to (new Date()).toString()');
+}
+
+//CHECK#12
+if( !isEqual(Date(Number.POSITIVE_INFINITY), (new Date()).toString()) ) {
+ $ERROR('#12: Date(Number.POSITIVE_INFINITY) is equal to (new Date()).toString()');
+}
+
+//CHECK#13
+if( !isEqual(Date(Number.NEGATIVE_INFINITY), (new Date()).toString()) ) {
+ $ERROR('#13: Date(Number.NEGATIVE_INFINITY) is equal to (new Date()).toString()');
+}
+
+//CHECK#14
+if( !isEqual(Date(undefined), (new Date()).toString()) ) {
+ $ERROR('#14: Date(undefined) is equal to (new Date()).toString()');
+}
+
+//CHECK#15
+if( !isEqual(Date(null), (new Date()).toString()) ) {
+ $ERROR('#15: Date(null) is equal to (new Date()).toString()');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T1.js
new file mode 100644
index 000000000..ea189e433
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T1.js
@@ -0,0 +1,226 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A1_T1;
+ * @section: 15.9.3.1;
+ * @assertion: When Date is called as part of a new expression it is
+ * a constructor: it initializes the newly created object;
+ * @description: 2 arguments, (year, month);
+*/
+
+if (typeof new Date(1899, 11) !== "object") {
+ $FAIL("#1.1: typeof new Date(1899, 11) should be 'object'");
+}
+
+if (new Date(1899, 11) === undefined) {
+ $FAIL("#1.2: new Date(1899, 11) should not be undefined");
+}
+
+var x13 = new Date(1899, 11);
+if(typeof x13 !== "object"){
+ $FAIL("#1.3: typeof new Date(1899, 11) should be 'object'");
+}
+
+var x14 = new Date(1899, 11);
+if(x14 === undefined){
+ $FAIL("#1.4: new Date(1899, 11) should not be undefined");
+}
+
+if (typeof new Date(1899, 12) !== "object") {
+ $FAIL("#2.1: typeof new Date(1899, 12) should be 'object'");
+}
+
+if (new Date(1899, 12) === undefined) {
+ $FAIL("#2.2: new Date(1899, 12) should not be undefined");
+}
+
+var x23 = new Date(1899, 12);
+if(typeof x23 !== "object"){
+ $FAIL("#2.3: typeof new Date(1899, 12) should be 'object'");
+}
+
+var x24 = new Date(1899, 12);
+if(x24 === undefined){
+ $FAIL("#2.4: new Date(1899, 12) should not be undefined");
+}
+
+if (typeof new Date(1900, 0) !== "object") {
+ $FAIL("#3.1: typeof new Date(1900, 0) should be 'object'");
+}
+
+if (new Date(1900, 0) === undefined) {
+ $FAIL("#3.2: new Date(1900, 0) should not be undefined");
+}
+
+var x33 = new Date(1900, 0);
+if(typeof x33 !== "object"){
+ $FAIL("#3.3: typeof new Date(1900, 0) should be 'object'");
+}
+
+var x34 = new Date(1900, 0);
+if(x34 === undefined){
+ $FAIL("#3.4: new Date(1900, 0) should not be undefined");
+}
+
+if (typeof new Date(1969, 11) !== "object") {
+ $FAIL("#4.1: typeof new Date(1969, 11) should be 'object'");
+}
+
+if (new Date(1969, 11) === undefined) {
+ $FAIL("#4.2: new Date(1969, 11) should not be undefined");
+}
+
+var x43 = new Date(1969, 11);
+if(typeof x43 !== "object"){
+ $FAIL("#4.3: typeof new Date(1969, 11) should be 'object'");
+}
+
+var x44 = new Date(1969, 11);
+if(x44 === undefined){
+ $FAIL("#4.4: new Date(1969, 11) should not be undefined");
+}
+
+if (typeof new Date(1969, 12) !== "object") {
+ $FAIL("#5.1: typeof new Date(1969, 12) should be 'object'");
+}
+
+if (new Date(1969, 12) === undefined) {
+ $FAIL("#5.2: new Date(1969, 12) should not be undefined");
+}
+
+var x53 = new Date(1969, 12);
+if(typeof x53 !== "object"){
+ $FAIL("#5.3: typeof new Date(1969, 12) should be 'object'");
+}
+
+var x54 = new Date(1969, 12);
+if(x54 === undefined){
+ $FAIL("#5.4: new Date(1969, 12) should not be undefined");
+}
+
+if (typeof new Date(1970, 0) !== "object") {
+ $FAIL("#6.1: typeof new Date(1970, 0) should be 'object'");
+}
+
+if (new Date(1970, 0) === undefined) {
+ $FAIL("#6.2: new Date(1970, 0) should not be undefined");
+}
+
+var x63 = new Date(1970, 0);
+if(typeof x63 !== "object"){
+ $FAIL("#6.3: typeof new Date(1970, 0) should be 'object'");
+}
+
+var x64 = new Date(1970, 0);
+if(x64 === undefined){
+ $FAIL("#6.4: new Date(1970, 0) should not be undefined");
+}
+
+if (typeof new Date(1999, 11) !== "object") {
+ $FAIL("#7.1: typeof new Date(1999, 11) should be 'object'");
+}
+
+if (new Date(1999, 11) === undefined) {
+ $FAIL("#7.2: new Date(1999, 11) should not be undefined");
+}
+
+var x73 = new Date(1999, 11);
+if(typeof x73 !== "object"){
+ $FAIL("#7.3: typeof new Date(1999, 11) should be 'object'");
+}
+
+var x74 = new Date(1999, 11);
+if(x74 === undefined){
+ $FAIL("#7.4: new Date(1999, 11) should not be undefined");
+}
+
+if (typeof new Date(1999, 12) !== "object") {
+ $FAIL("#8.1: typeof new Date(1999, 12) should be 'object'");
+}
+
+if (new Date(1999, 12) === undefined) {
+ $FAIL("#8.2: new Date(1999, 12) should not be undefined");
+}
+
+var x83 = new Date(1999, 12);
+if(typeof x83 !== "object"){
+ $FAIL("#8.3: typeof new Date(1999, 12) should be 'object'");
+}
+
+var x84 = new Date(1999, 12);
+if(x84 === undefined){
+ $FAIL("#8.4: new Date(1999, 12) should not be undefined");
+}
+
+if (typeof new Date(2000, 0) !== "object") {
+ $FAIL("#9.1: typeof new Date(2000, 0) should be 'object'");
+}
+
+if (new Date(2000, 0) === undefined) {
+ $FAIL("#9.2: new Date(2000, 0) should not be undefined");
+}
+
+var x93 = new Date(2000, 0);
+if(typeof x93 !== "object"){
+ $FAIL("#9.3: typeof new Date(2000, 0) should be 'object'");
+}
+
+var x94 = new Date(2000, 0);
+if(x94 === undefined){
+ $FAIL("#9.4: new Date(2000, 0) should not be undefined");
+}
+
+if (typeof new Date(2099, 11) !== "object") {
+ $FAIL("#10.1: typeof new Date(2099, 11) should be 'object'");
+}
+
+if (new Date(2099, 11) === undefined) {
+ $FAIL("#10.2: new Date(2099, 11) should not be undefined");
+}
+
+var x103 = new Date(2099, 11);
+if(typeof x103 !== "object"){
+ $FAIL("#10.3: typeof new Date(2099, 11) should be 'object'");
+}
+
+var x104 = new Date(2099, 11);
+if(x104 === undefined){
+ $FAIL("#10.4: new Date(2099, 11) should not be undefined");
+}
+
+if (typeof new Date(2099, 12) !== "object") {
+ $FAIL("#11.1: typeof new Date(2099, 12) should be 'object'");
+}
+
+if (new Date(2099, 12) === undefined) {
+ $FAIL("#11.2: new Date(2099, 12) should not be undefined");
+}
+
+var x113 = new Date(2099, 12);
+if(typeof x113 !== "object"){
+ $FAIL("#11.3: typeof new Date(2099, 12) should be 'object'");
+}
+
+var x114 = new Date(2099, 12);
+if(x114 === undefined){
+ $FAIL("#11.4: new Date(2099, 12) should not be undefined");
+}
+
+if (typeof new Date(2100, 0) !== "object") {
+ $FAIL("#12.1: typeof new Date(2100, 0) should be 'object'");
+}
+
+if (new Date(2100, 0) === undefined) {
+ $FAIL("#12.2: new Date(2100, 0) should not be undefined");
+}
+
+var x123 = new Date(2100, 0);
+if(typeof x123 !== "object"){
+ $FAIL("#12.3: typeof new Date(2100, 0) should be 'object'");
+}
+
+var x124 = new Date(2100, 0);
+if(x124 === undefined){
+ $FAIL("#12.4: new Date(2100, 0) should not be undefined");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T2.js
new file mode 100644
index 000000000..c5668a9fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T2.js
@@ -0,0 +1,226 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A1_T2;
+ * @section: 15.9.3.1;
+ * @assertion: When Date is called as part of a new expression it is
+ * a constructor: it initializes the newly created object;
+ * @description: 3 arguments, (year, month, date);
+*/
+
+if (typeof new Date(1899, 11, 31) !== "object") {
+ $FAIL("#1.1: typeof new Date(1899, 11, 31) should be 'object'");
+}
+
+if (new Date(1899, 11, 31) === undefined) {
+ $FAIL("#1.2: new Date(1899, 11, 31) should not be undefined");
+}
+
+var x13 = new Date(1899, 11, 31);
+if(typeof x13 !== "object"){
+ $FAIL("#1.3: typeof new Date(1899, 11, 31) should be 'object'");
+}
+
+var x14 = new Date(1899, 11, 31);
+if(x14 === undefined){
+ $FAIL("#1.4: new Date(1899, 11, 31) should not be undefined");
+}
+
+if (typeof new Date(1899, 12, 1) !== "object") {
+ $FAIL("#2.1: typeof new Date(1899, 12, 1) should be 'object'");
+}
+
+if (new Date(1899, 12, 1) === undefined) {
+ $FAIL("#2.2: new Date(1899, 12, 1) should not be undefined");
+}
+
+var x23 = new Date(1899, 12, 1);
+if(typeof x23 !== "object"){
+ $FAIL("#2.3: typeof new Date(1899, 12, 1) should be 'object'");
+}
+
+var x24 = new Date(1899, 12, 1);
+if(x24 === undefined){
+ $FAIL("#2.4: new Date(1899, 12, 1) should not be undefined");
+}
+
+if (typeof new Date(1900, 0, 1) !== "object") {
+ $FAIL("#3.1: typeof new Date(1900, 0, 1) should be 'object'");
+}
+
+if (new Date(1900, 0, 1) === undefined) {
+ $FAIL("#3.2: new Date(1900, 0, 1) should not be undefined");
+}
+
+var x33 = new Date(1900, 0, 1);
+if(typeof x33 !== "object"){
+ $FAIL("#3.3: typeof new Date(1900, 0, 1) should be 'object'");
+}
+
+var x34 = new Date(1900, 0, 1);
+if(x34 === undefined){
+ $FAIL("#3.4: new Date(1900, 0, 1) should not be undefined");
+}
+
+if (typeof new Date(1969, 11, 31) !== "object") {
+ $FAIL("#4.1: typeof new Date(1969, 11, 31) should be 'object'");
+}
+
+if (new Date(1969, 11, 31) === undefined) {
+ $FAIL("#4.2: new Date(1969, 11, 31) should not be undefined");
+}
+
+var x43 = new Date(1969, 11, 31);
+if(typeof x43 !== "object"){
+ $FAIL("#4.3: typeof new Date(1969, 11, 31) should be 'object'");
+}
+
+var x44 = new Date(1969, 11, 31);
+if(x44 === undefined){
+ $FAIL("#4.4: new Date(1969, 11, 31) should not be undefined");
+}
+
+if (typeof new Date(1969, 12, 1) !== "object") {
+ $FAIL("#5.1: typeof new Date(1969, 12, 1) should be 'object'");
+}
+
+if (new Date(1969, 12, 1) === undefined) {
+ $FAIL("#5.2: new Date(1969, 12, 1) should not be undefined");
+}
+
+var x53 = new Date(1969, 12, 1);
+if(typeof x53 !== "object"){
+ $FAIL("#5.3: typeof new Date(1969, 12, 1) should be 'object'");
+}
+
+var x54 = new Date(1969, 12, 1);
+if(x54 === undefined){
+ $FAIL("#5.4: new Date(1969, 12, 1) should not be undefined");
+}
+
+if (typeof new Date(1970, 0, 1) !== "object") {
+ $FAIL("#6.1: typeof new Date(1970, 0, 1) should be 'object'");
+}
+
+if (new Date(1970, 0, 1) === undefined) {
+ $FAIL("#6.2: new Date(1970, 0, 1) should not be undefined");
+}
+
+var x63 = new Date(1970, 0, 1);
+if(typeof x63 !== "object"){
+ $FAIL("#6.3: typeof new Date(1970, 0, 1) should be 'object'");
+}
+
+var x64 = new Date(1970, 0, 1);
+if(x64 === undefined){
+ $FAIL("#6.4: new Date(1970, 0, 1) should not be undefined");
+}
+
+if (typeof new Date(1999, 11, 31) !== "object") {
+ $FAIL("#7.1: typeof new Date(1999, 11, 31) should be 'object'");
+}
+
+if (new Date(1999, 11, 31) === undefined) {
+ $FAIL("#7.2: new Date(1999, 11, 31) should not be undefined");
+}
+
+var x73 = new Date(1999, 11, 31);
+if(typeof x73 !== "object"){
+ $FAIL("#7.3: typeof new Date(1999, 11, 31) should be 'object'");
+}
+
+var x74 = new Date(1999, 11, 31);
+if(x74 === undefined){
+ $FAIL("#7.4: new Date(1999, 11, 31) should not be undefined");
+}
+
+if (typeof new Date(1999, 12, 1) !== "object") {
+ $FAIL("#8.1: typeof new Date(1999, 12, 1) should be 'object'");
+}
+
+if (new Date(1999, 12, 1) === undefined) {
+ $FAIL("#8.2: new Date(1999, 12, 1) should not be undefined");
+}
+
+var x83 = new Date(1999, 12, 1);
+if(typeof x83 !== "object"){
+ $FAIL("#8.3: typeof new Date(1999, 12, 1) should be 'object'");
+}
+
+var x84 = new Date(1999, 12, 1);
+if(x84 === undefined){
+ $FAIL("#8.4: new Date(1999, 12, 1) should not be undefined");
+}
+
+if (typeof new Date(2000, 0, 1) !== "object") {
+ $FAIL("#9.1: typeof new Date(2000, 0, 1) should be 'object'");
+}
+
+if (new Date(2000, 0, 1) === undefined) {
+ $FAIL("#9.2: new Date(2000, 0, 1) should not be undefined");
+}
+
+var x93 = new Date(2000, 0, 1);
+if(typeof x93 !== "object"){
+ $FAIL("#9.3: typeof new Date(2000, 0, 1) should be 'object'");
+}
+
+var x94 = new Date(2000, 0, 1);
+if(x94 === undefined){
+ $FAIL("#9.4: new Date(2000, 0, 1) should not be undefined");
+}
+
+if (typeof new Date(2099, 11, 31) !== "object") {
+ $FAIL("#10.1: typeof new Date(2099, 11, 31) should be 'object'");
+}
+
+if (new Date(2099, 11, 31) === undefined) {
+ $FAIL("#10.2: new Date(2099, 11, 31) should not be undefined");
+}
+
+var x103 = new Date(2099, 11, 31);
+if(typeof x103 !== "object"){
+ $FAIL("#10.3: typeof new Date(2099, 11, 31) should be 'object'");
+}
+
+var x104 = new Date(2099, 11, 31);
+if(x104 === undefined){
+ $FAIL("#10.4: new Date(2099, 11, 31) should not be undefined");
+}
+
+if (typeof new Date(2099, 12, 1) !== "object") {
+ $FAIL("#11.1: typeof new Date(2099, 12, 1) should be 'object'");
+}
+
+if (new Date(2099, 12, 1) === undefined) {
+ $FAIL("#11.2: new Date(2099, 12, 1) should not be undefined");
+}
+
+var x113 = new Date(2099, 12, 1);
+if(typeof x113 !== "object"){
+ $FAIL("#11.3: typeof new Date(2099, 12, 1) should be 'object'");
+}
+
+var x114 = new Date(2099, 12, 1);
+if(x114 === undefined){
+ $FAIL("#11.4: new Date(2099, 12, 1) should not be undefined");
+}
+
+if (typeof new Date(2100, 0, 1) !== "object") {
+ $FAIL("#12.1: typeof new Date(2100, 0, 1) should be 'object'");
+}
+
+if (new Date(2100, 0, 1) === undefined) {
+ $FAIL("#12.2: new Date(2100, 0, 1) should not be undefined");
+}
+
+var x123 = new Date(2100, 0, 1);
+if(typeof x123 !== "object"){
+ $FAIL("#12.3: typeof new Date(2100, 0, 1) should be 'object'");
+}
+
+var x124 = new Date(2100, 0, 1);
+if(x124 === undefined){
+ $FAIL("#12.4: new Date(2100, 0, 1) should not be undefined");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T3.js
new file mode 100644
index 000000000..bd22ff46a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T3.js
@@ -0,0 +1,226 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A1_T3;
+ * @section: 15.9.3.1;
+ * @assertion: When Date is called as part of a new expression it is
+ * a constructor: it initializes the newly created object;
+ * @description: 4 arguments, (year, month, date, hours);
+*/
+
+if (typeof new Date(1899, 11, 31, 23) !== "object") {
+ $FAIL("#1.1: typeof new Date(1899, 11, 31, 23) should be 'object'");
+}
+
+if (new Date(1899, 11, 31, 23) === undefined) {
+ $FAIL("#1.2: new Date(1899, 11, 31, 23) should not be undefined");
+}
+
+var x13 = new Date(1899, 11, 31, 23);
+if(typeof x13 !== "object"){
+ $FAIL("#1.3: typeof new Date(1899, 11, 31, 23) should be 'object'");
+}
+
+var x14 = new Date(1899, 11, 31, 23);
+if(x14 === undefined){
+ $FAIL("#1.4: new Date(1899, 11, 31, 23) should not be undefined");
+}
+
+if (typeof new Date(1899, 12, 1, 0) !== "object") {
+ $FAIL("#2.1: typeof new Date(1899, 12, 1, 0) should be 'object'");
+}
+
+if (new Date(1899, 12, 1, 0) === undefined) {
+ $FAIL("#2.2: new Date(1899, 12, 1, 0) should not be undefined");
+}
+
+var x23 = new Date(1899, 12, 1, 0);
+if(typeof x23 !== "object"){
+ $FAIL("#2.3: typeof new Date(1899, 12, 1, 0) should be 'object'");
+}
+
+var x24 = new Date(1899, 12, 1, 0);
+if(x24 === undefined){
+ $FAIL("#2.4: new Date(1899, 12, 1, 0) should not be undefined");
+}
+
+if (typeof new Date(1900, 0, 1, 0) !== "object") {
+ $FAIL("#3.1: typeof new Date(1900, 0, 1, 0) should be 'object'");
+}
+
+if (new Date(1900, 0, 1, 0) === undefined) {
+ $FAIL("#3.2: new Date(1900, 0, 1, 0) should not be undefined");
+}
+
+var x33 = new Date(1900, 0, 1, 0);
+if(typeof x33 !== "object"){
+ $FAIL("#3.3: typeof new Date(1900, 0, 1, 0) should be 'object'");
+}
+
+var x34 = new Date(1900, 0, 1, 0);
+if(x34 === undefined){
+ $FAIL("#3.4: new Date(1900, 0, 1, 0) should not be undefined");
+}
+
+if (typeof new Date(1969, 11, 31, 23) !== "object") {
+ $FAIL("#4.1: typeof new Date(1969, 11, 31, 23) should be 'object'");
+}
+
+if (new Date(1969, 11, 31, 23) === undefined) {
+ $FAIL("#4.2: new Date(1969, 11, 31, 23) should not be undefined");
+}
+
+var x43 = new Date(1969, 11, 31, 23);
+if(typeof x43 !== "object"){
+ $FAIL("#4.3: typeof new Date(1969, 11, 31, 23) should be 'object'");
+}
+
+var x44 = new Date(1969, 11, 31, 23);
+if(x44 === undefined){
+ $FAIL("#4.4: new Date(1969, 11, 31, 23) should not be undefined");
+}
+
+if (typeof new Date(1969, 12, 1, 0) !== "object") {
+ $FAIL("#5.1: typeof new Date(1969, 12, 1, 0) should be 'object'");
+}
+
+if (new Date(1969, 12, 1, 0) === undefined) {
+ $FAIL("#5.2: new Date(1969, 12, 1, 0) should not be undefined");
+}
+
+var x53 = new Date(1969, 12, 1, 0);
+if(typeof x53 !== "object"){
+ $FAIL("#5.3: typeof new Date(1969, 12, 1, 0) should be 'object'");
+}
+
+var x54 = new Date(1969, 12, 1, 0);
+if(x54 === undefined){
+ $FAIL("#5.4: new Date(1969, 12, 1, 0) should not be undefined");
+}
+
+if (typeof new Date(1970, 0, 1, 0) !== "object") {
+ $FAIL("#6.1: typeof new Date(1970, 0, 1, 0) should be 'object'");
+}
+
+if (new Date(1970, 0, 1, 0) === undefined) {
+ $FAIL("#6.2: new Date(1970, 0, 1, 0) should not be undefined");
+}
+
+var x63 = new Date(1970, 0, 1, 0);
+if(typeof x63 !== "object"){
+ $FAIL("#6.3: typeof new Date(1970, 0, 1, 0) should be 'object'");
+}
+
+var x64 = new Date(1970, 0, 1, 0);
+if(x64 === undefined){
+ $FAIL("#6.4: new Date(1970, 0, 1, 0) should not be undefined");
+}
+
+if (typeof new Date(1999, 11, 31, 23) !== "object") {
+ $FAIL("#7.1: typeof new Date(1999, 11, 31, 23) should be 'object'");
+}
+
+if (new Date(1999, 11, 31, 23) === undefined) {
+ $FAIL("#7.2: new Date(1999, 11, 31, 23) should not be undefined");
+}
+
+var x73 = new Date(1999, 11, 31, 23);
+if(typeof x73 !== "object"){
+ $FAIL("#7.3: typeof new Date(1999, 11, 31, 23) should be 'object'");
+}
+
+var x74 = new Date(1999, 11, 31, 23);
+if(x74 === undefined){
+ $FAIL("#7.4: new Date(1999, 11, 31, 23) should not be undefined");
+}
+
+if (typeof new Date(1999, 12, 1, 0) !== "object") {
+ $FAIL("#8.1: typeof new Date(1999, 12, 1, 0) should be 'object'");
+}
+
+if (new Date(1999, 12, 1, 0) === undefined) {
+ $FAIL("#8.2: new Date(1999, 12, 1, 0) should not be undefined");
+}
+
+var x83 = new Date(1999, 12, 1, 0);
+if(typeof x83 !== "object"){
+ $FAIL("#8.3: typeof new Date(1999, 12, 1, 0) should be 'object'");
+}
+
+var x84 = new Date(1999, 12, 1, 0);
+if(x84 === undefined){
+ $FAIL("#8.4: new Date(1999, 12, 1, 0) should not be undefined");
+}
+
+if (typeof new Date(2000, 0, 1, 0) !== "object") {
+ $FAIL("#9.1: typeof new Date(2000, 0, 1, 0) should be 'object'");
+}
+
+if (new Date(2000, 0, 1, 0) === undefined) {
+ $FAIL("#9.2: new Date(2000, 0, 1, 0) should not be undefined");
+}
+
+var x93 = new Date(2000, 0, 1, 0);
+if(typeof x93 !== "object"){
+ $FAIL("#9.3: typeof new Date(2000, 0, 1, 0) should be 'object'");
+}
+
+var x94 = new Date(2000, 0, 1, 0);
+if(x94 === undefined){
+ $FAIL("#9.4: new Date(2000, 0, 1, 0) should not be undefined");
+}
+
+if (typeof new Date(2099, 11, 31, 23) !== "object") {
+ $FAIL("#10.1: typeof new Date(2099, 11, 31, 23) should be 'object'");
+}
+
+if (new Date(2099, 11, 31, 23) === undefined) {
+ $FAIL("#10.2: new Date(2099, 11, 31, 23) should not be undefined");
+}
+
+var x103 = new Date(2099, 11, 31, 23);
+if(typeof x103 !== "object"){
+ $FAIL("#10.3: typeof new Date(2099, 11, 31, 23) should be 'object'");
+}
+
+var x104 = new Date(2099, 11, 31, 23);
+if(x104 === undefined){
+ $FAIL("#10.4: new Date(2099, 11, 31, 23) should not be undefined");
+}
+
+if (typeof new Date(2099, 12, 1, 0) !== "object") {
+ $FAIL("#11.1: typeof new Date(2099, 12, 1, 0) should be 'object'");
+}
+
+if (new Date(2099, 12, 1, 0) === undefined) {
+ $FAIL("#11.2: new Date(2099, 12, 1, 0) should not be undefined");
+}
+
+var x113 = new Date(2099, 12, 1, 0);
+if(typeof x113 !== "object"){
+ $FAIL("#11.3: typeof new Date(2099, 12, 1, 0) should be 'object'");
+}
+
+var x114 = new Date(2099, 12, 1, 0);
+if(x114 === undefined){
+ $FAIL("#11.4: new Date(2099, 12, 1, 0) should not be undefined");
+}
+
+if (typeof new Date(2100, 0, 1, 0) !== "object") {
+ $FAIL("#12.1: typeof new Date(2100, 0, 1, 0) should be 'object'");
+}
+
+if (new Date(2100, 0, 1, 0) === undefined) {
+ $FAIL("#12.2: new Date(2100, 0, 1, 0) should not be undefined");
+}
+
+var x123 = new Date(2100, 0, 1, 0);
+if(typeof x123 !== "object"){
+ $FAIL("#12.3: typeof new Date(2100, 0, 1, 0) should be 'object'");
+}
+
+var x124 = new Date(2100, 0, 1, 0);
+if(x124 === undefined){
+ $FAIL("#12.4: new Date(2100, 0, 1, 0) should not be undefined");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T4.js
new file mode 100644
index 000000000..c24ac08c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T4.js
@@ -0,0 +1,226 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A1_T4;
+ * @section: 15.9.3.1;
+ * @assertion: When Date is called as part of a new expression it is
+ * a constructor: it initializes the newly created object;
+ * @description: 5 arguments, (year, month, date, hours, minutes);
+*/
+
+if (typeof new Date(1899, 11, 31, 23, 59) !== "object") {
+ $FAIL("#1.1: typeof new Date(1899, 11, 31, 23, 59) should be 'object'");
+}
+
+if (new Date(1899, 11, 31, 23, 59) === undefined) {
+ $FAIL("#1.2: new Date(1899, 11, 31, 23, 59) should not be undefined");
+}
+
+var x13 = new Date(1899, 11, 31, 23, 59);
+if(typeof x13 !== "object"){
+ $FAIL("#1.3: typeof new Date(1899, 11, 31, 23, 59) should be 'object'");
+}
+
+var x14 = new Date(1899, 11, 31, 23, 59);
+if(x14 === undefined){
+ $FAIL("#1.4: new Date(1899, 11, 31, 23, 59) should not be undefined");
+}
+
+if (typeof new Date(1899, 12, 1, 0, 0) !== "object") {
+ $FAIL("#2.1: typeof new Date(1899, 12, 1, 0, 0) should be 'object'");
+}
+
+if (new Date(1899, 12, 1, 0, 0) === undefined) {
+ $FAIL("#2.2: new Date(1899, 12, 1, 0, 0) should not be undefined");
+}
+
+var x23 = new Date(1899, 12, 1, 0, 0);
+if(typeof x23 !== "object"){
+ $FAIL("#2.3: typeof new Date(1899, 12, 1, 0, 0) should be 'object'");
+}
+
+var x24 = new Date(1899, 12, 1, 0, 0);
+if(x24 === undefined){
+ $FAIL("#2.4: new Date(1899, 12, 1, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1900, 0, 1, 0, 0) !== "object") {
+ $FAIL("#3.1: typeof new Date(1900, 0, 1, 0, 0) should be 'object'");
+}
+
+if (new Date(1900, 0, 1, 0, 0) === undefined) {
+ $FAIL("#3.2: new Date(1900, 0, 1, 0, 0) should not be undefined");
+}
+
+var x33 = new Date(1900, 0, 1, 0, 0);
+if(typeof x33 !== "object"){
+ $FAIL("#3.3: typeof new Date(1900, 0, 1, 0, 0) should be 'object'");
+}
+
+var x34 = new Date(1900, 0, 1, 0, 0);
+if(x34 === undefined){
+ $FAIL("#3.4: new Date(1900, 0, 1, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1969, 11, 31, 23, 59) !== "object") {
+ $FAIL("#4.1: typeof new Date(1969, 11, 31, 23, 59) should be 'object'");
+}
+
+if (new Date(1969, 11, 31, 23, 59) === undefined) {
+ $FAIL("#4.2: new Date(1969, 11, 31, 23, 59) should not be undefined");
+}
+
+var x43 = new Date(1969, 11, 31, 23, 59);
+if(typeof x43 !== "object"){
+ $FAIL("#4.3: typeof new Date(1969, 11, 31, 23, 59) should be 'object'");
+}
+
+var x44 = new Date(1969, 11, 31, 23, 59);
+if(x44 === undefined){
+ $FAIL("#4.4: new Date(1969, 11, 31, 23, 59) should not be undefined");
+}
+
+if (typeof new Date(1969, 12, 1, 0, 0) !== "object") {
+ $FAIL("#5.1: typeof new Date(1969, 12, 1, 0, 0) should be 'object'");
+}
+
+if (new Date(1969, 12, 1, 0, 0) === undefined) {
+ $FAIL("#5.2: new Date(1969, 12, 1, 0, 0) should not be undefined");
+}
+
+var x53 = new Date(1969, 12, 1, 0, 0);
+if(typeof x53 !== "object"){
+ $FAIL("#5.3: typeof new Date(1969, 12, 1, 0, 0) should be 'object'");
+}
+
+var x54 = new Date(1969, 12, 1, 0, 0);
+if(x54 === undefined){
+ $FAIL("#5.4: new Date(1969, 12, 1, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1970, 0, 1, 0, 0) !== "object") {
+ $FAIL("#6.1: typeof new Date(1970, 0, 1, 0, 0) should be 'object'");
+}
+
+if (new Date(1970, 0, 1, 0, 0) === undefined) {
+ $FAIL("#6.2: new Date(1970, 0, 1, 0, 0) should not be undefined");
+}
+
+var x63 = new Date(1970, 0, 1, 0, 0);
+if(typeof x63 !== "object"){
+ $FAIL("#6.3: typeof new Date(1970, 0, 1, 0, 0) should be 'object'");
+}
+
+var x64 = new Date(1970, 0, 1, 0, 0);
+if(x64 === undefined){
+ $FAIL("#6.4: new Date(1970, 0, 1, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1999, 11, 31, 23, 59) !== "object") {
+ $FAIL("#7.1: typeof new Date(1999, 11, 31, 23, 59) should be 'object'");
+}
+
+if (new Date(1999, 11, 31, 23, 59) === undefined) {
+ $FAIL("#7.2: new Date(1999, 11, 31, 23, 59) should not be undefined");
+}
+
+var x73 = new Date(1999, 11, 31, 23, 59);
+if(typeof x73 !== "object"){
+ $FAIL("#7.3: typeof new Date(1999, 11, 31, 23, 59) should be 'object'");
+}
+
+var x74 = new Date(1999, 11, 31, 23, 59);
+if(x74 === undefined){
+ $FAIL("#7.4: new Date(1999, 11, 31, 23, 59) should not be undefined");
+}
+
+if (typeof new Date(1999, 12, 1, 0, 0) !== "object") {
+ $FAIL("#8.1: typeof new Date(1999, 12, 1, 0, 0) should be 'object'");
+}
+
+if (new Date(1999, 12, 1, 0, 0) === undefined) {
+ $FAIL("#8.2: new Date(1999, 12, 1, 0, 0) should not be undefined");
+}
+
+var x83 = new Date(1999, 12, 1, 0, 0);
+if(typeof x83 !== "object"){
+ $FAIL("#8.3: typeof new Date(1999, 12, 1, 0, 0) should be 'object'");
+}
+
+var x84 = new Date(1999, 12, 1, 0, 0);
+if(x84 === undefined){
+ $FAIL("#8.4: new Date(1999, 12, 1, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(2000, 0, 1, 0, 0) !== "object") {
+ $FAIL("#9.1: typeof new Date(2000, 0, 1, 0, 0) should be 'object'");
+}
+
+if (new Date(2000, 0, 1, 0, 0) === undefined) {
+ $FAIL("#9.2: new Date(2000, 0, 1, 0, 0) should not be undefined");
+}
+
+var x93 = new Date(2000, 0, 1, 0, 0);
+if(typeof x93 !== "object"){
+ $FAIL("#9.3: typeof new Date(2000, 0, 1, 0, 0) should be 'object'");
+}
+
+var x94 = new Date(2000, 0, 1, 0, 0);
+if(x94 === undefined){
+ $FAIL("#9.4: new Date(2000, 0, 1, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(2099, 11, 31, 23, 59) !== "object") {
+ $FAIL("#10.1: typeof new Date(2099, 11, 31, 23, 59) should be 'object'");
+}
+
+if (new Date(2099, 11, 31, 23, 59) === undefined) {
+ $FAIL("#10.2: new Date(2099, 11, 31, 23, 59) should not be undefined");
+}
+
+var x103 = new Date(2099, 11, 31, 23, 59);
+if(typeof x103 !== "object"){
+ $FAIL("#10.3: typeof new Date(2099, 11, 31, 23, 59) should be 'object'");
+}
+
+var x104 = new Date(2099, 11, 31, 23, 59);
+if(x104 === undefined){
+ $FAIL("#10.4: new Date(2099, 11, 31, 23, 59) should not be undefined");
+}
+
+if (typeof new Date(2099, 12, 1, 0, 0) !== "object") {
+ $FAIL("#11.1: typeof new Date(2099, 12, 1, 0, 0) should be 'object'");
+}
+
+if (new Date(2099, 12, 1, 0, 0) === undefined) {
+ $FAIL("#11.2: new Date(2099, 12, 1, 0, 0) should not be undefined");
+}
+
+var x113 = new Date(2099, 12, 1, 0, 0);
+if(typeof x113 !== "object"){
+ $FAIL("#11.3: typeof new Date(2099, 12, 1, 0, 0) should be 'object'");
+}
+
+var x114 = new Date(2099, 12, 1, 0, 0);
+if(x114 === undefined){
+ $FAIL("#11.4: new Date(2099, 12, 1, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(2100, 0, 1, 0, 0) !== "object") {
+ $FAIL("#12.1: typeof new Date(2100, 0, 1, 0, 0) should be 'object'");
+}
+
+if (new Date(2100, 0, 1, 0, 0) === undefined) {
+ $FAIL("#12.2: new Date(2100, 0, 1, 0, 0) should not be undefined");
+}
+
+var x123 = new Date(2100, 0, 1, 0, 0);
+if(typeof x123 !== "object"){
+ $FAIL("#12.3: typeof new Date(2100, 0, 1, 0, 0) should be 'object'");
+}
+
+var x124 = new Date(2100, 0, 1, 0, 0);
+if(x124 === undefined){
+ $FAIL("#12.4: new Date(2100, 0, 1, 0, 0) should not be undefined");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T5.js
new file mode 100644
index 000000000..7715457f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T5.js
@@ -0,0 +1,226 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A1_T5;
+ * @section: 15.9.3.1;
+ * @assertion: When Date is called as part of a new expression it is
+ * a constructor: it initializes the newly created object;
+ * @description: 6 arguments, (year, month, date, hours, minutes, seconds);
+*/
+
+if (typeof new Date(1899, 11, 31, 23, 59, 59) !== "object") {
+ $FAIL("#1.1: typeof new Date(1899, 11, 31, 23, 59, 59) should be 'object'");
+}
+
+if (new Date(1899, 11, 31, 23, 59, 59) === undefined) {
+ $FAIL("#1.2: new Date(1899, 11, 31, 23, 59, 59) should not be undefined");
+}
+
+var x13 = new Date(1899, 11, 31, 23, 59, 59);
+if(typeof x13 !== "object"){
+ $FAIL("#1.3: typeof new Date(1899, 11, 31, 23, 59, 59) should be 'object'");
+}
+
+var x14 = new Date(1899, 11, 31, 23, 59, 59);
+if(x14 === undefined){
+ $FAIL("#1.4: new Date(1899, 11, 31, 23, 59, 59) should not be undefined");
+}
+
+if (typeof new Date(1899, 12, 1, 0, 0, 0) !== "object") {
+ $FAIL("#2.1: typeof new Date(1899, 12, 1, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1899, 12, 1, 0, 0, 0) === undefined) {
+ $FAIL("#2.2: new Date(1899, 12, 1, 0, 0, 0) should not be undefined");
+}
+
+var x23 = new Date(1899, 12, 1, 0, 0, 0);
+if(typeof x23 !== "object"){
+ $FAIL("#2.3: typeof new Date(1899, 12, 1, 0, 0, 0) should be 'object'");
+}
+
+var x24 = new Date(1899, 12, 1, 0, 0, 0);
+if(x24 === undefined){
+ $FAIL("#2.4: new Date(1899, 12, 1, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1900, 0, 1, 0, 0, 0) !== "object") {
+ $FAIL("#3.1: typeof new Date(1900, 0, 1, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1900, 0, 1, 0, 0, 0) === undefined) {
+ $FAIL("#3.2: new Date(1900, 0, 1, 0, 0, 0) should not be undefined");
+}
+
+var x33 = new Date(1900, 0, 1, 0, 0, 0);
+if(typeof x33 !== "object"){
+ $FAIL("#3.3: typeof new Date(1900, 0, 1, 0, 0, 0) should be 'object'");
+}
+
+var x34 = new Date(1900, 0, 1, 0, 0, 0);
+if(x34 === undefined){
+ $FAIL("#3.4: new Date(1900, 0, 1, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1969, 11, 31, 23, 59, 59) !== "object") {
+ $FAIL("#4.1: typeof new Date(1969, 11, 31, 23, 59, 59) should be 'object'");
+}
+
+if (new Date(1969, 11, 31, 23, 59, 59) === undefined) {
+ $FAIL("#4.2: new Date(1969, 11, 31, 23, 59, 59) should not be undefined");
+}
+
+var x43 = new Date(1969, 11, 31, 23, 59, 59);
+if(typeof x43 !== "object"){
+ $FAIL("#4.3: typeof new Date(1969, 11, 31, 23, 59, 59) should be 'object'");
+}
+
+var x44 = new Date(1969, 11, 31, 23, 59, 59);
+if(x44 === undefined){
+ $FAIL("#4.4: new Date(1969, 11, 31, 23, 59, 59) should not be undefined");
+}
+
+if (typeof new Date(1969, 12, 1, 0, 0, 0) !== "object") {
+ $FAIL("#5.1: typeof new Date(1969, 12, 1, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1969, 12, 1, 0, 0, 0) === undefined) {
+ $FAIL("#5.2: new Date(1969, 12, 1, 0, 0, 0) should not be undefined");
+}
+
+var x53 = new Date(1969, 12, 1, 0, 0, 0);
+if(typeof x53 !== "object"){
+ $FAIL("#5.3: typeof new Date(1969, 12, 1, 0, 0, 0) should be 'object'");
+}
+
+var x54 = new Date(1969, 12, 1, 0, 0, 0);
+if(x54 === undefined){
+ $FAIL("#5.4: new Date(1969, 12, 1, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1970, 0, 1, 0, 0, 0) !== "object") {
+ $FAIL("#6.1: typeof new Date(1970, 0, 1, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1970, 0, 1, 0, 0, 0) === undefined) {
+ $FAIL("#6.2: new Date(1970, 0, 1, 0, 0, 0) should not be undefined");
+}
+
+var x63 = new Date(1970, 0, 1, 0, 0, 0);
+if(typeof x63 !== "object"){
+ $FAIL("#6.3: typeof new Date(1970, 0, 1, 0, 0, 0) should be 'object'");
+}
+
+var x64 = new Date(1970, 0, 1, 0, 0, 0);
+if(x64 === undefined){
+ $FAIL("#6.4: new Date(1970, 0, 1, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1999, 11, 31, 23, 59, 59) !== "object") {
+ $FAIL("#7.1: typeof new Date(1999, 11, 31, 23, 59, 59) should be 'object'");
+}
+
+if (new Date(1999, 11, 31, 23, 59, 59) === undefined) {
+ $FAIL("#7.2: new Date(1999, 11, 31, 23, 59, 59) should not be undefined");
+}
+
+var x73 = new Date(1999, 11, 31, 23, 59, 59);
+if(typeof x73 !== "object"){
+ $FAIL("#7.3: typeof new Date(1999, 11, 31, 23, 59, 59) should be 'object'");
+}
+
+var x74 = new Date(1999, 11, 31, 23, 59, 59);
+if(x74 === undefined){
+ $FAIL("#7.4: new Date(1999, 11, 31, 23, 59, 59) should not be undefined");
+}
+
+if (typeof new Date(1999, 12, 1, 0, 0, 0) !== "object") {
+ $FAIL("#8.1: typeof new Date(1999, 12, 1, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1999, 12, 1, 0, 0, 0) === undefined) {
+ $FAIL("#8.2: new Date(1999, 12, 1, 0, 0, 0) should not be undefined");
+}
+
+var x83 = new Date(1999, 12, 1, 0, 0, 0);
+if(typeof x83 !== "object"){
+ $FAIL("#8.3: typeof new Date(1999, 12, 1, 0, 0, 0) should be 'object'");
+}
+
+var x84 = new Date(1999, 12, 1, 0, 0, 0);
+if(x84 === undefined){
+ $FAIL("#8.4: new Date(1999, 12, 1, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(2000, 0, 1, 0, 0, 0) !== "object") {
+ $FAIL("#9.1: typeof new Date(2000, 0, 1, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(2000, 0, 1, 0, 0, 0) === undefined) {
+ $FAIL("#9.2: new Date(2000, 0, 1, 0, 0, 0) should not be undefined");
+}
+
+var x93 = new Date(2000, 0, 1, 0, 0, 0);
+if(typeof x93 !== "object"){
+ $FAIL("#9.3: typeof new Date(2000, 0, 1, 0, 0, 0) should be 'object'");
+}
+
+var x94 = new Date(2000, 0, 1, 0, 0, 0);
+if(x94 === undefined){
+ $FAIL("#9.4: new Date(2000, 0, 1, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(2099, 11, 31, 23, 59, 59) !== "object") {
+ $FAIL("#10.1: typeof new Date(2099, 11, 31, 23, 59, 59) should be 'object'");
+}
+
+if (new Date(2099, 11, 31, 23, 59, 59) === undefined) {
+ $FAIL("#10.2: new Date(2099, 11, 31, 23, 59, 59) should not be undefined");
+}
+
+var x103 = new Date(2099, 11, 31, 23, 59, 59);
+if(typeof x103 !== "object"){
+ $FAIL("#10.3: typeof new Date(2099, 11, 31, 23, 59, 59) should be 'object'");
+}
+
+var x104 = new Date(2099, 11, 31, 23, 59, 59);
+if(x104 === undefined){
+ $FAIL("#10.4: new Date(2099, 11, 31, 23, 59, 59) should not be undefined");
+}
+
+if (typeof new Date(2099, 12, 1, 0, 0, 0) !== "object") {
+ $FAIL("#11.1: typeof new Date(2099, 12, 1, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(2099, 12, 1, 0, 0, 0) === undefined) {
+ $FAIL("#11.2: new Date(2099, 12, 1, 0, 0, 0) should not be undefined");
+}
+
+var x113 = new Date(2099, 12, 1, 0, 0, 0);
+if(typeof x113 !== "object"){
+ $FAIL("#11.3: typeof new Date(2099, 12, 1, 0, 0, 0) should be 'object'");
+}
+
+var x114 = new Date(2099, 12, 1, 0, 0, 0);
+if(x114 === undefined){
+ $FAIL("#11.4: new Date(2099, 12, 1, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(2100, 0, 1, 0, 0, 0) !== "object") {
+ $FAIL("#12.1: typeof new Date(2100, 0, 1, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(2100, 0, 1, 0, 0, 0) === undefined) {
+ $FAIL("#12.2: new Date(2100, 0, 1, 0, 0, 0) should not be undefined");
+}
+
+var x123 = new Date(2100, 0, 1, 0, 0, 0);
+if(typeof x123 !== "object"){
+ $FAIL("#12.3: typeof new Date(2100, 0, 1, 0, 0, 0) should be 'object'");
+}
+
+var x124 = new Date(2100, 0, 1, 0, 0, 0);
+if(x124 === undefined){
+ $FAIL("#12.4: new Date(2100, 0, 1, 0, 0, 0) should not be undefined");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T6.js
new file mode 100644
index 000000000..aff407b05
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A1_T6.js
@@ -0,0 +1,226 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A1_T6;
+ * @section: 15.9.3.1;
+ * @assertion: When Date is called as part of a new expression it is
+ * a constructor: it initializes the newly created object;
+ * @description: 7 arguments, (year, month, date, hours, minutes, seconds, ms);
+*/
+
+if (typeof new Date(1899, 11, 31, 23, 59, 59, 999) !== "object") {
+ $FAIL("#1.1: typeof new Date(1899, 11, 31, 23, 59, 59, 999) should be 'object'");
+}
+
+if (new Date(1899, 11, 31, 23, 59, 59, 999) === undefined) {
+ $FAIL("#1.2: new Date(1899, 11, 31, 23, 59, 59, 999) should not be undefined");
+}
+
+var x13 = new Date(1899, 11, 31, 23, 59, 59, 999);
+if(typeof x13 !== "object"){
+ $FAIL("#1.3: typeof new Date(1899, 11, 31, 23, 59, 59, 999) should be 'object'");
+}
+
+var x14 = new Date(1899, 11, 31, 23, 59, 59, 999);
+if(x14 === undefined){
+ $FAIL("#1.4: new Date(1899, 11, 31, 23, 59, 59, 999) should not be undefined");
+}
+
+if (typeof new Date(1899, 12, 1, 0, 0, 0, 0) !== "object") {
+ $FAIL("#2.1: typeof new Date(1899, 12, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1899, 12, 1, 0, 0, 0, 0) === undefined) {
+ $FAIL("#2.2: new Date(1899, 12, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+var x23 = new Date(1899, 12, 1, 0, 0, 0, 0);
+if(typeof x23 !== "object"){
+ $FAIL("#2.3: typeof new Date(1899, 12, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+var x24 = new Date(1899, 12, 1, 0, 0, 0, 0);
+if(x24 === undefined){
+ $FAIL("#2.4: new Date(1899, 12, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1900, 0, 1, 0, 0, 0, 0) !== "object") {
+ $FAIL("#3.1: typeof new Date(1900, 0, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1900, 0, 1, 0, 0, 0, 0) === undefined) {
+ $FAIL("#3.2: new Date(1900, 0, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+var x33 = new Date(1900, 0, 1, 0, 0, 0, 0);
+if(typeof x33 !== "object"){
+ $FAIL("#3.3: typeof new Date(1900, 0, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+var x34 = new Date(1900, 0, 1, 0, 0, 0, 0);
+if(x34 === undefined){
+ $FAIL("#3.4: new Date(1900, 0, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1969, 11, 31, 23, 59, 59, 999) !== "object") {
+ $FAIL("#4.1: typeof new Date(1969, 11, 31, 23, 59, 59, 999) should be 'object'");
+}
+
+if (new Date(1969, 11, 31, 23, 59, 59, 999) === undefined) {
+ $FAIL("#4.2: new Date(1969, 11, 31, 23, 59, 59, 999) should not be undefined");
+}
+
+var x43 = new Date(1969, 11, 31, 23, 59, 59, 999);
+if(typeof x43 !== "object"){
+ $FAIL("#4.3: typeof new Date(1969, 11, 31, 23, 59, 59, 999) should be 'object'");
+}
+
+var x44 = new Date(1969, 11, 31, 23, 59, 59, 999);
+if(x44 === undefined){
+ $FAIL("#4.4: new Date(1969, 11, 31, 23, 59, 59, 999) should not be undefined");
+}
+
+if (typeof new Date(1969, 12, 1, 0, 0, 0, 0) !== "object") {
+ $FAIL("#5.1: typeof new Date(1969, 12, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1969, 12, 1, 0, 0, 0, 0) === undefined) {
+ $FAIL("#5.2: new Date(1969, 12, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+var x53 = new Date(1969, 12, 1, 0, 0, 0, 0);
+if(typeof x53 !== "object"){
+ $FAIL("#5.3: typeof new Date(1969, 12, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+var x54 = new Date(1969, 12, 1, 0, 0, 0, 0);
+if(x54 === undefined){
+ $FAIL("#5.4: new Date(1969, 12, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1970, 0, 1, 0, 0, 0, 0) !== "object") {
+ $FAIL("#6.1: typeof new Date(1970, 0, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1970, 0, 1, 0, 0, 0, 0) === undefined) {
+ $FAIL("#6.2: new Date(1970, 0, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+var x63 = new Date(1970, 0, 1, 0, 0, 0, 0);
+if(typeof x63 !== "object"){
+ $FAIL("#6.3: typeof new Date(1970, 0, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+var x64 = new Date(1970, 0, 1, 0, 0, 0, 0);
+if(x64 === undefined){
+ $FAIL("#6.4: new Date(1970, 0, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(1999, 11, 31, 23, 59, 59, 999) !== "object") {
+ $FAIL("#7.1: typeof new Date(1999, 11, 31, 23, 59, 59, 999) should be 'object'");
+}
+
+if (new Date(1999, 11, 31, 23, 59, 59, 999) === undefined) {
+ $FAIL("#7.2: new Date(1999, 11, 31, 23, 59, 59, 999) should not be undefined");
+}
+
+var x73 = new Date(1999, 11, 31, 23, 59, 59, 999);
+if(typeof x73 !== "object"){
+ $FAIL("#7.3: typeof new Date(1999, 11, 31, 23, 59, 59, 999) should be 'object'");
+}
+
+var x74 = new Date(1999, 11, 31, 23, 59, 59, 999);
+if(x74 === undefined){
+ $FAIL("#7.4: new Date(1999, 11, 31, 23, 59, 59, 999) should not be undefined");
+}
+
+if (typeof new Date(1999, 12, 1, 0, 0, 0, 0) !== "object") {
+ $FAIL("#8.1: typeof new Date(1999, 12, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(1999, 12, 1, 0, 0, 0, 0) === undefined) {
+ $FAIL("#8.2: new Date(1999, 12, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+var x83 = new Date(1999, 12, 1, 0, 0, 0, 0);
+if(typeof x83 !== "object"){
+ $FAIL("#8.3: typeof new Date(1999, 12, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+var x84 = new Date(1999, 12, 1, 0, 0, 0, 0);
+if(x84 === undefined){
+ $FAIL("#8.4: new Date(1999, 12, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(2000, 0, 1, 0, 0, 0, 0) !== "object") {
+ $FAIL("#9.1: typeof new Date(2000, 0, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(2000, 0, 1, 0, 0, 0, 0) === undefined) {
+ $FAIL("#9.2: new Date(2000, 0, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+var x93 = new Date(2000, 0, 1, 0, 0, 0, 0);
+if(typeof x93 !== "object"){
+ $FAIL("#9.3: typeof new Date(2000, 0, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+var x94 = new Date(2000, 0, 1, 0, 0, 0, 0);
+if(x94 === undefined){
+ $FAIL("#9.4: new Date(2000, 0, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(2099, 11, 31, 23, 59, 59, 999) !== "object") {
+ $FAIL("#10.1: typeof new Date(2099, 11, 31, 23, 59, 59, 999) should be 'object'");
+}
+
+if (new Date(2099, 11, 31, 23, 59, 59, 999) === undefined) {
+ $FAIL("#10.2: new Date(2099, 11, 31, 23, 59, 59, 999) should not be undefined");
+}
+
+var x103 = new Date(2099, 11, 31, 23, 59, 59, 999);
+if(typeof x103 !== "object"){
+ $FAIL("#10.3: typeof new Date(2099, 11, 31, 23, 59, 59, 999) should be 'object'");
+}
+
+var x104 = new Date(2099, 11, 31, 23, 59, 59, 999);
+if(x104 === undefined){
+ $FAIL("#10.4: new Date(2099, 11, 31, 23, 59, 59, 999) should not be undefined");
+}
+
+if (typeof new Date(2099, 12, 1, 0, 0, 0, 0) !== "object") {
+ $FAIL("#11.1: typeof new Date(2099, 12, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(2099, 12, 1, 0, 0, 0, 0) === undefined) {
+ $FAIL("#11.2: new Date(2099, 12, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+var x113 = new Date(2099, 12, 1, 0, 0, 0, 0);
+if(typeof x113 !== "object"){
+ $FAIL("#11.3: typeof new Date(2099, 12, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+var x114 = new Date(2099, 12, 1, 0, 0, 0, 0);
+if(x114 === undefined){
+ $FAIL("#11.4: new Date(2099, 12, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+if (typeof new Date(2100, 0, 1, 0, 0, 0, 0) !== "object") {
+ $FAIL("#12.1: typeof new Date(2100, 0, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+if (new Date(2100, 0, 1, 0, 0, 0, 0) === undefined) {
+ $FAIL("#12.2: new Date(2100, 0, 1, 0, 0, 0, 0) should not be undefined");
+}
+
+var x123 = new Date(2100, 0, 1, 0, 0, 0, 0);
+if(typeof x123 !== "object"){
+ $FAIL("#12.3: typeof new Date(2100, 0, 1, 0, 0, 0, 0) should be 'object'");
+}
+
+var x124 = new Date(2100, 0, 1, 0, 0, 0, 0);
+if(x124 === undefined){
+ $FAIL("#12.4: new Date(2100, 0, 1, 0, 0, 0, 0) should not be undefined");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T1.js
new file mode 100644
index 000000000..fed34da13
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T1.js
@@ -0,0 +1,191 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A2_T1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Date prototype object, the one that is the
+ * initial value of Date.prototype;
+ * @description: 2 arguments, (year, month);
+*/
+
+var x11 = new Date(1899, 11);
+if (typeof x11.constructor.prototype !== "object") {
+ $FAIL("#1.1: typeof x11.constructor.prototype === 'object'");
+}
+
+var x12 = new Date(1899, 11);
+if (!Date.prototype.isPrototypeOf(x12)) {
+ $ERROR('#1.2: Date.prototype.isPrototypeOf(x12)');
+}
+
+var x13 = new Date(1899, 11);
+if(Date.prototype !== x13.constructor.prototype){
+ $FAIL("#1.3: Date.prototype === x13.constructor.prototype");
+}
+
+var x21 = new Date(1899, 12);
+if (typeof x21.constructor.prototype !== "object") {
+ $FAIL("#2.1: typeof x11.constructor.prototype === 'object'");
+}
+
+var x22 = new Date(1899, 12);
+if (!Date.prototype.isPrototypeOf(x22)) {
+ $ERROR('#2.2: Date.prototype.isPrototypeOf(x22)');
+}
+
+var x23 = new Date(1899, 12);
+if(Date.prototype !== x23.constructor.prototype){
+ $FAIL("#2.3: Date.prototype === x23.constructor.prototype");
+}
+
+var x31 = new Date(1900, 0);
+if (typeof x31.constructor.prototype !== "object") {
+ $FAIL("#3.1: typeof x31.constructor.prototype === 'object'");
+}
+
+var x32 = new Date(1900, 0);
+if (!Date.prototype.isPrototypeOf(x32)) {
+ $ERROR('#3.2: Date.prototype.isPrototypeOf(x32)');
+}
+
+var x33 = new Date(1900, 0);
+if(Date.prototype !== x33.constructor.prototype){
+ $FAIL("#3.3: Date.prototype === x33.constructor.prototype");
+}
+
+var x41 = new Date(1969, 11);
+if (typeof x41.constructor.prototype !== "object") {
+ $FAIL("#4.1: typeof x41.constructor.prototype === 'object'");
+}
+
+var x42 = new Date(1969, 11);
+if (!Date.prototype.isPrototypeOf(x42)) {
+ $ERROR('#4.2: Date.prototype.isPrototypeOf(x42)');
+}
+
+var x43 = new Date(1969, 11);
+if(Date.prototype !== x43.constructor.prototype){
+ $FAIL("#4.3: Date.prototype === x43.constructor.prototype");
+}
+
+var x51 = new Date(1969, 12);
+if (typeof x51.constructor.prototype !== "object") {
+ $FAIL("#5.1: typeof x51.constructor.prototype === 'object'");
+}
+
+var x52 = new Date(1969, 12);
+if (!Date.prototype.isPrototypeOf(x52)) {
+ $ERROR('#5.2: Date.prototype.isPrototypeOf(x52)');
+}
+
+var x53 = new Date(1969, 12);
+if(Date.prototype !== x53.constructor.prototype){
+ $FAIL("#5.3: Date.prototype === x53.constructor.prototype");
+}
+
+var x61 = new Date(1970, 0);
+if (typeof x61.constructor.prototype !== "object") {
+ $FAIL("#6.1: typeof x61.constructor.prototype === 'object'");
+}
+
+var x62 = new Date(1970, 0);
+if (!Date.prototype.isPrototypeOf(x62)) {
+ $ERROR('#6.2: Date.prototype.isPrototypeOf(x62)');
+}
+
+var x63 = new Date(1970, 0);
+if(Date.prototype !== x63.constructor.prototype){
+ $FAIL("#6.3: Date.prototype === x63.constructor.prototype");
+}
+
+var x71 = new Date(1999, 11);
+if (typeof x71.constructor.prototype !== "object") {
+ $FAIL("#7.1: typeof x71.constructor.prototype === 'object'");
+}
+
+var x72 = new Date(1999, 11);
+if (!Date.prototype.isPrototypeOf(x72)) {
+ $ERROR('#7.2: Date.prototype.isPrototypeOf(x72)');
+}
+
+var x73 = new Date(1999, 11);
+if(Date.prototype !== x73.constructor.prototype){
+ $FAIL("#7.3: Date.prototype === x73.constructor.prototype");
+}
+
+var x81 = new Date(1999, 12);
+if (typeof x81.constructor.prototype !== "object") {
+ $FAIL("#8.1: typeof x81.constructor.prototype === 'object'");
+}
+
+var x82 = new Date(1999, 12);
+if (!Date.prototype.isPrototypeOf(x82)) {
+ $ERROR('#8.2: Date.prototype.isPrototypeOf(x82)');
+}
+
+var x83 = new Date(1999, 12);
+if(Date.prototype !== x83.constructor.prototype){
+ $FAIL("#8.3: Date.prototype === x83.constructor.prototype");
+}
+
+var x91 = new Date(2000, 0);
+if (typeof x91.constructor.prototype !== "object") {
+ $FAIL("#9.1: typeof x91.constructor.prototype === 'object'");
+}
+
+var x92 = new Date(2000, 0);
+if (!Date.prototype.isPrototypeOf(x92)) {
+ $ERROR('#9.2: Date.prototype.isPrototypeOf(x92)');
+}
+
+var x93 = new Date(2000, 0);
+if(Date.prototype !== x93.constructor.prototype){
+ $FAIL("#9.3: Date.prototype === x93.constructor.prototype");
+}
+
+var x101 = new Date(2099, 11);
+if (typeof x101.constructor.prototype !== "object") {
+ $FAIL("#10.1: typeof x101.constructor.prototype === 'object'");
+}
+
+var x102 = new Date(2099, 11);
+if (!Date.prototype.isPrototypeOf(x102)) {
+ $ERROR('#10.2: Date.prototype.isPrototypeOf(x102)');
+}
+
+var x103 = new Date(2099, 11);
+if(Date.prototype !== x103.constructor.prototype){
+ $FAIL("#10.3: Date.prototype === x103.constructor.prototype");
+}
+
+var x111 = new Date(2099, 12);
+if (typeof x111.constructor.prototype !== "object") {
+ $FAIL("#11.1: typeof x111.constructor.prototype === 'object'");
+}
+
+var x112 = new Date(2099, 12);
+if (!Date.prototype.isPrototypeOf(x112)) {
+ $ERROR('#11.2: Date.prototype.isPrototypeOf(x112)');
+}
+
+var x113 = new Date(2099, 12);
+if(Date.prototype !== x113.constructor.prototype){
+ $FAIL("#11.3: Date.prototype === x113.constructor.prototype");
+}
+
+var x121 = new Date(2100, 0);
+if (typeof x121.constructor.prototype !== "object") {
+ $FAIL("#12.1: typeof x121.constructor.prototype === 'object'");
+}
+
+var x122 = new Date(2100, 0);
+if (!Date.prototype.isPrototypeOf(x122)) {
+ $ERROR('#12.2: Date.prototype.isPrototypeOf(x122)');
+}
+
+var x123 = new Date(2100, 0);
+if(Date.prototype !== x123.constructor.prototype){
+ $FAIL("#12.3: Date.prototype === x123.constructor.prototype");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T2.js
new file mode 100644
index 000000000..0f9f55da2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T2.js
@@ -0,0 +1,191 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A2_T2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Date prototype object, the one that is the
+ * initial value of Date.prototype;
+ * @description: 3 arguments, (year, month, date);
+*/
+
+var x11 = new Date(1899, 11, 31);
+if (typeof x11.constructor.prototype !== "object") {
+ $FAIL("#1.1: typeof x11.constructor.prototype === 'object'");
+}
+
+var x12 = new Date(1899, 11, 31);
+if (!Date.prototype.isPrototypeOf(x12)) {
+ $ERROR('#1.2: Date.prototype.isPrototypeOf(x12)');
+}
+
+var x13 = new Date(1899, 11, 31);
+if(Date.prototype !== x13.constructor.prototype){
+ $FAIL("#1.3: Date.prototype === x13.constructor.prototype");
+}
+
+var x21 = new Date(1899, 12, 1);
+if (typeof x21.constructor.prototype !== "object") {
+ $FAIL("#2.1: typeof x21.constructor.prototype === 'object'");
+}
+
+var x22 = new Date(1899, 12, 1);
+if (!Date.prototype.isPrototypeOf(x22)) {
+ $ERROR('#2.2: Date.prototype.isPrototypeOf(x22)');
+}
+
+var x23 = new Date(1899, 12, 1);
+if(Date.prototype !== x23.constructor.prototype){
+ $FAIL("#2.3: Date.prototype === x23.constructor.prototype");
+}
+
+var x31 = new Date(1900, 0, 1);
+if (typeof x31.constructor.prototype !== "object") {
+ $FAIL("#3.1: typeof x31.constructor.prototype === 'object'");
+}
+
+var x32 = new Date(1900, 0, 1);
+if (!Date.prototype.isPrototypeOf(x32)) {
+ $ERROR('#3.2: Date.prototype.isPrototypeOf(x32)');
+}
+
+var x33 = new Date(1900, 0, 1);
+if(Date.prototype !== x33.constructor.prototype){
+ $FAIL("#3.3: Date.prototype === x33.constructor.prototype");
+}
+
+var x41 = new Date(1969, 11, 31);
+if (typeof x41.constructor.prototype !== "object") {
+ $FAIL("#4.1: typeof x41.constructor.prototype === 'object'");
+}
+
+var x42 = new Date(1969, 11, 31);
+if (!Date.prototype.isPrototypeOf(x42)) {
+ $ERROR('#4.2: Date.prototype.isPrototypeOf(x42)');
+}
+
+var x43 = new Date(1969, 11, 31);
+if(Date.prototype !== x43.constructor.prototype){
+ $FAIL("#4.3: Date.prototype === x43.constructor.prototype");
+}
+
+var x51 = new Date(1969, 12, 1);
+if (typeof x51.constructor.prototype !== "object") {
+ $FAIL("#5.1: typeof x51.constructor.prototype === 'object'");
+}
+
+var x52 = new Date(1969, 12, 1);
+if (!Date.prototype.isPrototypeOf(x52)) {
+ $ERROR('#5.2: Date.prototype.isPrototypeOf(x52)');
+}
+
+var x53 = new Date(1969, 12, 1);
+if(Date.prototype !== x53.constructor.prototype){
+ $FAIL("#5.3: Date.prototype === x53.constructor.prototype");
+}
+
+var x61 = new Date(1970, 0, 1);
+if (typeof x61.constructor.prototype !== "object") {
+ $FAIL("#6.1: typeof x61.constructor.prototype === 'object'");
+}
+
+var x62 = new Date(1970, 0, 1);
+if (!Date.prototype.isPrototypeOf(x62)) {
+ $ERROR('#6.2: Date.prototype.isPrototypeOf(x62)');
+}
+
+var x63 = new Date(1970, 0, 1);
+if(Date.prototype !== x63.constructor.prototype){
+ $FAIL("#6.3: Date.prototype === x63.constructor.prototype");
+}
+
+var x71 = new Date(1999, 11, 31);
+if (typeof x71.constructor.prototype !== "object") {
+ $FAIL("#7.1: typeof x71.constructor.prototype === 'object'");
+}
+
+var x72 = new Date(1999, 11, 31);
+if (!Date.prototype.isPrototypeOf(x72)) {
+ $ERROR('#7.2: Date.prototype.isPrototypeOf(x72)');
+}
+
+var x73 = new Date(1999, 11, 31);
+if(Date.prototype !== x73.constructor.prototype){
+ $FAIL("#7.3: Date.prototype === x73.constructor.prototype");
+}
+
+var x81 = new Date(1999, 12, 1);
+if (typeof x81.constructor.prototype !== "object") {
+ $FAIL("#8.1: typeof x81.constructor.prototype === 'object'");
+}
+
+var x82 = new Date(1999, 12, 1);
+if (!Date.prototype.isPrototypeOf(x82)) {
+ $ERROR('#8.2: Date.prototype.isPrototypeOf(x82)');
+}
+
+var x83 = new Date(1999, 12, 1);
+if(Date.prototype !== x83.constructor.prototype){
+ $FAIL("#8.3: Date.prototype === x83.constructor.prototype");
+}
+
+var x91 = new Date(2000, 0, 1);
+if (typeof x91.constructor.prototype !== "object") {
+ $FAIL("#9.1: typeof x91.constructor.prototype === 'object'");
+}
+
+var x92 = new Date(2000, 0, 1);
+if (!Date.prototype.isPrototypeOf(x92)) {
+ $ERROR('#9.2: Date.prototype.isPrototypeOf(x92)');
+}
+
+var x93 = new Date(2000, 0, 1);
+if(Date.prototype !== x93.constructor.prototype){
+ $FAIL("#9.3: Date.prototype === x93.constructor.prototype");
+}
+
+var x101 = new Date(2099, 11, 31);
+if (typeof x101.constructor.prototype !== "object") {
+ $FAIL("#10.1: typeof x101.constructor.prototype === 'object'");
+}
+
+var x102 = new Date(2099, 11, 31);
+if (!Date.prototype.isPrototypeOf(x102)) {
+ $ERROR('#10.2: Date.prototype.isPrototypeOf(x102)');
+}
+
+var x103 = new Date(2099, 11, 31);
+if(Date.prototype !== x103.constructor.prototype){
+ $FAIL("#10.3: Date.prototype === x103.constructor.prototype");
+}
+
+var x111 = new Date(2099, 12, 1);
+if (typeof x111.constructor.prototype !== "object") {
+ $FAIL("#11.1: typeof x111.constructor.prototype === 'object'");
+}
+
+var x112 = new Date(2099, 12, 1);
+if (!Date.prototype.isPrototypeOf(x112)) {
+ $ERROR('#11.2: Date.prototype.isPrototypeOf(x112)');
+}
+
+var x113 = new Date(2099, 12, 1);
+if(Date.prototype !== x113.constructor.prototype){
+ $FAIL("#11.3: Date.prototype === x113.constructor.prototype");
+}
+
+var x121 = new Date(2100, 0, 1);
+if (typeof x121.constructor.prototype !== "object") {
+ $FAIL("#12.1: typeof x121.constructor.prototype === 'object'");
+}
+
+var x122 = new Date(2100, 0, 1);
+if (!Date.prototype.isPrototypeOf(x122)) {
+ $ERROR('#12.2: Date.prototype.isPrototypeOf(x122)');
+}
+
+var x123 = new Date(2100, 0, 1);
+if(Date.prototype !== x123.constructor.prototype){
+ $FAIL("#12.3: Date.prototype === x123.constructor.prototype");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T3.js
new file mode 100644
index 000000000..c0e1286aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T3.js
@@ -0,0 +1,191 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A2_T3;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Date prototype object, the one that is the
+ * initial value of Date.prototype;
+ * @description: 4 arguments, (year, month, date, hours);
+*/
+
+var x11 = new Date(1899, 11, 31, 23);
+if (typeof x11.constructor.prototype !== "object") {
+ $FAIL("#1.1: typeof x11.constructor.prototype === 'object'");
+}
+
+var x12 = new Date(1899, 11, 31, 23);
+if (!Date.prototype.isPrototypeOf(x12)) {
+ $ERROR('#1.2: Date.prototype.isPrototypeOf(x12)');
+}
+
+var x13 = new Date(1899, 11, 31, 23);
+if(Date.prototype !== x13.constructor.prototype){
+ $FAIL("#1.3: Date.prototype === x13.constructor.prototype");
+}
+
+var x21 = new Date(1899, 12, 1, 0);
+if (typeof x21.constructor.prototype !== "object") {
+ $FAIL("#2.1: typeof x21.constructor.prototype === 'object'");
+}
+
+var x22 = new Date(1899, 12, 1, 0);
+if (!Date.prototype.isPrototypeOf(x22)) {
+ $ERROR('#2.2: Date.prototype.isPrototypeOf(x22)');
+}
+
+var x23 = new Date(1899, 12, 1, 0);
+if(Date.prototype !== x23.constructor.prototype){
+ $FAIL("#2.3: Date.prototype === x23.constructor.prototype");
+}
+
+var x31 = new Date(1900, 0, 1, 0);
+if (typeof x31.constructor.prototype !== "object") {
+ $FAIL("#3.1: typeof x31.constructor.prototype === 'object'");
+}
+
+var x32 = new Date(1900, 0, 1, 0);
+if (!Date.prototype.isPrototypeOf(x32)) {
+ $ERROR('#3.2: Date.prototype.isPrototypeOf(x32)');
+}
+
+var x33 = new Date(1900, 0, 1, 0);
+if(Date.prototype !== x33.constructor.prototype){
+ $FAIL("#3.3: Date.prototype === x33.constructor.prototype");
+}
+
+var x41 = new Date(1969, 11, 31, 23);
+if (typeof x41.constructor.prototype !== "object") {
+ $FAIL("#4.1: typeof x41.constructor.prototype === 'object'");
+}
+
+var x42 = new Date(1969, 11, 31, 23);
+if (!Date.prototype.isPrototypeOf(x42)) {
+ $ERROR('#4.2: Date.prototype.isPrototypeOf(x42)');
+}
+
+var x43 = new Date(1969, 11, 31, 23);
+if(Date.prototype !== x43.constructor.prototype){
+ $FAIL("#4.3: Date.prototype === x43.constructor.prototype");
+}
+
+var x51 = new Date(1969, 12, 1, 0);
+if (typeof x51.constructor.prototype !== "object") {
+ $FAIL("#5.1: typeof x51.constructor.prototype === 'object'");
+}
+
+var x52 = new Date(1969, 12, 1, 0);
+if (!Date.prototype.isPrototypeOf(x52)) {
+ $ERROR('#5.2: Date.prototype.isPrototypeOf(x52)');
+}
+
+var x53 = new Date(1969, 12, 1, 0);
+if(Date.prototype !== x53.constructor.prototype){
+ $FAIL("#5.3: Date.prototype === x53.constructor.prototype");
+}
+
+var x61 = new Date(1970, 0, 1, 0);
+if (typeof x61.constructor.prototype !== "object") {
+ $FAIL("#6.1: typeof x61.constructor.prototype === 'object'");
+}
+
+var x62 = new Date(1970, 0, 1, 0);
+if (!Date.prototype.isPrototypeOf(x62)) {
+ $ERROR('#6.2: Date.prototype.isPrototypeOf(x62)');
+}
+
+var x63 = new Date(1970, 0, 1, 0);
+if(Date.prototype !== x63.constructor.prototype){
+ $FAIL("#6.3: Date.prototype === x63.constructor.prototype");
+}
+
+var x71 = new Date(1999, 11, 31, 23);
+if (typeof x71.constructor.prototype !== "object") {
+ $FAIL("#7.1: typeof x71.constructor.prototype === 'object'");
+}
+
+var x72 = new Date(1999, 11, 31, 23);
+if (!Date.prototype.isPrototypeOf(x72)) {
+ $ERROR('#7.2: Date.prototype.isPrototypeOf(x72)');
+}
+
+var x73 = new Date(1999, 11, 31, 23);
+if(Date.prototype !== x73.constructor.prototype){
+ $FAIL("#7.3: Date.prototype === x73.constructor.prototype");
+}
+
+var x81 = new Date(1999, 12, 1, 0);
+if (typeof x81.constructor.prototype !== "object") {
+ $FAIL("#8.1: typeof x81.constructor.prototype === 'object'");
+}
+
+var x82 = new Date(1999, 12, 1, 0);
+if (!Date.prototype.isPrototypeOf(x82)) {
+ $ERROR('#8.2: Date.prototype.isPrototypeOf(x82)');
+}
+
+var x83 = new Date(1999, 12, 1, 0);
+if(Date.prototype !== x83.constructor.prototype){
+ $FAIL("#8.3: Date.prototype === x83.constructor.prototype");
+}
+
+var x91 = new Date(2000, 0, 1, 0);
+if (typeof x91.constructor.prototype !== "object") {
+ $FAIL("#9.1: typeof x91.constructor.prototype === 'object'");
+}
+
+var x92 = new Date(2000, 0, 1, 0);
+if (!Date.prototype.isPrototypeOf(x92)) {
+ $ERROR('#9.2: Date.prototype.isPrototypeOf(x92)');
+}
+
+var x93 = new Date(2000, 0, 1, 0);
+if(Date.prototype !== x93.constructor.prototype){
+ $FAIL("#9.3: Date.prototype === x93.constructor.prototype");
+}
+
+var x101 = new Date(2099, 11, 31, 23);
+if (typeof x101.constructor.prototype !== "object") {
+ $FAIL("#10.1: typeof x101.constructor.prototype === 'object'");
+}
+
+var x102 = new Date(2099, 11, 31, 23);
+if (!Date.prototype.isPrototypeOf(x102)) {
+ $ERROR('#10.2: Date.prototype.isPrototypeOf(x102)');
+}
+
+var x103 = new Date(2099, 11, 31, 23);
+if(Date.prototype !== x103.constructor.prototype){
+ $FAIL("#10.3: Date.prototype === x103.constructor.prototype");
+}
+
+var x111 = new Date(2099, 12, 1, 0);
+if (typeof x111.constructor.prototype !== "object") {
+ $FAIL("#11.1: typeof x111.constructor.prototype === 'object'");
+}
+
+var x112 = new Date(2099, 12, 1, 0);
+if (!Date.prototype.isPrototypeOf(x112)) {
+ $ERROR('#11.2: Date.prototype.isPrototypeOf(x112)');
+}
+
+var x113 = new Date(2099, 12, 1, 0);
+if(Date.prototype !== x113.constructor.prototype){
+ $FAIL("#11.3: Date.prototype === x113.constructor.prototype");
+}
+
+var x121 = new Date(2100, 0, 1, 0);
+if (typeof x121.constructor.prototype !== "object") {
+ $FAIL("#12.1: typeof x121.constructor.prototype === 'object'");
+}
+
+var x122 = new Date(2100, 0, 1, 0);
+if (!Date.prototype.isPrototypeOf(x122)) {
+ $ERROR('#12.2: Date.prototype.isPrototypeOf(x122)');
+}
+
+var x123 = new Date(2100, 0, 1, 0);
+if(Date.prototype !== x123.constructor.prototype){
+ $FAIL("#12.3: Date.prototype === x123.constructor.prototype");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T4.js
new file mode 100644
index 000000000..a2dbeeba4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T4.js
@@ -0,0 +1,191 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A2_T4;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Date prototype object, the one that is the
+ * initial value of Date.prototype;
+ * @description: 5 arguments, (year, month, date, hours, minutes);
+*/
+
+var x11 = new Date(1899, 11, 31, 23, 59);
+if (typeof x11.constructor.prototype !== "object") {
+ $FAIL("#1.1: typeof x11.constructor.prototype === 'object'");
+}
+
+var x12 = new Date(1899, 11, 31, 23, 59);
+if (!Date.prototype.isPrototypeOf(x12)) {
+ $ERROR('#1.2: Date.prototype.isPrototypeOf(x12)');
+}
+
+var x13 = new Date(1899, 11, 31, 23, 59);
+if(Date.prototype !== x13.constructor.prototype){
+ $FAIL("#1.3: Date.prototype === x13.constructor.prototype");
+}
+
+var x21 = new Date(1899, 12, 1, 0, 0);
+if (typeof x21.constructor.prototype !== "object") {
+ $FAIL("#2.1: typeof x21.constructor.prototype === 'object'");
+}
+
+var x22 = new Date(1899, 12, 1, 0, 0);
+if (!Date.prototype.isPrototypeOf(x22)) {
+ $ERROR('#2.2: Date.prototype.isPrototypeOf(x22)');
+}
+
+var x23 = new Date(1899, 12, 1, 0, 0);
+if(Date.prototype !== x23.constructor.prototype){
+ $FAIL("#2.3: Date.prototype === x23.constructor.prototype");
+}
+
+var x31 = new Date(1900, 0, 1, 0, 0);
+if (typeof x31.constructor.prototype !== "object") {
+ $FAIL("#3.1: typeof x31.constructor.prototype === 'object'");
+}
+
+var x32 = new Date(1900, 0, 1, 0, 0);
+if (!Date.prototype.isPrototypeOf(x32)) {
+ $ERROR('#3.2: Date.prototype.isPrototypeOf(x32)');
+}
+
+var x33 = new Date(1900, 0, 1, 0, 0);
+if(Date.prototype !== x33.constructor.prototype){
+ $FAIL("#3.3: Date.prototype === x33.constructor.prototype");
+}
+
+var x41 = new Date(1969, 11, 31, 23, 59);
+if (typeof x41.constructor.prototype !== "object") {
+ $FAIL("#4.1: typeof x41.constructor.prototype === 'object'");
+}
+
+var x42 = new Date(1969, 11, 31, 23, 59);
+if (!Date.prototype.isPrototypeOf(x42)) {
+ $ERROR('#4.2: Date.prototype.isPrototypeOf(x42)');
+}
+
+var x43 = new Date(1969, 11, 31, 23, 59);
+if(Date.prototype !== x43.constructor.prototype){
+ $FAIL("#4.3: Date.prototype === x43.constructor.prototype");
+}
+
+var x51 = new Date(1969, 12, 1, 0, 0);
+if (typeof x51.constructor.prototype !== "object") {
+ $FAIL("#5.1: typeof x51.constructor.prototype === 'object'");
+}
+
+var x52 = new Date(1969, 12, 1, 0, 0);
+if (!Date.prototype.isPrototypeOf(x52)) {
+ $ERROR('#5.2: Date.prototype.isPrototypeOf(x52)');
+}
+
+var x53 = new Date(1969, 12, 1, 0, 0);
+if(Date.prototype !== x53.constructor.prototype){
+ $FAIL("#5.3: Date.prototype === x53.constructor.prototype");
+}
+
+var x61 = new Date(1970, 0, 1, 0, 0);
+if (typeof x61.constructor.prototype !== "object") {
+ $FAIL("#6.1: typeof x61.constructor.prototype === 'object'");
+}
+
+var x62 = new Date(1970, 0, 1, 0, 0);
+if (!Date.prototype.isPrototypeOf(x62)) {
+ $ERROR('#6.2: Date.prototype.isPrototypeOf(x62)');
+}
+
+var x63 = new Date(1970, 0, 1, 0, 0);
+if(Date.prototype !== x63.constructor.prototype){
+ $FAIL("#6.3: Date.prototype === x63.constructor.prototype");
+}
+
+var x71 = new Date(1999, 11, 31, 23, 59);
+if (typeof x71.constructor.prototype !== "object") {
+ $FAIL("#7.1: typeof x71.constructor.prototype === 'object'");
+}
+
+var x72 = new Date(1999, 11, 31, 23, 59);
+if (!Date.prototype.isPrototypeOf(x72)) {
+ $ERROR('#7.2: Date.prototype.isPrototypeOf(x72)');
+}
+
+var x73 = new Date(1999, 11, 31, 23, 59);
+if(Date.prototype !== x73.constructor.prototype){
+ $FAIL("#7.3: Date.prototype === x73.constructor.prototype");
+}
+
+var x81 = new Date(1999, 12, 1, 0, 0);
+if (typeof x81.constructor.prototype !== "object") {
+ $FAIL("#8.1: typeof x81.constructor.prototype === 'object'");
+}
+
+var x82 = new Date(1999, 12, 1, 0, 0);
+if (!Date.prototype.isPrototypeOf(x82)) {
+ $ERROR('#8.2: Date.prototype.isPrototypeOf(x82)');
+}
+
+var x83 = new Date(1999, 12, 1, 0, 0);
+if(Date.prototype !== x83.constructor.prototype){
+ $FAIL("#8.3: Date.prototype === x83.constructor.prototype");
+}
+
+var x91 = new Date(2000, 0, 1, 0, 0);
+if (typeof x91.constructor.prototype !== "object") {
+ $FAIL("#9.1: typeof x91.constructor.prototype === 'object'");
+}
+
+var x92 = new Date(2000, 0, 1, 0, 0);
+if (!Date.prototype.isPrototypeOf(x92)) {
+ $ERROR('#9.2: Date.prototype.isPrototypeOf(x92)');
+}
+
+var x93 = new Date(2000, 0, 1, 0, 0);
+if(Date.prototype !== x93.constructor.prototype){
+ $FAIL("#9.3: Date.prototype === x93.constructor.prototype");
+}
+
+var x101 = new Date(2099, 11, 31, 23, 59);
+if (typeof x101.constructor.prototype !== "object") {
+ $FAIL("#10.1: typeof x101.constructor.prototype === 'object'");
+}
+
+var x102 = new Date(2099, 11, 31, 23, 59);
+if (!Date.prototype.isPrototypeOf(x102)) {
+ $ERROR('#10.2: Date.prototype.isPrototypeOf(x102)');
+}
+
+var x103 = new Date(2099, 11, 31, 23, 59);
+if(Date.prototype !== x103.constructor.prototype){
+ $FAIL("#10.3: Date.prototype === x103.constructor.prototype");
+}
+
+var x111 = new Date(2099, 12, 1, 0, 0);
+if (typeof x111.constructor.prototype !== "object") {
+ $FAIL("#11.1: typeof x111.constructor.prototype === 'object'");
+}
+
+var x112 = new Date(2099, 12, 1, 0, 0);
+if (!Date.prototype.isPrototypeOf(x112)) {
+ $ERROR('#11.2: Date.prototype.isPrototypeOf(x112)');
+}
+
+var x113 = new Date(2099, 12, 1, 0, 0);
+if(Date.prototype !== x113.constructor.prototype){
+ $FAIL("#11.3: Date.prototype === x113.constructor.prototype");
+}
+
+var x121 = new Date(2100, 0, 1, 0, 0);
+if (typeof x121.constructor.prototype !== "object") {
+ $FAIL("#12.1: typeof x121.constructor.prototype === 'object'");
+}
+
+var x122 = new Date(2100, 0, 1, 0, 0);
+if (!Date.prototype.isPrototypeOf(x122)) {
+ $ERROR('#12.2: Date.prototype.isPrototypeOf(x122)');
+}
+
+var x123 = new Date(2100, 0, 1, 0, 0);
+if(Date.prototype !== x123.constructor.prototype){
+ $FAIL("#12.3: Date.prototype === x123.constructor.prototype");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T5.js
new file mode 100644
index 000000000..bbc366156
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T5.js
@@ -0,0 +1,191 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A2_T5;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Date prototype object, the one that is the
+ * initial value of Date.prototype;
+ * @description: 6 arguments, (year, month, date, hours, minutes, seconds);
+*/
+
+var x11 = new Date(1899, 11, 31, 23, 59, 59);
+if (typeof x11.constructor.prototype !== "object") {
+ $FAIL("#1.1: typeof x11.constructor.prototype === 'object'");
+}
+
+var x12 = new Date(1899, 11, 31, 23, 59, 59);
+if (!Date.prototype.isPrototypeOf(x12)) {
+ $ERROR('#1.2: Date.prototype.isPrototypeOf(x12)');
+}
+
+var x13 = new Date(1899, 11, 31, 23, 59, 59);
+if(Date.prototype !== x13.constructor.prototype){
+ $FAIL("#1.3: Date.prototype === x13.constructor.prototype");
+}
+
+var x21 = new Date(1899, 12, 1, 0, 0, 0);
+if (typeof x21.constructor.prototype !== "object") {
+ $FAIL("#2.1: typeof x21.constructor.prototype === 'object'");
+}
+
+var x22 = new Date(1899, 12, 1, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x22)) {
+ $ERROR('#2.2: Date.prototype.isPrototypeOf(x22)');
+}
+
+var x23 = new Date(1899, 12, 1, 0, 0, 0);
+if(Date.prototype !== x23.constructor.prototype){
+ $FAIL("#2.3: Date.prototype === x23.constructor.prototype");
+}
+
+var x31 = new Date(1900, 0, 1, 0, 0, 0);
+if (typeof x31.constructor.prototype !== "object") {
+ $FAIL("#3.1: typeof x31.constructor.prototype === 'object'");
+}
+
+var x32 = new Date(1900, 0, 1, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x32)) {
+ $ERROR('#3.2: Date.prototype.isPrototypeOf(x32)');
+}
+
+var x33 = new Date(1900, 0, 1, 0, 0, 0);
+if(Date.prototype !== x33.constructor.prototype){
+ $FAIL("#3.3: Date.prototype === x33.constructor.prototype");
+}
+
+var x41 = new Date(1969, 11, 31, 23, 59, 59);
+if (typeof x41.constructor.prototype !== "object") {
+ $FAIL("#4.1: typeof x41.constructor.prototype === 'object'");
+}
+
+var x42 = new Date(1969, 11, 31, 23, 59, 59);
+if (!Date.prototype.isPrototypeOf(x42)) {
+ $ERROR('#4.2: Date.prototype.isPrototypeOf(x42)');
+}
+
+var x43 = new Date(1969, 11, 31, 23, 59, 59);
+if(Date.prototype !== x43.constructor.prototype){
+ $FAIL("#4.3: Date.prototype === x43.constructor.prototype");
+}
+
+var x51 = new Date(1969, 12, 1, 0, 0, 0);
+if (typeof x51.constructor.prototype !== "object") {
+ $FAIL("#5.1: typeof x51.constructor.prototype === 'object'");
+}
+
+var x52 = new Date(1969, 12, 1, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x52)) {
+ $ERROR('#5.2: Date.prototype.isPrototypeOf(x52)');
+}
+
+var x53 = new Date(1969, 12, 1, 0, 0, 0);
+if(Date.prototype !== x53.constructor.prototype){
+ $FAIL("#5.3: Date.prototype === x53.constructor.prototype");
+}
+
+var x61 = new Date(1970, 0, 1, 0, 0, 0);
+if (typeof x61.constructor.prototype !== "object") {
+ $FAIL("#6.1: typeof x61.constructor.prototype === 'object'");
+}
+
+var x62 = new Date(1970, 0, 1, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x62)) {
+ $ERROR('#6.2: Date.prototype.isPrototypeOf(x62)');
+}
+
+var x63 = new Date(1970, 0, 1, 0, 0, 0);
+if(Date.prototype !== x63.constructor.prototype){
+ $FAIL("#6.3: Date.prototype === x63.constructor.prototype");
+}
+
+var x71 = new Date(1999, 11, 31, 23, 59, 59);
+if (typeof x71.constructor.prototype !== "object") {
+ $FAIL("#7.1: typeof x71.constructor.prototype === 'object'");
+}
+
+var x72 = new Date(1999, 11, 31, 23, 59, 59);
+if (!Date.prototype.isPrototypeOf(x72)) {
+ $ERROR('#7.2: Date.prototype.isPrototypeOf(x72)');
+}
+
+var x73 = new Date(1999, 11, 31, 23, 59, 59);
+if(Date.prototype !== x73.constructor.prototype){
+ $FAIL("#7.3: Date.prototype === x73.constructor.prototype");
+}
+
+var x81 = new Date(1999, 12, 1, 0, 0, 0);
+if (typeof x81.constructor.prototype !== "object") {
+ $FAIL("#8.1: typeof x81.constructor.prototype === 'object'");
+}
+
+var x82 = new Date(1999, 12, 1, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x82)) {
+ $ERROR('#8.2: Date.prototype.isPrototypeOf(x82)');
+}
+
+var x83 = new Date(1999, 12, 1, 0, 0, 0);
+if(Date.prototype !== x83.constructor.prototype){
+ $FAIL("#8.3: Date.prototype === x83.constructor.prototype");
+}
+
+var x91 = new Date(2000, 0, 1, 0, 0, 0);
+if (typeof x91.constructor.prototype !== "object") {
+ $FAIL("#9.1: typeof x91.constructor.prototype === 'object'");
+}
+
+var x92 = new Date(2000, 0, 1, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x92)) {
+ $ERROR('#9.2: Date.prototype.isPrototypeOf(x92)');
+}
+
+var x93 = new Date(2000, 0, 1, 0, 0, 0);
+if(Date.prototype !== x93.constructor.prototype){
+ $FAIL("#9.3: Date.prototype === x93.constructor.prototype");
+}
+
+var x101 = new Date(2099, 11, 31, 23, 59, 59);
+if (typeof x101.constructor.prototype !== "object") {
+ $FAIL("#10.1: typeof x101.constructor.prototype === 'object'");
+}
+
+var x102 = new Date(2099, 11, 31, 23, 59, 59);
+if (!Date.prototype.isPrototypeOf(x102)) {
+ $ERROR('#10.2: Date.prototype.isPrototypeOf(x102)');
+}
+
+var x103 = new Date(2099, 11, 31, 23, 59, 59);
+if(Date.prototype !== x103.constructor.prototype){
+ $FAIL("#10.3: Date.prototype === x103.constructor.prototype");
+}
+
+var x111 = new Date(2099, 12, 1, 0, 0, 0);
+if (typeof x111.constructor.prototype !== "object") {
+ $FAIL("#11.1: typeof x111.constructor.prototype === 'object'");
+}
+
+var x112 = new Date(2099, 12, 1, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x112)) {
+ $ERROR('#11.2: Date.prototype.isPrototypeOf(x112)');
+}
+
+var x113 = new Date(2099, 12, 1, 0, 0, 0);
+if(Date.prototype !== x113.constructor.prototype){
+ $FAIL("#11.3: Date.prototype === x113.constructor.prototype");
+}
+
+var x121 = new Date(2100, 0, 1, 0, 0, 0);
+if (typeof x121.constructor.prototype !== "object") {
+ $FAIL("#12.1: typeof x121.constructor.prototype === 'object'");
+}
+
+var x122 = new Date(2100, 0, 1, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x122)) {
+ $ERROR('#12.2: Date.prototype.isPrototypeOf(x122)');
+}
+
+var x123 = new Date(2100, 0, 1, 0, 0, 0);
+if(Date.prototype !== x123.constructor.prototype){
+ $FAIL("#12.3: Date.prototype === x123.constructor.prototype");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T6.js
new file mode 100644
index 000000000..8b8a6bb54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A2_T6.js
@@ -0,0 +1,191 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A2_T6;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Date prototype object, the one that is the
+ * initial value of Date.prototype;
+ * @description: 7 arguments, (year, month, date, hours, minutes, seconds, ms);
+*/
+
+var x11 = new Date(1899, 11, 31, 23, 59, 59, 999);
+if (typeof x11.constructor.prototype !== "object") {
+ $FAIL("#1.1: typeof x11.constructor.prototype === 'object'");
+}
+
+var x12 = new Date(1899, 11, 31, 23, 59, 59, 999);
+if (!Date.prototype.isPrototypeOf(x12)) {
+ $ERROR('#1.2: Date.prototype.isPrototypeOf(x12)');
+}
+
+var x13 = new Date(1899, 11, 31, 23, 59, 59, 999);
+if(Date.prototype !== x13.constructor.prototype){
+ $FAIL("#1.3: Date.prototype === x13.constructor.prototype");
+}
+
+var x21 = new Date(1899, 12, 1, 0, 0, 0, 0);
+if (typeof x21.constructor.prototype !== "object") {
+ $FAIL("#2.1: typeof x21.constructor.prototype === 'object'");
+}
+
+var x22 = new Date(1899, 12, 1, 0, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x22)) {
+ $ERROR('#2.2: Date.prototype.isPrototypeOf(x22)');
+}
+
+var x23 = new Date(1899, 12, 1, 0, 0, 0, 0);
+if(Date.prototype !== x23.constructor.prototype){
+ $FAIL("#2.3: Date.prototype === x23.constructor.prototype");
+}
+
+var x31 = new Date(1900, 0, 1, 0, 0, 0, 0);
+if (typeof x31.constructor.prototype !== "object") {
+ $FAIL("#3.1: typeof x31.constructor.prototype === 'object'");
+}
+
+var x32 = new Date(1900, 0, 1, 0, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x32)) {
+ $ERROR('#3.2: Date.prototype.isPrototypeOf(x32)');
+}
+
+var x33 = new Date(1900, 0, 1, 0, 0, 0, 0);
+if(Date.prototype !== x33.constructor.prototype){
+ $FAIL("#3.3: Date.prototype === x33.constructor.prototype");
+}
+
+var x41 = new Date(1969, 11, 31, 23, 59, 59, 999);
+if (typeof x41.constructor.prototype !== "object") {
+ $FAIL("#4.1: typeof x41.constructor.prototype === 'object'");
+}
+
+var x42 = new Date(1969, 11, 31, 23, 59, 59, 999);
+if (!Date.prototype.isPrototypeOf(x42)) {
+ $ERROR('#4.2: Date.prototype.isPrototypeOf(x42)');
+}
+
+var x43 = new Date(1969, 11, 31, 23, 59, 59, 999);
+if(Date.prototype !== x43.constructor.prototype){
+ $FAIL("#4.3: Date.prototype === x43.constructor.prototype");
+}
+
+var x51 = new Date(1969, 12, 1, 0, 0, 0, 0);
+if (typeof x51.constructor.prototype !== "object") {
+ $FAIL("#5.1: typeof x51.constructor.prototype === 'object'");
+}
+
+var x52 = new Date(1969, 12, 1, 0, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x52)) {
+ $ERROR('#5.2: Date.prototype.isPrototypeOf(x52)');
+}
+
+var x53 = new Date(1969, 12, 1, 0, 0, 0, 0);
+if(Date.prototype !== x53.constructor.prototype){
+ $FAIL("#5.3: Date.prototype === x53.constructor.prototype");
+}
+
+var x61 = new Date(1970, 0, 1, 0, 0, 0, 0);
+if (typeof x61.constructor.prototype !== "object") {
+ $FAIL("#6.1: typeof x61.constructor.prototype === 'object'");
+}
+
+var x62 = new Date(1970, 0, 1, 0, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x62)) {
+ $ERROR('#6.2: Date.prototype.isPrototypeOf(x62)');
+}
+
+var x63 = new Date(1970, 0, 1, 0, 0, 0, 0);
+if(Date.prototype !== x63.constructor.prototype){
+ $FAIL("#6.3: Date.prototype === x63.constructor.prototype");
+}
+
+var x71 = new Date(1999, 11, 31, 23, 59, 59, 999);
+if (typeof x71.constructor.prototype !== "object") {
+ $FAIL("#7.1: typeof x71.constructor.prototype === 'object'");
+}
+
+var x72 = new Date(1999, 11, 31, 23, 59, 59, 999);
+if (!Date.prototype.isPrototypeOf(x72)) {
+ $ERROR('#7.2: Date.prototype.isPrototypeOf(x72)');
+}
+
+var x73 = new Date(1999, 11, 31, 23, 59, 59, 999);
+if(Date.prototype !== x73.constructor.prototype){
+ $FAIL("#7.3: Date.prototype === x73.constructor.prototype");
+}
+
+var x81 = new Date(1999, 12, 1, 0, 0, 0, 0);
+if (typeof x81.constructor.prototype !== "object") {
+ $FAIL("#8.1: typeof x81.constructor.prototype === 'object'");
+}
+
+var x82 = new Date(1999, 12, 1, 0, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x82)) {
+ $ERROR('#8.2: Date.prototype.isPrototypeOf(x82)');
+}
+
+var x83 = new Date(1999, 12, 1, 0, 0, 0, 0);
+if(Date.prototype !== x83.constructor.prototype){
+ $FAIL("#8.3: Date.prototype === x83.constructor.prototype");
+}
+
+var x91 = new Date(2000, 0, 1, 0, 0, 0, 0);
+if (typeof x91.constructor.prototype !== "object") {
+ $FAIL("#9.1: typeof x91.constructor.prototype === 'object'");
+}
+
+var x92 = new Date(2000, 0, 1, 0, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x92)) {
+ $ERROR('#9.2: Date.prototype.isPrototypeOf(x92)');
+}
+
+var x93 = new Date(2000, 0, 1, 0, 0, 0, 0);
+if(Date.prototype !== x93.constructor.prototype){
+ $FAIL("#9.3: Date.prototype === x93.constructor.prototype");
+}
+
+var x101 = new Date(2099, 11, 31, 23, 59, 59, 999);
+if (typeof x101.constructor.prototype !== "object") {
+ $FAIL("#10.1: typeof x101.constructor.prototype === 'object'");
+}
+
+var x102 = new Date(2099, 11, 31, 23, 59, 59, 999);
+if (!Date.prototype.isPrototypeOf(x102)) {
+ $ERROR('#10.2: Date.prototype.isPrototypeOf(x102)');
+}
+
+var x103 = new Date(2099, 11, 31, 23, 59, 59, 999);
+if(Date.prototype !== x103.constructor.prototype){
+ $FAIL("#10.3: Date.prototype === x103.constructor.prototype");
+}
+
+var x111 = new Date(2099, 12, 1, 0, 0, 0, 0);
+if (typeof x111.constructor.prototype !== "object") {
+ $FAIL("#11.1: typeof x111.constructor.prototype === 'object'");
+}
+
+var x112 = new Date(2099, 12, 1, 0, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x112)) {
+ $ERROR('#11.2: Date.prototype.isPrototypeOf(x112)');
+}
+
+var x113 = new Date(2099, 12, 1, 0, 0, 0, 0);
+if(Date.prototype !== x113.constructor.prototype){
+ $FAIL("#11.3: Date.prototype === x113.constructor.prototype");
+}
+
+var x121 = new Date(2100, 0, 1, 0, 0, 0, 0);
+if (typeof x121.constructor.prototype !== "object") {
+ $FAIL("#12.1: typeof x121.constructor.prototype === 'object'");
+}
+
+var x122 = new Date(2100, 0, 1, 0, 0, 0, 0);
+if (!Date.prototype.isPrototypeOf(x122)) {
+ $ERROR('#12.2: Date.prototype.isPrototypeOf(x122)');
+}
+
+var x123 = new Date(2100, 0, 1, 0, 0, 0, 0);
+if(Date.prototype !== x123.constructor.prototype){
+ $FAIL("#12.3: Date.prototype === x123.constructor.prototype");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T1.1.js
new file mode 100644
index 000000000..c9e39fdd4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T1.1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T1.1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on delete prototype.toString - 2 arguments, (year, month);
+*/
+
+var x1 = new Date(1899, 11);
+if (Object.prototype.toString.call(x1) !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12);
+if (Object.prototype.toString.call(x2) !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0);
+if (Object.prototype.toString.call(x3) !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11);
+if (Object.prototype.toString.call(x4) !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12);
+if (Object.prototype.toString.call(x5) !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0);
+if (Object.prototype.toString.call(x6) !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11);
+if (Object.prototype.toString.call(x7) !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12);
+if (Object.prototype.toString.call(x8) !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0);
+if (Object.prototype.toString.call(x9) !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11);
+if (Object.prototype.toString.call(x10) !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12);
+if (Object.prototype.toString.call(x11) !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0);
+if (Object.prototype.toString.call(x12) !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T1.2.js
new file mode 100644
index 000000000..159c2a033
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T1.2.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T1.2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on overwriting prototype.toString - 2 arguments, (year, month);
+*/
+
+Date.prototype.toString = Object.prototype.toString;
+
+var x1 = new Date(1899, 11);
+if (x1.toString() !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12);
+if (x2.toString() !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0);
+if (x3.toString() !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11);
+if (x4.toString() !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12);
+if (x5.toString() !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0);
+if (x6.toString() !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11);
+if (x7.toString() !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12);
+if (x8.toString() !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0);
+if (x9.toString() !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11);
+if (x10.toString() !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12);
+if (x11.toString() !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0);
+if (x12.toString() !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T2.1.js
new file mode 100644
index 000000000..c35f5207e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T2.1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T2.1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on delete prototype.toString - 3 arguments, (year, month, date);
+*/
+
+var x1 = new Date(1899, 11, 31);
+if (Object.prototype.toString.call(x1) !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1);
+if (Object.prototype.toString.call(x2) !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1);
+if (Object.prototype.toString.call(x3) !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31);
+if (Object.prototype.toString.call(x4) !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1);
+if (Object.prototype.toString.call(x5) !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1);
+if (Object.prototype.toString.call(x6) !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31);
+if (Object.prototype.toString.call(x7) !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1);
+if (Object.prototype.toString.call(x8) !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1);
+if (Object.prototype.toString.call(x9) !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31);
+if (Object.prototype.toString.call(x10) !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1);
+if (Object.prototype.toString.call(x11) !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1);
+if (Object.prototype.toString.call(x12) !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T2.2.js
new file mode 100644
index 000000000..2189a087e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T2.2.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T2.2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on overwriting prototype.toString - 3 arguments, (year, month, date);
+*/
+
+Date.prototype.toString = Object.prototype.toString;
+
+var x1 = new Date(1899, 11, 31);
+if (x1.toString() !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1);
+if (x2.toString() !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1);
+if (x3.toString() !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31);
+if (x4.toString() !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1);
+if (x5.toString() !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1);
+if (x6.toString() !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31);
+if (x7.toString() !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1);
+if (x8.toString() !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1);
+if (x9.toString() !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31);
+if (x10.toString() !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1);
+if (x11.toString() !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1);
+if (x12.toString() !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T3.1.js
new file mode 100644
index 000000000..4b4cfc7b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T3.1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T3.1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on delete prototype.toString - 4 arguments, (year, month, date, hours);
+*/
+
+var x1 = new Date(1899, 11, 31, 23);
+if (Object.prototype.toString.call(x1) !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1, 0);
+if (Object.prototype.toString.call(x2) !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1, 0);
+if (Object.prototype.toString.call(x3) !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31, 23);
+if (Object.prototype.toString.call(x4) !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1, 0);
+if (Object.prototype.toString.call(x5) !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1, 0);
+if (Object.prototype.toString.call(x6) !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31, 23);
+if (Object.prototype.toString.call(x7) !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1, 0);
+if (Object.prototype.toString.call(x8) !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1, 0);
+if (Object.prototype.toString.call(x9) !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31, 23);
+if (Object.prototype.toString.call(x10) !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1, 0);
+if (Object.prototype.toString.call(x11) !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1, 0);
+if (Object.prototype.toString.call(x12) !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T3.2.js
new file mode 100644
index 000000000..914585fe3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T3.2.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T3.2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on overwriting prototype.toString - 4 arguments, (year, month, date, hours);
+*/
+
+Date.prototype.toString = Object.prototype.toString;
+
+var x1 = new Date(1899, 11, 31, 23);
+if (x1.toString() !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1, 0);
+if (x2.toString() !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1, 0);
+if (x3.toString() !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31, 23);
+if (x4.toString() !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1, 0);
+if (x5.toString() !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1, 0);
+if (x6.toString() !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31, 23);
+if (x7.toString() !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1, 0);
+if (x8.toString() !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1, 0);
+if (x9.toString() !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31, 23);
+if (x10.toString() !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1, 0);
+if (x11.toString() !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1, 0);
+if (x12.toString() !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T4.1.js
new file mode 100644
index 000000000..8bf42466f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T4.1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T4.1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on delete prototype.toString - 5 arguments, (year, month, date, hours, minutes);
+*/
+
+var x1 = new Date(1899, 11, 31, 23, 59);
+if (Object.prototype.toString.call(x1) !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1, 0, 0);
+if (Object.prototype.toString.call(x2) !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1, 0, 0);
+if (Object.prototype.toString.call(x3) !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31, 23, 59);
+if (Object.prototype.toString.call(x4) !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1, 0, 0);
+if (Object.prototype.toString.call(x5) !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1, 0, 0);
+if (Object.prototype.toString.call(x6) !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31, 23, 59);
+if (Object.prototype.toString.call(x7) !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1, 0, 0);
+if (Object.prototype.toString.call(x8) !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1, 0, 0);
+if (Object.prototype.toString.call(x9) !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31, 23, 59);
+if (Object.prototype.toString.call(x10) !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1, 0, 0);
+if (Object.prototype.toString.call(x11) !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1, 0, 0);
+if (Object.prototype.toString.call(x12) !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T4.2.js
new file mode 100644
index 000000000..c9fcc3907
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T4.2.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T4.2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on overwriting prototype.toString - 5 arguments, (year, month, date, hours, minutes);
+*/
+
+Date.prototype.toString = Object.prototype.toString;
+
+var x1 = new Date(1899, 11, 31, 23, 59);
+if (x1.toString() !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1, 0, 0);
+if (x2.toString() !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1, 0, 0);
+if (x3.toString() !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31, 23, 59);
+if (x4.toString() !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1, 0, 0);
+if (x5.toString() !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1, 0, 0);
+if (x6.toString() !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31, 23, 59);
+if (x7.toString() !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1, 0, 0);
+if (x8.toString() !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1, 0, 0);
+if (x9.toString() !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31, 23, 59);
+if (x10.toString() !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1, 0, 0);
+if (x11.toString() !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1, 0, 0);
+if (x12.toString() !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T5.1.js
new file mode 100644
index 000000000..e519fbd5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T5.1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T5.1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: 6 arguments, (year, month, date, hours, minutes, seconds);
+*/
+
+var x1 = new Date(1899, 11, 31, 23, 59, 59);
+if (Object.prototype.toString.call(x1) !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1, 0, 0, 0);
+if (Object.prototype.toString.call(x2) !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1, 0, 0, 0);
+if (Object.prototype.toString.call(x3) !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31, 23, 59, 59);
+if (Object.prototype.toString.call(x4) !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1, 0, 0, 0);
+if (Object.prototype.toString.call(x5) !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1, 0, 0, 0);
+if (Object.prototype.toString.call(x6) !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31, 23, 59, 59);
+if (Object.prototype.toString.call(x7) !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1, 0, 0, 0);
+if (Object.prototype.toString.call(x8) !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1, 0, 0, 0);
+if (Object.prototype.toString.call(x9) !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31, 23, 59, 59);
+if (Object.prototype.toString.call(x10) !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1, 0, 0, 0);
+if (Object.prototype.toString.call(x11) !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1, 0, 0, 0);
+if (Object.prototype.toString.call(x12) !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T5.2.js
new file mode 100644
index 000000000..3badc050e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T5.2.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T5.2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on overwriting prototype.toString - 6 arguments, (year, month, date, hours, minutes, seconds);
+*/
+
+Date.prototype.toString = Object.prototype.toString;
+
+var x1 = new Date(1899, 11, 31, 23, 59, 59);
+if (x1.toString() !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1, 0, 0, 0);
+if (x2.toString() !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1, 0, 0, 0);
+if (x3.toString() !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31, 23, 59, 59);
+if (x4.toString() !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1, 0, 0, 0);
+if (x5.toString() !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1, 0, 0, 0);
+if (x6.toString() !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31, 23, 59, 59);
+if (x7.toString() !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1, 0, 0, 0);
+if (x8.toString() !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1, 0, 0, 0);
+if (x9.toString() !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31, 23, 59, 59);
+if (x10.toString() !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1, 0, 0, 0);
+if (x11.toString() !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1, 0, 0, 0);
+if (x12.toString() !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T6.1.js
new file mode 100644
index 000000000..75131d915
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T6.1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T6.1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: 7 arguments, (year, month, date, hours, minutes, seconds, ms);
+*/
+
+var x1 = new Date(1899, 11, 31, 23, 59, 59, 999);
+if (Object.prototype.toString.call(x1) !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1, 0, 0, 0, 0);
+if (Object.prototype.toString.call(x2) !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1, 0, 0, 0, 0);
+if (Object.prototype.toString.call(x3) !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31, 23, 59, 59, 999);
+if (Object.prototype.toString.call(x4) !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1, 0, 0, 0, 0);
+if (Object.prototype.toString.call(x5) !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1, 0, 0, 0, 0);
+if (Object.prototype.toString.call(x6) !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31, 23, 59, 59, 999);
+if (Object.prototype.toString.call(x7) !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1, 0, 0, 0, 0);
+if (Object.prototype.toString.call(x8) !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1, 0, 0, 0, 0);
+if (Object.prototype.toString.call(x9) !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31, 23, 59, 59, 999);
+if (Object.prototype.toString.call(x10) !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1, 0, 0, 0, 0);
+if (Object.prototype.toString.call(x11) !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1, 0, 0, 0, 0);
+if (Object.prototype.toString.call(x12) !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T6.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T6.2.js
new file mode 100644
index 000000000..913970485
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A3_T6.2.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A3_T6.2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on overwriting prototype.toString - 7 arguments, (year, month, date, hours, minutes, seconds, ms);
+*/
+
+Date.prototype.toString = Object.prototype.toString;
+
+var x1 = new Date(1899, 11, 31, 23, 59, 59, 999);
+if (x1.toString() !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(1899, 12, 1, 0, 0, 0, 0);
+if (x2.toString() !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(1900, 0, 1, 0, 0, 0, 0);
+if (x3.toString() !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(1969, 11, 31, 23, 59, 59, 999);
+if (x4.toString() !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(1969, 12, 1, 0, 0, 0, 0);
+if (x5.toString() !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(1970, 0, 1, 0, 0, 0, 0);
+if (x6.toString() !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(1999, 11, 31, 23, 59, 59, 999);
+if (x7.toString() !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(1999, 12, 1, 0, 0, 0, 0);
+if (x8.toString() !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x9 = new Date(2000, 0, 1, 0, 0, 0, 0);
+if (x9.toString() !== "[object Date]") {
+ $FAIL("#9: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x10 = new Date(2099, 11, 31, 23, 59, 59, 999);
+if (x10.toString() !== "[object Date]") {
+ $FAIL("#10: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x11 = new Date(2099, 12, 1, 0, 0, 0, 0);
+if (x11.toString() !== "[object Date]") {
+ $FAIL("#11: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x12 = new Date(2100, 0, 1, 0, 0, 0, 0);
+if (x12.toString() !== "[object Date]") {
+ $FAIL("#12: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T1.js
new file mode 100644
index 000000000..f12142ffb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A4_T1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 1. Call ToNumber(year)
+ * 2. Call ToNumber(month)
+ * 3. If date is supplied use ToNumber(date)
+ * 4. If hours is supplied use ToNumber(hours)
+ * 5. If minutes is supplied use ToNumber(minutes)
+ * 6. If seconds is supplied use ToNumber(seconds)
+ * 7. If ms is supplied use ToNumber(ms);
+ * @description: 2 arguments, (year, month);
+ */
+
+var myObj = function(val){
+ this.value = val;
+ this.valueOf = function(){throw "valueOf-"+this.value;};
+ this.toString = function(){throw "toString-"+this.value;};
+};
+
+//CHECK#1
+try{
+ var x1 = new Date(new myObj(1), new myObj(2));
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+}
+catch(e){
+ if(e !== "valueOf-1"){
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+ }
+}
+
+//CHECK#2
+try{
+ var x2 = new Date(1, new myObj(2));
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+}
+catch(e){
+ if(e !== "valueOf-2"){
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T2.js
new file mode 100644
index 000000000..38d241be2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T2.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A4_T2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 1. Call ToNumber(year)
+ * 2. Call ToNumber(month)
+ * 3. If date is supplied use ToNumber(date)
+ * 4. If hours is supplied use ToNumber(hours)
+ * 5. If minutes is supplied use ToNumber(minutes)
+ * 6. If seconds is supplied use ToNumber(seconds)
+ * 7. If ms is supplied use ToNumber(ms);
+ * @description: 3 arguments, (year, month, date);
+ */
+
+var myObj = function(val){
+ this.value = val;
+ this.valueOf = function(){throw "valueOf-"+this.value;};
+ this.toString = function(){throw "toString-"+this.value;};
+};
+
+//CHECK#1
+try{
+ var x1 = new Date(new myObj(1), new myObj(2), new myObj(3));
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+}
+catch(e){
+ if(e !== "valueOf-1"){
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+ }
+}
+
+//CHECK#2
+try{
+ var x2 = new Date(1, new myObj(2), new myObj(3));
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+}
+catch(e){
+ if(e !== "valueOf-2"){
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+ }
+}
+
+//CHECK#3
+try{
+ var x3 = new Date(1, 2, new myObj(3));
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+}
+catch(e){
+ if(e !== "valueOf-3"){
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T3.js
new file mode 100644
index 000000000..4b4989101
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T3.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A4_T3;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 1. Call ToNumber(year)
+ * 2. Call ToNumber(month)
+ * 3. If date is supplied use ToNumber(date)
+ * 4. If hours is supplied use ToNumber(hours)
+ * 5. If minutes is supplied use ToNumber(minutes)
+ * 6. If seconds is supplied use ToNumber(seconds)
+ * 7. If ms is supplied use ToNumber(ms);
+ * @description: 4 arguments, (year, month, date, hours);
+ */
+
+var myObj = function(val){
+ this.value = val;
+ this.valueOf = function(){throw "valueOf-"+this.value;};
+ this.toString = function(){throw "toString-"+this.value;};
+};
+
+//CHECK#1
+try{
+ var x1 = new Date(new myObj(1), new myObj(2), new myObj(3), new myObj(4));
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+}
+catch(e){
+ if(e !== "valueOf-1"){
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+ }
+}
+
+//CHECK#2
+try{
+ var x2 = new Date(1, new myObj(2), new myObj(3), new myObj(4));
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+}
+catch(e){
+ if(e !== "valueOf-2"){
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+ }
+}
+
+//CHECK#3
+try{
+ var x3 = new Date(1, 2, new myObj(3), new myObj(4));
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+}
+catch(e){
+ if(e !== "valueOf-3"){
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+ }
+}
+
+//CHECK#4
+try{
+ var x4 = new Date(1, 2, 3, new myObj(4));
+ $ERROR("#4: The 4th step is calling ToNumber(hours)");
+}
+catch(e){
+ if(e !== "valueOf-4"){
+ $ERROR("#4: The 4th step is calling ToNumber(hours)");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T4.js
new file mode 100644
index 000000000..ba80ecd96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T4.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A4_T4;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 1. Call ToNumber(year)
+ * 2. Call ToNumber(month)
+ * 3. If date is supplied use ToNumber(date)
+ * 4. If hours is supplied use ToNumber(hours)
+ * 5. If minutes is supplied use ToNumber(minutes)
+ * 6. If seconds is supplied use ToNumber(seconds)
+ * 7. If ms is supplied use ToNumber(ms);
+ * @description: 5 arguments, (year, month, date, hours, minutes);
+ */
+
+var myObj = function(val){
+ this.value = val;
+ this.valueOf = function(){throw "valueOf-"+this.value;};
+ this.toString = function(){throw "toString-"+this.value;};
+};
+
+//CHECK#1
+try{
+ var x1 = new Date(new myObj(1), new myObj(2), new myObj(3), new myObj(4), new myObj(5));
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+}
+catch(e){
+ if(e !== "valueOf-1"){
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+ }
+}
+
+//CHECK#2
+try{
+ var x2 = new Date(1, new myObj(2), new myObj(3), new myObj(4), new myObj(5));
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+}
+catch(e){
+ if(e !== "valueOf-2"){
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+ }
+}
+
+//CHECK#3
+try{
+ var x3 = new Date(1, 2, new myObj(3), new myObj(4), new myObj(5));
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+}
+catch(e){
+ if(e !== "valueOf-3"){
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+ }
+}
+
+//CHECK#4
+try{
+ var x4 = new Date(1, 2, 3, new myObj(4), new myObj(5));
+ $ERROR("#4: The 4th step is calling ToNumber(hours)");
+}
+catch(e){
+ if(e !== "valueOf-4"){
+ $ERROR("#4: The 4th step is calling ToNumber(hours)");
+ }
+}
+
+//CHECK#5
+try{
+ var x5 = new Date(1, 2, 3, 4, new myObj(5));
+ $ERROR("#5: The 5th step is calling ToNumber(minutes)");
+}
+catch(e){
+ if(e !== "valueOf-5"){
+ $ERROR("#5: The 5th step is calling ToNumber(minutes)");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T5.js
new file mode 100644
index 000000000..234e567fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T5.js
@@ -0,0 +1,89 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A4_T5;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 1. Call ToNumber(year)
+ * 2. Call ToNumber(month)
+ * 3. If date is supplied use ToNumber(date)
+ * 4. If hours is supplied use ToNumber(hours)
+ * 5. If minutes is supplied use ToNumber(minutes)
+ * 6. If seconds is supplied use ToNumber(seconds)
+ * 7. If ms is supplied use ToNumber(ms);
+ * @description: 6 arguments, (year, month, date, hours, minutes, seconds);
+ */
+
+var myObj = function(val){
+ this.value = val;
+ this.valueOf = function(){throw "valueOf-"+this.value;};
+ this.toString = function(){throw "toString-"+this.value;};
+};
+
+//CHECK#1
+try{
+ var x1 = new Date(new myObj(1), new myObj(2), new myObj(3), new myObj(4), new myObj(5), new myObj(6));
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+}
+catch(e){
+ if(e !== "valueOf-1"){
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+ }
+}
+
+//CHECK#2
+try{
+ var x2 = new Date(1, new myObj(2), new myObj(3), new myObj(4), new myObj(5), new myObj(6));
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+}
+catch(e){
+ if(e !== "valueOf-2"){
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+ }
+}
+
+//CHECK#3
+try{
+ var x3 = new Date(1, 2, new myObj(3), new myObj(4), new myObj(5), new myObj(6));
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+}
+catch(e){
+ if(e !== "valueOf-3"){
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+ }
+}
+
+//CHECK#4
+try{
+ var x4 = new Date(1, 2, 3, new myObj(4), new myObj(5), new myObj(6));
+ $ERROR("#4: The 4th step is calling ToNumber(hours)");
+}
+catch(e){
+ if(e !== "valueOf-4"){
+ $ERROR("#4: The 4th step is calling ToNumber(hours)");
+ }
+}
+
+//CHECK#5
+try{
+ var x5 = new Date(1, 2, 3, 4, new myObj(5), new myObj(6));
+ $ERROR("#5: The 5th step is calling ToNumber(minutes)");
+}
+catch(e){
+ if(e !== "valueOf-5"){
+ $ERROR("#5: The 5th step is calling ToNumber(minutes)");
+ }
+}
+
+//CHECK#6
+try{
+ var x6 = new Date(1, 2, 3, 4, 5, new myObj(6));
+ $ERROR("#6: The 6th step is calling ToNumber(seconds)");
+}
+catch(e){
+ if(e !== "valueOf-6"){
+ $ERROR("#6: The 6th step is calling ToNumber(seconds)");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T6.js
new file mode 100644
index 000000000..d50b643b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A4_T6.js
@@ -0,0 +1,100 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A4_T6;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 1. Call ToNumber(year)
+ * 2. Call ToNumber(month)
+ * 3. If date is supplied use ToNumber(date)
+ * 4. If hours is supplied use ToNumber(hours)
+ * 5. If minutes is supplied use ToNumber(minutes)
+ * 6. If seconds is supplied use ToNumber(seconds)
+ * 7. If ms is supplied use ToNumber(ms);
+ * @description: 7 arguments, (year, month, date, hours, minutes, seconds, ms);
+ */
+
+var myObj = function(val){
+ this.value = val;
+ this.valueOf = function(){throw "valueOf-"+this.value;};
+ this.toString = function(){throw "toString-"+this.value;};
+};
+
+//CHECK#1
+try{
+ var x1 = new Date(new myObj(1), new myObj(2), new myObj(3), new myObj(4), new myObj(5), new myObj(6), new myObj(7));
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+}
+catch(e){
+ if(e !== "valueOf-1"){
+ $ERROR("#1: The 1st step is calling ToNumber(year)");
+ }
+}
+
+//CHECK#2
+try{
+ var x2 = new Date(1, new myObj(2), new myObj(3), new myObj(4), new myObj(5), new myObj(6), new myObj(7));
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+}
+catch(e){
+ if(e !== "valueOf-2"){
+ $ERROR("#2: The 2nd step is calling ToNumber(month)");
+ }
+}
+
+//CHECK#3
+try{
+ var x3 = new Date(1, 2, new myObj(3), new myObj(4), new myObj(5), new myObj(6), new myObj(7));
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+}
+catch(e){
+ if(e !== "valueOf-3"){
+ $ERROR("#3: The 3rd step is calling ToNumber(date)");
+ }
+}
+
+//CHECK#4
+try{
+ var x4 = new Date(1, 2, 3, new myObj(4), new myObj(5), new myObj(6), new myObj(7));
+ $ERROR("#4: The 4th step is calling ToNumber(hours)");
+}
+catch(e){
+ if(e !== "valueOf-4"){
+ $ERROR("#4: The 4th step is calling ToNumber(hours)");
+ }
+}
+
+//CHECK#5
+try{
+ var x5 = new Date(1, 2, 3, 4, new myObj(5), new myObj(6), new myObj(7));
+ $ERROR("#5: The 5th step is calling ToNumber(minutes)");
+}
+catch(e){
+ if(e !== "valueOf-5"){
+ $ERROR("#5: The 5th step is calling ToNumber(minutes)");
+ }
+}
+
+//CHECK#6
+try{
+ var x6 = new Date(1, 2, 3, 4, 5, new myObj(6), new myObj(7));
+ $ERROR("#6: The 6th step is calling ToNumber(seconds)");
+}
+catch(e){
+ if(e !== "valueOf-6"){
+ $ERROR("#6: The 6th step is calling ToNumber(seconds)");
+ }
+}
+
+//CHECK#7
+try{
+ var x7 = new Date(1, 2, 3, 4, 5, 6, new myObj(7));
+ $ERROR("#7: The 7th step is calling ToNumber(ms)");
+}
+catch(e){
+ if(e !== "valueOf-7"){
+ $ERROR("#7: The 7th step is calling ToNumber(ms)");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T1.js
new file mode 100644
index 000000000..48582e45a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A5_T1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 8. If Result(1) is not NaN and 0 <= ToInteger(Result(1)) <= 99, Result(8) is
+ * 1900+ToInteger(Result(1)); otherwise, Result(8) is Result(1)
+ * 9. Compute MakeDay(Result(8), Result(2), Result(3))
+ * 10. Compute MakeTime(Result(4), Result(5), Result(6), Result(7))
+ * 11. Compute MakeDate(Result(9), Result(10))
+ * 12. Set the [[Value]] property of the newly constructed object to
+ * TimeClip(UTC(Result(11)));
+ * @description: 2 arguments, (year, month);
+ */
+
+$INCLUDE("environment.js");
+$INCLUDE("numeric_conversion.js");
+$INCLUDE("Date_constants.js");
+$INCLUDE("Date_library.js");
+
+if (ConstructDate(1899, 11) !== new Date(1899, 11).valueOf()) {
+ $FAIL("#1: Incorrect value of Date");
+}
+
+if (ConstructDate(1899, 12) !== new Date(1899, 12).valueOf()) {
+ $FAIL("#2: Incorrect value of Date");
+}
+
+if (ConstructDate(1900, 0) !== new Date(1900, 0).valueOf()) {
+ $FAIL("#3: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 11) !== new Date(1969, 11).valueOf()) {
+ $FAIL("#4: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 12) !== new Date(1969, 12).valueOf()) {
+ $FAIL("#5: Incorrect value of Date");
+}
+
+if (ConstructDate(1970, 0) !== new Date(1970, 0).valueOf()) {
+ $FAIL("#6: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 11) !== new Date(1999, 11).valueOf()) {
+ $FAIL("#7: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 12) !== new Date(1999, 12).valueOf()) {
+ $FAIL("#8: Incorrect value of Date");
+}
+
+if (ConstructDate(2000, 0) !== new Date(2000, 0).valueOf()) {
+ $FAIL("#9: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 11) !== new Date(2099, 11).valueOf()) {
+ $FAIL("#10: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 12) !== new Date(2099, 12).valueOf()) {
+ $FAIL("#11: Incorrect value of Date");
+}
+
+if (ConstructDate(2100, 0) !== new Date(2100, 0).valueOf()) {
+ $FAIL("#12: Incorrect value of Date");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T2.js
new file mode 100644
index 000000000..5828b2c2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T2.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A5_T2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 8. If Result(1) is not NaN and 0 <= ToInteger(Result(1)) <= 99, Result(8) is
+ * 1900+ToInteger(Result(1)); otherwise, Result(8) is Result(1)
+ * 9. Compute MakeDay(Result(8), Result(2), Result(3))
+ * 10. Compute MakeTime(Result(4), Result(5), Result(6), Result(7))
+ * 11. Compute MakeDate(Result(9), Result(10))
+ * 12. Set the [[Value]] property of the newly constructed object to
+ * TimeClip(UTC(Result(11)));
+ * @description: 3 arguments, (year, month, date);
+ */
+
+$INCLUDE("environment.js");
+$INCLUDE("numeric_conversion.js");
+$INCLUDE("Date_constants.js");
+$INCLUDE("Date_library.js");
+
+if (ConstructDate(1899, 11, 31) !== new Date(1899, 11, 31).valueOf()) {
+ $FAIL("#1: Incorrect value of Date");
+}
+
+if (ConstructDate(1899, 12, 1) !== new Date(1899, 12, 1).valueOf()) {
+ $FAIL("#2: Incorrect value of Date");
+}
+
+if (ConstructDate(1900, 0, 1) !== new Date(1900, 0, 1).valueOf()) {
+ $FAIL("#3: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 11, 31) !== new Date(1969, 11, 31).valueOf()) {
+ $FAIL("#4: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 12, 1) !== new Date(1969, 12, 1).valueOf()) {
+ $FAIL("#5: Incorrect value of Date");
+}
+
+if (ConstructDate(1970, 0, 1) !== new Date(1970, 0, 1).valueOf()) {
+ $FAIL("#6: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 11, 31) !== new Date(1999, 11, 31).valueOf()) {
+ $FAIL("#7: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 12, 1) !== new Date(1999, 12, 1).valueOf()) {
+ $FAIL("#8: Incorrect value of Date");
+}
+
+if (ConstructDate(2000, 0, 1) !== new Date(2000, 0, 1).valueOf()) {
+ $FAIL("#9: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 11, 31) !== new Date(2099, 11, 31).valueOf()) {
+ $FAIL("#10: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 12, 1) !== new Date(2099, 12, 1).valueOf()) {
+ $FAIL("#11: Incorrect value of Date");
+}
+
+if (ConstructDate(2100, 0, 1) !== new Date(2100, 0, 1).valueOf()) {
+ $FAIL("#12: Incorrect value of Date");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T3.js
new file mode 100644
index 000000000..f56034a9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T3.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A5_T3;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 8. If Result(1) is not NaN and 0 <= ToInteger(Result(1)) <= 99, Result(8) is
+ * 1900+ToInteger(Result(1)); otherwise, Result(8) is Result(1)
+ * 9. Compute MakeDay(Result(8), Result(2), Result(3))
+ * 10. Compute MakeTime(Result(4), Result(5), Result(6), Result(7))
+ * 11. Compute MakeDate(Result(9), Result(10))
+ * 12. Set the [[Value]] property of the newly constructed object to
+ * TimeClip(UTC(Result(11)));
+ * @description: 4 arguments, (year, month, date, hours);
+ */
+
+$INCLUDE("environment.js");
+$INCLUDE("numeric_conversion.js");
+$INCLUDE("Date_constants.js");
+$INCLUDE("Date_library.js");
+
+if (ConstructDate(1899, 11, 31, 23) !== new Date(1899, 11, 31, 23).valueOf()) {
+ $FAIL("#1: Incorrect value of Date");
+}
+
+if (ConstructDate(1899, 12, 1, 0) !== new Date(1899, 12, 1, 0).valueOf()) {
+ $FAIL("#2: Incorrect value of Date");
+}
+
+if (ConstructDate(1900, 0, 1, 0) !== new Date(1900, 0, 1, 0).valueOf()) {
+ $FAIL("#3: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 11, 31, 23) !== new Date(1969, 11, 31, 23).valueOf()) {
+ $FAIL("#4: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 12, 1, 0) !== new Date(1969, 12, 1, 0).valueOf()) {
+ $FAIL("#5: Incorrect value of Date");
+}
+
+if (ConstructDate(1970, 0, 1, 0) !== new Date(1970, 0, 1, 0).valueOf()) {
+ $FAIL("#6: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 11, 31, 23) !== new Date(1999, 11, 31, 23).valueOf()) {
+ $FAIL("#7: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 12, 1, 0) !== new Date(1999, 12, 1, 0).valueOf()) {
+ $FAIL("#8: Incorrect value of Date");
+}
+
+if (ConstructDate(2000, 0, 1, 0) !== new Date(2000, 0, 1, 0).valueOf()) {
+ $FAIL("#9: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 11, 31, 23) !== new Date(2099, 11, 31, 23).valueOf()) {
+ $FAIL("#10: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 12, 1, 0) !== new Date(2099, 12, 1, 0).valueOf()) {
+ $FAIL("#11: Incorrect value of Date");
+}
+
+if (ConstructDate(2100, 0, 1, 0) !== new Date(2100, 0, 1, 0).valueOf()) {
+ $FAIL("#12: Incorrect value of Date");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T4.js
new file mode 100644
index 000000000..ef5329adb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T4.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A5_T4;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 8. If Result(1) is not NaN and 0 <= ToInteger(Result(1)) <= 99, Result(8) is
+ * 1900+ToInteger(Result(1)); otherwise, Result(8) is Result(1)
+ * 9. Compute MakeDay(Result(8), Result(2), Result(3))
+ * 10. Compute MakeTime(Result(4), Result(5), Result(6), Result(7))
+ * 11. Compute MakeDate(Result(9), Result(10))
+ * 12. Set the [[Value]] property of the newly constructed object to
+ * TimeClip(UTC(Result(11)));
+ * @description: 5 arguments, (year, month, date, hours, minutes);
+ */
+
+$INCLUDE("environment.js");
+$INCLUDE("numeric_conversion.js");
+$INCLUDE("Date_constants.js");
+$INCLUDE("Date_library.js");
+
+if (ConstructDate(1899, 11, 31, 23, 59) !== new Date(1899, 11, 31, 23, 59).valueOf()) {
+ $FAIL("#1: Incorrect value of Date");
+}
+
+if (ConstructDate(1899, 12, 1, 0, 0) !== new Date(1899, 12, 1, 0, 0).valueOf()) {
+ $FAIL("#2: Incorrect value of Date");
+}
+
+if (ConstructDate(1900, 0, 1, 0, 0) !== new Date(1900, 0, 1, 0, 0).valueOf()) {
+ $FAIL("#3: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 11, 31, 23, 59) !== new Date(1969, 11, 31, 23, 59).valueOf()) {
+ $FAIL("#4: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 12, 1, 0, 0) !== new Date(1969, 12, 1, 0, 0).valueOf()) {
+ $FAIL("#5: Incorrect value of Date");
+}
+
+if (ConstructDate(1970, 0, 1, 0, 0) !== new Date(1970, 0, 1, 0, 0).valueOf()) {
+ $FAIL("#6: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 11, 31, 23, 59) !== new Date(1999, 11, 31, 23, 59).valueOf()) {
+ $FAIL("#7: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 12, 1, 0, 0) !== new Date(1999, 12, 1, 0, 0).valueOf()) {
+ $FAIL("#8: Incorrect value of Date");
+}
+
+if (ConstructDate(2000, 0, 1, 0, 0) !== new Date(2000, 0, 1, 0, 0).valueOf()) {
+ $FAIL("#9: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 11, 31, 23, 59) !== new Date(2099, 11, 31, 23, 59).valueOf()) {
+ $FAIL("#10: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 12, 1, 0, 0) !== new Date(2099, 12, 1, 0, 0).valueOf()) {
+ $FAIL("#11: Incorrect value of Date");
+}
+
+if (ConstructDate(2100, 0, 1, 0, 0) !== new Date(2100, 0, 1, 0, 0).valueOf()) {
+ $FAIL("#12: Incorrect value of Date");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T5.js
new file mode 100644
index 000000000..76d087776
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T5.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A5_T5;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 8. If Result(1) is not NaN and 0 <= ToInteger(Result(1)) <= 99, Result(8) is
+ * 1900+ToInteger(Result(1)); otherwise, Result(8) is Result(1)
+ * 9. Compute MakeDay(Result(8), Result(2), Result(3))
+ * 10. Compute MakeTime(Result(4), Result(5), Result(6), Result(7))
+ * 11. Compute MakeDate(Result(9), Result(10))
+ * 12. Set the [[Value]] property of the newly constructed object to
+ * TimeClip(UTC(Result(11)));
+ * @description: 6 arguments, (year, month, date, hours, minutes, seconds);
+ */
+
+$INCLUDE("environment.js");
+$INCLUDE("numeric_conversion.js");
+$INCLUDE("Date_constants.js");
+$INCLUDE("Date_library.js");
+
+if (ConstructDate(1899, 11, 31, 23, 59, 59) !== new Date(1899, 11, 31, 23, 59, 59).valueOf()) {
+ $FAIL("#1: Incorrect value of Date");
+}
+
+if (ConstructDate(1899, 12, 1, 0, 0, 0) !== new Date(1899, 12, 1, 0, 0, 0).valueOf()) {
+ $FAIL("#2: Incorrect value of Date");
+}
+
+if (ConstructDate(1900, 0, 1, 0, 0, 0) !== new Date(1900, 0, 1, 0, 0, 0).valueOf()) {
+ $FAIL("#3: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 11, 31, 23, 59, 59) !== new Date(1969, 11, 31, 23, 59, 59).valueOf()) {
+ $FAIL("#4: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 12, 1, 0, 0, 0) !== new Date(1969, 12, 1, 0, 0, 0).valueOf()) {
+ $FAIL("#5: Incorrect value of Date");
+}
+
+if (ConstructDate(1970, 0, 1, 0, 0, 0) !== new Date(1970, 0, 1, 0, 0, 0).valueOf()) {
+ $FAIL("#6: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 11, 31, 23, 59, 59) !== new Date(1999, 11, 31, 23, 59, 59).valueOf()) {
+ $FAIL("#7: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 12, 1, 0, 0, 0) !== new Date(1999, 12, 1, 0, 0, 0).valueOf()) {
+ $FAIL("#8: Incorrect value of Date");
+}
+
+if (ConstructDate(2000, 0, 1, 0, 0, 0) !== new Date(2000, 0, 1, 0, 0, 0).valueOf()) {
+ $FAIL("#9: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 11, 31, 23, 59, 59) !== new Date(2099, 11, 31, 23, 59, 59).valueOf()) {
+ $FAIL("#10: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 12, 1, 0, 0, 0) !== new Date(2099, 12, 1, 0, 0, 0).valueOf()) {
+ $FAIL("#11: Incorrect value of Date");
+}
+
+if (ConstructDate(2100, 0, 1, 0, 0, 0) !== new Date(2100, 0, 1, 0, 0, 0).valueOf()) {
+ $FAIL("#12: Incorrect value of Date");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T6.js
new file mode 100644
index 000000000..b89944f2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A5_T6.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A5_T6;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * is set by following steps:
+ * 8. If Result(1) is not NaN and 0 <= ToInteger(Result(1)) <= 99, Result(8) is
+ * 1900+ToInteger(Result(1)); otherwise, Result(8) is Result(1)
+ * 9. Compute MakeDay(Result(8), Result(2), Result(3))
+ * 10. Compute MakeTime(Result(4), Result(5), Result(6), Result(7))
+ * 11. Compute MakeDate(Result(9), Result(10))
+ * 12. Set the [[Value]] property of the newly constructed object to
+ * TimeClip(UTC(Result(11)));
+ * @description: 7 arguments, (year, month, date, hours, minutes, seconds, ms);
+ */
+
+$INCLUDE("environment.js");
+$INCLUDE("numeric_conversion.js");
+$INCLUDE("Date_constants.js");
+$INCLUDE("Date_library.js");
+
+if (ConstructDate(1899, 11, 31, 23, 59, 59, 999) !== new Date(1899, 11, 31, 23, 59, 59, 999).valueOf()) {
+ $FAIL("#1: Incorrect value of Date");
+}
+
+if (ConstructDate(1899, 12, 1, 0, 0, 0, 0) !== new Date(1899, 12, 1, 0, 0, 0, 0).valueOf()) {
+ $FAIL("#2: Incorrect value of Date");
+}
+
+if (ConstructDate(1900, 0, 1, 0, 0, 0, 0) !== new Date(1900, 0, 1, 0, 0, 0, 0).valueOf()) {
+ $FAIL("#3: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 11, 31, 23, 59, 59, 999) !== new Date(1969, 11, 31, 23, 59, 59, 999).valueOf()) {
+ $FAIL("#4: Incorrect value of Date");
+}
+
+if (ConstructDate(1969, 12, 1, 0, 0, 0, 0) !== new Date(1969, 12, 1, 0, 0, 0, 0).valueOf()) {
+ $FAIL("#5: Incorrect value of Date");
+}
+
+if (ConstructDate(1970, 0, 1, 0, 0, 0, 0) !== new Date(1970, 0, 1, 0, 0, 0, 0).valueOf()) {
+ $FAIL("#6: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 11, 31, 23, 59, 59, 999) !== new Date(1999, 11, 31, 23, 59, 59, 999).valueOf()) {
+ $FAIL("#7: Incorrect value of Date");
+}
+
+if (ConstructDate(1999, 12, 1, 0, 0, 0, 0) !== new Date(1999, 12, 1, 0, 0, 0, 0).valueOf()) {
+ $FAIL("#8: Incorrect value of Date");
+}
+
+if (ConstructDate(2000, 0, 1, 0, 0, 0, 0) !== new Date(2000, 0, 1, 0, 0, 0, 0).valueOf()) {
+ $FAIL("#9: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 11, 31, 23, 59, 59, 999) !== new Date(2099, 11, 31, 23, 59, 59, 999).valueOf()) {
+ $FAIL("#10: Incorrect value of Date");
+}
+
+if (ConstructDate(2099, 12, 1, 0, 0, 0, 0) !== new Date(2099, 12, 1, 0, 0, 0, 0).valueOf()) {
+ $FAIL("#11: Incorrect value of Date");
+}
+
+if (ConstructDate(2100, 0, 1, 0, 0, 0, 0) !== new Date(2100, 0, 1, 0, 0, 0, 0).valueOf()) {
+ $FAIL("#12: Incorrect value of Date");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T1.js
new file mode 100644
index 000000000..49db8553e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T1.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.
+
+/**
+ * @name: S15.9.3.1_A6_T1;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * with supplied "undefined" argument should be NaN;
+ * @description: 2 arguments, (year, month);
+ */
+
+function DateValue(year, month, date, hours, minutes, seconds, ms){
+ return new Date(year, month, date, hours, minutes, seconds, ms).valueOf();
+}
+
+if (!isNaN(DateValue(1899, 11))) {
+ $FAIL("#1: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1899, 12))) {
+ $FAIL("#2: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1900, 0))) {
+ $FAIL("#3: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 11))) {
+ $FAIL("#4: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 12))) {
+ $FAIL("#5: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1970, 0))) {
+ $FAIL("#6: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 11))) {
+ $FAIL("#7: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 12))) {
+ $FAIL("#8: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2000, 0))) {
+ $FAIL("#9: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 11))) {
+ $FAIL("#10: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 12))) {
+ $FAIL("#11: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2100, 0))) {
+ $FAIL("#12: The value should be NaN");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T2.js
new file mode 100644
index 000000000..95380c622
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_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.
+
+/**
+ * @name: S15.9.3.1_A6_T2;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * with supplied "undefined" argument should be NaN;
+ * @description: 3 arguments, (year, month, date);
+ */
+
+function DateValue(year, month, date, hours, minutes, seconds, ms){
+ return new Date(year, month, date, hours, minutes, seconds, ms).valueOf();
+}
+
+if (!isNaN(DateValue(1899, 11, 31))) {
+ $FAIL("#1: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1899, 12, 1))) {
+ $FAIL("#2: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1900, 0, 1))) {
+ $FAIL("#3: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 11, 31))) {
+ $FAIL("#4: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 12, 1))) {
+ $FAIL("#5: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1970, 0, 1))) {
+ $FAIL("#6: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 11, 31))) {
+ $FAIL("#7: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 12, 1))) {
+ $FAIL("#8: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2000, 0, 1))) {
+ $FAIL("#9: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 11, 31))) {
+ $FAIL("#10: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 12, 1))) {
+ $FAIL("#11: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2100, 0, 1))) {
+ $FAIL("#12: The value should be NaN");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T3.js
new file mode 100644
index 000000000..d9ce1228d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T3.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A6_T3;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * with supplied "undefined" argument should be NaN;
+ * @description: 4 arguments, (year, month, date, hours);
+ */
+
+function DateValue(year, month, date, hours, minutes, seconds, ms){
+ return new Date(year, month, date, hours, minutes, seconds, ms).valueOf();
+}
+
+if (!isNaN(DateValue(1899, 11, 31, 23))) {
+ $FAIL("#1: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1899, 12, 1, 0))) {
+ $FAIL("#2: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1900, 0, 1, 0))) {
+ $FAIL("#3: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 11, 31, 23))) {
+ $FAIL("#4: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 12, 1, 0))) {
+ $FAIL("#5: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1970, 0, 1, 0))) {
+ $FAIL("#6: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 11, 31, 23))) {
+ $FAIL("#7: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 12, 1, 0))) {
+ $FAIL("#8: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2000, 0, 1, 0))) {
+ $FAIL("#9: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 11, 31, 23))) {
+ $FAIL("#10: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 12, 1, 0))) {
+ $FAIL("#11: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2100, 0, 1, 0))) {
+ $FAIL("#12: The value should be NaN");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T4.js
new file mode 100644
index 000000000..6bbd9a3ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T4.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.1_A6_T4;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * with supplied "undefined" argument should be NaN;
+ * @description: 5 arguments, (year, month, date, hours, minutes);
+ */
+
+function DateValue(year, month, date, hours, minutes, seconds, ms){
+ return new Date(year, month, date, hours, minutes, seconds, ms).valueOf();
+}
+
+if (!isNaN(DateValue(1899, 11, 31, 23, 59))) {
+ $FAIL("#1: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1899, 12, 1, 0, 0))) {
+ $FAIL("#2: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1900, 0, 1, 0, 0))) {
+ $FAIL("#3: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 11, 31, 23, 59))) {
+ $FAIL("#4: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 12, 1, 0, 0))) {
+ $FAIL("#5: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1970, 0, 1, 0, 0))) {
+ $FAIL("#6: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 11, 31, 23, 59))) {
+ $FAIL("#7: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 12, 1, 0, 0))) {
+ $FAIL("#8: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2000, 0, 1, 0, 0))) {
+ $FAIL("#9: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 11, 31, 23, 59))) {
+ $FAIL("#10: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 12, 1, 0, 0))) {
+ $FAIL("#11: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2100, 0, 1, 0, 0))) {
+ $FAIL("#12: The value should be NaN");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T5.js
new file mode 100644
index 000000000..c81b1afef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.1_A6_T5.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.
+
+/**
+ * @name: S15.9.3.1_A6_T5;
+ * @section: 15.9.3.1;
+ * @assertion: The [[Value]] property of the newly constructed object
+ * with supplied "undefined" argument should be NaN;
+ * @description: 6 arguments, (year, month, date, hours, minutes, seconds);
+ */
+
+function DateValue(year, month, date, hours, minutes, seconds, ms){
+ return new Date(year, month, date, hours, minutes, seconds, ms).valueOf();
+}
+
+if (!isNaN(DateValue(1899, 11, 31, 23, 59, 59))) {
+ $FAIL("#1: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1899, 12, 1, 0, 0, 0))) {
+ $FAIL("#2: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1900, 0, 1, 0, 0, 0))) {
+ $FAIL("#3: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 11, 31, 23, 59, 59))) {
+ $FAIL("#4: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1969, 12, 1, 0, 0, 0))) {
+ $FAIL("#5: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1970, 0, 1, 0, 0, 0))) {
+ $FAIL("#6: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 11, 31, 23, 59, 59))) {
+ $FAIL("#7: The value should be NaN");
+}
+
+if (!isNaN(DateValue(1999, 12, 1, 0, 0, 0))) {
+ $FAIL("#8: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2000, 0, 1, 0, 0, 0))) {
+ $FAIL("#9: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 11, 31, 23, 59, 59))) {
+ $FAIL("#10: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2099, 12, 1, 0, 0, 0))) {
+ $FAIL("#11: The value should be NaN");
+}
+
+if (!isNaN(DateValue(2100, 0, 1, 0, 0, 0))) {
+ $FAIL("#12: The value should be NaN");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A1_T1.js
new file mode 100644
index 000000000..30c42abd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A1_T1.js
@@ -0,0 +1,156 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.2_A1_T1;
+ * @section: 15.9.3.2;
+ * @assertion: When Date is called as part of a new expression it is
+ * a constructor: it initialises the newly created object;
+ * @description: Checking types of newly created objects and it values;
+*/
+
+$INCLUDE("Date_constants.js");
+
+if (typeof new Date(date_1899_end) !== "object") {
+ $FAIL("#1.1: typeof new Date(date_1899_end) === 'object'");
+}
+
+if (new Date(date_1899_end) === undefined) {
+ $FAIL("#1.2: new Date(date_1899_end) === undefined");
+}
+
+var x13 = new Date(date_1899_end);
+if(typeof x13 !== "object"){
+ $FAIL("#1.3: typeof new Date(date_1899_end) !== 'object'");
+}
+
+var x14 = new Date(date_1899_end);
+if(x14 === undefined){
+ $FAIL("#1.4: new Date(date_1899_end) !== undefined");
+}
+
+if (typeof new Date(date_1900_start) !== "object") {
+ $FAIL("#2.1: typeof new Date(date_1900_start) === 'object'");
+}
+
+if (new Date(date_1900_start) === undefined) {
+ $FAIL("#2.2: new Date(date_1900_start) === undefined");
+}
+
+var x23 = new Date(date_1900_start);
+if(typeof x23 !== "object"){
+ $FAIL("#2.3: typeof new Date(date_1900_start) !== 'object'");
+}
+
+var x24 = new Date(date_1900_start);
+if(x24 === undefined){
+ $FAIL("#2.4: new Date(date_1900_start) !== undefined");
+}
+
+if (typeof new Date(date_1969_end) !== "object") {
+ $FAIL("#3.1: typeof new Date(date_1969_end) === 'object'");
+}
+
+if (new Date(date_1969_end) === undefined) {
+ $FAIL("#3.2: new Date(date_1969_end) === undefined");
+}
+
+var x33 = new Date(date_1969_end);
+if(typeof x33 !== "object"){
+ $FAIL("#3.3: typeof new Date(date_1969_end) !== 'object'");
+}
+
+var x34 = new Date(date_1969_end);
+if(x34 === undefined){
+ $FAIL("#3.4: new Date(date_1969_end) !== undefined");
+}
+
+if (typeof new Date(date_1970_start) !== "object") {
+ $FAIL("#4.1: typeof new Date(date_1970_start) === 'object'");
+}
+
+if (new Date(date_1970_start) === undefined) {
+ $FAIL("#4.2: new Date(date_1970_start) === undefined");
+}
+
+var x43 = new Date(date_1970_start);
+if(typeof x43 !== "object"){
+ $FAIL("#4.3: typeof new Date(date_1970_start) !== 'object'");
+}
+
+var x44 = new Date(date_1970_start);
+if(x44 === undefined){
+ $FAIL("#4.4: new Date(date_1970_start) !== undefined");
+}
+
+if (typeof new Date(date_1999_end) !== "object") {
+ $FAIL("#5.1: typeof new Date(date_1999_end) === 'object'");
+}
+
+if (new Date(date_1999_end) === undefined) {
+ $FAIL("#5.2: new Date(date_1999_end) === undefined");
+}
+
+var x53 = new Date(date_1999_end);
+if(typeof x53 !== "object"){
+ $FAIL("#5.3: typeof new Date(date_1999_end) !== 'object'");
+}
+
+var x54 = new Date(date_1999_end);
+if(x54 === undefined){
+ $FAIL("#5.4: new Date(date_1999_end) !== undefined");
+}
+
+if (typeof new Date(date_2000_start) !== "object") {
+ $FAIL("#6.1: typeof new Date(date_2000_start) === 'object'");
+}
+
+if (new Date(date_2000_start) === undefined) {
+ $FAIL("#6.2: new Date(date_2000_start) === undefined");
+}
+
+var x63 = new Date(date_2000_start);
+if(typeof x63 !== "object"){
+ $FAIL("#6.3: typeof new Date(date_2000_start) !== 'object'");
+}
+
+var x64 = new Date(date_2000_start);
+if(x64 === undefined){
+ $FAIL("#6.4: new Date(date_2000_start) !== undefined");
+}
+
+if (typeof new Date(date_2099_end) !== "object") {
+ $FAIL("#7.1: typeof new Date(date_2099_end) === 'object'");
+}
+
+if (new Date(date_2099_end) === undefined) {
+ $FAIL("#7.2: new Date(date_2099_end) === undefined");
+}
+
+var x73 = new Date(date_2099_end);
+if(typeof x73 !== "object"){
+ $FAIL("#7.3: typeof new Date(date_2099_end) !== 'object'");
+}
+
+var x74 = new Date(date_2099_end);
+if(x74 === undefined){
+ $FAIL("#7.4: new Date(date_2099_end) !== undefined");
+}
+
+if (typeof new Date(date_2100_start) !== "object") {
+ $FAIL("#8.1: typeof new Date(date_2100_start) === 'object'");
+}
+
+if (new Date(date_2100_start) === undefined) {
+ $FAIL("#8.2: new Date(date_2100_start) === undefined");
+}
+
+var x83 = new Date(date_2100_start);
+if(typeof x83 !== "object"){
+ $FAIL("#8.3: typeof new Date(date_2100_start) !== 'object'");
+}
+
+var x84 = new Date(date_2100_start);
+if(x84 === undefined){
+ $FAIL("#8.4: new Date(date_2100_start) !== undefined");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A2_T1.js
new file mode 100644
index 000000000..fdcf92f72
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A2_T1.js
@@ -0,0 +1,133 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.2_A2_T1;
+ * @section: 15.9.3.2;
+ * @assertion: The [[Prototype]] property of the newly constructed object
+ * is set to the original Date prototype object, the one that is the
+ * initial value of Date.prototype;
+ * @description: Checking Date.prototype property of newly constructed objects;
+*/
+
+$INCLUDE("Date_constants.js");
+
+var x11 = new Date(date_1899_end);
+if (typeof x11.constructor.prototype !== "object") {
+ $FAIL("#1.1: typeof x11.constructor.prototype === 'object'");
+}
+
+var x12 = new Date(date_1899_end);
+if (!Date.prototype.isPrototypeOf(x12)) {
+ $ERROR('#1.2: Date.prototype.isPrototypeOf(x12)');
+}
+
+var x13 = new Date(date_1899_end);
+if(Date.prototype !== x13.constructor.prototype){
+ $FAIL("#1.3: Date.prototype !== x13.constructor.prototype");
+}
+
+var x21 = new Date(date_1900_start);
+if (typeof x21.constructor.prototype !== "object") {
+ $FAIL("#2.1: typeof x21.constructor.prototype === 'object'");
+}
+
+var x22 = new Date(date_1900_start);
+if (!Date.prototype.isPrototypeOf(x22)) {
+ $ERROR('#2.2: Date.prototype.isPrototypeOf(x22)');
+}
+
+var x23 = new Date(date_1900_start);
+if(Date.prototype !== x23.constructor.prototype){
+ $FAIL("#2.3: Date.prototype !== x23.constructor.prototype");
+}
+
+var x31 = new Date(date_1969_end);
+if (typeof x31.constructor.prototype !== "object") {
+ $FAIL("#3.1: typeof x31.constructor.prototype === 'object'");
+}
+
+var x32 = new Date(date_1969_end);
+if (!Date.prototype.isPrototypeOf(x32)) {
+ $ERROR('#3.2: Date.prototype.isPrototypeOf(x32)');
+}
+
+var x33 = new Date(date_1969_end);
+if(Date.prototype !== x33.constructor.prototype){
+ $FAIL("#3.3: Date.prototype !== x33.constructor.prototype");
+}
+
+var x41 = new Date(date_1970_start);
+if (typeof x41.constructor.prototype !== "object") {
+ $FAIL("#4.1: typeof x11.constructor.prototype === 'object'");
+}
+
+var x42 = new Date(date_1970_start);
+if (!Date.prototype.isPrototypeOf(x42)) {
+ $ERROR('#4.2: Date.prototype.isPrototypeOf(x42)');
+}
+
+var x43 = new Date(date_1970_start);
+if(Date.prototype !== x43.constructor.prototype){
+ $FAIL("#4.3: Date.prototype !== x43.constructor.prototype");
+}
+
+var x51 = new Date(date_1999_end);
+if (typeof x51.constructor.prototype !== "object") {
+ $FAIL("#5.1: typeof x51.constructor.prototype === 'object'");
+}
+
+var x52 = new Date(date_1999_end);
+if (!Date.prototype.isPrototypeOf(x52)) {
+ $ERROR('#5.2: Date.prototype.isPrototypeOf(x52)');
+}
+
+var x53 = new Date(date_1999_end);
+if(Date.prototype !== x53.constructor.prototype){
+ $FAIL("#5.3: Date.prototype !== x53.constructor.prototype");
+}
+
+var x61 = new Date(date_2000_start);
+if (typeof x61.constructor.prototype !== "object") {
+ $FAIL("#6.1: typeof x61.constructor.prototype === 'object'");
+}
+
+var x62 = new Date(date_2000_start);
+if (!Date.prototype.isPrototypeOf(x62)) {
+ $ERROR('#6.2: Date.prototype.isPrototypeOf(x62)');
+}
+
+var x63 = new Date(date_2000_start);
+if(Date.prototype !== x63.constructor.prototype){
+ $FAIL("#6.3: Date.prototype !== x63.constructor.prototype");
+}
+
+var x71 = new Date(date_2099_end);
+if (typeof x71.constructor.prototype !== "object") {
+ $FAIL("#7.1: typeof x71.constructor.prototype === 'object'");
+}
+
+var x72 = new Date(date_2099_end);
+if (!Date.prototype.isPrototypeOf(x72)) {
+ $ERROR('#7.2: Date.prototype.isPrototypeOf(x72)');
+}
+
+var x73 = new Date(date_2099_end);
+if(Date.prototype !== x73.constructor.prototype){
+ $FAIL("#7.3: Date.prototype !== x73.constructor.prototype");
+}
+
+var x81 = new Date(date_2100_start);
+if (typeof x81.constructor.prototype !== "object") {
+ $FAIL("#8.1: typeof x81.constructor.prototype === 'object'");
+}
+
+var x82 = new Date(date_2100_start);
+if (!Date.prototype.isPrototypeOf(x82)) {
+ $ERROR('#8.2: Date.prototype.isPrototypeOf(x82)');
+}
+
+var x83 = new Date(date_2100_start);
+if(Date.prototype !== x83.constructor.prototype){
+ $FAIL("#8.3: Date.prototype !== x83.constructor.prototype");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A3_T1.1.js
new file mode 100644
index 000000000..3864b0814
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A3_T1.1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.2_A3_T1.1;
+ * @section: 15.9.3.2;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on delete prototype.toString;
+*/
+
+$INCLUDE("Date_constants.js");
+
+var x1 = new Date(date_1899_end);
+if (Object.prototype.toString.call(x1) !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(date_1900_start);
+if (Object.prototype.toString.call(x2) !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(date_1969_end);
+if (Object.prototype.toString.call(x3) !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(date_1970_start);
+if (Object.prototype.toString.call(x4) !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(date_1999_end);
+if (Object.prototype.toString.call(x5) !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(date_2000_start);
+if (Object.prototype.toString.call(x6) !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(date_2099_end);
+if (Object.prototype.toString.call(x7) !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(date_2100_start);
+if (Object.prototype.toString.call(x8) !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A3_T1.2.js
new file mode 100644
index 000000000..5dfc63663
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.3_The_Date_Constructor/S15.9.3.2_A3_T1.2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.3.2_A3_T1.2;
+ * @section: 15.9.3.2;
+ * @assertion: The [[Class]] property of the newly constructed object
+ * is set to "Date";
+ * @description: Test based on overwriting prototype.toString;
+*/
+
+$INCLUDE("Date_constants.js");
+
+Date.prototype.toString = Object.prototype.toString;
+
+var x1 = new Date(date_1899_end);
+if (x1.toString() !== "[object Date]") {
+ $FAIL("#1: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x2 = new Date(date_1900_start);
+if (x2.toString() !== "[object Date]") {
+ $FAIL("#2: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x3 = new Date(date_1969_end);
+if (x3.toString() !== "[object Date]") {
+ $FAIL("#3: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x4 = new Date(date_1970_start);
+if (x4.toString() !== "[object Date]") {
+ $FAIL("#4: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x5 = new Date(date_1999_end);
+if (x5.toString() !== "[object Date]") {
+ $FAIL("#5: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x6 = new Date(date_2000_start);
+if (x6.toString() !== "[object Date]") {
+ $FAIL("#6: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x7 = new Date(date_2099_end);
+if (x7.toString() !== "[object Date]") {
+ $FAIL("#7: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
+
+var x8 = new Date(date_2100_start);
+if (x8.toString() !== "[object Date]") {
+ $FAIL("#8: The [[Class]] property of the newly constructed object is set to 'Date'");
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T1.js
new file mode 100644
index 000000000..fa0179f45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.1_A1_T1;
+ * @section: 15.9.4.1;
+ * @assertion: The Date property "prototype" has { DontEnum, DontDelete, ReadOnly } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype;
+Date.prototype = 1;
+if (Date.prototype !== x) {
+ $ERROR('#1: The Date.prototype has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T2.js
new file mode 100644
index 000000000..c5a70eb25
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.1_A1_T2;
+ * @section: 15.9.4.1;
+ * @assertion: The Date property "prototype" has { DontEnum, DontDelete, ReadOnly } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype !== false) {
+ $ERROR('#1: The Date.prototype property has the attributes DontDelete');
+}
+
+if (!Date.hasOwnProperty('prototype')) {
+ $FAIL('#2: The Date.prototype property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T3.js
new file mode 100644
index 000000000..47fa32732
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.1_Date.prototype/S15.9.4.1_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.1_A1_T3;
+ * @section: 15.9.4.1;
+ * @assertion: The Date property "prototype" has { DontEnum, DontDelete, ReadOnly } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.propertyIsEnumerable('prototype')) {
+ $ERROR('#1: The Date.prototype property has the attribute DontEnum');
+}
+
+for(x in Date) {
+ if(x === "prototype") {
+ $ERROR('#2: The Date.prototype has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T1.js
new file mode 100644
index 000000000..fd0add4f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.2_A1_T1;
+ * @section: 15.9.4.2;
+ * @assertion: The Date property "parse" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.parse;
+if(x === 1)
+ Date.parse = 2;
+else
+ Date.parse = 1;
+if (Date.parse === x) {
+ $ERROR('#1: The Date.parse has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T2.js
new file mode 100644
index 000000000..f6735477f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.2_A1_T2;
+ * @section: 15.9.4.2;
+ * @assertion: The Date property "parse" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.parse === false) {
+ $ERROR('#1: The Date.parse property has not the attributes DontDelete');
+}
+
+if (Date.hasOwnProperty('parse')) {
+ $FAIL('#2: The Date.parse property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T3.js
new file mode 100644
index 000000000..75e89e152
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.2_A1_T3;
+ * @section: 15.9.4.2;
+ * @assertion: The Date property "parse" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.propertyIsEnumerable('parse')) {
+ $ERROR('#1: The Date.parse property has the attribute DontEnum');
+}
+
+for(x in Date) {
+ if(x === "parse") {
+ $ERROR('#2: The Date.parse has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A2_T1.js
new file mode 100644
index 000000000..6d088bc9a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.2_A2_T1;
+ * @section: 15.9.4.2;
+ * @assertion: The "length" property of the "parse" is 1;
+ * @description: The "length" property of the "parse" is 1;
+ */
+
+if(Date.parse.hasOwnProperty("length") !== true){
+ $ERROR('#1: The parse has a "length" property');
+}
+
+if(Date.parse.length !== 1){
+ $ERROR('#2: The "length" property of the parse is 1');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T1.js
new file mode 100644
index 000000000..6bdb848c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.2_A3_T1;
+ * @section: 15.9.4.2;
+ * @assertion: The Date.parse property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.parse.length;
+Date.parse.length = 1;
+if (Date.parse.length !== x) {
+ $ERROR('#1: The Date.parse.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T2.js
new file mode 100644
index 000000000..a83e48b9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.2_A3_T2;
+ * @section: 15.9.4.2;
+ * @assertion: The Date.parse property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.parse.length !== false) {
+ $ERROR('#1: The Date.parse.length property has the attributes DontDelete');
+}
+
+if (!Date.parse.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.parse.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T3.js
new file mode 100644
index 000000000..b5a7c7f43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.2_Date.parse/S15.9.4.2_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.2_A3_T3;
+ * @section: 15.9.4.2;
+ * @assertion: The Date.parse property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.parse.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.parse.length property has the attribute DontEnum');
+}
+
+for(x in Date.parse) {
+ if(x === "length") {
+ $ERROR('#2: The Date.parse.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T1.js
new file mode 100644
index 000000000..a53936572
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.3_A1_T1;
+ * @section: 15.9.4.3;
+ * @assertion: The Date property "UTC" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.UTC;
+if(x === 1)
+ Date.UTC = 2;
+else
+ Date.UTC = 1;
+if (Date.UTC === x) {
+ $ERROR('#1: The Date.UTC has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T2.js
new file mode 100644
index 000000000..313874aa5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.3_A1_T2;
+ * @section: 15.9.4.3;
+ * @assertion: The Date property "UTC" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.UTC === false) {
+ $ERROR('#1: The Date.UTC property has not the attributes DontDelete');
+}
+
+if (Date.hasOwnProperty('UTC')) {
+ $FAIL('#2: The Date.UTC property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T3.js
new file mode 100644
index 000000000..9e7a68eab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.3_A1_T3;
+ * @section: 15.9.4.3;
+ * @assertion: The Date property "UTC" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.propertyIsEnumerable('UTC')) {
+ $ERROR('#1: The Date.UTC property has the attribute DontEnum');
+}
+
+for(x in Date) {
+ if(x === "UTC") {
+ $ERROR('#2: The Date.UTC has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A2_T1.js
new file mode 100644
index 000000000..4ba6c3185
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.3_A2_T1;
+ * @section: 15.9.4.3;
+ * @assertion: The "length" property of the "UTC" is 7;
+ * @description: The "length" property of the "UTC" is 7;
+ */
+
+if(Date.UTC.hasOwnProperty("length") !== true){
+ $ERROR('#1: The UTC has a "length" property');
+}
+
+if(Date.UTC.length !== 7){
+ $ERROR('#2: The "length" property of the UTC is 7');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T1.js
new file mode 100644
index 000000000..9de510da5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.3_A3_T1;
+ * @section: 15.9.4.3;
+ * @assertion: The Date.UTC property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.UTC.length;
+Date.UTC.length = 1;
+if (Date.UTC.length !== x) {
+ $ERROR('#1: The Date.UTC.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T2.js
new file mode 100644
index 000000000..c1be23fe8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.3_A3_T2;
+ * @section: 15.9.4.3;
+ * @assertion: The Date.UTC property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.UTC.length !== false) {
+ $ERROR('#1: The Date.UTC.length property has the attributes DontDelete');
+}
+
+if (!Date.UTC.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.UTC.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T3.js
new file mode 100644
index 000000000..ddb9b4f3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/15.9.4.3_Date.UTC/S15.9.4.3_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4.3_A3_T3;
+ * @section: 15.9.4.3;
+ * @assertion: The Date.UTC property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.UTC.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.UTC.length property has the attribute DontEnum');
+}
+
+for(x in Date.UTC) {
+ if(x === "length") {
+ $ERROR('#2: The Date.UTC.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A1.js
new file mode 100644
index 000000000..2ac75a690
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4_A1;
+ * @section: 15.9.4;
+ * @assertion: The Date constructor has the property "prototype";
+ * @description: Checking existence of the property "prototype";
+ */
+
+if(!Date.hasOwnProperty("prototype")){
+ $ERROR('#1: The Date constructor has the property "prototype"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A2.js
new file mode 100644
index 000000000..18f59150d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4_A2;
+ * @section: 15.9.4;
+ * @assertion: The Date constructor has the property "parse";
+ * @description: Checking existence of the property "parse";
+ */
+
+if(!Date.hasOwnProperty("parse")){
+ $ERROR('#1: The Date constructor has the property "parse"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A3.js
new file mode 100644
index 000000000..fba1c6ab3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A3.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.4_A3;
+ * @section: 15.9.4;
+ * @assertion: The Date constructor has the property "UTC";
+ * @description: Checking existence of the property "UTC";
+ */
+
+if(!Date.hasOwnProperty("UTC")){
+ $ERROR('#1: The Date constructor has the property "UTC"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A4.js
new file mode 100644
index 000000000..7d8771158
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_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.
+
+/**
+* @name: S15.9.4_A4;
+* @section: 15.9.4;
+* @assertion: The value of the internal [[Prototype]] property of the Date
+* constructor is the Function prototype object;
+* @description: Checking Function.prototype.isPrototypeOf(Date);
+*/
+
+//CHECK#1
+if (!(Function.prototype.isPrototypeOf(Date))) {
+ $ERROR('#1: the value of the internal [[Prototype]] property of the Date constructor is the Function prototype object.');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A5.js
new file mode 100644
index 000000000..0e0e99042
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.4_Properties_of_the_Date_Constructor/S15.9.4_A5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.9.4_A5;
+* @section: 15.9.4;
+* @assertion: Date constructor has length property whose value is 7;
+* @description: Checking Date.length property;
+*/
+
+//CHECK#1
+if (!Date.hasOwnProperty("length")){
+ $ERROR('#1: Date constructor has length property');
+}
+
+//CHECK#2
+if (Date.length !== 7) {
+ $ERROR('#2: Date constructor length property value should be 7');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T1.js
new file mode 100644
index 000000000..746b9fe6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.10_A1_T1;
+ * @section: 15.9.5.10;
+ * @assertion: The Date.prototype property "getFullYear" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getFullYear;
+if(x === 1)
+ Date.prototype.getFullYear = 2;
+else
+ Date.prototype.getFullYear = 1;
+if (Date.prototype.getFullYear === x) {
+ $ERROR('#1: The Date.prototype.getFullYear has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T2.js
new file mode 100644
index 000000000..f91c896ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.10_A1_T2;
+ * @section: 15.9.5.10;
+ * @assertion: The Date.prototype property "getFullYear" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getFullYear === false) {
+ $ERROR('#1: The Date.prototype.getFullYear property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getFullYear')) {
+ $FAIL('#2: The Date.prototype.getFullYear property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T3.js
new file mode 100644
index 000000000..ea0e1c9c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.10_A1_T3;
+ * @section: 15.9.5.10;
+ * @assertion: The Date.prototype property "getFullYear" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getFullYear')) {
+ $ERROR('#1: The Date.prototype.getFullYear property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getFullYear") {
+ $ERROR('#2: The Date.prototype.getFullYear has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A2_T1.js
new file mode 100644
index 000000000..96d586102
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.10_A2_T1;
+ * @section: 15.9.5.10;
+ * @assertion: The "length" property of the "getFullYear" is 0;
+ * @description: The "length" property of the "getFullYear" is 0;
+ */
+
+if(Date.prototype.getFullYear.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getFullYear has a "length" property');
+}
+
+if(Date.prototype.getFullYear.length !== 0){
+ $ERROR('#2: The "length" property of the getFullYear is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T1.js
new file mode 100644
index 000000000..f2a45e321
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.10_A3_T1;
+ * @section: 15.9.5.10;
+ * @assertion: The Date.prototype.getFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getFullYear.length;
+Date.prototype.getFullYear.length = 1;
+if (Date.prototype.getFullYear.length !== x) {
+ $ERROR('#1: The Date.prototype.getFullYear.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T2.js
new file mode 100644
index 000000000..445495305
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.10_A3_T2;
+ * @section: 15.9.5.10;
+ * @assertion: The Date.prototype.getFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getFullYear.length !== false) {
+ $ERROR('#1: The Date.prototype.getFullYear.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getFullYear.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getFullYear.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T3.js
new file mode 100644
index 000000000..09ee4997f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.10_Date.prototype.getFullYear/S15.9.5.10_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.10_A3_T3;
+ * @section: 15.9.5.10;
+ * @assertion: The Date.prototype.getFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getFullYear.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getFullYear.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getFullYear) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getFullYear.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T1.js
new file mode 100644
index 000000000..cefc215b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.11_A1_T1;
+ * @section: 15.9.5.11;
+ * @assertion: The Date.prototype property "getUTCFullYear" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCFullYear;
+if(x === 1)
+ Date.prototype.getUTCFullYear = 2;
+else
+ Date.prototype.getUTCFullYear = 1;
+if (Date.prototype.getUTCFullYear === x) {
+ $ERROR('#1: The Date.prototype.getUTCFullYear has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T2.js
new file mode 100644
index 000000000..8da9048e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.11_A1_T2;
+ * @section: 15.9.5.11;
+ * @assertion: The Date.prototype property "getUTCFullYear" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCFullYear === false) {
+ $ERROR('#1: The Date.prototype.getUTCFullYear property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getUTCFullYear')) {
+ $FAIL('#2: The Date.prototype.getUTCFullYear property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T3.js
new file mode 100644
index 000000000..7657e9a8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.11_A1_T3;
+ * @section: 15.9.5.11;
+ * @assertion: The Date.prototype property "getUTCFullYear" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getUTCFullYear')) {
+ $ERROR('#1: The Date.prototype.getUTCFullYear property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getUTCFullYear") {
+ $ERROR('#2: The Date.prototype.getUTCFullYear has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A2_T1.js
new file mode 100644
index 000000000..a6fd5d27c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.11_A2_T1;
+ * @section: 15.9.5.11;
+ * @assertion: The "length" property of the "getUTCFullYear" is 0;
+ * @description: The "length" property of the "getUTCFullYear" is 0;
+ */
+
+if(Date.prototype.getUTCFullYear.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getUTCFullYear has a "length" property');
+}
+
+if(Date.prototype.getUTCFullYear.length !== 0){
+ $ERROR('#2: The "length" property of the getUTCFullYear is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T1.js
new file mode 100644
index 000000000..c40f8e3e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.11_A3_T1;
+ * @section: 15.9.5.11;
+ * @assertion: The Date.prototype.getUTCFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCFullYear.length;
+Date.prototype.getUTCFullYear.length = 1;
+if (Date.prototype.getUTCFullYear.length !== x) {
+ $ERROR('#1: The Date.prototype.getUTCFullYear.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T2.js
new file mode 100644
index 000000000..d0cae29dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.11_A3_T2;
+ * @section: 15.9.5.11;
+ * @assertion: The Date.prototype.getUTCFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCFullYear.length !== false) {
+ $ERROR('#1: The Date.prototype.getUTCFullYear.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getUTCFullYear.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getUTCFullYear.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T3.js
new file mode 100644
index 000000000..d060e4b1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.11_Date.prototype.getUTCFullYear/S15.9.5.11_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.11_A3_T3;
+ * @section: 15.9.5.11;
+ * @assertion: The Date.prototype.getUTCFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getUTCFullYear.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getUTCFullYear.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getUTCFullYear) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getUTCFullYear.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T1.js
new file mode 100644
index 000000000..bf1f947bb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.12_A1_T1;
+ * @section: 15.9.5.12;
+ * @assertion: The Date.prototype property "getMonth" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getMonth;
+if(x === 1)
+ Date.prototype.getMonth = 2;
+else
+ Date.prototype.getMonth = 1;
+if (Date.prototype.getMonth === x) {
+ $ERROR('#1: The Date.prototype.getMonth has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T2.js
new file mode 100644
index 000000000..fbdf03f5a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.12_A1_T2;
+ * @section: 15.9.5.12;
+ * @assertion: The Date.prototype property "getMonth" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getMonth === false) {
+ $ERROR('#1: The Date.prototype.getMonth property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getMonth')) {
+ $FAIL('#2: The Date.prototype.getMonth property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T3.js
new file mode 100644
index 000000000..ee20259ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.12_A1_T3;
+ * @section: 15.9.5.12;
+ * @assertion: The Date.prototype property "getMonth" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getMonth')) {
+ $ERROR('#1: The Date.prototype.getMonth property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getMonth") {
+ $ERROR('#2: The Date.prototype.getMonth has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A2_T1.js
new file mode 100644
index 000000000..292f2dbcb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.12_A2_T1;
+ * @section: 15.9.5.12;
+ * @assertion: The "length" property of the "getMonth" is 0;
+ * @description: The "length" property of the "getMonth" is 0;
+ */
+
+if(Date.prototype.getMonth.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getMonth has a "length" property');
+}
+
+if(Date.prototype.getMonth.length !== 0){
+ $ERROR('#2: The "length" property of the getMonth is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T1.js
new file mode 100644
index 000000000..2981306d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.12_A3_T1;
+ * @section: 15.9.5.12;
+ * @assertion: The Date.prototype.getMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getMonth.length;
+Date.prototype.getMonth.length = 1;
+if (Date.prototype.getMonth.length !== x) {
+ $ERROR('#1: The Date.prototype.getMonth.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T2.js
new file mode 100644
index 000000000..62abc8b16
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.12_A3_T2;
+ * @section: 15.9.5.12;
+ * @assertion: The Date.prototype.getMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getMonth.length !== false) {
+ $ERROR('#1: The Date.prototype.getMonth.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getMonth.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getMonth.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T3.js
new file mode 100644
index 000000000..d8ab5b2f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.12_Date.prototype.getMonth/S15.9.5.12_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.12_A3_T3;
+ * @section: 15.9.5.12;
+ * @assertion: The Date.prototype.getMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getMonth.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getMonth.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getMonth) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getMonth.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T1.js
new file mode 100644
index 000000000..5f92792ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.13_A1_T1;
+ * @section: 15.9.5.13;
+ * @assertion: The Date.prototype property "getUTCMonth" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCMonth;
+if(x === 1)
+ Date.prototype.getUTCMonth = 2;
+else
+ Date.prototype.getUTCMonth = 1;
+if (Date.prototype.getUTCMonth === x) {
+ $ERROR('#1: The Date.prototype.getUTCMonth has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T2.js
new file mode 100644
index 000000000..4d49329a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.13_A1_T2;
+ * @section: 15.9.5.13;
+ * @assertion: The Date.prototype property "getUTCMonth" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCMonth === false) {
+ $ERROR('#1: The Date.prototype.getUTCMonth property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getUTCMonth')) {
+ $FAIL('#2: The Date.prototype.getUTCMonth property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T3.js
new file mode 100644
index 000000000..ca4fb8c45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.13_A1_T3;
+ * @section: 15.9.5.13;
+ * @assertion: The Date.prototype property "getUTCMonth" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getUTCMonth')) {
+ $ERROR('#1: The Date.prototype.getUTCMonth property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getUTCMonth") {
+ $ERROR('#2: The Date.prototype.getUTCMonth has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A2_T1.js
new file mode 100644
index 000000000..3438c8493
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.13_A2_T1;
+ * @section: 15.9.5.13;
+ * @assertion: The "length" property of the "getUTCMonth" is 0;
+ * @description: The "length" property of the "getUTCMonth" is 0;
+ */
+
+if(Date.prototype.getUTCMonth.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getUTCMonth has a "length" property');
+}
+
+if(Date.prototype.getUTCMonth.length !== 0){
+ $ERROR('#2: The "length" property of the getUTCMonth is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T1.js
new file mode 100644
index 000000000..3951206ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.13_A3_T1;
+ * @section: 15.9.5.13;
+ * @assertion: The Date.prototype.getUTCMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCMonth.length;
+Date.prototype.getUTCMonth.length = 1;
+if (Date.prototype.getUTCMonth.length !== x) {
+ $ERROR('#1: The Date.prototype.getUTCMonth.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T2.js
new file mode 100644
index 000000000..dbd859295
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.13_A3_T2;
+ * @section: 15.9.5.13;
+ * @assertion: The Date.prototype.getUTCMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCMonth.length !== false) {
+ $ERROR('#1: The Date.prototype.getUTCMonth.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getUTCMonth.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getUTCMonth.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T3.js
new file mode 100644
index 000000000..7b417d062
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.13_Date.prototype.getUTCMonth/S15.9.5.13_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.13_A3_T3;
+ * @section: 15.9.5.13;
+ * @assertion: The Date.prototype.getUTCMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getUTCMonth.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getUTCMonth.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getUTCMonth) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getUTCMonth.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T1.js
new file mode 100644
index 000000000..64fffba7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.14_A1_T1;
+ * @section: 15.9.5.14;
+ * @assertion: The Date.prototype property "getDate" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getDate;
+if(x === 1)
+ Date.prototype.getDate = 2;
+else
+ Date.prototype.getDate = 1;
+if (Date.prototype.getDate === x) {
+ $ERROR('#1: The Date.prototype.getDate has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T2.js
new file mode 100644
index 000000000..63a312912
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.14_A1_T2;
+ * @section: 15.9.5.14;
+ * @assertion: The Date.prototype property "getDate" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getDate === false) {
+ $ERROR('#1: The Date.prototype.getDate property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getDate')) {
+ $FAIL('#2: The Date.prototype.getDate property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T3.js
new file mode 100644
index 000000000..aa6291e32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.14_A1_T3;
+ * @section: 15.9.5.14;
+ * @assertion: The Date.prototype property "getDate" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getDate')) {
+ $ERROR('#1: The Date.prototype.getDate property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getDate") {
+ $ERROR('#2: The Date.prototype.getDate has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A2_T1.js
new file mode 100644
index 000000000..ae54df4c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.14_A2_T1;
+ * @section: 15.9.5.14;
+ * @assertion: The "length" property of the "getDate" is 0;
+ * @description: The "length" property of the "getDate" is 0;
+ */
+
+if(Date.prototype.getDate.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getDate has a "length" property');
+}
+
+if(Date.prototype.getDate.length !== 0){
+ $ERROR('#2: The "length" property of the getDate is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T1.js
new file mode 100644
index 000000000..b6a94211b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.14_A3_T1;
+ * @section: 15.9.5.14;
+ * @assertion: The Date.prototype.getDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getDate.length;
+Date.prototype.getDate.length = 1;
+if (Date.prototype.getDate.length !== x) {
+ $ERROR('#1: The Date.prototype.getDate.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T2.js
new file mode 100644
index 000000000..56ba23355
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.14_A3_T2;
+ * @section: 15.9.5.14;
+ * @assertion: The Date.prototype.getDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getDate.length !== false) {
+ $ERROR('#1: The Date.prototype.getDate.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getDate.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getDate.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T3.js
new file mode 100644
index 000000000..bcedeb676
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.14_Date.prototype.getDate/S15.9.5.14_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.14_A3_T3;
+ * @section: 15.9.5.14;
+ * @assertion: The Date.prototype.getDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getDate.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getDate.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getDate) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getDate.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T1.js
new file mode 100644
index 000000000..f90d8dc44
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.15_A1_T1;
+ * @section: 15.9.5.15;
+ * @assertion: The Date.prototype property "getUTCDate" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCDate;
+if(x === 1)
+ Date.prototype.getUTCDate = 2;
+else
+ Date.prototype.getUTCDate = 1;
+if (Date.prototype.getUTCDate === x) {
+ $ERROR('#1: The Date.prototype.getUTCDate has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T2.js
new file mode 100644
index 000000000..3f03923be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.15_A1_T2;
+ * @section: 15.9.5.15;
+ * @assertion: The Date.prototype property "getUTCDate" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCDate === false) {
+ $ERROR('#1: The Date.prototype.getUTCDate property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getUTCDate')) {
+ $FAIL('#2: The Date.prototype.getUTCDate property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T3.js
new file mode 100644
index 000000000..310890c62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.15_A1_T3;
+ * @section: 15.9.5.15;
+ * @assertion: The Date.prototype property "getUTCDate" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getUTCDate')) {
+ $ERROR('#1: The Date.prototype.getUTCDate property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getUTCDate") {
+ $ERROR('#2: The Date.prototype.getUTCDate has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A2_T1.js
new file mode 100644
index 000000000..eee73522a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.15_A2_T1;
+ * @section: 15.9.5.15;
+ * @assertion: The "length" property of the "getUTCDate" is 0;
+ * @description: The "length" property of the "getUTCDate" is 0;
+ */
+
+if(Date.prototype.getUTCDate.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getUTCDate has a "length" property');
+}
+
+if(Date.prototype.getUTCDate.length !== 0){
+ $ERROR('#2: The "length" property of the getUTCDate is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T1.js
new file mode 100644
index 000000000..d6764061e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.15_A3_T1;
+ * @section: 15.9.5.15;
+ * @assertion: The Date.prototype.getUTCDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCDate.length;
+Date.prototype.getUTCDate.length = 1;
+if (Date.prototype.getUTCDate.length !== x) {
+ $ERROR('#1: The Date.prototype.getUTCDate.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T2.js
new file mode 100644
index 000000000..4ef1a6e6b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.15_A3_T2;
+ * @section: 15.9.5.15;
+ * @assertion: The Date.prototype.getUTCDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCDate.length !== false) {
+ $ERROR('#1: The Date.prototype.getUTCDate.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getUTCDate.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getUTCDate.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T3.js
new file mode 100644
index 000000000..ee38abfd8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.15_Date.prototype.getUTCDate/S15.9.5.15_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.15_A3_T3;
+ * @section: 15.9.5.15;
+ * @assertion: The Date.prototype.getUTCDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getUTCDate.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getUTCDate.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getUTCDate) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getUTCDate.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T1.js
new file mode 100644
index 000000000..de892d854
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.16_A1_T1;
+ * @section: 15.9.5.16;
+ * @assertion: The Date.prototype property "getDay" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getDay;
+if(x === 1)
+ Date.prototype.getDay = 2;
+else
+ Date.prototype.getDay = 1;
+if (Date.prototype.getDay === x) {
+ $ERROR('#1: The Date.prototype.getDay has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T2.js
new file mode 100644
index 000000000..09664b024
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.16_A1_T2;
+ * @section: 15.9.5.16;
+ * @assertion: The Date.prototype property "getDay" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getDay === false) {
+ $ERROR('#1: The Date.prototype.getDay property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getDay')) {
+ $FAIL('#2: The Date.prototype.getDay property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T3.js
new file mode 100644
index 000000000..51a3b6b8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.16_A1_T3;
+ * @section: 15.9.5.16;
+ * @assertion: The Date.prototype property "getDay" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getDay')) {
+ $ERROR('#1: The Date.prototype.getDay property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getDay") {
+ $ERROR('#2: The Date.prototype.getDay has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A2_T1.js
new file mode 100644
index 000000000..52de373e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.16_A2_T1;
+ * @section: 15.9.5.16;
+ * @assertion: The "length" property of the "getDay" is 0;
+ * @description: The "length" property of the "getDay" is 0;
+ */
+
+if(Date.prototype.getDay.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getDay has a "length" property');
+}
+
+if(Date.prototype.getDay.length !== 0){
+ $ERROR('#2: The "length" property of the getDay is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T1.js
new file mode 100644
index 000000000..670debaad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.16_A3_T1;
+ * @section: 15.9.5.16;
+ * @assertion: The Date.prototype.getDay property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getDay.length;
+Date.prototype.getDay.length = 1;
+if (Date.prototype.getDay.length !== x) {
+ $ERROR('#1: The Date.prototype.getDay.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T2.js
new file mode 100644
index 000000000..068a286c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.16_A3_T2;
+ * @section: 15.9.5.16;
+ * @assertion: The Date.prototype.getDay property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getDay.length !== false) {
+ $ERROR('#1: The Date.prototype.getDay.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getDay.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getDay.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T3.js
new file mode 100644
index 000000000..c8b74fb53
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.16_Date.prototype.getDay/S15.9.5.16_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.16_A3_T3;
+ * @section: 15.9.5.16;
+ * @assertion: The Date.prototype.getDay property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getDay.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getDay.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getDay) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getDay.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T1.js
new file mode 100644
index 000000000..6013476af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.17_A1_T1;
+ * @section: 15.9.5.17;
+ * @assertion: The Date.prototype property "getUTCDay" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCDay;
+if(x === 1)
+ Date.prototype.getUTCDay = 2;
+else
+ Date.prototype.getUTCDay = 1;
+if (Date.prototype.getUTCDay === x) {
+ $ERROR('#1: The Date.prototype.getUTCDay has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T2.js
new file mode 100644
index 000000000..1eb3bfb9a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.17_A1_T2;
+ * @section: 15.9.5.17;
+ * @assertion: The Date.prototype property "getUTCDay" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCDay === false) {
+ $ERROR('#1: The Date.prototype.getUTCDay property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getUTCDay')) {
+ $FAIL('#2: The Date.prototype.getUTCDay property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T3.js
new file mode 100644
index 000000000..b7e4164c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.17_A1_T3;
+ * @section: 15.9.5.17;
+ * @assertion: The Date.prototype property "getUTCDay" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getUTCDay')) {
+ $ERROR('#1: The Date.prototype.getUTCDay property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getUTCDay") {
+ $ERROR('#2: The Date.prototype.getUTCDay has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A2_T1.js
new file mode 100644
index 000000000..18eeb1cd3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.17_A2_T1;
+ * @section: 15.9.5.17;
+ * @assertion: The "length" property of the "getUTCDay" is 0;
+ * @description: The "length" property of the "getUTCDay" is 0;
+ */
+
+if(Date.prototype.getUTCDay.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getUTCDay has a "length" property');
+}
+
+if(Date.prototype.getUTCDay.length !== 0){
+ $ERROR('#2: The "length" property of the getUTCDay is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T1.js
new file mode 100644
index 000000000..b11957db7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.17_A3_T1;
+ * @section: 15.9.5.17;
+ * @assertion: The Date.prototype.getUTCDay property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCDay.length;
+Date.prototype.getUTCDay.length = 1;
+if (Date.prototype.getUTCDay.length !== x) {
+ $ERROR('#1: The Date.prototype.getUTCDay.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T2.js
new file mode 100644
index 000000000..5a8ef75b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.17_A3_T2;
+ * @section: 15.9.5.17;
+ * @assertion: The Date.prototype.getUTCDay property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCDay.length !== false) {
+ $ERROR('#1: The Date.prototype.getUTCDay.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getUTCDay.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getUTCDay.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T3.js
new file mode 100644
index 000000000..23285e024
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.17_Date.prototype.getUTCDay/S15.9.5.17_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.17_A3_T3;
+ * @section: 15.9.5.17;
+ * @assertion: The Date.prototype.getUTCDay property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getUTCDay.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getUTCDay.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getUTCDay) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getUTCDay.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T1.js
new file mode 100644
index 000000000..61cb49279
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.18_A1_T1;
+ * @section: 15.9.5.18;
+ * @assertion: The Date.prototype property "getHours" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getHours;
+if(x === 1)
+ Date.prototype.getHours = 2;
+else
+ Date.prototype.getHours = 1;
+if (Date.prototype.getHours === x) {
+ $ERROR('#1: The Date.prototype.getHours has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T2.js
new file mode 100644
index 000000000..7fa0e360b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.18_A1_T2;
+ * @section: 15.9.5.18;
+ * @assertion: The Date.prototype property "getHours" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getHours === false) {
+ $ERROR('#1: The Date.prototype.getHours property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getHours')) {
+ $FAIL('#2: The Date.prototype.getHours property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T3.js
new file mode 100644
index 000000000..f840fa275
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.18_A1_T3;
+ * @section: 15.9.5.18;
+ * @assertion: The Date.prototype property "getHours" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getHours')) {
+ $ERROR('#1: The Date.prototype.getHours property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getHours") {
+ $ERROR('#2: The Date.prototype.getHours has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A2_T1.js
new file mode 100644
index 000000000..7f29a38e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.18_A2_T1;
+ * @section: 15.9.5.18;
+ * @assertion: The "length" property of the "getHours" is 0;
+ * @description: The "length" property of the "getHours" is 0;
+ */
+
+if(Date.prototype.getHours.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getHours has a "length" property');
+}
+
+if(Date.prototype.getHours.length !== 0){
+ $ERROR('#2: The "length" property of the getHours is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T1.js
new file mode 100644
index 000000000..5638f79f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.18_A3_T1;
+ * @section: 15.9.5.18;
+ * @assertion: The Date.prototype.getHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getHours.length;
+Date.prototype.getHours.length = 1;
+if (Date.prototype.getHours.length !== x) {
+ $ERROR('#1: The Date.prototype.getHours.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T2.js
new file mode 100644
index 000000000..db4857f23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.18_A3_T2;
+ * @section: 15.9.5.18;
+ * @assertion: The Date.prototype.getHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getHours.length !== false) {
+ $ERROR('#1: The Date.prototype.getHours.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getHours.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getHours.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T3.js
new file mode 100644
index 000000000..35c912829
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.18_Date.prototype.getHours/S15.9.5.18_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.18_A3_T3;
+ * @section: 15.9.5.18;
+ * @assertion: The Date.prototype.getHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getHours.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getHours.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getHours) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getHours.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T1.js
new file mode 100644
index 000000000..425d1ead1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.19_A1_T1;
+ * @section: 15.9.5.19;
+ * @assertion: The Date.prototype property "getUTCHours" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCHours;
+if(x === 1)
+ Date.prototype.getUTCHours = 2;
+else
+ Date.prototype.getUTCHours = 1;
+if (Date.prototype.getUTCHours === x) {
+ $ERROR('#1: The Date.prototype.getUTCHours has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T2.js
new file mode 100644
index 000000000..a99d954e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.19_A1_T2;
+ * @section: 15.9.5.19;
+ * @assertion: The Date.prototype property "getUTCHours" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCHours === false) {
+ $ERROR('#1: The Date.prototype.getUTCHours property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getUTCHours')) {
+ $FAIL('#2: The Date.prototype.getUTCHours property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T3.js
new file mode 100644
index 000000000..5cff85138
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.19_A1_T3;
+ * @section: 15.9.5.19;
+ * @assertion: The Date.prototype property "getUTCHours" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getUTCHours')) {
+ $ERROR('#1: The Date.prototype.getUTCHours property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getUTCHours") {
+ $ERROR('#2: The Date.prototype.getUTCHours has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A2_T1.js
new file mode 100644
index 000000000..01e45c440
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.19_A2_T1;
+ * @section: 15.9.5.19;
+ * @assertion: The "length" property of the "getUTCHours" is 0;
+ * @description: The "length" property of the "getUTCHours" is 0;
+ */
+
+if(Date.prototype.getUTCHours.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getUTCHours has a "length" property');
+}
+
+if(Date.prototype.getUTCHours.length !== 0){
+ $ERROR('#2: The "length" property of the getUTCHours is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T1.js
new file mode 100644
index 000000000..7f6ba1e8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.19_A3_T1;
+ * @section: 15.9.5.19;
+ * @assertion: The Date.prototype.getUTCHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCHours.length;
+Date.prototype.getUTCHours.length = 1;
+if (Date.prototype.getUTCHours.length !== x) {
+ $ERROR('#1: The Date.prototype.getUTCHours.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T2.js
new file mode 100644
index 000000000..3b696a618
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.19_A3_T2;
+ * @section: 15.9.5.19;
+ * @assertion: The Date.prototype.getUTCHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCHours.length !== false) {
+ $ERROR('#1: The Date.prototype.getUTCHours.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getUTCHours.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getUTCHours.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T3.js
new file mode 100644
index 000000000..5b862e760
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.19_Date.prototype.getUTCHours/S15.9.5.19_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.19_A3_T3;
+ * @section: 15.9.5.19;
+ * @assertion: The Date.prototype.getUTCHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getUTCHours.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getUTCHours.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getUTCHours) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getUTCHours.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T1.js
new file mode 100644
index 000000000..58c5b3413
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.1_A1_T1;
+ * @section: 15.9.5.1;
+ * @assertion: The Date.prototype property "constructor" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.constructor;
+if(x === 1)
+ Date.prototype.constructor = 2;
+else
+ Date.prototype.constructor = 1;
+if (Date.prototype.constructor === x) {
+ $ERROR('#1: The Date.prototype.constructor has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T2.js
new file mode 100644
index 000000000..1fdf52c67
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.1_A1_T2;
+ * @section: 15.9.5.1;
+ * @assertion: The Date.prototype property "constructor" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.constructor === false) {
+ $ERROR('#1: The Date.prototype.constructor property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('constructor')) {
+ $FAIL('#2: The Date.prototype.constructor property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T3.js
new file mode 100644
index 000000000..bcb7e4607
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.1_A1_T3;
+ * @section: 15.9.5.1;
+ * @assertion: The Date.prototype property "constructor" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('constructor')) {
+ $ERROR('#1: The Date.prototype.constructor property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "constructor") {
+ $ERROR('#2: The Date.prototype.constructor has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A2_T1.js
new file mode 100644
index 000000000..217f094fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.1_A2_T1;
+ * @section: 15.9.5.1;
+ * @assertion: The "length" property of the "constructor" is 7;
+ * @description: The "length" property of the "constructor" is 7;
+ */
+
+if(Date.prototype.constructor.hasOwnProperty("length") !== true){
+ $ERROR('#1: The constructor has a "length" property');
+}
+
+if(Date.prototype.constructor.length !== 7){
+ $ERROR('#2: The "length" property of the constructor is 7');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T1.js
new file mode 100644
index 000000000..ad32d3528
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.1_A3_T1;
+ * @section: 15.9.5.1;
+ * @assertion: The Date.prototype.constructor property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.constructor.length;
+Date.prototype.constructor.length = 1;
+if (Date.prototype.constructor.length !== x) {
+ $ERROR('#1: The Date.prototype.constructor.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T2.js
new file mode 100644
index 000000000..159db1f30
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.1_A3_T2;
+ * @section: 15.9.5.1;
+ * @assertion: The Date.prototype.constructor property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.constructor.length !== false) {
+ $ERROR('#1: The Date.prototype.constructor.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.constructor.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.constructor.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T3.js
new file mode 100644
index 000000000..354f5a8ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.1_Date.prototype.constructor/S15.9.5.1_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.1_A3_T3;
+ * @section: 15.9.5.1;
+ * @assertion: The Date.prototype.constructor property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.constructor.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.constructor.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.constructor) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.constructor.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T1.js
new file mode 100644
index 000000000..00aa46862
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.20_A1_T1;
+ * @section: 15.9.5.20;
+ * @assertion: The Date.prototype property "getMinutes" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getMinutes;
+if(x === 1)
+ Date.prototype.getMinutes = 2;
+else
+ Date.prototype.getMinutes = 1;
+if (Date.prototype.getMinutes === x) {
+ $ERROR('#1: The Date.prototype.getMinutes has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T2.js
new file mode 100644
index 000000000..1e4d74a14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.20_A1_T2;
+ * @section: 15.9.5.20;
+ * @assertion: The Date.prototype property "getMinutes" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getMinutes === false) {
+ $ERROR('#1: The Date.prototype.getMinutes property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getMinutes')) {
+ $FAIL('#2: The Date.prototype.getMinutes property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T3.js
new file mode 100644
index 000000000..f0b359030
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.20_A1_T3;
+ * @section: 15.9.5.20;
+ * @assertion: The Date.prototype property "getMinutes" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getMinutes')) {
+ $ERROR('#1: The Date.prototype.getMinutes property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getMinutes") {
+ $ERROR('#2: The Date.prototype.getMinutes has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A2_T1.js
new file mode 100644
index 000000000..7c1f6f650
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.20_A2_T1;
+ * @section: 15.9.5.20;
+ * @assertion: The "length" property of the "getMinutes" is 0;
+ * @description: The "length" property of the "getMinutes" is 0;
+ */
+
+if(Date.prototype.getMinutes.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getMinutes has a "length" property');
+}
+
+if(Date.prototype.getMinutes.length !== 0){
+ $ERROR('#2: The "length" property of the getMinutes is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T1.js
new file mode 100644
index 000000000..088e50eda
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.20_A3_T1;
+ * @section: 15.9.5.20;
+ * @assertion: The Date.prototype.getMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getMinutes.length;
+Date.prototype.getMinutes.length = 1;
+if (Date.prototype.getMinutes.length !== x) {
+ $ERROR('#1: The Date.prototype.getMinutes.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T2.js
new file mode 100644
index 000000000..661809ac4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.20_A3_T2;
+ * @section: 15.9.5.20;
+ * @assertion: The Date.prototype.getMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getMinutes.length !== false) {
+ $ERROR('#1: The Date.prototype.getMinutes.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getMinutes.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getMinutes.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T3.js
new file mode 100644
index 000000000..fe8e48cc5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.20_Date.prototype.getMinutes/S15.9.5.20_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.20_A3_T3;
+ * @section: 15.9.5.20;
+ * @assertion: The Date.prototype.getMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getMinutes.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getMinutes.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getMinutes) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getMinutes.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T1.js
new file mode 100644
index 000000000..839c0fbaf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.21_A1_T1;
+ * @section: 15.9.5.21;
+ * @assertion: The Date.prototype property "getUTCMinutes" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCMinutes;
+if(x === 1)
+ Date.prototype.getUTCMinutes = 2;
+else
+ Date.prototype.getUTCMinutes = 1;
+if (Date.prototype.getUTCMinutes === x) {
+ $ERROR('#1: The Date.prototype.getUTCMinutes has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T2.js
new file mode 100644
index 000000000..1915f9da4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.21_A1_T2;
+ * @section: 15.9.5.21;
+ * @assertion: The Date.prototype property "getUTCMinutes" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCMinutes === false) {
+ $ERROR('#1: The Date.prototype.getUTCMinutes property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getUTCMinutes')) {
+ $FAIL('#2: The Date.prototype.getUTCMinutes property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T3.js
new file mode 100644
index 000000000..5734d5028
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.21_A1_T3;
+ * @section: 15.9.5.21;
+ * @assertion: The Date.prototype property "getUTCMinutes" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getUTCMinutes')) {
+ $ERROR('#1: The Date.prototype.getUTCMinutes property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getUTCMinutes") {
+ $ERROR('#2: The Date.prototype.getUTCMinutes has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A2_T1.js
new file mode 100644
index 000000000..b83a09d5b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.21_A2_T1;
+ * @section: 15.9.5.21;
+ * @assertion: The "length" property of the "getUTCMinutes" is 0;
+ * @description: The "length" property of the "getUTCMinutes" is 0;
+ */
+
+if(Date.prototype.getUTCMinutes.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getUTCMinutes has a "length" property');
+}
+
+if(Date.prototype.getUTCMinutes.length !== 0){
+ $ERROR('#2: The "length" property of the getUTCMinutes is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T1.js
new file mode 100644
index 000000000..44556c9a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.21_A3_T1;
+ * @section: 15.9.5.21;
+ * @assertion: The Date.prototype.getUTCMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCMinutes.length;
+Date.prototype.getUTCMinutes.length = 1;
+if (Date.prototype.getUTCMinutes.length !== x) {
+ $ERROR('#1: The Date.prototype.getUTCMinutes.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T2.js
new file mode 100644
index 000000000..858e9ca19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.21_A3_T2;
+ * @section: 15.9.5.21;
+ * @assertion: The Date.prototype.getUTCMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCMinutes.length !== false) {
+ $ERROR('#1: The Date.prototype.getUTCMinutes.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getUTCMinutes.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getUTCMinutes.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T3.js
new file mode 100644
index 000000000..62c4607bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.21_Date.prototype.getUTCMinutes/S15.9.5.21_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.21_A3_T3;
+ * @section: 15.9.5.21;
+ * @assertion: The Date.prototype.getUTCMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getUTCMinutes.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getUTCMinutes.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getUTCMinutes) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getUTCMinutes.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T1.js
new file mode 100644
index 000000000..08540f630
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.22_A1_T1;
+ * @section: 15.9.5.22;
+ * @assertion: The Date.prototype property "getSeconds" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getSeconds;
+if(x === 1)
+ Date.prototype.getSeconds = 2;
+else
+ Date.prototype.getSeconds = 1;
+if (Date.prototype.getSeconds === x) {
+ $ERROR('#1: The Date.prototype.getSeconds has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T2.js
new file mode 100644
index 000000000..3dacaab68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.22_A1_T2;
+ * @section: 15.9.5.22;
+ * @assertion: The Date.prototype property "getSeconds" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getSeconds === false) {
+ $ERROR('#1: The Date.prototype.getSeconds property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getSeconds')) {
+ $FAIL('#2: The Date.prototype.getSeconds property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T3.js
new file mode 100644
index 000000000..2e54b3174
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.22_A1_T3;
+ * @section: 15.9.5.22;
+ * @assertion: The Date.prototype property "getSeconds" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getSeconds')) {
+ $ERROR('#1: The Date.prototype.getSeconds property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getSeconds") {
+ $ERROR('#2: The Date.prototype.getSeconds has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A2_T1.js
new file mode 100644
index 000000000..1767bc0b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.22_A2_T1;
+ * @section: 15.9.5.22;
+ * @assertion: The "length" property of the "getSeconds" is 0;
+ * @description: The "length" property of the "getSeconds" is 0;
+ */
+
+if(Date.prototype.getSeconds.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getSeconds has a "length" property');
+}
+
+if(Date.prototype.getSeconds.length !== 0){
+ $ERROR('#2: The "length" property of the getSeconds is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T1.js
new file mode 100644
index 000000000..d4e0803e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.22_A3_T1;
+ * @section: 15.9.5.22;
+ * @assertion: The Date.prototype.getSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getSeconds.length;
+Date.prototype.getSeconds.length = 1;
+if (Date.prototype.getSeconds.length !== x) {
+ $ERROR('#1: The Date.prototype.getSeconds.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T2.js
new file mode 100644
index 000000000..7a149aad2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.22_A3_T2;
+ * @section: 15.9.5.22;
+ * @assertion: The Date.prototype.getSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getSeconds.length !== false) {
+ $ERROR('#1: The Date.prototype.getSeconds.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getSeconds.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getSeconds.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T3.js
new file mode 100644
index 000000000..b1f918d2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.22_Date.prototype.getSeconds/S15.9.5.22_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.22_A3_T3;
+ * @section: 15.9.5.22;
+ * @assertion: The Date.prototype.getSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getSeconds.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getSeconds.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getSeconds) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getSeconds.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T1.js
new file mode 100644
index 000000000..f109d931c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.23_A1_T1;
+ * @section: 15.9.5.23;
+ * @assertion: The Date.prototype property "getUTCSeconds" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCSeconds;
+if(x === 1)
+ Date.prototype.getUTCSeconds = 2;
+else
+ Date.prototype.getUTCSeconds = 1;
+if (Date.prototype.getUTCSeconds === x) {
+ $ERROR('#1: The Date.prototype.getUTCSeconds has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T2.js
new file mode 100644
index 000000000..c0afc75fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.23_A1_T2;
+ * @section: 15.9.5.23;
+ * @assertion: The Date.prototype property "getUTCSeconds" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCSeconds === false) {
+ $ERROR('#1: The Date.prototype.getUTCSeconds property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getUTCSeconds')) {
+ $FAIL('#2: The Date.prototype.getUTCSeconds property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T3.js
new file mode 100644
index 000000000..232f5052e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.23_A1_T3;
+ * @section: 15.9.5.23;
+ * @assertion: The Date.prototype property "getUTCSeconds" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getUTCSeconds')) {
+ $ERROR('#1: The Date.prototype.getUTCSeconds property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getUTCSeconds") {
+ $ERROR('#2: The Date.prototype.getUTCSeconds has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A2_T1.js
new file mode 100644
index 000000000..499dbecfd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.23_A2_T1;
+ * @section: 15.9.5.23;
+ * @assertion: The "length" property of the "getUTCSeconds" is 0;
+ * @description: The "length" property of the "getUTCSeconds" is 0;
+ */
+
+if(Date.prototype.getUTCSeconds.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getUTCSeconds has a "length" property');
+}
+
+if(Date.prototype.getUTCSeconds.length !== 0){
+ $ERROR('#2: The "length" property of the getUTCSeconds is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T1.js
new file mode 100644
index 000000000..48f15d8c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.23_A3_T1;
+ * @section: 15.9.5.23;
+ * @assertion: The Date.prototype.getUTCSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCSeconds.length;
+Date.prototype.getUTCSeconds.length = 1;
+if (Date.prototype.getUTCSeconds.length !== x) {
+ $ERROR('#1: The Date.prototype.getUTCSeconds.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T2.js
new file mode 100644
index 000000000..368ad2720
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.23_A3_T2;
+ * @section: 15.9.5.23;
+ * @assertion: The Date.prototype.getUTCSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCSeconds.length !== false) {
+ $ERROR('#1: The Date.prototype.getUTCSeconds.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getUTCSeconds.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getUTCSeconds.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T3.js
new file mode 100644
index 000000000..c7a174fd8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.23_Date.prototype.getUTCSeconds/S15.9.5.23_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.23_A3_T3;
+ * @section: 15.9.5.23;
+ * @assertion: The Date.prototype.getUTCSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getUTCSeconds.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getUTCSeconds.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getUTCSeconds) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getUTCSeconds.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T1.js
new file mode 100644
index 000000000..f34c19d17
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.24_A1_T1;
+ * @section: 15.9.5.24;
+ * @assertion: The Date.prototype property "getMilliseconds" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getMilliseconds;
+if(x === 1)
+ Date.prototype.getMilliseconds = 2;
+else
+ Date.prototype.getMilliseconds = 1;
+if (Date.prototype.getMilliseconds === x) {
+ $ERROR('#1: The Date.prototype.getMilliseconds has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T2.js
new file mode 100644
index 000000000..f798e3f9a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.24_A1_T2;
+ * @section: 15.9.5.24;
+ * @assertion: The Date.prototype property "getMilliseconds" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getMilliseconds === false) {
+ $ERROR('#1: The Date.prototype.getMilliseconds property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getMilliseconds')) {
+ $FAIL('#2: The Date.prototype.getMilliseconds property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T3.js
new file mode 100644
index 000000000..6089d289a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.24_A1_T3;
+ * @section: 15.9.5.24;
+ * @assertion: The Date.prototype property "getMilliseconds" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getMilliseconds')) {
+ $ERROR('#1: The Date.prototype.getMilliseconds property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getMilliseconds") {
+ $ERROR('#2: The Date.prototype.getMilliseconds has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A2_T1.js
new file mode 100644
index 000000000..2491807d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.24_A2_T1;
+ * @section: 15.9.5.24;
+ * @assertion: The "length" property of the "getMilliseconds" is 0;
+ * @description: The "length" property of the "getMilliseconds" is 0;
+ */
+
+if(Date.prototype.getMilliseconds.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getMilliseconds has a "length" property');
+}
+
+if(Date.prototype.getMilliseconds.length !== 0){
+ $ERROR('#2: The "length" property of the getMilliseconds is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T1.js
new file mode 100644
index 000000000..6e17c3d78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.24_A3_T1;
+ * @section: 15.9.5.24;
+ * @assertion: The Date.prototype.getMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getMilliseconds.length;
+Date.prototype.getMilliseconds.length = 1;
+if (Date.prototype.getMilliseconds.length !== x) {
+ $ERROR('#1: The Date.prototype.getMilliseconds.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T2.js
new file mode 100644
index 000000000..79a154aa7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.24_A3_T2;
+ * @section: 15.9.5.24;
+ * @assertion: The Date.prototype.getMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getMilliseconds.length !== false) {
+ $ERROR('#1: The Date.prototype.getMilliseconds.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getMilliseconds.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getMilliseconds.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T3.js
new file mode 100644
index 000000000..9c642e41f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.24_Date.prototype.getMilliseconds/S15.9.5.24_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.24_A3_T3;
+ * @section: 15.9.5.24;
+ * @assertion: The Date.prototype.getMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getMilliseconds.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getMilliseconds.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getMilliseconds) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getMilliseconds.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T1.js
new file mode 100644
index 000000000..0ff4a07d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.25_A1_T1;
+ * @section: 15.9.5.25;
+ * @assertion: The Date.prototype property "getUTCMilliseconds" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCMilliseconds;
+if(x === 1)
+ Date.prototype.getUTCMilliseconds = 2;
+else
+ Date.prototype.getUTCMilliseconds = 1;
+if (Date.prototype.getUTCMilliseconds === x) {
+ $ERROR('#1: The Date.prototype.getUTCMilliseconds has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T2.js
new file mode 100644
index 000000000..42323b16f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.25_A1_T2;
+ * @section: 15.9.5.25;
+ * @assertion: The Date.prototype property "getUTCMilliseconds" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCMilliseconds === false) {
+ $ERROR('#1: The Date.prototype.getUTCMilliseconds property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getUTCMilliseconds')) {
+ $FAIL('#2: The Date.prototype.getUTCMilliseconds property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T3.js
new file mode 100644
index 000000000..c7c85b30a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.25_A1_T3;
+ * @section: 15.9.5.25;
+ * @assertion: The Date.prototype property "getUTCMilliseconds" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getUTCMilliseconds')) {
+ $ERROR('#1: The Date.prototype.getUTCMilliseconds property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getUTCMilliseconds") {
+ $ERROR('#2: The Date.prototype.getUTCMilliseconds has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A2_T1.js
new file mode 100644
index 000000000..2fcfe552c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.25_A2_T1;
+ * @section: 15.9.5.25;
+ * @assertion: The "length" property of the "getUTCMilliseconds" is 0;
+ * @description: The "length" property of the "getUTCMilliseconds" is 0;
+ */
+
+if(Date.prototype.getUTCMilliseconds.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getUTCMilliseconds has a "length" property');
+}
+
+if(Date.prototype.getUTCMilliseconds.length !== 0){
+ $ERROR('#2: The "length" property of the getUTCMilliseconds is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T1.js
new file mode 100644
index 000000000..392aa059b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.25_A3_T1;
+ * @section: 15.9.5.25;
+ * @assertion: The Date.prototype.getUTCMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getUTCMilliseconds.length;
+Date.prototype.getUTCMilliseconds.length = 1;
+if (Date.prototype.getUTCMilliseconds.length !== x) {
+ $ERROR('#1: The Date.prototype.getUTCMilliseconds.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T2.js
new file mode 100644
index 000000000..abcb8409b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.25_A3_T2;
+ * @section: 15.9.5.25;
+ * @assertion: The Date.prototype.getUTCMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getUTCMilliseconds.length !== false) {
+ $ERROR('#1: The Date.prototype.getUTCMilliseconds.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getUTCMilliseconds.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getUTCMilliseconds.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T3.js
new file mode 100644
index 000000000..e9ca37013
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.25_Date.prototype.getUTCMilliseconds/S15.9.5.25_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.25_A3_T3;
+ * @section: 15.9.5.25;
+ * @assertion: The Date.prototype.getUTCMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getUTCMilliseconds.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getUTCMilliseconds.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getUTCMilliseconds) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getUTCMilliseconds.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T1.js
new file mode 100644
index 000000000..ca6671e8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.26_A1_T1;
+ * @section: 15.9.5.26;
+ * @assertion: The Date.prototype property "getTimezoneOffset" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getTimezoneOffset;
+if(x === 1)
+ Date.prototype.getTimezoneOffset = 2;
+else
+ Date.prototype.getTimezoneOffset = 1;
+if (Date.prototype.getTimezoneOffset === x) {
+ $ERROR('#1: The Date.prototype.getTimezoneOffset has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T2.js
new file mode 100644
index 000000000..86b733615
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.26_A1_T2;
+ * @section: 15.9.5.26;
+ * @assertion: The Date.prototype property "getTimezoneOffset" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getTimezoneOffset === false) {
+ $ERROR('#1: The Date.prototype.getTimezoneOffset property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getTimezoneOffset')) {
+ $FAIL('#2: The Date.prototype.getTimezoneOffset property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T3.js
new file mode 100644
index 000000000..1f4a2b09e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.26_A1_T3;
+ * @section: 15.9.5.26;
+ * @assertion: The Date.prototype property "getTimezoneOffset" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getTimezoneOffset')) {
+ $ERROR('#1: The Date.prototype.getTimezoneOffset property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getTimezoneOffset") {
+ $ERROR('#2: The Date.prototype.getTimezoneOffset has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A2_T1.js
new file mode 100644
index 000000000..0b6eb82b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.26_A2_T1;
+ * @section: 15.9.5.26;
+ * @assertion: The "length" property of the "getTimezoneOffset" is 0;
+ * @description: The "length" property of the "getTimezoneOffset" is 0;
+ */
+
+if(Date.prototype.getTimezoneOffset.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getTimezoneOffset has a "length" property');
+}
+
+if(Date.prototype.getTimezoneOffset.length !== 0){
+ $ERROR('#2: The "length" property of the getTimezoneOffset is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T1.js
new file mode 100644
index 000000000..a210a9c92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.26_A3_T1;
+ * @section: 15.9.5.26;
+ * @assertion: The Date.prototype.getTimezoneOffset property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getTimezoneOffset.length;
+Date.prototype.getTimezoneOffset.length = 1;
+if (Date.prototype.getTimezoneOffset.length !== x) {
+ $ERROR('#1: The Date.prototype.getTimezoneOffset.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T2.js
new file mode 100644
index 000000000..3dae5bbf1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.26_A3_T2;
+ * @section: 15.9.5.26;
+ * @assertion: The Date.prototype.getTimezoneOffset property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getTimezoneOffset.length !== false) {
+ $ERROR('#1: The Date.prototype.getTimezoneOffset.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getTimezoneOffset.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getTimezoneOffset.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T3.js
new file mode 100644
index 000000000..eaea7ae78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.26_Date.prototype.getTimezoneOffset/S15.9.5.26_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.26_A3_T3;
+ * @section: 15.9.5.26;
+ * @assertion: The Date.prototype.getTimezoneOffset property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getTimezoneOffset.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getTimezoneOffset.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getTimezoneOffset) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getTimezoneOffset.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T1.js
new file mode 100644
index 000000000..aac9909b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.27_A1_T1;
+ * @section: 15.9.5.27;
+ * @assertion: The Date.prototype property "setTime" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setTime;
+if(x === 1)
+ Date.prototype.setTime = 2;
+else
+ Date.prototype.setTime = 1;
+if (Date.prototype.setTime === x) {
+ $ERROR('#1: The Date.prototype.setTime has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T2.js
new file mode 100644
index 000000000..9fb1fab48
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.27_A1_T2;
+ * @section: 15.9.5.27;
+ * @assertion: The Date.prototype property "setTime" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setTime === false) {
+ $ERROR('#1: The Date.prototype.setTime property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setTime')) {
+ $FAIL('#2: The Date.prototype.setTime property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T3.js
new file mode 100644
index 000000000..0af218973
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.27_A1_T3;
+ * @section: 15.9.5.27;
+ * @assertion: The Date.prototype property "setTime" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setTime')) {
+ $ERROR('#1: The Date.prototype.setTime property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setTime") {
+ $ERROR('#2: The Date.prototype.setTime has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A2_T1.js
new file mode 100644
index 000000000..ec7808fef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.27_A2_T1;
+ * @section: 15.9.5.27;
+ * @assertion: The "length" property of the "setTime" is 1;
+ * @description: The "length" property of the "setTime" is 1;
+ */
+
+if(Date.prototype.setTime.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setTime has a "length" property');
+}
+
+if(Date.prototype.setTime.length !== 1){
+ $ERROR('#2: The "length" property of the setTime is 1');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T1.js
new file mode 100644
index 000000000..42c9e9795
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.27_A3_T1;
+ * @section: 15.9.5.27;
+ * @assertion: The Date.prototype.setTime property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setTime.length;
+Date.prototype.setTime.length = 1;
+if (Date.prototype.setTime.length !== x) {
+ $ERROR('#1: The Date.prototype.setTime.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T2.js
new file mode 100644
index 000000000..188563dc8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.27_A3_T2;
+ * @section: 15.9.5.27;
+ * @assertion: The Date.prototype.setTime property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setTime.length !== false) {
+ $ERROR('#1: The Date.prototype.setTime.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setTime.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setTime.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T3.js
new file mode 100644
index 000000000..bcb31abeb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.27_Date.prototype.setTime/S15.9.5.27_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.27_A3_T3;
+ * @section: 15.9.5.27;
+ * @assertion: The Date.prototype.setTime property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setTime.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setTime.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setTime) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setTime.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T1.js
new file mode 100644
index 000000000..b8614d44c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.28_A1_T1;
+ * @section: 15.9.5.28;
+ * @assertion: The Date.prototype property "setMilliseconds" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setMilliseconds;
+if(x === 1)
+ Date.prototype.setMilliseconds = 2;
+else
+ Date.prototype.setMilliseconds = 1;
+if (Date.prototype.setMilliseconds === x) {
+ $ERROR('#1: The Date.prototype.setMilliseconds has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T2.js
new file mode 100644
index 000000000..34ee527d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.28_A1_T2;
+ * @section: 15.9.5.28;
+ * @assertion: The Date.prototype property "setMilliseconds" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setMilliseconds === false) {
+ $ERROR('#1: The Date.prototype.setMilliseconds property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setMilliseconds')) {
+ $FAIL('#2: The Date.prototype.setMilliseconds property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T3.js
new file mode 100644
index 000000000..be9744ca0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.28_A1_T3;
+ * @section: 15.9.5.28;
+ * @assertion: The Date.prototype property "setMilliseconds" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setMilliseconds')) {
+ $ERROR('#1: The Date.prototype.setMilliseconds property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setMilliseconds") {
+ $ERROR('#2: The Date.prototype.setMilliseconds has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A2_T1.js
new file mode 100644
index 000000000..9808d9d3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.28_A2_T1;
+ * @section: 15.9.5.28;
+ * @assertion: The "length" property of the "setMilliseconds" is 1;
+ * @description: The "length" property of the "setMilliseconds" is 1;
+ */
+
+if(Date.prototype.setMilliseconds.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setMilliseconds has a "length" property');
+}
+
+if(Date.prototype.setMilliseconds.length !== 1){
+ $ERROR('#2: The "length" property of the setMilliseconds is 1');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T1.js
new file mode 100644
index 000000000..bb05c3521
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.28_A3_T1;
+ * @section: 15.9.5.28;
+ * @assertion: The Date.prototype.setMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setMilliseconds.length;
+Date.prototype.setMilliseconds.length = 1;
+if (Date.prototype.setMilliseconds.length !== x) {
+ $ERROR('#1: The Date.prototype.setMilliseconds.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T2.js
new file mode 100644
index 000000000..78d564f7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.28_A3_T2;
+ * @section: 15.9.5.28;
+ * @assertion: The Date.prototype.setMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setMilliseconds.length !== false) {
+ $ERROR('#1: The Date.prototype.setMilliseconds.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setMilliseconds.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setMilliseconds.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T3.js
new file mode 100644
index 000000000..35ff99079
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.28_Date.prototype.setMilliseconds/S15.9.5.28_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.28_A3_T3;
+ * @section: 15.9.5.28;
+ * @assertion: The Date.prototype.setMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setMilliseconds.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setMilliseconds.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setMilliseconds) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setMilliseconds.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T1.js
new file mode 100644
index 000000000..7f0f75331
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.29_A1_T1;
+ * @section: 15.9.5.29;
+ * @assertion: The Date.prototype property "setUTCMilliseconds" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCMilliseconds;
+if(x === 1)
+ Date.prototype.setUTCMilliseconds = 2;
+else
+ Date.prototype.setUTCMilliseconds = 1;
+if (Date.prototype.setUTCMilliseconds === x) {
+ $ERROR('#1: The Date.prototype.setUTCMilliseconds has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T2.js
new file mode 100644
index 000000000..50ba02a8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.29_A1_T2;
+ * @section: 15.9.5.29;
+ * @assertion: The Date.prototype property "setUTCMilliseconds" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCMilliseconds === false) {
+ $ERROR('#1: The Date.prototype.setUTCMilliseconds property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setUTCMilliseconds')) {
+ $FAIL('#2: The Date.prototype.setUTCMilliseconds property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T3.js
new file mode 100644
index 000000000..5846b5495
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.29_A1_T3;
+ * @section: 15.9.5.29;
+ * @assertion: The Date.prototype property "setUTCMilliseconds" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setUTCMilliseconds')) {
+ $ERROR('#1: The Date.prototype.setUTCMilliseconds property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setUTCMilliseconds") {
+ $ERROR('#2: The Date.prototype.setUTCMilliseconds has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A2_T1.js
new file mode 100644
index 000000000..b41644715
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.29_A2_T1;
+ * @section: 15.9.5.29;
+ * @assertion: The "length" property of the "setUTCMilliseconds" is 1;
+ * @description: The "length" property of the "setUTCMilliseconds" is 1;
+ */
+
+if(Date.prototype.setUTCMilliseconds.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setUTCMilliseconds has a "length" property');
+}
+
+if(Date.prototype.setUTCMilliseconds.length !== 1){
+ $ERROR('#2: The "length" property of the setUTCMilliseconds is 1');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T1.js
new file mode 100644
index 000000000..9d7196675
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.29_A3_T1;
+ * @section: 15.9.5.29;
+ * @assertion: The Date.prototype.setUTCMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCMilliseconds.length;
+Date.prototype.setUTCMilliseconds.length = 1;
+if (Date.prototype.setUTCMilliseconds.length !== x) {
+ $ERROR('#1: The Date.prototype.setUTCMilliseconds.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T2.js
new file mode 100644
index 000000000..584073248
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.29_A3_T2;
+ * @section: 15.9.5.29;
+ * @assertion: The Date.prototype.setUTCMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCMilliseconds.length !== false) {
+ $ERROR('#1: The Date.prototype.setUTCMilliseconds.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setUTCMilliseconds.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setUTCMilliseconds.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T3.js
new file mode 100644
index 000000000..69479f68a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.29_Date.prototype.setUTCMilliseconds/S15.9.5.29_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.29_A3_T3;
+ * @section: 15.9.5.29;
+ * @assertion: The Date.prototype.setUTCMilliseconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setUTCMilliseconds.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setUTCMilliseconds.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setUTCMilliseconds) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setUTCMilliseconds.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T1.js
new file mode 100644
index 000000000..3041fd26d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.2_A1_T1;
+ * @section: 15.9.5.2;
+ * @assertion: The Date.prototype property "toString" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.toString;
+if(x === 1)
+ Date.prototype.toString = 2;
+else
+ Date.prototype.toString = 1;
+if (Date.prototype.toString === x) {
+ $ERROR('#1: The Date.prototype.toString has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T2.js
new file mode 100644
index 000000000..d0a0e2557
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.2_A1_T2;
+ * @section: 15.9.5.2;
+ * @assertion: The Date.prototype property "toString" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.toString === false) {
+ $ERROR('#1: The Date.prototype.toString property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('toString')) {
+ $FAIL('#2: The Date.prototype.toString property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T3.js
new file mode 100644
index 000000000..873c101a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.2_A1_T3;
+ * @section: 15.9.5.2;
+ * @assertion: The Date.prototype property "toString" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('toString')) {
+ $ERROR('#1: The Date.prototype.toString property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "toString") {
+ $ERROR('#2: The Date.prototype.toString has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A2_T1.js
new file mode 100644
index 000000000..3fb4ee981
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.2_A2_T1;
+ * @section: 15.9.5.2;
+ * @assertion: The "length" property of the "toString" is 0;
+ * @description: The "length" property of the "toString" is 0;
+ */
+
+if(Date.prototype.toString.hasOwnProperty("length") !== true){
+ $ERROR('#1: The toString has a "length" property');
+}
+
+if(Date.prototype.toString.length !== 0){
+ $ERROR('#2: The "length" property of the toString is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T1.js
new file mode 100644
index 000000000..58c0da63b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.2_A3_T1;
+ * @section: 15.9.5.2;
+ * @assertion: The Date.prototype.toString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.toString.length;
+Date.prototype.toString.length = 1;
+if (Date.prototype.toString.length !== x) {
+ $ERROR('#1: The Date.prototype.toString.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T2.js
new file mode 100644
index 000000000..d32898cb2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.2_A3_T2;
+ * @section: 15.9.5.2;
+ * @assertion: The Date.prototype.toString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.toString.length !== false) {
+ $ERROR('#1: The Date.prototype.toString.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.toString.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.toString.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T3.js
new file mode 100644
index 000000000..0a7b42332
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.2_Date.prototype.toString/S15.9.5.2_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.2_A3_T3;
+ * @section: 15.9.5.2;
+ * @assertion: The Date.prototype.toString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.toString.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.toString.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.toString) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.toString.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T1.js
new file mode 100644
index 000000000..e9715fe23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.30_A1_T1;
+ * @section: 15.9.5.30;
+ * @assertion: The Date.prototype property "setSeconds" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setSeconds;
+if(x === 1)
+ Date.prototype.setSeconds = 2;
+else
+ Date.prototype.setSeconds = 1;
+if (Date.prototype.setSeconds === x) {
+ $ERROR('#1: The Date.prototype.setSeconds has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T2.js
new file mode 100644
index 000000000..2d298a6b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.30_A1_T2;
+ * @section: 15.9.5.30;
+ * @assertion: The Date.prototype property "setSeconds" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setSeconds === false) {
+ $ERROR('#1: The Date.prototype.setSeconds property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setSeconds')) {
+ $FAIL('#2: The Date.prototype.setSeconds property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T3.js
new file mode 100644
index 000000000..c4c80f344
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.30_A1_T3;
+ * @section: 15.9.5.30;
+ * @assertion: The Date.prototype property "setSeconds" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setSeconds')) {
+ $ERROR('#1: The Date.prototype.setSeconds property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setSeconds") {
+ $ERROR('#2: The Date.prototype.setSeconds has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A2_T1.js
new file mode 100644
index 000000000..f8346acbe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.30_A2_T1;
+ * @section: 15.9.5.30;
+ * @assertion: The "length" property of the "setSeconds" is 2;
+ * @description: The "length" property of the "setSeconds" is 2;
+ */
+
+if(Date.prototype.setSeconds.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setSeconds has a "length" property');
+}
+
+if(Date.prototype.setSeconds.length !== 2){
+ $ERROR('#2: The "length" property of the setSeconds is 2');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T1.js
new file mode 100644
index 000000000..fa307330d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.30_A3_T1;
+ * @section: 15.9.5.30;
+ * @assertion: The Date.prototype.setSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setSeconds.length;
+Date.prototype.setSeconds.length = 1;
+if (Date.prototype.setSeconds.length !== x) {
+ $ERROR('#1: The Date.prototype.setSeconds.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T2.js
new file mode 100644
index 000000000..e5a6338ff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.30_A3_T2;
+ * @section: 15.9.5.30;
+ * @assertion: The Date.prototype.setSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setSeconds.length !== false) {
+ $ERROR('#1: The Date.prototype.setSeconds.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setSeconds.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setSeconds.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T3.js
new file mode 100644
index 000000000..25d7bb30c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.30_Date.prototype.setSeconds/S15.9.5.30_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.30_A3_T3;
+ * @section: 15.9.5.30;
+ * @assertion: The Date.prototype.setSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setSeconds.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setSeconds.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setSeconds) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setSeconds.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T1.js
new file mode 100644
index 000000000..54a74aafd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.31_A1_T1;
+ * @section: 15.9.5.31;
+ * @assertion: The Date.prototype property "setUTCSeconds" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCSeconds;
+if(x === 1)
+ Date.prototype.setUTCSeconds = 2;
+else
+ Date.prototype.setUTCSeconds = 1;
+if (Date.prototype.setUTCSeconds === x) {
+ $ERROR('#1: The Date.prototype.setUTCSeconds has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T2.js
new file mode 100644
index 000000000..77e4b1efb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.31_A1_T2;
+ * @section: 15.9.5.31;
+ * @assertion: The Date.prototype property "setUTCSeconds" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCSeconds === false) {
+ $ERROR('#1: The Date.prototype.setUTCSeconds property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setUTCSeconds')) {
+ $FAIL('#2: The Date.prototype.setUTCSeconds property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T3.js
new file mode 100644
index 000000000..d3418cee1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.31_A1_T3;
+ * @section: 15.9.5.31;
+ * @assertion: The Date.prototype property "setUTCSeconds" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setUTCSeconds')) {
+ $ERROR('#1: The Date.prototype.setUTCSeconds property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setUTCSeconds") {
+ $ERROR('#2: The Date.prototype.setUTCSeconds has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A2_T1.js
new file mode 100644
index 000000000..b0ecfe7b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.31_A2_T1;
+ * @section: 15.9.5.31;
+ * @assertion: The "length" property of the "setUTCSeconds" is 2;
+ * @description: The "length" property of the "setUTCSeconds" is 2;
+ */
+
+if(Date.prototype.setUTCSeconds.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setUTCSeconds has a "length" property');
+}
+
+if(Date.prototype.setUTCSeconds.length !== 2){
+ $ERROR('#2: The "length" property of the setUTCSeconds is 2');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T1.js
new file mode 100644
index 000000000..02dd13936
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.31_A3_T1;
+ * @section: 15.9.5.31;
+ * @assertion: The Date.prototype.setUTCSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCSeconds.length;
+Date.prototype.setUTCSeconds.length = 1;
+if (Date.prototype.setUTCSeconds.length !== x) {
+ $ERROR('#1: The Date.prototype.setUTCSeconds.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T2.js
new file mode 100644
index 000000000..ab1124321
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.31_A3_T2;
+ * @section: 15.9.5.31;
+ * @assertion: The Date.prototype.setUTCSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCSeconds.length !== false) {
+ $ERROR('#1: The Date.prototype.setUTCSeconds.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setUTCSeconds.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setUTCSeconds.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T3.js
new file mode 100644
index 000000000..dc704cad6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.31_Date.prototype.setUTCSeconds/S15.9.5.31_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.31_A3_T3;
+ * @section: 15.9.5.31;
+ * @assertion: The Date.prototype.setUTCSeconds property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setUTCSeconds.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setUTCSeconds.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setUTCSeconds) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setUTCSeconds.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T1.js
new file mode 100644
index 000000000..65544c05a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.32_A1_T1;
+ * @section: 15.9.5.32;
+ * @assertion: The Date.prototype property "setMinutes" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setMinutes;
+if(x === 1)
+ Date.prototype.setMinutes = 2;
+else
+ Date.prototype.setMinutes = 1;
+if (Date.prototype.setMinutes === x) {
+ $ERROR('#1: The Date.prototype.setMinutes has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T2.js
new file mode 100644
index 000000000..47b9da016
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.32_A1_T2;
+ * @section: 15.9.5.32;
+ * @assertion: The Date.prototype property "setMinutes" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setMinutes === false) {
+ $ERROR('#1: The Date.prototype.setMinutes property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setMinutes')) {
+ $FAIL('#2: The Date.prototype.setMinutes property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T3.js
new file mode 100644
index 000000000..337842586
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.32_A1_T3;
+ * @section: 15.9.5.32;
+ * @assertion: The Date.prototype property "setMinutes" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setMinutes')) {
+ $ERROR('#1: The Date.prototype.setMinutes property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setMinutes") {
+ $ERROR('#2: The Date.prototype.setMinutes has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A2_T1.js
new file mode 100644
index 000000000..9175dba46
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.32_A2_T1;
+ * @section: 15.9.5.32;
+ * @assertion: The "length" property of the "setMinutes" is 3;
+ * @description: The "length" property of the "setMinutes" is 3;
+ */
+
+if(Date.prototype.setMinutes.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setMinutes has a "length" property');
+}
+
+if(Date.prototype.setMinutes.length !== 3){
+ $ERROR('#2: The "length" property of the setMinutes is 3');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T1.js
new file mode 100644
index 000000000..2f97aebbe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.32_A3_T1;
+ * @section: 15.9.5.32;
+ * @assertion: The Date.prototype.setMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setMinutes.length;
+Date.prototype.setMinutes.length = 1;
+if (Date.prototype.setMinutes.length !== x) {
+ $ERROR('#1: The Date.prototype.setMinutes.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T2.js
new file mode 100644
index 000000000..d9edae225
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.32_A3_T2;
+ * @section: 15.9.5.32;
+ * @assertion: The Date.prototype.setMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setMinutes.length !== false) {
+ $ERROR('#1: The Date.prototype.setMinutes.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setMinutes.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setMinutes.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T3.js
new file mode 100644
index 000000000..f964ef410
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.32_Date.prototype.setMinutes/S15.9.5.32_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.32_A3_T3;
+ * @section: 15.9.5.32;
+ * @assertion: The Date.prototype.setMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setMinutes.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setMinutes.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setMinutes) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setMinutes.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T1.js
new file mode 100644
index 000000000..1678fecc2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.33_A1_T1;
+ * @section: 15.9.5.33;
+ * @assertion: The Date.prototype property "setUTCMinutes" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCMinutes;
+if(x === 1)
+ Date.prototype.setUTCMinutes = 2;
+else
+ Date.prototype.setUTCMinutes = 1;
+if (Date.prototype.setUTCMinutes === x) {
+ $ERROR('#1: The Date.prototype.setUTCMinutes has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T2.js
new file mode 100644
index 000000000..c47039302
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.33_A1_T2;
+ * @section: 15.9.5.33;
+ * @assertion: The Date.prototype property "setUTCMinutes" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCMinutes === false) {
+ $ERROR('#1: The Date.prototype.setUTCMinutes property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setUTCMinutes')) {
+ $FAIL('#2: The Date.prototype.setUTCMinutes property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T3.js
new file mode 100644
index 000000000..52bbab9e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.33_A1_T3;
+ * @section: 15.9.5.33;
+ * @assertion: The Date.prototype property "setUTCMinutes" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setUTCMinutes')) {
+ $ERROR('#1: The Date.prototype.setUTCMinutes property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setUTCMinutes") {
+ $ERROR('#2: The Date.prototype.setUTCMinutes has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A2_T1.js
new file mode 100644
index 000000000..0ce4a304e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.33_A2_T1;
+ * @section: 15.9.5.33;
+ * @assertion: The "length" property of the "setUTCMinutes" is 3;
+ * @description: The "length" property of the "setUTCMinutes" is 3;
+ */
+
+if(Date.prototype.setUTCMinutes.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setUTCMinutes has a "length" property');
+}
+
+if(Date.prototype.setUTCMinutes.length !== 3){
+ $ERROR('#2: The "length" property of the setUTCMinutes is 3');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T1.js
new file mode 100644
index 000000000..4eb21d891
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.33_A3_T1;
+ * @section: 15.9.5.33;
+ * @assertion: The Date.prototype.setUTCMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCMinutes.length;
+Date.prototype.setUTCMinutes.length = 1;
+if (Date.prototype.setUTCMinutes.length !== x) {
+ $ERROR('#1: The Date.prototype.setUTCMinutes.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T2.js
new file mode 100644
index 000000000..6b0773e8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.33_A3_T2;
+ * @section: 15.9.5.33;
+ * @assertion: The Date.prototype.setUTCMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCMinutes.length !== false) {
+ $ERROR('#1: The Date.prototype.setUTCMinutes.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setUTCMinutes.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setUTCMinutes.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T3.js
new file mode 100644
index 000000000..63d03ba52
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.33_Date.prototype.setUTCMinutes/S15.9.5.33_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.33_A3_T3;
+ * @section: 15.9.5.33;
+ * @assertion: The Date.prototype.setUTCMinutes property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setUTCMinutes.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setUTCMinutes.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setUTCMinutes) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setUTCMinutes.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T1.js
new file mode 100644
index 000000000..c3b6197b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.34_A1_T1;
+ * @section: 15.9.5.34;
+ * @assertion: The Date.prototype property "setHours" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setHours;
+if(x === 1)
+ Date.prototype.setHours = 2;
+else
+ Date.prototype.setHours = 1;
+if (Date.prototype.setHours === x) {
+ $ERROR('#1: The Date.prototype.setHours has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T2.js
new file mode 100644
index 000000000..97ac3989b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.34_A1_T2;
+ * @section: 15.9.5.34;
+ * @assertion: The Date.prototype property "setHours" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setHours === false) {
+ $ERROR('#1: The Date.prototype.setHours property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setHours')) {
+ $FAIL('#2: The Date.prototype.setHours property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T3.js
new file mode 100644
index 000000000..441bf9a6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.34_A1_T3;
+ * @section: 15.9.5.34;
+ * @assertion: The Date.prototype property "setHours" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setHours')) {
+ $ERROR('#1: The Date.prototype.setHours property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setHours") {
+ $ERROR('#2: The Date.prototype.setHours has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A2_T1.js
new file mode 100644
index 000000000..e2a8683c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.34_A2_T1;
+ * @section: 15.9.5.34;
+ * @assertion: The "length" property of the "setHours" is 4;
+ * @description: The "length" property of the "setHours" is 4;
+ */
+
+if(Date.prototype.setHours.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setHours has a "length" property');
+}
+
+if(Date.prototype.setHours.length !== 4){
+ $ERROR('#2: The "length" property of the setHours is 4');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T1.js
new file mode 100644
index 000000000..03d44d597
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.34_A3_T1;
+ * @section: 15.9.5.34;
+ * @assertion: The Date.prototype.setHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setHours.length;
+Date.prototype.setHours.length = 1;
+if (Date.prototype.setHours.length !== x) {
+ $ERROR('#1: The Date.prototype.setHours.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T2.js
new file mode 100644
index 000000000..14c6fd549
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.34_A3_T2;
+ * @section: 15.9.5.34;
+ * @assertion: The Date.prototype.setHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setHours.length !== false) {
+ $ERROR('#1: The Date.prototype.setHours.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setHours.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setHours.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T3.js
new file mode 100644
index 000000000..84bc26c5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.34_Date.prototype.setHours/S15.9.5.34_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.34_A3_T3;
+ * @section: 15.9.5.34;
+ * @assertion: The Date.prototype.setHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setHours.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setHours.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setHours) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setHours.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T1.js
new file mode 100644
index 000000000..51ab521fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.35_A1_T1;
+ * @section: 15.9.5.35;
+ * @assertion: The Date.prototype property "setUTCHours" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCHours;
+if(x === 1)
+ Date.prototype.setUTCHours = 2;
+else
+ Date.prototype.setUTCHours = 1;
+if (Date.prototype.setUTCHours === x) {
+ $ERROR('#1: The Date.prototype.setUTCHours has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T2.js
new file mode 100644
index 000000000..f93e9cc1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.35_A1_T2;
+ * @section: 15.9.5.35;
+ * @assertion: The Date.prototype property "setUTCHours" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCHours === false) {
+ $ERROR('#1: The Date.prototype.setUTCHours property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setUTCHours')) {
+ $FAIL('#2: The Date.prototype.setUTCHours property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T3.js
new file mode 100644
index 000000000..f5a6e062a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.35_A1_T3;
+ * @section: 15.9.5.35;
+ * @assertion: The Date.prototype property "setUTCHours" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setUTCHours')) {
+ $ERROR('#1: The Date.prototype.setUTCHours property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setUTCHours") {
+ $ERROR('#2: The Date.prototype.setUTCHours has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A2_T1.js
new file mode 100644
index 000000000..9e64188fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.35_A2_T1;
+ * @section: 15.9.5.35;
+ * @assertion: The "length" property of the "setUTCHours" is 4;
+ * @description: The "length" property of the "setUTCHours" is 4;
+ */
+
+if(Date.prototype.setUTCHours.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setUTCHours has a "length" property');
+}
+
+if(Date.prototype.setUTCHours.length !== 4){
+ $ERROR('#2: The "length" property of the setUTCHours is 4');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T1.js
new file mode 100644
index 000000000..e17dc1290
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.35_A3_T1;
+ * @section: 15.9.5.35;
+ * @assertion: The Date.prototype.setUTCHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCHours.length;
+Date.prototype.setUTCHours.length = 1;
+if (Date.prototype.setUTCHours.length !== x) {
+ $ERROR('#1: The Date.prototype.setUTCHours.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T2.js
new file mode 100644
index 000000000..e08ccf7c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.35_A3_T2;
+ * @section: 15.9.5.35;
+ * @assertion: The Date.prototype.setUTCHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCHours.length !== false) {
+ $ERROR('#1: The Date.prototype.setUTCHours.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setUTCHours.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setUTCHours.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T3.js
new file mode 100644
index 000000000..cf3e89d60
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.35_Date.prototype.setUTCHours/S15.9.5.35_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.35_A3_T3;
+ * @section: 15.9.5.35;
+ * @assertion: The Date.prototype.setUTCHours property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setUTCHours.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setUTCHours.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setUTCHours) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setUTCHours.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T1.js
new file mode 100644
index 000000000..38448693d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.36_A1_T1;
+ * @section: 15.9.5.36;
+ * @assertion: The Date.prototype property "setDate" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setDate;
+if(x === 1)
+ Date.prototype.setDate = 2;
+else
+ Date.prototype.setDate = 1;
+if (Date.prototype.setDate === x) {
+ $ERROR('#1: The Date.prototype.setDate has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T2.js
new file mode 100644
index 000000000..7da8e64a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.36_A1_T2;
+ * @section: 15.9.5.36;
+ * @assertion: The Date.prototype property "setDate" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setDate === false) {
+ $ERROR('#1: The Date.prototype.setDate property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setDate')) {
+ $FAIL('#2: The Date.prototype.setDate property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T3.js
new file mode 100644
index 000000000..affb3d7f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.36_A1_T3;
+ * @section: 15.9.5.36;
+ * @assertion: The Date.prototype property "setDate" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setDate')) {
+ $ERROR('#1: The Date.prototype.setDate property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setDate") {
+ $ERROR('#2: The Date.prototype.setDate has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A2_T1.js
new file mode 100644
index 000000000..adbc5d289
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.36_A2_T1;
+ * @section: 15.9.5.36;
+ * @assertion: The "length" property of the "setDate" is 1;
+ * @description: The "length" property of the "setDate" is 1;
+ */
+
+if(Date.prototype.setDate.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setDate has a "length" property');
+}
+
+if(Date.prototype.setDate.length !== 1){
+ $ERROR('#2: The "length" property of the setDate is 1');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T1.js
new file mode 100644
index 000000000..bf4b04202
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.36_A3_T1;
+ * @section: 15.9.5.36;
+ * @assertion: The Date.prototype.setDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setDate.length;
+Date.prototype.setDate.length = 1;
+if (Date.prototype.setDate.length !== x) {
+ $ERROR('#1: The Date.prototype.setDate.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T2.js
new file mode 100644
index 000000000..b6645d6a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.36_A3_T2;
+ * @section: 15.9.5.36;
+ * @assertion: The Date.prototype.setDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setDate.length !== false) {
+ $ERROR('#1: The Date.prototype.setDate.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setDate.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setDate.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T3.js
new file mode 100644
index 000000000..542175755
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.36_Date.prototype.setDate/S15.9.5.36_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.36_A3_T3;
+ * @section: 15.9.5.36;
+ * @assertion: The Date.prototype.setDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setDate.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setDate.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setDate) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setDate.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T1.js
new file mode 100644
index 000000000..8027fc2e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.37_A1_T1;
+ * @section: 15.9.5.37;
+ * @assertion: The Date.prototype property "setUTCDate" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCDate;
+if(x === 1)
+ Date.prototype.setUTCDate = 2;
+else
+ Date.prototype.setUTCDate = 1;
+if (Date.prototype.setUTCDate === x) {
+ $ERROR('#1: The Date.prototype.setUTCDate has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T2.js
new file mode 100644
index 000000000..256851fb9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.37_A1_T2;
+ * @section: 15.9.5.37;
+ * @assertion: The Date.prototype property "setUTCDate" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCDate === false) {
+ $ERROR('#1: The Date.prototype.setUTCDate property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setUTCDate')) {
+ $FAIL('#2: The Date.prototype.setUTCDate property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T3.js
new file mode 100644
index 000000000..ef59c2f77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.37_A1_T3;
+ * @section: 15.9.5.37;
+ * @assertion: The Date.prototype property "setUTCDate" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setUTCDate')) {
+ $ERROR('#1: The Date.prototype.setUTCDate property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setUTCDate") {
+ $ERROR('#2: The Date.prototype.setUTCDate has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A2_T1.js
new file mode 100644
index 000000000..848b08008
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.37_A2_T1;
+ * @section: 15.9.5.37;
+ * @assertion: The "length" property of the "setUTCDate" is 1;
+ * @description: The "length" property of the "setUTCDate" is 1;
+ */
+
+if(Date.prototype.setUTCDate.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setUTCDate has a "length" property');
+}
+
+if(Date.prototype.setUTCDate.length !== 1){
+ $ERROR('#2: The "length" property of the setUTCDate is 1');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T1.js
new file mode 100644
index 000000000..c73e119c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.37_A3_T1;
+ * @section: 15.9.5.37;
+ * @assertion: The Date.prototype.setUTCDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCDate.length;
+Date.prototype.setUTCDate.length = 1;
+if (Date.prototype.setUTCDate.length !== x) {
+ $ERROR('#1: The Date.prototype.setUTCDate.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T2.js
new file mode 100644
index 000000000..2d36cd97f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.37_A3_T2;
+ * @section: 15.9.5.37;
+ * @assertion: The Date.prototype.setUTCDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCDate.length !== false) {
+ $ERROR('#1: The Date.prototype.setUTCDate.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setUTCDate.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setUTCDate.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T3.js
new file mode 100644
index 000000000..165238bf6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.37_Date.prototype.setUTCDate/S15.9.5.37_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.37_A3_T3;
+ * @section: 15.9.5.37;
+ * @assertion: The Date.prototype.setUTCDate property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setUTCDate.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setUTCDate.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setUTCDate) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setUTCDate.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T1.js
new file mode 100644
index 000000000..11534cf24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.38_A1_T1;
+ * @section: 15.9.5.38;
+ * @assertion: The Date.prototype property "setMonth" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setMonth;
+if(x === 1)
+ Date.prototype.setMonth = 2;
+else
+ Date.prototype.setMonth = 1;
+if (Date.prototype.setMonth === x) {
+ $ERROR('#1: The Date.prototype.setMonth has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T2.js
new file mode 100644
index 000000000..dfc5e231d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.38_A1_T2;
+ * @section: 15.9.5.38;
+ * @assertion: The Date.prototype property "setMonth" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setMonth === false) {
+ $ERROR('#1: The Date.prototype.setMonth property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setMonth')) {
+ $FAIL('#2: The Date.prototype.setMonth property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T3.js
new file mode 100644
index 000000000..fc394303f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.38_A1_T3;
+ * @section: 15.9.5.38;
+ * @assertion: The Date.prototype property "setMonth" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setMonth')) {
+ $ERROR('#1: The Date.prototype.setMonth property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setMonth") {
+ $ERROR('#2: The Date.prototype.setMonth has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A2_T1.js
new file mode 100644
index 000000000..f739e3399
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.38_A2_T1;
+ * @section: 15.9.5.38;
+ * @assertion: The "length" property of the "setMonth" is 2;
+ * @description: The "length" property of the "setMonth" is 2;
+ */
+
+if(Date.prototype.setMonth.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setMonth has a "length" property');
+}
+
+if(Date.prototype.setMonth.length !== 2){
+ $ERROR('#2: The "length" property of the setMonth is 2');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T1.js
new file mode 100644
index 000000000..f5c6aa850
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.38_A3_T1;
+ * @section: 15.9.5.38;
+ * @assertion: The Date.prototype.setMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setMonth.length;
+Date.prototype.setMonth.length = 1;
+if (Date.prototype.setMonth.length !== x) {
+ $ERROR('#1: The Date.prototype.setMonth.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T2.js
new file mode 100644
index 000000000..1edb2d087
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.38_A3_T2;
+ * @section: 15.9.5.38;
+ * @assertion: The Date.prototype.setMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setMonth.length !== false) {
+ $ERROR('#1: The Date.prototype.setMonth.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setMonth.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setMonth.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T3.js
new file mode 100644
index 000000000..5b1a74203
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.38_Date.prototype.setMonth/S15.9.5.38_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.38_A3_T3;
+ * @section: 15.9.5.38;
+ * @assertion: The Date.prototype.setMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setMonth.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setMonth.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setMonth) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setMonth.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T1.js
new file mode 100644
index 000000000..6f95de130
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.39_A1_T1;
+ * @section: 15.9.5.39;
+ * @assertion: The Date.prototype property "setUTCMonth" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCMonth;
+if(x === 1)
+ Date.prototype.setUTCMonth = 2;
+else
+ Date.prototype.setUTCMonth = 1;
+if (Date.prototype.setUTCMonth === x) {
+ $ERROR('#1: The Date.prototype.setUTCMonth has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T2.js
new file mode 100644
index 000000000..396569113
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.39_A1_T2;
+ * @section: 15.9.5.39;
+ * @assertion: The Date.prototype property "setUTCMonth" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCMonth === false) {
+ $ERROR('#1: The Date.prototype.setUTCMonth property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setUTCMonth')) {
+ $FAIL('#2: The Date.prototype.setUTCMonth property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T3.js
new file mode 100644
index 000000000..2253bc6b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.39_A1_T3;
+ * @section: 15.9.5.39;
+ * @assertion: The Date.prototype property "setUTCMonth" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setUTCMonth')) {
+ $ERROR('#1: The Date.prototype.setUTCMonth property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setUTCMonth") {
+ $ERROR('#2: The Date.prototype.setUTCMonth has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A2_T1.js
new file mode 100644
index 000000000..9a8e202ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.39_A2_T1;
+ * @section: 15.9.5.39;
+ * @assertion: The "length" property of the "setUTCMonth" is 2;
+ * @description: The "length" property of the "setUTCMonth" is 2;
+ */
+
+if(Date.prototype.setUTCMonth.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setUTCMonth has a "length" property');
+}
+
+if(Date.prototype.setUTCMonth.length !== 2){
+ $ERROR('#2: The "length" property of the setUTCMonth is 2');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T1.js
new file mode 100644
index 000000000..18211da9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.39_A3_T1;
+ * @section: 15.9.5.39;
+ * @assertion: The Date.prototype.setUTCMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCMonth.length;
+Date.prototype.setUTCMonth.length = 1;
+if (Date.prototype.setUTCMonth.length !== x) {
+ $ERROR('#1: The Date.prototype.setUTCMonth.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T2.js
new file mode 100644
index 000000000..17dd776d2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.39_A3_T2;
+ * @section: 15.9.5.39;
+ * @assertion: The Date.prototype.setUTCMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCMonth.length !== false) {
+ $ERROR('#1: The Date.prototype.setUTCMonth.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setUTCMonth.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setUTCMonth.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T3.js
new file mode 100644
index 000000000..f43f0bbda
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.39_Date.prototype.setUTCMonth/S15.9.5.39_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.39_A3_T3;
+ * @section: 15.9.5.39;
+ * @assertion: The Date.prototype.setUTCMonth property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setUTCMonth.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setUTCMonth.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setUTCMonth) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setUTCMonth.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T1.js
new file mode 100644
index 000000000..c4ba4a909
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.3_A1_T1;
+ * @section: 15.9.5.3;
+ * @assertion: The Date.prototype property "toDateString" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.toDateString;
+if(x === 1)
+ Date.prototype.toDateString = 2;
+else
+ Date.prototype.toDateString = 1;
+if (Date.prototype.toDateString === x) {
+ $ERROR('#1: The Date.prototype.toDateString has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T2.js
new file mode 100644
index 000000000..fe6ea8e2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.3_A1_T2;
+ * @section: 15.9.5.3;
+ * @assertion: The Date.prototype property "toDateString" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.toDateString === false) {
+ $ERROR('#1: The Date.prototype.toDateString property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('toDateString')) {
+ $FAIL('#2: The Date.prototype.toDateString property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T3.js
new file mode 100644
index 000000000..a122f63ff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.3_A1_T3;
+ * @section: 15.9.5.3;
+ * @assertion: The Date.prototype property "toDateString" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('toDateString')) {
+ $ERROR('#1: The Date.prototype.toDateString property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "toDateString") {
+ $ERROR('#2: The Date.prototype.toDateString has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A2_T1.js
new file mode 100644
index 000000000..02f9fa959
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.3_A2_T1;
+ * @section: 15.9.5.3;
+ * @assertion: The "length" property of the "toDateString" is 0;
+ * @description: The "length" property of the "toDateString" is 0;
+ */
+
+if(Date.prototype.toDateString.hasOwnProperty("length") !== true){
+ $ERROR('#1: The toDateString has a "length" property');
+}
+
+if(Date.prototype.toDateString.length !== 0){
+ $ERROR('#2: The "length" property of the toDateString is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T1.js
new file mode 100644
index 000000000..524ab914d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.3_A3_T1;
+ * @section: 15.9.5.3;
+ * @assertion: The Date.prototype.toDateString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.toDateString.length;
+Date.prototype.toDateString.length = 1;
+if (Date.prototype.toDateString.length !== x) {
+ $ERROR('#1: The Date.prototype.toDateString.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T2.js
new file mode 100644
index 000000000..a5294596f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.3_A3_T2;
+ * @section: 15.9.5.3;
+ * @assertion: The Date.prototype.toDateString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.toDateString.length !== false) {
+ $ERROR('#1: The Date.prototype.toDateString.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.toDateString.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.toDateString.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T3.js
new file mode 100644
index 000000000..aa336ba3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.3_Date.prototype.toDateString/S15.9.5.3_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.3_A3_T3;
+ * @section: 15.9.5.3;
+ * @assertion: The Date.prototype.toDateString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.toDateString.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.toDateString.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.toDateString) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.toDateString.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T1.js
new file mode 100644
index 000000000..9391c9cbc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.40_A1_T1;
+ * @section: 15.9.5.40;
+ * @assertion: The Date.prototype property "setFullYear" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setFullYear;
+if(x === 1)
+ Date.prototype.setFullYear = 2;
+else
+ Date.prototype.setFullYear = 1;
+if (Date.prototype.setFullYear === x) {
+ $ERROR('#1: The Date.prototype.setFullYear has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T2.js
new file mode 100644
index 000000000..21cdebef0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.40_A1_T2;
+ * @section: 15.9.5.40;
+ * @assertion: The Date.prototype property "setFullYear" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setFullYear === false) {
+ $ERROR('#1: The Date.prototype.setFullYear property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setFullYear')) {
+ $FAIL('#2: The Date.prototype.setFullYear property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T3.js
new file mode 100644
index 000000000..f95bed0e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.40_A1_T3;
+ * @section: 15.9.5.40;
+ * @assertion: The Date.prototype property "setFullYear" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setFullYear')) {
+ $ERROR('#1: The Date.prototype.setFullYear property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setFullYear") {
+ $ERROR('#2: The Date.prototype.setFullYear has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A2_T1.js
new file mode 100644
index 000000000..cbea2f684
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.40_A2_T1;
+ * @section: 15.9.5.40;
+ * @assertion: The "length" property of the "setFullYear" is 3;
+ * @description: The "length" property of the "setFullYear" is 3;
+ */
+
+if(Date.prototype.setFullYear.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setFullYear has a "length" property');
+}
+
+if(Date.prototype.setFullYear.length !== 3){
+ $ERROR('#2: The "length" property of the setFullYear is 3');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T1.js
new file mode 100644
index 000000000..534ea917f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.40_A3_T1;
+ * @section: 15.9.5.40;
+ * @assertion: The Date.prototype.setFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setFullYear.length;
+Date.prototype.setFullYear.length = 1;
+if (Date.prototype.setFullYear.length !== x) {
+ $ERROR('#1: The Date.prototype.setFullYear.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T2.js
new file mode 100644
index 000000000..d6abfabd7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.40_A3_T2;
+ * @section: 15.9.5.40;
+ * @assertion: The Date.prototype.setFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setFullYear.length !== false) {
+ $ERROR('#1: The Date.prototype.setFullYear.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setFullYear.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setFullYear.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T3.js
new file mode 100644
index 000000000..4e556d922
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.40_Date.prototype.setFullYear/S15.9.5.40_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.40_A3_T3;
+ * @section: 15.9.5.40;
+ * @assertion: The Date.prototype.setFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setFullYear.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setFullYear.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setFullYear) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setFullYear.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T1.js
new file mode 100644
index 000000000..5f5e7b389
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.41_A1_T1;
+ * @section: 15.9.5.41;
+ * @assertion: The Date.prototype property "setUTCFullYear" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCFullYear;
+if(x === 1)
+ Date.prototype.setUTCFullYear = 2;
+else
+ Date.prototype.setUTCFullYear = 1;
+if (Date.prototype.setUTCFullYear === x) {
+ $ERROR('#1: The Date.prototype.setUTCFullYear has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T2.js
new file mode 100644
index 000000000..1b7705360
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.41_A1_T2;
+ * @section: 15.9.5.41;
+ * @assertion: The Date.prototype property "setUTCFullYear" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCFullYear === false) {
+ $ERROR('#1: The Date.prototype.setUTCFullYear property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('setUTCFullYear')) {
+ $FAIL('#2: The Date.prototype.setUTCFullYear property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T3.js
new file mode 100644
index 000000000..1475b422e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.41_A1_T3;
+ * @section: 15.9.5.41;
+ * @assertion: The Date.prototype property "setUTCFullYear" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('setUTCFullYear')) {
+ $ERROR('#1: The Date.prototype.setUTCFullYear property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "setUTCFullYear") {
+ $ERROR('#2: The Date.prototype.setUTCFullYear has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A2_T1.js
new file mode 100644
index 000000000..a97dc8edb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.41_A2_T1;
+ * @section: 15.9.5.41;
+ * @assertion: The "length" property of the "setUTCFullYear" is 3;
+ * @description: The "length" property of the "setUTCFullYear" is 3;
+ */
+
+if(Date.prototype.setUTCFullYear.hasOwnProperty("length") !== true){
+ $ERROR('#1: The setUTCFullYear has a "length" property');
+}
+
+if(Date.prototype.setUTCFullYear.length !== 3){
+ $ERROR('#2: The "length" property of the setUTCFullYear is 3');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T1.js
new file mode 100644
index 000000000..a3f7c1e51
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.41_A3_T1;
+ * @section: 15.9.5.41;
+ * @assertion: The Date.prototype.setUTCFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.setUTCFullYear.length;
+Date.prototype.setUTCFullYear.length = 1;
+if (Date.prototype.setUTCFullYear.length !== x) {
+ $ERROR('#1: The Date.prototype.setUTCFullYear.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T2.js
new file mode 100644
index 000000000..cbfc2a5d5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.41_A3_T2;
+ * @section: 15.9.5.41;
+ * @assertion: The Date.prototype.setUTCFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.setUTCFullYear.length !== false) {
+ $ERROR('#1: The Date.prototype.setUTCFullYear.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.setUTCFullYear.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.setUTCFullYear.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T3.js
new file mode 100644
index 000000000..9c750acb8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.41_Date.prototype.setUTCFullYear/S15.9.5.41_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.41_A3_T3;
+ * @section: 15.9.5.41;
+ * @assertion: The Date.prototype.setUTCFullYear property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.setUTCFullYear.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.setUTCFullYear.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.setUTCFullYear) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.setUTCFullYear.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T1.js
new file mode 100644
index 000000000..2d0ae6c8e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.42_A1_T1;
+ * @section: 15.9.5.42;
+ * @assertion: The Date.prototype property "toUTCString" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.toUTCString;
+if(x === 1)
+ Date.prototype.toUTCString = 2;
+else
+ Date.prototype.toUTCString = 1;
+if (Date.prototype.toUTCString === x) {
+ $ERROR('#1: The Date.prototype.toUTCString has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T2.js
new file mode 100644
index 000000000..673f79638
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.42_A1_T2;
+ * @section: 15.9.5.42;
+ * @assertion: The Date.prototype property "toUTCString" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.toUTCString === false) {
+ $ERROR('#1: The Date.prototype.toUTCString property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('toUTCString')) {
+ $FAIL('#2: The Date.prototype.toUTCString property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T3.js
new file mode 100644
index 000000000..f9df00e91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.42_A1_T3;
+ * @section: 15.9.5.42;
+ * @assertion: The Date.prototype property "toUTCString" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('toUTCString')) {
+ $ERROR('#1: The Date.prototype.toUTCString property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "toUTCString") {
+ $ERROR('#2: The Date.prototype.toUTCString has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A2_T1.js
new file mode 100644
index 000000000..8c32add87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.42_A2_T1;
+ * @section: 15.9.5.42;
+ * @assertion: The "length" property of the "toUTCString" is 0;
+ * @description: The "length" property of the "toUTCString" is 0;
+ */
+
+if(Date.prototype.toUTCString.hasOwnProperty("length") !== true){
+ $ERROR('#1: The toUTCString has a "length" property');
+}
+
+if(Date.prototype.toUTCString.length !== 0){
+ $ERROR('#2: The "length" property of the toUTCString is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T1.js
new file mode 100644
index 000000000..c0b52d01f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.42_A3_T1;
+ * @section: 15.9.5.42;
+ * @assertion: The Date.prototype.toUTCString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.toUTCString.length;
+Date.prototype.toUTCString.length = 1;
+if (Date.prototype.toUTCString.length !== x) {
+ $ERROR('#1: The Date.prototype.toUTCString.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T2.js
new file mode 100644
index 000000000..fbd7dd689
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.42_A3_T2;
+ * @section: 15.9.5.42;
+ * @assertion: The Date.prototype.toUTCString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.toUTCString.length !== false) {
+ $ERROR('#1: The Date.prototype.toUTCString.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.toUTCString.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.toUTCString.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T3.js
new file mode 100644
index 000000000..c1562f6f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.42_Date.prototype.toUTCString/S15.9.5.42_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.42_A3_T3;
+ * @section: 15.9.5.42;
+ * @assertion: The Date.prototype.toUTCString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.toUTCString.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.toUTCString.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.toUTCString) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.toUTCString.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T1.js
new file mode 100644
index 000000000..3389bacda
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.4_A1_T1;
+ * @section: 15.9.5.4;
+ * @assertion: The Date.prototype property "toTimeString" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.toTimeString;
+if(x === 1)
+ Date.prototype.toTimeString = 2;
+else
+ Date.prototype.toTimeString = 1;
+if (Date.prototype.toTimeString === x) {
+ $ERROR('#1: The Date.prototype.toTimeString has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T2.js
new file mode 100644
index 000000000..2dfdcc8f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.4_A1_T2;
+ * @section: 15.9.5.4;
+ * @assertion: The Date.prototype property "toTimeString" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.toTimeString === false) {
+ $ERROR('#1: The Date.prototype.toTimeString property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('toTimeString')) {
+ $FAIL('#2: The Date.prototype.toTimeString property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T3.js
new file mode 100644
index 000000000..3d3f12337
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.4_A1_T3;
+ * @section: 15.9.5.4;
+ * @assertion: The Date.prototype property "toTimeString" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('toTimeString')) {
+ $ERROR('#1: The Date.prototype.toTimeString property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "toTimeString") {
+ $ERROR('#2: The Date.prototype.toTimeString has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A2_T1.js
new file mode 100644
index 000000000..480ea8e1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.4_A2_T1;
+ * @section: 15.9.5.4;
+ * @assertion: The "length" property of the "toTimeString" is 0;
+ * @description: The "length" property of the "toTimeString" is 0;
+ */
+
+if(Date.prototype.toTimeString.hasOwnProperty("length") !== true){
+ $ERROR('#1: The toTimeString has a "length" property');
+}
+
+if(Date.prototype.toTimeString.length !== 0){
+ $ERROR('#2: The "length" property of the toTimeString is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T1.js
new file mode 100644
index 000000000..daafd19a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.4_A3_T1;
+ * @section: 15.9.5.4;
+ * @assertion: The Date.prototype.toTimeString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.toTimeString.length;
+Date.prototype.toTimeString.length = 1;
+if (Date.prototype.toTimeString.length !== x) {
+ $ERROR('#1: The Date.prototype.toTimeString.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T2.js
new file mode 100644
index 000000000..b6f67f5ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.4_A3_T2;
+ * @section: 15.9.5.4;
+ * @assertion: The Date.prototype.toTimeString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.toTimeString.length !== false) {
+ $ERROR('#1: The Date.prototype.toTimeString.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.toTimeString.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.toTimeString.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T3.js
new file mode 100644
index 000000000..9fb440ac1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.4_Date.prototype.toTimeString/S15.9.5.4_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.4_A3_T3;
+ * @section: 15.9.5.4;
+ * @assertion: The Date.prototype.toTimeString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.toTimeString.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.toTimeString.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.toTimeString) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.toTimeString.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T1.js
new file mode 100644
index 000000000..81c4460a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.5_A1_T1;
+ * @section: 15.9.5.5;
+ * @assertion: The Date.prototype property "toLocaleString" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.toLocaleString;
+if(x === 1)
+ Date.prototype.toLocaleString = 2;
+else
+ Date.prototype.toLocaleString = 1;
+if (Date.prototype.toLocaleString === x) {
+ $ERROR('#1: The Date.prototype.toLocaleString has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T2.js
new file mode 100644
index 000000000..3a1d0fb3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.5_A1_T2;
+ * @section: 15.9.5.5;
+ * @assertion: The Date.prototype property "toLocaleString" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.toLocaleString === false) {
+ $ERROR('#1: The Date.prototype.toLocaleString property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('toLocaleString')) {
+ $FAIL('#2: The Date.prototype.toLocaleString property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T3.js
new file mode 100644
index 000000000..6b6f891b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.5_A1_T3;
+ * @section: 15.9.5.5;
+ * @assertion: The Date.prototype property "toLocaleString" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('toLocaleString')) {
+ $ERROR('#1: The Date.prototype.toLocaleString property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "toLocaleString") {
+ $ERROR('#2: The Date.prototype.toLocaleString has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A2_T1.js
new file mode 100644
index 000000000..25638f234
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.5_A2_T1;
+ * @section: 15.9.5.5;
+ * @assertion: The "length" property of the "toLocaleString" is 0;
+ * @description: The "length" property of the "toLocaleString" is 0;
+ */
+
+if(Date.prototype.toLocaleString.hasOwnProperty("length") !== true){
+ $ERROR('#1: The toLocaleString has a "length" property');
+}
+
+if(Date.prototype.toLocaleString.length !== 0){
+ $ERROR('#2: The "length" property of the toLocaleString is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T1.js
new file mode 100644
index 000000000..79876efb0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.5_A3_T1;
+ * @section: 15.9.5.5;
+ * @assertion: The Date.prototype.toLocaleString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.toLocaleString.length;
+Date.prototype.toLocaleString.length = 1;
+if (Date.prototype.toLocaleString.length !== x) {
+ $ERROR('#1: The Date.prototype.toLocaleString.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T2.js
new file mode 100644
index 000000000..f645f68b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.5_A3_T2;
+ * @section: 15.9.5.5;
+ * @assertion: The Date.prototype.toLocaleString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.toLocaleString.length !== false) {
+ $ERROR('#1: The Date.prototype.toLocaleString.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.toLocaleString.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.toLocaleString.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T3.js
new file mode 100644
index 000000000..2b77361f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.5_Date.prototype.toLocaleString/S15.9.5.5_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.5_A3_T3;
+ * @section: 15.9.5.5;
+ * @assertion: The Date.prototype.toLocaleString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.toLocaleString.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.toLocaleString.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.toLocaleString) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.toLocaleString.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T1.js
new file mode 100644
index 000000000..887d13417
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.6_A1_T1;
+ * @section: 15.9.5.6;
+ * @assertion: The Date.prototype property "toLocaleDateString" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.toLocaleDateString;
+if(x === 1)
+ Date.prototype.toLocaleDateString = 2;
+else
+ Date.prototype.toLocaleDateString = 1;
+if (Date.prototype.toLocaleDateString === x) {
+ $ERROR('#1: The Date.prototype.toLocaleDateString has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T2.js
new file mode 100644
index 000000000..6d1e1a12a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.6_A1_T2;
+ * @section: 15.9.5.6;
+ * @assertion: The Date.prototype property "toLocaleDateString" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.toLocaleDateString === false) {
+ $ERROR('#1: The Date.prototype.toLocaleDateString property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('toLocaleDateString')) {
+ $FAIL('#2: The Date.prototype.toLocaleDateString property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T3.js
new file mode 100644
index 000000000..05011c1dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.6_A1_T3;
+ * @section: 15.9.5.6;
+ * @assertion: The Date.prototype property "toLocaleDateString" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('toLocaleDateString')) {
+ $ERROR('#1: The Date.prototype.toLocaleDateString property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "toLocaleDateString") {
+ $ERROR('#2: The Date.prototype.toLocaleDateString has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A2_T1.js
new file mode 100644
index 000000000..d39433cd8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.6_A2_T1;
+ * @section: 15.9.5.6;
+ * @assertion: The "length" property of the "toLocaleDateString" is 0;
+ * @description: The "length" property of the "toLocaleDateString" is 0;
+ */
+
+if(Date.prototype.toLocaleDateString.hasOwnProperty("length") !== true){
+ $ERROR('#1: The toLocaleDateString has a "length" property');
+}
+
+if(Date.prototype.toLocaleDateString.length !== 0){
+ $ERROR('#2: The "length" property of the toLocaleDateString is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T1.js
new file mode 100644
index 000000000..add952304
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.6_A3_T1;
+ * @section: 15.9.5.6;
+ * @assertion: The Date.prototype.toLocaleDateString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.toLocaleDateString.length;
+Date.prototype.toLocaleDateString.length = 1;
+if (Date.prototype.toLocaleDateString.length !== x) {
+ $ERROR('#1: The Date.prototype.toLocaleDateString.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T2.js
new file mode 100644
index 000000000..607e8d976
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.6_A3_T2;
+ * @section: 15.9.5.6;
+ * @assertion: The Date.prototype.toLocaleDateString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.toLocaleDateString.length !== false) {
+ $ERROR('#1: The Date.prototype.toLocaleDateString.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.toLocaleDateString.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.toLocaleDateString.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T3.js
new file mode 100644
index 000000000..974cffe9c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.6_Date.prototype.toLocaleDateString/S15.9.5.6_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.6_A3_T3;
+ * @section: 15.9.5.6;
+ * @assertion: The Date.prototype.toLocaleDateString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.toLocaleDateString.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.toLocaleDateString.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.toLocaleDateString) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.toLocaleDateString.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T1.js
new file mode 100644
index 000000000..2671f0480
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.7_A1_T1;
+ * @section: 15.9.5.7;
+ * @assertion: The Date.prototype property "toLocaleTimeString" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.toLocaleTimeString;
+if(x === 1)
+ Date.prototype.toLocaleTimeString = 2;
+else
+ Date.prototype.toLocaleTimeString = 1;
+if (Date.prototype.toLocaleTimeString === x) {
+ $ERROR('#1: The Date.prototype.toLocaleTimeString has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T2.js
new file mode 100644
index 000000000..d48cd2d2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.7_A1_T2;
+ * @section: 15.9.5.7;
+ * @assertion: The Date.prototype property "toLocaleTimeString" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.toLocaleTimeString === false) {
+ $ERROR('#1: The Date.prototype.toLocaleTimeString property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('toLocaleTimeString')) {
+ $FAIL('#2: The Date.prototype.toLocaleTimeString property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T3.js
new file mode 100644
index 000000000..27a175f14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.7_A1_T3;
+ * @section: 15.9.5.7;
+ * @assertion: The Date.prototype property "toLocaleTimeString" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('toLocaleTimeString')) {
+ $ERROR('#1: The Date.prototype.toLocaleTimeString property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "toLocaleTimeString") {
+ $ERROR('#2: The Date.prototype.toLocaleTimeString has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A2_T1.js
new file mode 100644
index 000000000..b2a89e32e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.7_A2_T1;
+ * @section: 15.9.5.7;
+ * @assertion: The "length" property of the "toLocaleTimeString" is 0;
+ * @description: The "length" property of the "toLocaleTimeString" is 0;
+ */
+
+if(Date.prototype.toLocaleTimeString.hasOwnProperty("length") !== true){
+ $ERROR('#1: The toLocaleTimeString has a "length" property');
+}
+
+if(Date.prototype.toLocaleTimeString.length !== 0){
+ $ERROR('#2: The "length" property of the toLocaleTimeString is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T1.js
new file mode 100644
index 000000000..bcfbb6b9a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.7_A3_T1;
+ * @section: 15.9.5.7;
+ * @assertion: The Date.prototype.toLocaleTimeString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.toLocaleTimeString.length;
+Date.prototype.toLocaleTimeString.length = 1;
+if (Date.prototype.toLocaleTimeString.length !== x) {
+ $ERROR('#1: The Date.prototype.toLocaleTimeString.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T2.js
new file mode 100644
index 000000000..2053fea08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.7_A3_T2;
+ * @section: 15.9.5.7;
+ * @assertion: The Date.prototype.toLocaleTimeString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.toLocaleTimeString.length !== false) {
+ $ERROR('#1: The Date.prototype.toLocaleTimeString.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.toLocaleTimeString.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.toLocaleTimeString.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T3.js
new file mode 100644
index 000000000..05ea5728f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.7_Date.prototype.toLocaleTimeString/S15.9.5.7_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.7_A3_T3;
+ * @section: 15.9.5.7;
+ * @assertion: The Date.prototype.toLocaleTimeString property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.toLocaleTimeString.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.toLocaleTimeString.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.toLocaleTimeString) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.toLocaleTimeString.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T1.js
new file mode 100644
index 000000000..f66a475f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.8_A1_T1;
+ * @section: 15.9.5.8;
+ * @assertion: The Date.prototype property "valueOf" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.valueOf;
+if(x === 1)
+ Date.prototype.valueOf = 2;
+else
+ Date.prototype.valueOf = 1;
+if (Date.prototype.valueOf === x) {
+ $ERROR('#1: The Date.prototype.valueOf has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T2.js
new file mode 100644
index 000000000..314bc5b76
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.8_A1_T2;
+ * @section: 15.9.5.8;
+ * @assertion: The Date.prototype property "valueOf" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.valueOf === false) {
+ $ERROR('#1: The Date.prototype.valueOf property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('valueOf')) {
+ $FAIL('#2: The Date.prototype.valueOf property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T3.js
new file mode 100644
index 000000000..f61432ae9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.8_A1_T3;
+ * @section: 15.9.5.8;
+ * @assertion: The Date.prototype property "valueOf" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('valueOf')) {
+ $ERROR('#1: The Date.prototype.valueOf property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "valueOf") {
+ $ERROR('#2: The Date.prototype.valueOf has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A2_T1.js
new file mode 100644
index 000000000..a4da47ec7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.8_A2_T1;
+ * @section: 15.9.5.8;
+ * @assertion: The "length" property of the "valueOf" is 0;
+ * @description: The "length" property of the "valueOf" is 0;
+ */
+
+if(Date.prototype.valueOf.hasOwnProperty("length") !== true){
+ $ERROR('#1: The valueOf has a "length" property');
+}
+
+if(Date.prototype.valueOf.length !== 0){
+ $ERROR('#2: The "length" property of the valueOf is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T1.js
new file mode 100644
index 000000000..a5f622a09
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.8_A3_T1;
+ * @section: 15.9.5.8;
+ * @assertion: The Date.prototype.valueOf property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.valueOf.length;
+Date.prototype.valueOf.length = 1;
+if (Date.prototype.valueOf.length !== x) {
+ $ERROR('#1: The Date.prototype.valueOf.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T2.js
new file mode 100644
index 000000000..9548522ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.8_A3_T2;
+ * @section: 15.9.5.8;
+ * @assertion: The Date.prototype.valueOf property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.valueOf.length !== false) {
+ $ERROR('#1: The Date.prototype.valueOf.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.valueOf.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.valueOf.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T3.js
new file mode 100644
index 000000000..8e6683f59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.8_Date.prototype.valueOf/S15.9.5.8_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.8_A3_T3;
+ * @section: 15.9.5.8;
+ * @assertion: The Date.prototype.valueOf property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.valueOf.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.valueOf.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.valueOf) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.valueOf.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T1.js
new file mode 100644
index 000000000..8833782bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.9_A1_T1;
+ * @section: 15.9.5.9;
+ * @assertion: The Date.prototype property "getTime" has { DontEnum } attributes;
+ * @description: Checking absence of ReadOnly attribute;
+ */
+
+x = Date.prototype.getTime;
+if(x === 1)
+ Date.prototype.getTime = 2;
+else
+ Date.prototype.getTime = 1;
+if (Date.prototype.getTime === x) {
+ $ERROR('#1: The Date.prototype.getTime has not the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T2.js
new file mode 100644
index 000000000..2f5a23058
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.9_A1_T2;
+ * @section: 15.9.5.9;
+ * @assertion: The Date.prototype property "getTime" has { DontEnum } attributes;
+ * @description: Checking absence of DontDelete attribute;
+ */
+
+if (delete Date.prototype.getTime === false) {
+ $ERROR('#1: The Date.prototype.getTime property has not the attributes DontDelete');
+}
+
+if (Date.prototype.hasOwnProperty('getTime')) {
+ $FAIL('#2: The Date.prototype.getTime property has not the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T3.js
new file mode 100644
index 000000000..9d60b320e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.9_A1_T3;
+ * @section: 15.9.5.9;
+ * @assertion: The Date.prototype property "getTime" has { DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.propertyIsEnumerable('getTime')) {
+ $ERROR('#1: The Date.prototype.getTime property has the attribute DontEnum');
+}
+
+for(x in Date.prototype) {
+ if(x === "getTime") {
+ $ERROR('#2: The Date.prototype.getTime has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A2_T1.js
new file mode 100644
index 000000000..e26b1dfc8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A2_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.9_A2_T1;
+ * @section: 15.9.5.9;
+ * @assertion: The "length" property of the "getTime" is 0;
+ * @description: The "length" property of the "getTime" is 0;
+ */
+
+if(Date.prototype.getTime.hasOwnProperty("length") !== true){
+ $ERROR('#1: The getTime has a "length" property');
+}
+
+if(Date.prototype.getTime.length !== 0){
+ $ERROR('#2: The "length" property of the getTime is 0');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T1.js
new file mode 100644
index 000000000..61743a2f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.9_A3_T1;
+ * @section: 15.9.5.9;
+ * @assertion: The Date.prototype.getTime property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking ReadOnly attribute;
+ */
+
+x = Date.prototype.getTime.length;
+Date.prototype.getTime.length = 1;
+if (Date.prototype.getTime.length !== x) {
+ $ERROR('#1: The Date.prototype.getTime.length has the attribute ReadOnly');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T2.js
new file mode 100644
index 000000000..1540e6344
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T2.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.9_A3_T2;
+ * @section: 15.9.5.9;
+ * @assertion: The Date.prototype.getTime property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontDelete attribute;
+ */
+
+if (delete Date.prototype.getTime.length !== false) {
+ $ERROR('#1: The Date.prototype.getTime.length property has the attributes DontDelete');
+}
+
+if (!Date.prototype.getTime.hasOwnProperty('length')) {
+ $FAIL('#2: The Date.prototype.getTime.length property has the attributes DontDelete');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T3.js
new file mode 100644
index 000000000..49f9a3567
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/15.9.5.9_Date.prototype.getTime/S15.9.5.9_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5.9_A3_T3;
+ * @section: 15.9.5.9;
+ * @assertion: The Date.prototype.getTime property "length" has { ReadOnly, DontDelete, DontEnum } attributes;
+ * @description: Checking DontEnum attribute;
+ */
+
+if (Date.prototype.getTime.propertyIsEnumerable('length')) {
+ $ERROR('#1: The Date.prototype.getTime.length property has the attribute DontEnum');
+}
+
+for(x in Date.prototype.getTime) {
+ if(x === "length") {
+ $ERROR('#2: The Date.prototype.getTime.length has the attribute DontEnum');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A01_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A01_T1.js
new file mode 100644
index 000000000..018662cef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A01_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A01_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "constructor";
+ * @description: The Date.prototype has the property "constructor";
+ */
+
+if(Date.prototype.hasOwnProperty("constructor") !== true){
+ $ERROR('#1: The Date.prototype has the property "constructor"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A02_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A02_T1.js
new file mode 100644
index 000000000..6cc27810d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A02_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A02_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "toString";
+ * @description: The Date.prototype has the property "toString";
+ */
+
+if(Date.prototype.hasOwnProperty("toString") !== true){
+ $ERROR('#1: The Date.prototype has the property "toString"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A03_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A03_T1.js
new file mode 100644
index 000000000..e54e07557
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A03_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A03_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "toDateString";
+ * @description: The Date.prototype has the property "toDateString";
+ */
+
+if(Date.prototype.hasOwnProperty("toDateString") !== true){
+ $ERROR('#1: The Date.prototype has the property "toDateString"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A04_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A04_T1.js
new file mode 100644
index 000000000..c9e55c33b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A04_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A04_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "toTimeString";
+ * @description: The Date.prototype has the property "toTimeString";
+ */
+
+if(Date.prototype.hasOwnProperty("toTimeString") !== true){
+ $ERROR('#1: The Date.prototype has the property "toTimeString"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A05_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A05_T1.js
new file mode 100644
index 000000000..55e60dd58
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A05_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A05_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "toLocaleString";
+ * @description: The Date.prototype has the property "toLocaleString";
+ */
+
+if(Date.prototype.hasOwnProperty("toLocaleString") !== true){
+ $ERROR('#1: The Date.prototype has the property "toLocaleString"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A06_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A06_T1.js
new file mode 100644
index 000000000..d404fb9fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A06_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A06_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "toLocaleDateString";
+ * @description: The Date.prototype has the property "toLocaleDateString";
+ */
+
+if(Date.prototype.hasOwnProperty("toLocaleDateString") !== true){
+ $ERROR('#1: The Date.prototype has the property "toLocaleDateString"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A07_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A07_T1.js
new file mode 100644
index 000000000..547275946
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A07_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A07_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "toLocaleTimeString";
+ * @description: The Date.prototype has the property "toLocaleTimeString";
+ */
+
+if(Date.prototype.hasOwnProperty("toLocaleTimeString") !== true){
+ $ERROR('#1: The Date.prototype has the property "toLocaleTimeString"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A08_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A08_T1.js
new file mode 100644
index 000000000..ace9a9fa6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A08_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A08_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "valueOf";
+ * @description: The Date.prototype has the property "valueOf";
+ */
+
+if(Date.prototype.hasOwnProperty("valueOf") !== true){
+ $ERROR('#1: The Date.prototype has the property "valueOf"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A09_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A09_T1.js
new file mode 100644
index 000000000..9ca724967
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A09_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A09_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getTime";
+ * @description: The Date.prototype has the property "getTime";
+ */
+
+if(Date.prototype.hasOwnProperty("getTime") !== true){
+ $ERROR('#1: The Date.prototype has the property "getTime"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A10_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A10_T1.js
new file mode 100644
index 000000000..702ccdd71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A10_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A10_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getFullYear";
+ * @description: The Date.prototype has the property "getFullYear";
+ */
+
+if(Date.prototype.hasOwnProperty("getFullYear") !== true){
+ $ERROR('#1: The Date.prototype has the property "getFullYear"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A11_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A11_T1.js
new file mode 100644
index 000000000..9f04a7493
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A11_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A11_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getUTCFullYear";
+ * @description: The Date.prototype has the property "getUTCFullYear";
+ */
+
+if(Date.prototype.hasOwnProperty("getUTCFullYear") !== true){
+ $ERROR('#1: The Date.prototype has the property "getUTCFullYear"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A12_T1.js
new file mode 100644
index 000000000..0062cc56b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A12_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A12_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getMonth";
+ * @description: The Date.prototype has the property "getMonth";
+ */
+
+if(Date.prototype.hasOwnProperty("getMonth") !== true){
+ $ERROR('#1: The Date.prototype has the property "getMonth"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A13_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A13_T1.js
new file mode 100644
index 000000000..e7e519cc0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A13_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A13_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getUTCMonth";
+ * @description: The Date.prototype has the property "getUTCMonth";
+ */
+
+if(Date.prototype.hasOwnProperty("getUTCMonth") !== true){
+ $ERROR('#1: The Date.prototype has the property "getUTCMonth"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A14_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A14_T1.js
new file mode 100644
index 000000000..c1df13b85
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A14_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A14_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getDate";
+ * @description: The Date.prototype has the property "getDate";
+ */
+
+if(Date.prototype.hasOwnProperty("getDate") !== true){
+ $ERROR('#1: The Date.prototype has the property "getDate"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A15_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A15_T1.js
new file mode 100644
index 000000000..4a801ae1f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A15_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A15_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getUTCDate";
+ * @description: The Date.prototype has the property "getUTCDate";
+ */
+
+if(Date.prototype.hasOwnProperty("getUTCDate") !== true){
+ $ERROR('#1: The Date.prototype has the property "getUTCDate"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A16_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A16_T1.js
new file mode 100644
index 000000000..a3401af6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A16_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A16_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getDay";
+ * @description: The Date.prototype has the property "getDay";
+ */
+
+if(Date.prototype.hasOwnProperty("getDay") !== true){
+ $ERROR('#1: The Date.prototype has the property "getDay"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A17_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A17_T1.js
new file mode 100644
index 000000000..e8a003293
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A17_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A17_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getUTCDay";
+ * @description: The Date.prototype has the property "getUTCDay";
+ */
+
+if(Date.prototype.hasOwnProperty("getUTCDay") !== true){
+ $ERROR('#1: The Date.prototype has the property "getUTCDay"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A18_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A18_T1.js
new file mode 100644
index 000000000..6c742fbff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A18_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A18_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getHours";
+ * @description: The Date.prototype has the property "getHours";
+ */
+
+if(Date.prototype.hasOwnProperty("getHours") !== true){
+ $ERROR('#1: The Date.prototype has the property "getHours"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A19_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A19_T1.js
new file mode 100644
index 000000000..6c7e39d1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A19_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A19_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getUTCHours";
+ * @description: The Date.prototype has the property "getUTCHours";
+ */
+
+if(Date.prototype.hasOwnProperty("getUTCHours") !== true){
+ $ERROR('#1: The Date.prototype has the property "getUTCHours"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A20_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A20_T1.js
new file mode 100644
index 000000000..6c726e780
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A20_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A20_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getMinutes";
+ * @description: The Date.prototype has the property "getMinutes";
+ */
+
+if(Date.prototype.hasOwnProperty("getMinutes") !== true){
+ $ERROR('#1: The Date.prototype has the property "getMinutes"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A21_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A21_T1.js
new file mode 100644
index 000000000..0780e15ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A21_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A21_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getUTCMinutes";
+ * @description: The Date.prototype has the property "getUTCMinutes";
+ */
+
+if(Date.prototype.hasOwnProperty("getUTCMinutes") !== true){
+ $ERROR('#1: The Date.prototype has the property "getUTCMinutes"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A22_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A22_T1.js
new file mode 100644
index 000000000..08d9c510f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A22_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A22_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getSeconds";
+ * @description: The Date.prototype has the property "getSeconds";
+ */
+
+if(Date.prototype.hasOwnProperty("getSeconds") !== true){
+ $ERROR('#1: The Date.prototype has the property "getSeconds"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A23_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A23_T1.js
new file mode 100644
index 000000000..a0dfabf0a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A23_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A23_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getUTCSeconds";
+ * @description: The Date.prototype has the property "getUTCSeconds";
+ */
+
+if(Date.prototype.hasOwnProperty("getUTCSeconds") !== true){
+ $ERROR('#1: The Date.prototype has the property "getUTCSeconds"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A24_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A24_T1.js
new file mode 100644
index 000000000..49137d080
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A24_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A24_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getMilliseconds";
+ * @description: The Date.prototype has the property "getMilliseconds";
+ */
+
+if(Date.prototype.hasOwnProperty("getMilliseconds") !== true){
+ $ERROR('#1: The Date.prototype has the property "getMilliseconds"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A25_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A25_T1.js
new file mode 100644
index 000000000..efe9b6553
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A25_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A25_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getUTCMilliseconds";
+ * @description: The Date.prototype has the property "getUTCMilliseconds";
+ */
+
+if(Date.prototype.hasOwnProperty("getUTCMilliseconds") !== true){
+ $ERROR('#1: The Date.prototype has the property "getUTCMilliseconds"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A26_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A26_T1.js
new file mode 100644
index 000000000..005dfb063
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A26_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A26_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "getTimezoneOffset";
+ * @description: The Date.prototype has the property "getTimezoneOffset";
+ */
+
+if(Date.prototype.hasOwnProperty("getTimezoneOffset") !== true){
+ $ERROR('#1: The Date.prototype has the property "getTimezoneOffset"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A27_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A27_T1.js
new file mode 100644
index 000000000..8f8afdef9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A27_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A27_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setTime";
+ * @description: The Date.prototype has the property "setTime";
+ */
+
+if(Date.prototype.hasOwnProperty("setTime") !== true){
+ $ERROR('#1: The Date.prototype has the property "setTime"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A28_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A28_T1.js
new file mode 100644
index 000000000..54a3d5387
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A28_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A28_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setMilliseconds";
+ * @description: The Date.prototype has the property "setMilliseconds";
+ */
+
+if(Date.prototype.hasOwnProperty("setMilliseconds") !== true){
+ $ERROR('#1: The Date.prototype has the property "setMilliseconds"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A29_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A29_T1.js
new file mode 100644
index 000000000..091b3eb45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A29_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A29_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setUTCMilliseconds";
+ * @description: The Date.prototype has the property "setUTCMilliseconds";
+ */
+
+if(Date.prototype.hasOwnProperty("setUTCMilliseconds") !== true){
+ $ERROR('#1: The Date.prototype has the property "setUTCMilliseconds"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A30_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A30_T1.js
new file mode 100644
index 000000000..1c154bace
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A30_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A30_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setSeconds";
+ * @description: The Date.prototype has the property "setSeconds";
+ */
+
+if(Date.prototype.hasOwnProperty("setSeconds") !== true){
+ $ERROR('#1: The Date.prototype has the property "setSeconds"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A31_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A31_T1.js
new file mode 100644
index 000000000..74ede2b2e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A31_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A31_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setUTCSeconds";
+ * @description: The Date.prototype has the property "setUTCSeconds";
+ */
+
+if(Date.prototype.hasOwnProperty("setUTCSeconds") !== true){
+ $ERROR('#1: The Date.prototype has the property "setUTCSeconds"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A32_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A32_T1.js
new file mode 100644
index 000000000..123f2f1fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A32_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A32_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setMinutes";
+ * @description: The Date.prototype has the property "setMinutes";
+ */
+
+if(Date.prototype.hasOwnProperty("setMinutes") !== true){
+ $ERROR('#1: The Date.prototype has the property "setMinutes"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A33_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A33_T1.js
new file mode 100644
index 000000000..addcce6c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A33_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A33_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setUTCMinutes";
+ * @description: The Date.prototype has the property "setUTCMinutes";
+ */
+
+if(Date.prototype.hasOwnProperty("setUTCMinutes") !== true){
+ $ERROR('#1: The Date.prototype has the property "setUTCMinutes"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A34_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A34_T1.js
new file mode 100644
index 000000000..9f42d90db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A34_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A34_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setHours";
+ * @description: The Date.prototype has the property "setHours";
+ */
+
+if(Date.prototype.hasOwnProperty("setHours") !== true){
+ $ERROR('#1: The Date.prototype has the property "setHours"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A35_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A35_T1.js
new file mode 100644
index 000000000..c5acca3b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A35_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A35_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setUTCHours";
+ * @description: The Date.prototype has the property "setUTCHours";
+ */
+
+if(Date.prototype.hasOwnProperty("setUTCHours") !== true){
+ $ERROR('#1: The Date.prototype has the property "setUTCHours"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A36_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A36_T1.js
new file mode 100644
index 000000000..6ec40317f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A36_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A36_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setDate";
+ * @description: The Date.prototype has the property "setDate";
+ */
+
+if(Date.prototype.hasOwnProperty("setDate") !== true){
+ $ERROR('#1: The Date.prototype has the property "setDate"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A37_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A37_T1.js
new file mode 100644
index 000000000..db874501d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A37_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A37_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setUTCDate";
+ * @description: The Date.prototype has the property "setUTCDate";
+ */
+
+if(Date.prototype.hasOwnProperty("setUTCDate") !== true){
+ $ERROR('#1: The Date.prototype has the property "setUTCDate"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A38_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A38_T1.js
new file mode 100644
index 000000000..bfe124154
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A38_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A38_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setMonth";
+ * @description: The Date.prototype has the property "setMonth";
+ */
+
+if(Date.prototype.hasOwnProperty("setMonth") !== true){
+ $ERROR('#1: The Date.prototype has the property "setMonth"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A39_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A39_T1.js
new file mode 100644
index 000000000..be6c1bb7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A39_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A39_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setUTCMonth";
+ * @description: The Date.prototype has the property "setUTCMonth";
+ */
+
+if(Date.prototype.hasOwnProperty("setUTCMonth") !== true){
+ $ERROR('#1: The Date.prototype has the property "setUTCMonth"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A40_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A40_T1.js
new file mode 100644
index 000000000..587928d1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A40_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A40_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setFullYear";
+ * @description: The Date.prototype has the property "setFullYear";
+ */
+
+if(Date.prototype.hasOwnProperty("setFullYear") !== true){
+ $ERROR('#1: The Date.prototype has the property "setFullYear"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A41_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A41_T1.js
new file mode 100644
index 000000000..ceac904c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A41_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A41_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "setUTCFullYear";
+ * @description: The Date.prototype has the property "setUTCFullYear";
+ */
+
+if(Date.prototype.hasOwnProperty("setUTCFullYear") !== true){
+ $ERROR('#1: The Date.prototype has the property "setUTCFullYear"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A42_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A42_T1.js
new file mode 100644
index 000000000..055e51bdf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.9_Date_Objects/15.9.5_Properties_of_the_Date_Prototype_Object/S15.9.5_A42_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.5_A42_T1;
+ * @section: 15.9.5;
+ * @assertion: The Date.prototype has the property "toUTCString";
+ * @description: The Date.prototype has the property "toUTCString";
+ */
+
+if(Date.prototype.hasOwnProperty("toUTCString") !== true){
+ $ERROR('#1: The Date.prototype has the property "toUTCString"');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/readme.txt b/external/contributions/Google/sputniktests/tests/Conformance/readme.txt
new file mode 100644
index 000000000..c56abc267
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/readme.txt
@@ -0,0 +1,39 @@
+1. All tests must have .js extension.
+
+2. Naming of *.js files is subject to a following rule:
+
+ * First symbols referred to standard item. Number of Chapter,
+ section, subsection with the dots between and prefix "S".
+ * Then "_" symbol appears.
+ * Then number of assertion with prefix "A".
+ * Then "_" symbol appears.
+ * Then number of test with prefix "T".
+
+3. Every test should provide additional information about itself.
+ This information is placed in comments and is divided into several special
+ sections. Every special section has a name. Syntax of defining special
+ information in .js comments is: "@" symbol first, section name, and value(s)
+ after colon till the semicolon appear. Number of values divided by comma symbol.
+ Then end of line should be typed. Available common sections are:
+
+ @name - same as file name without extension.
+ @section - links to paragraphs of ECMAScript standard this test belongs to.
+ Paragraphs must be separated by comma. Typical paragraph consist of numbers
+ separated by dots, example is: 11.3.1 (which corresponds to paragraph named
+ "Postfix Increment Operator" in ECMAScript standard). First paragraph in
+ @section means main paragraph for which this test is denoted to, others are
+ paragraphs which are also significant for the test to pass.
+ @assertion - an assertion which is tested by this test.
+ @description - provide information about test (optional tag).
+ @negative - signals that test must failed(like incorrect syntax tests for exam).
+
+ Other sections (which are not described here) are stored as java Properties.
+
+ Example:
+ /**
+ * @name: S11.3.1_A1.1_T1;
+ * @section: 11.3.1, 11.6.3, 7.3;
+ * @assertion: Line Terminator between LeftHandSideExpression and ++ are not allowed;
+ * @description: Check Line Feed;
+ * @negative
+ */
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S11.4.3_D1.1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S11.4.3_D1.1.js
new file mode 100644
index 000000000..e687adb62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S11.4.3_D1.1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.3_D1.1;
+ * @section: 11.4.3;
+ * @assertion: Result of typeof from RegExp is "function";
+*/
+
+// CHECK#1
+if (typeof RegExp !== "function") {
+ $ERROR('#1: Result of typeof from RegExp is "function"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S11.4.3_D1.2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S11.4.3_D1.2.js
new file mode 100644
index 000000000..c72b26f81
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S11.4.3_D1.2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.3_D1.2;
+ * @section: 11.4.3;
+ * @assertion: Result of typeof from RegExp is "object";
+*/
+
+// CHECK#1
+if (typeof RegExp !== "object") {
+ $ERROR('#1: Result of typeof from RegExp is "object"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S12.6.4_D1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S12.6.4_D1.js
new file mode 100644
index 000000000..19b97fd74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S12.6.4_D1.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S12.6.4_D1;
+* @section: 12.6.4;
+* @assertion: If new properties are added to the object being
+* enumerated during enumeration, the newly added properties to be visited in the active
+* enumeration;
+*/
+
+__obj={aa:1,ba:2,ca:3};
+__source={sra:9,srb:8,src:7};
+
+__accum="";
+
+for (__key in __obj){
+
+ __accum+=(__key+__obj[__key]);
+
+ add2hash(__obj,__source);
+
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(
+(__accum.indexOf("aa1")!==-1)&&
+(__accum.indexOf("ba2")!==-1)&&
+(__accum.indexOf("ca3")!==-1)&&
+(__accum.indexOf("sra9")!==-1)&&
+(__accum.indexOf("srb8")!==-1)&&
+(__accum.indexOf("src7")!==-1)
+)) {
+ $ERROR('#1: the newly added properties to be visited in the active enumeration');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function add2hash(hash_map_target, hash_map_be_added){
+ if (added) return;
+ for (key in hash_map_be_added){
+ hash_map_target[key] = hash_map_be_added[key];
+ }
+ var added = true;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T1.js
new file mode 100644
index 000000000..6f14c5bd1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_D20_T1;
+* @section: 13.2.2;
+* @assertion: function declaration inside of "with" statement is a fuction declaration inside of current execution context;
+*/
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ result = __func();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){return a;};
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T2.js
new file mode 100644
index 000000000..20eaa0634
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_D20_T2;
+* @section: 13.2.2;
+* @assertion: function declaration inside of "with" statement is a fuction declaration inside of current execution context;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (typeof __func !== "function") {
+ $ERROR('#0: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ result = __func();
+
+ function __func(){return a;};
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T3.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T3.js
new file mode 100644
index 000000000..3b338f292
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_D20_T3;
+* @section: 13.2.2;
+* @assertion: function declaration inside of "with" statement is a fuction declaration inside of current execution context;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (typeof __func !== "function") {
+ $ERROR('#0: function\'s scope chain is from when it was declared');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var a = 1;
+
+var __obj = {a:2};
+
+result = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+try {
+ with (__obj)
+ {
+ throw 3;
+ function __func(){return a;};
+ }
+} catch (e) {
+ ;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T4.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T4.js
new file mode 100644
index 000000000..ff1d1c50c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T4.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_D20_T4;
+* @section: 13.2.2;
+* @assertion: function declaration inside of "with" statement is a fuction declaration inside of current execution context;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (typeof __func !== "function") {
+ $ERROR('#0: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var a = 1;
+
+var __obj = {a:2,__obj:{a:3}};
+
+result = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+try {
+ with (__obj)
+ {
+ throw 3;
+ with(__obj){
+ throw 5;
+ function __func(){return a;};
+ }
+ }
+} catch (e) {
+ ;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T5.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T5.js
new file mode 100644
index 000000000..8921214b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T5.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_D20_T5;
+* @section: 13.2.2;
+* @assertion: function declaration inside of "with" statement is a fuction declaration inside of current execution context;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (typeof __func !== "function") {
+ $ERROR('#0: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ try {
+ throw 3;
+ function __func()
+ {
+ return a;
+ }
+ } catch (e) {
+ ;
+ }
+}
+
+delete __obj;
+
+result = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T6.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T6.js
new file mode 100644
index 000000000..23cd590ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T6.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_D20_T6;
+* @section: 13.2.2;
+* @assertion: function declaration inside of "with" statement is a fuction declaration inside of current execution context;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (typeof __func !== "function") {
+ $ERROR('#0: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ while(0){
+ function __func()
+ {
+ return a;
+ }
+ }
+}
+
+delete __obj;
+
+var __obj = {a:3};
+
+with (__obj)
+{
+ result = __func();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T7.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T7.js
new file mode 100644
index 000000000..f3b32d188
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T7.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_D20_T7;
+* @section: 13.2.2;
+* @assertion: function declaration inside of "with" statement is a fuction declaration inside of current execution context;
+*/
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ function __func()
+ {
+ return a;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.hasOwnProperty('__func')) {
+ $ERROR('#1: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(this.hasOwnProperty('__func'))) {
+ $ERROR('#2: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__func in __obj) {
+ $ERROR('#3: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (this.__func === undefined) {
+ $ERROR('#4: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T8.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T8.js
new file mode 100644
index 000000000..9f99ad571
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2.2_D20_T8.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13.2.2_D20_T8;
+* @section: 13.2.2;
+* @assertion: function declaration inside of "with" statement is a fuction declaration inside of current execution context;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (typeof __func !== "function") {
+ $ERROR('#0: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var a = 1, b = "a";
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ while(0){
+ function __func()
+ {
+ return a;
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== "a") {
+ $ERROR('#1: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+delete __obj;
+
+var __obj = {a:3,b:"b"};
+
+with (__obj)
+{
+ for(b in null){
+ function __func()
+ {
+ return b;
+ }
+ }
+}
+
+with (__obj)
+{
+ result = __func();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (result !== "a") {
+ $ERROR('#2: function declaration inside of "with" statement is a fuction declaration inside of current execution context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2_D1.1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2_D1.1.js
new file mode 100644
index 000000000..d17fe71bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2_D1.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S13.2_D1.1;
+ * @section: 13.2;
+ * @assertion: Create a new native ECMAScript object, not joined the already exists object that was created
+ * by an earlier call to this section's algorithm, and if that call to this section's algorithm was given
+ * a FunctionBody that equated to the FunctionBody given now;
+*/
+
+function A(){
+ function B(x) { return x*x; }
+ return B;
+}
+
+var f1 = A();
+var f2 = A();
+
+//CHECK#1
+if (f1 == f2) {
+ $ERROR('#1: Create a new native ECMAScript object, not joined the already exists object');
+} else {
+ if (f1 === f2) {
+ $ERROR('#1: Create a new native ECMAScript object, not joined the already exists object');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2_D1.2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2_D1.2.js
new file mode 100644
index 000000000..ae58b11aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13.2_D1.2.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S13.2_D1.2;
+ * @section: 13.2;
+ * @assertion: Create a new native ECMAScript object, joined the already exists object that was created
+ * by an earlier call to this section's algorithm, and if that call to this section's algorithm was given
+ * a FunctionBody that equated to the FunctionBody given now;
+*/
+
+function A(){
+ function B(x) { return x*x; }
+ return B;
+}
+
+var f1 = A();
+var f2 = A();
+
+//CHECK#1
+if (f1 != f2) {
+ $ERROR('#1: Create a new native ECMAScript object, joined the already exists object');
+} else {
+ if (f1 !== f2) {
+ $ERROR('#1: Create a new native ECMAScript object, joined the already exists object');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13_D1_T1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13_D1_T1.js
new file mode 100644
index 000000000..14d1c67e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S13_D1_T1.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S13_D1_T1;
+* @section: 13,12.10;
+* @assertion: Function declaration inside of "with" statement interprets as function expression;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (typeof __func !== "undefined") {
+ $ERROR('#0: Function declaration inside of "with" statement interprets as function expression');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var a = 1, b = "a";
+
+var __obj = {a:2,b:"x"};
+
+with (__obj)
+{
+ function __func()
+ {
+ return a;
+ }
+}
+
+delete __obj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== 2) {
+ $ERROR('#1: Function declaration inside of "with" statement interprets as function expression');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = {a:3,b:"b"};
+
+with (__obj)
+{
+ function __func()
+ {
+ return b;
+ }
+}
+
+delete __obj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func()!=="b") {
+ $ERROR('#2: Function declaration inside of "with" statement interprets as function expression');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+with ({a:99,b:"c"})
+{
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#2
+ if (__func() !== "c") {
+ $ERROR('#2: Function declaration inside of "with" statement interprets as function expression');
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D1_T1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D1_T1.js
new file mode 100644
index 000000000..9a28f5906
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D1_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.
+
+/**
+* @name: S14_D1_T1;
+* @section: 14;
+* @assertion: Function declaration may be in unreacheable fragment of program;
+*/
+
+THERE = "I'm there";
+HERE = "I'm here";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ if (__func() !== THERE) {
+ $ERROR('#1: Function declaration may be in unreacheable fragment of program');
+ }
+} catch(e){
+ $ERROR('#1.1: '+e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+if (true){
+ function __func(){return HERE;};
+} else {
+ function __func(){return THERE;};
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== THERE) {
+ $ERROR('#2: Function declaration may be in unreacheable fragment of program');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T1.js
new file mode 100644
index 000000000..be5b11464
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S14_D4_T1;
+* @section: 14;
+* @assertion: Function declaration may be inside of try-catch block ;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __sleep !== "function") {
+ $FAIL('#1: Test fails badly');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ __sleep();
+ $ERROR('#2: Function declaration may be inside of try-catch block');
+} catch(e){
+ $PRINT("#2 passed "+e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+try {
+ function __sleep(){
+ return CHUNK;
+ }
+} catch (e) {
+ ;
+}
+
+
+CHUNK="zzz...";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ if (__sleep()!=="zzz...") {
+ $ERROR('#3: Function declaration may be inside of try-catch block');
+ }
+} catch(e){
+ $ERROR('#3.1: Function declaration may be inside of try-catch block');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T2.js
new file mode 100644
index 000000000..4df602d45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S14_D4_T2;
+* @section: 14;
+* @assertion: Function declaration may be inside of try-catch block ;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __sleep !== "function") {
+ $FAIL('#1: Test fails badly');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ __sleep();
+ $ERROR('#2: Function declaration may be inside of try-catch block');
+} catch(e){
+ $PRINT("#2 passed "+e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+try {
+ ;
+} catch (e) {
+ function __sleep(){
+ return CHUNK;
+ }
+}
+
+
+CHUNK="zzz...";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ if (__sleep()!=="zzz...") {
+ $ERROR('#3: Function declaration may be inside of try-catch block');
+ }
+} catch(e){
+ $ERROR('#3.1: Function declaration may be inside of try-catch block');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T3.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T3.js
new file mode 100644
index 000000000..c71cc70bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D4_T3.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S14_D4_T3;
+* @section: 14;
+* @assertion: Function declaration may be inside of try-catch block ;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __sleep !== "function") {
+ $FAIL('#1: Test fails badly');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ __sleep();
+ $ERROR('#2: Function declaration may be inside of try-catch block');
+} catch(e){
+ $PRINT("#2 passed "+e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+try {
+ function __sleep(){
+ return BBUNK;
+ }
+} catch (e) {
+ function __sleep(){
+ return CHUNK;
+ }
+}
+
+
+CHUNK="zzz...";
+BBUNK="dream...";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ if (__sleep()!=="zzz...") {
+ $ERROR('#3: Function declaration may be inside of try-catch block');
+ }
+} catch(e){
+ $ERROR('#3.1: Function declaration may be inside of try-catch block');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D6_T1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D6_T1.js
new file mode 100644
index 000000000..819fff1d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D6_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.
+
+/**
+* @name: S14_D6_T1;
+* @section: 14;
+* @assertion: Function declaration may be inside of while block ;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('1: Function declaration may be inside of while block');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while(0){
+ function __func(){return BANNER;};
+}
+
+BANNER="union jack";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== "union jack") {
+ $ERROR('2: Function declaration may be inside of while block');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D6_T2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D6_T2.js
new file mode 100644
index 000000000..e6e9b8a5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D6_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S14_D6_T2;
+* @section: 14;
+* @assertion: Function declaration may be inside of while block ;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('1: Function declaration may be inside of while block');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while(1){
+ break;
+ function __func(){return BANNER;};
+}
+
+BANNER="union jack";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== "union jack") {
+ $ERROR('2: Function declaration may be inside of while block');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D7.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D7.js
new file mode 100644
index 000000000..73082b82c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S14_D7.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S14_D7;
+* @section: 14;
+* @assertion: Function declaration may be inside of "with" block ;
+*/
+
+BANNER="union jack";
+
+a=1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('1: Function declaration may be inside of "with" block');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__obj={a:2};
+
+with(__obj){
+ function __func(){return a;};
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== 1) {
+ $ERROR('2: Function declaration may be inside of "with" block ');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__obj.a=BANNER;
+
+with(__obj){
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#3
+ if (__func() !== "union jack") {
+ $ERROR('3: Function declaration may be inside of "with" block ');
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.1.2.2_D1.1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.1.2.2_D1.1.js
new file mode 100644
index 000000000..da793b1a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.1.2.2_D1.1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_D1.1;
+ * @section: 15.1.2.2, 9.8;
+ * @assertion: If the length of S is at least 1 and the first character of S is 0,
+ * then R = 8;
+*/
+
+//CHECK#2
+if (parseInt("08") !== parseInt("08", 8)) {
+ $ERROR('#1: parseInt("08") === parseInt("08", 8)');
+}
+
+//CHECK#2
+if (parseInt("09") !== parseInt("09", 8)) {
+ $ERROR('#2: parseInt("09") === parseInt("09", 8)');
+}
+
+//CHECK#3
+if (parseInt("010") !== parseInt("010", 8)) {
+ $ERROR('#3: parseInt("010") === parseInt("010", 8)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.1.2.2_D1.2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.1.2.2_D1.2.js
new file mode 100644
index 000000000..cbdc1fe59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.1.2.2_D1.2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.2.2_D1.2;
+ * @section: 15.1.2.2, 9.8;
+ * @assertion: If the length of S is at least 1 and the first character of S is 0,
+ * then R = 10;
+*/
+
+//CHECK#1
+if (parseInt("08") !== parseInt("08", 10)) {
+ $ERROR('#1: parseInt("08") === parseInt("08", 10)');
+}
+
+//CHECK#2
+if (parseInt("09") !== parseInt("09", 10)) {
+ $ERROR('#2: parseInt("09") === parseInt("09", 10)');
+}
+
+//CHECK#3
+if (parseInt("010") !== parseInt("010", 10)) {
+ $ERROR('#3: parseInt("010") === parseInt("010", 10)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.10.6.3_D1_T1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.10.6.3_D1_T1.js
new file mode 100644
index 000000000..40403f127
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.10.6.3_D1_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.10.6.3_D1_T1;
+* @section: 15.10.6.3;
+* @assertion: RegeExp.prototype.test calling does not change lastIndex property;
+*/
+
+__re = /ab|cd/g;
+
+__string = "zz zz ab zz zz";
+
+__re.test(__string);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__re.lastIndex!==0) {
+ $ERROR('#1: RegeExp.prototype.test calling does not change lastIndex property');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.4.4.12_D1.5_T1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.4.4.12_D1.5_T1.js
new file mode 100644
index 000000000..97f2ad804
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.4.4.12_D1.5_T1.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_D1.5_T1;
+ * @section: 15.4.4.12;
+ * @assertion: If a function is given fewer arguments than the function is
+ * specified to require, the function shall behave exactly as if it had been
+ * given sufficient additional arguments, each such argument being the
+ * undefined value;
+ * @description: no argument;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice();
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(); arr is Array object');
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(); arr.length === 0');
+}
+
+//CHECK#3
+if (x.length !== 4) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(); x.length === 4');
+}
+
+//CHECK#4
+if (x[0] !== 0) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(); x[0] === 0');
+}
+
+//CHECK#5
+if (x[1] !== 1) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(); x[1] === 1');
+}
+
+//CHECK#6
+if (x[2] !== 2) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(); x[2] === 2');
+}
+
+//CHECK#7
+if (x[3] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(); x[3] === 3');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.4.4.12_D1.5_T2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.4.4.12_D1.5_T2.js
new file mode 100644
index 000000000..5c44d6402
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.4.4.12_D1.5_T2.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.4.4.12_D1.5_T2;
+ * @section: 15.4.4.12;
+ * @assertion: If a function is given fewer arguments than the function is
+ * specified to require, the function shall behave exactly as if it had been
+ * given sufficient additional arguments, each such argument being the
+ * undefined value;
+ * @description: one argument;
+*/
+
+var x = [0,1,2,3];
+var arr = x.splice(1);
+
+//CHECK#1
+arr.getClass = Object.prototype.toString;
+if (arr.getClass() !== "[object " + "Array" + "]") {
+ $ERROR('#1: var x = [0,1,2,3]; var arr = x.splice(1); arr is Array object');
+}
+
+//CHECK#2
+if (arr.length !== 0) {
+ $ERROR('#2: var x = [0,1,2,3]; var arr = x.splice(1); arr.length === 0');
+}
+
+//CHECK#3
+if (x.length !== 4) {
+ $ERROR('#3: var x = [0,1,2,3]; var arr = x.splice(1); x.length === 4');
+}
+
+//CHECK#4
+if (x[0] !== 0) {
+ $ERROR('#4: var x = [0,1,2,3]; var arr = x.splice(1); x[0] === 0');
+}
+
+//CHECK#5
+if (x[1] !== 1) {
+ $ERROR('#5: var x = [0,1,2,3]; var arr = x.splice(1); x[1] === 1');
+}
+
+//CHECK#6
+if (x[2] !== 2) {
+ $ERROR('#6: var x = [0,1,2,3]; var arr = x.splice(1); x[2] === 2');
+}
+
+//CHECK#7
+if (x[3] !== 3) {
+ $ERROR('#7: var x = [0,1,2,3]; var arr = x.splice(1); x[3] === 3');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D1_T1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D1_T1.js
new file mode 100644
index 000000000..9f464f047
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D1_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2_D1_T1;
+* @section: 15.5.2;
+* @assertion: String constructor can accept many arguments. But only the first will be accounted ;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __str__instance = new String(1,2,3);
+} catch (e) {
+ $FAIL('#1: String constructor can accept many arguments');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str__instance != "1") {
+ $ERROR('#2: But only the first will be accounted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D1_T2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D1_T2.js
new file mode 100644
index 000000000..2c208cf90
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D1_T2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2_D1_T2;
+* @section: 15.5.2;
+* @assertion: String constructor can accept many arguments. But only the first will be accounted ;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __str__instance = new String(null,"2",x);
+} catch (e) {
+ $FAIL('#1: String constructor can accept many arguments');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str__instance != "null") {
+ $ERROR('#2: But only the first will be accounted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D2.js
new file mode 100644
index 000000000..538c9f5eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.2_D2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.2_D2;
+* @section: 15.5.2;
+* @assertion: String constructor can't accept many arguments. When more than one is provided exception throws ;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __str__instance = new String(1,2,3);
+ $FAIL('#1: When more than one is provided exception throws');
+} catch (e) {
+ $PRINT(e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T1.js
new file mode 100644
index 000000000..adb10cfca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_D1.1_T1;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue) accepts only two arguments;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+"".replace();
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T2.js
new file mode 100644
index 000000000..30398d3b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_D1.1_T2;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue) accepts only two arguments;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+"".replace(new RegExp());
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T3.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T3.js
new file mode 100644
index 000000000..693bb9540
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_D1.1_T3;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue) accepts only two arguments;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+"".replace("");
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T4.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T4.js
new file mode 100644
index 000000000..be7207d8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.5.4.11_D1.1_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.11_D1.1_T4;
+* @section: 15.5.4.11;
+* @assertion: String.prototype.replace (searchValue, replaceValue) accepts only two arguments;
+* @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+__2 = "1".replace("1","2",null, x);
+if (__2 !== "2") {
+ $ERROR('#1: String.prototype.replace (searchValue, replaceValue) accepts only two arguments');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var x;
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.7.4.5_A1.2_D02.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.7.4.5_A1.2_D02.js
new file mode 100644
index 000000000..2c10f26d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.7.4.5_A1.2_D02.js
@@ -0,0 +1,131 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.5_A1.2_D02;
+ * @section: 15.7.4.5;
+ * @assertion: If f < 0 or f > 20, throw a RangeError exception;
+ * @description: calling on Number object;
+*/
+
+//CHECK#2
+try{
+ s = (new Number(1)).toFixed(-1);
+ $ERROR('#2: (new Number(1)).toFixed(-1) should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#2: (new Number(1)).toFixed(-1) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#3
+try{
+ s = (new Number(1)).toFixed(20.1);
+ $ERROR('#3: (new Number(1)).toFixed(20.1) should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#3: (new Number(1)).toFixed(20.1) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#4
+try{
+ s = (new Number(1)).toFixed(21);
+ $ERROR('#4: (new Number(1)).toFixed(21) should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#4: (new Number(1)).toFixed(21) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#5
+try{
+ s = (new Number(1)).toFixed(Number.POSITIVE_INFINITY);
+ $ERROR('#5: (new Number(1)).toFixed(Number.POSITIVE_INFINITY) should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#5: (new Number(1)).toFixed(Number.POSITIVE_INFINITY) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#6
+try{
+ s = (new Number(1)).toFixed(Number.NEGATIVE_INFINITY);
+ $ERROR('#6: (new Number(1)).toFixed(Number.NEGATIVE_INFINITY) should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#6: (new Number(1)).toFixed(Number.NEGATIVE_INFINITY) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#7
+try{
+ s = (new Number(1)).toFixed("-0.1");
+ $ERROR('#1: (new Number(1)).toFixed("-0.1") should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#1: (new Number(1)).toFixed("-0.1") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#2
+try{
+ s = (new Number(1)).toFixed("-1");
+ $ERROR('#2: (new Number(1)).toFixed("-1") should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#2: (new Number(1)).toFixed("-1") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#3
+try{
+ s = (new Number(1)).toFixed("20.1");
+ $ERROR('#3: (new Number(1)).toFixed("20.1") should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#3: (new Number(1)).toFixed("20.1") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#4
+try{
+ s = (new Number(1)).toFixed(21);
+ $ERROR('#4: (new Number(1)).toFixed("21") should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#4: (new Number(1)).toFixed("21") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#5
+try{
+ s = (new Number(1)).toFixed("Infinity");
+ $ERROR('#5: (new Number(1)).toFixed("Infinity") should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#5: (new Number(1)).toFixed("Infinity") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#6
+try{
+ s = (new Number(1)).toFixed("-Infinity");
+ $ERROR('#6: (new Number(1)).toFixed("-Infinity") should throw RangeError, see the diagnostics tests for this section');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#6: (new Number(1)).toFixed("-Infinity") should throw RangeError, not the '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.7.4.5_D1.2_T01.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.7.4.5_D1.2_T01.js
new file mode 100644
index 000000000..414eb5b4f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.7.4.5_D1.2_T01.js
@@ -0,0 +1,132 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.7.4.5_A1.2_D01;
+ * @section: 15.7.4.5;
+ * @assertion: If f < 0 or f > 20, throw a RangeError exception;
+ * @description: calling on Number prototype object;
+*/
+
+
+//CHECK#2
+try{
+ s = Number.prototype.toFixed(-1);
+ $ERROR('#2: Number.prototype.toFixed(-1) should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#2: Number.prototype.toFixed(-1) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#3
+try{
+ s = Number.prototype.toFixed(20.1);
+ $ERROR('#3: Number.prototype.toFixed(20.1) should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#3: Number.prototype.toFixed(20.1) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#4
+try{
+ s = Number.prototype.toFixed(21);
+ $ERROR('#4: Number.prototype.toFixed(21) should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#4: Number.prototype.toFixed(21) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#5
+try{
+ s = Number.prototype.toFixed(Number.POSITIVE_INFINITY);
+ $ERROR('#5: Number.prototype.toFixed(Number.POSITIVE_INFINITY) should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#5: Number.prototype.toFixed(Number.POSITIVE_INFINITY) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#6
+try{
+ s = Number.prototype.toFixed(Number.NEGATIVE_INFINITY);
+ $ERROR('#6: Number.prototype.toFixed(Number.NEGATIVE_INFINITY) should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#6: Number.prototype.toFixed(Number.NEGATIVE_INFINITY) should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#7
+try{
+ s = Number.prototype.toFixed("-0.1");
+ $ERROR('#1: Number.prototype.toFixed("-0.1") should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#1: Number.prototype.toFixed("-0.1") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#2
+try{
+ s = Number.prototype.toFixed("-1");
+ $ERROR('#2: Number.prototype.toFixed("-1") should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#2: Number.prototype.toFixed("-1") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#3
+try{
+ s = Number.prototype.toFixed("20.1");
+ $ERROR('#3: Number.prototype.toFixed("20.1") should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#3: Number.prototype.toFixed("20.1") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#4
+try{
+ s = Number.prototype.toFixed(21);
+ $ERROR('#4: Number.prototype.toFixed("21") should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#4: Number.prototype.toFixed("21") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#5
+try{
+ s = Number.prototype.toFixed("Infinity");
+ $ERROR('#5: Number.prototype.toFixed("Infinity") should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#5: Number.prototype.toFixed("Infinity") should throw RangeError, not the '+e);
+ }
+}
+
+//CHECK#6
+try{
+ s = Number.prototype.toFixed("-Infinity");
+ $ERROR('#6: Number.prototype.toFixed("-Infinity") should throw RangeError');
+}
+catch(e){
+ if(!(e instanceof RangeError)){
+ $ERROR('#6: Number.prototype.toFixed("-Infinity") should throw RangeError, not the '+e);
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.9.1.14_D1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.9.1.14_D1.js
new file mode 100644
index 000000000..e1fdbde65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S15.9.1.14_D1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.9.1.14_D1;
+ * @section: 15.9.1.14;
+ * @assertion: Return an implementation-dependent choice of either
+ * ToInteger(Result(2)) or ToInteger(Result(2)) + (+0);
+*/
+
+// CHECK#1
+var d = new Date(-0);
+if ( !( 1/d.valueOf() === Number.NEGATIVE_INFINITY) ) {
+ $PRINT('#1: TimeClip returns (ToInteger(value) + (+0))');
+} else {
+ $PRINT('#1: TimeClip returns (ToInteger(value))');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D1.1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D1.1.js
new file mode 100644
index 000000000..911cd5955
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D1.1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.4_D1.1;
+* @section: 8.4, 15.5, 7.8.4;
+* @assertion: Engines implements array like access to string elemenths,
+* when we call squre brackets operator char at position specified returns
+*/
+
+var __str = 'hail to robots!!!';
+var str__='';
+for (ind = 0; ind < 17; ind++){
+ str__ += __str[ind];
+}
+if (str__ !== __str) {
+ $ERROR('When we call squre brackets operator char at position specified returns');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D1.2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D1.2.js
new file mode 100644
index 000000000..8eb6a1950
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D1.2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_D1.2;
+ * @section: 8.4, 7.8.4;
+ * @assertion: Some engines can implement array like access to string elemenths:
+ * Positions are indexed with nonnegative integers;
+*/
+
+str='asdfghjkl';
+
+////////////////////////////////////////////////////////////
+// CHECK#1
+if (str[0] !== 'a'){
+ $ERROR('#1: str="asdfghjkl";str[0]==="a"');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#2
+if (str[1] !== 's'){
+ $ERROR('#2: str="asdfghjkl";str[1]==="s"');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#3
+if (str[8] !== 'l'){
+ $ERROR('#3: str="asdfghjkl";str[8]==="l"');
+}
+//
+/////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.1.js
new file mode 100644
index 000000000..e51128899
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_D2.1;
+ * @section: 8.4, 15.5, 7.8.4;
+ * @assertion: Engines implements array like access to string elemenths,
+ * Index of element must be nonnegative;
+ * @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+str='asdfghjkl';
+
+var element=str[-1];
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.2.js
new file mode 100644
index 000000000..34cd6288e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_D2.2;
+ * @section: 8.4, 15.5, 7.8.4;
+ * @assertion: Engines implements array like access to string elemenths,
+ * Index of elementh must be less than string length;
+ * @negative;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+str='asdfghjkl';
+
+var char__ =str[99];
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.3.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.3.js
new file mode 100644
index 000000000..62f48a2b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_D2.3;
+ * @section: 8.4, 15.5, 7.8.4;
+ * @assertion: Engines implements array like access to string elemenths,
+ * If index of elementh is greater or equals than string length an empty string returns;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+str='asdfghjkl';
+
+var char__ =str[99];
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (char__!== '') {
+ $ERROR('#1: If index of elementh is greater or equals than string length an emty string returns');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.4.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.4.js
new file mode 100644
index 000000000..fca63a1e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.4.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_D2.4;
+ * @section: 8.4, 15.5, 7.8.4;
+ * @assertion: Engines implements array like access to string elemenths,
+ * If index of elementh is less than 0 an empty string returns;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+str='asdfghjkl';
+
+var char__ =str[-1];
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (char__!== '') {
+ $ERROR('#1: If index of elementh is less than 0 an emty string returns');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __char =str[-5];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__char!== '') {
+ $ERROR('#2: If index of elementh is less than 0 an emty string returns');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.5.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.5.js
new file mode 100644
index 000000000..8b91f05c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.5.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_D2.5;
+ * @section: 8.4, 15.5, 7.8.4;
+ * @assertion: Engines implements array like access to string elemenths,
+ * If index of elementh is less than 0 an undefined returns;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+str='asdfghjkl';
+
+var char__ =str[-1];
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof char__!== 'undefined') {
+ $ERROR('#1: If index of elementh is less than 0 an undefined returns');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __char =str[-5];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof char__!== 'undefined') {
+ $ERROR('#2: If index of elementh is less than 0 an undefined returns');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.6.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.6.js
new file mode 100644
index 000000000..e47af6b0b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_D2.6;
+ * @section: 8.4, 15.5, 7.8.4;
+ * @assertion: Engines implements array like access to string elemenths,
+ * If index of elementh is greater or equals than string length an undefined returns;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+str='asdfghjkl';
+
+var char__ =str[99];
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof char__!== 'undefined') {
+ $ERROR('#1: If index of elementh is greater or equals than string length an emty string returns');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.7.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.7.js
new file mode 100644
index 000000000..dc74ac2b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.4_D2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S8.4_D2.7;
+ * @section: 8.4, 15.5, 7.8.4;
+ * @assertion: Engines implements array like access to string elemenths,
+ * If index of element must is equal to -1 an length of string returns;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+str='asdfghjkl';
+
+if (str[-1] !== 9) {
+ $ERROR('#1: If index of element must is equal to -1 an length of string returns');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+str='';
+
+if (str[-1] !== 0) {
+ $ERROR('#2: If index of element must is equal to -1 an length of string returns');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.1.js
new file mode 100644
index 000000000..3df6cceb3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6_D1.1;
+* @section: 8.6;
+* @assertion: An Object may have up to 4096 properties;
+* @description: Create 4096 properties of any Object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+COUNT=4096;
+var props={};
+for (var i=0;i<COUNT;i++){
+ props['prop'+i]=i;
+}
+var result = true;
+for (var i=0;i<COUNT;i++){
+ if (props['prop'+i] !==i ) result = false;
+}
+if (result !== true) {
+ $ERROR('#1: An Object may have up to 4096 properties');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.2.js
new file mode 100644
index 000000000..4b9547fc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6_D1.2;
+* @section: 8.6;
+* @assertion: An Object may have up to 16384 properties ;
+* @description: Create 16384 properties of any Object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+COUNT=16384;
+var props={};
+for (var i=0;i<COUNT;i++){
+ props['prop'+i]=i;
+}
+var result = true;
+for (var i=0;i<COUNT;i++){
+ if (props['prop'+i] !==i ) result = false;
+}
+if (result !== true) {
+ $ERROR('#1: An Object may have up to 4096 properties');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.3.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.3.js
new file mode 100644
index 000000000..b04fbbc0f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6_D1.3;
+* @section: 8.6;
+* @assertion: An Object may have up to 65536 properties ;
+* @description: Create 65536 properties of any Object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+COUNT=65536;
+var props={};
+for (var i=0;i<COUNT;i++){
+ props['prop'+i]=i;
+}
+var result = true;
+for (var i=0;i<COUNT;i++){
+ if (props['prop'+i] !==i ) result = false;
+}
+if (result !== true) {
+ $ERROR('#1: An Object may have up to 4096 properties');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.4.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.4.js
new file mode 100644
index 000000000..7552fb755
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.6_D1.4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.6_D1.4;
+* @section: 8.6;
+* @assertion: An Object may have up to 262144 properties ;
+* @description: Create 262144 properties of any Object;
+*/
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+COUNT=262144;
+var props={};
+for (var i=0;i<COUNT;i++){
+ props['prop'+i]=i;
+}
+var result = true;
+for (var i=0;i<COUNT;i++){
+ if (props['prop'+i] !==i ) result = false;
+}
+if (result !== true) {
+ $ERROR('#1: An Object may have up to 4096 properties');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.1.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.1.js
new file mode 100644
index 000000000..b621db886
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.8_D1.1;
+* @section: 8.8;
+* @assertion: Arguments list may have up to 512 elements;
+* @description: Call function with 512 arguments;
+*/
+
+__mFunc=Function("return arguments.length;");
+
+if (__mFunc('8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type') !== 512) {
+ $ERROR('#1: Arguments list may have up to 512 elements');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.2.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.2.js
new file mode 100644
index 000000000..4058a6118
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.8_D1.2;
+* @section: 8.8;
+* @assertion: Arguments list may have up to 2048 elements;
+* @description: Call function with 2048 arguments;
+*/
+
+__mFunc=Function("return arguments.length;");
+
+if (__mFunc('8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type') !== 2048) {
+ $ERROR('#1: Arguments list may have up to 2048 elements');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.3.js b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.3.js
new file mode 100644
index 000000000..ee9bbc2e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Implementation_Diagnostics/S8.8_D1.3.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S8.8_D1.3;
+* @section: 8.8;
+* @assertion: Arguments list may have up to 8192 elements;
+* @description: Call function with 8192 arguments;
+*/
+
+__mFunc=Function("return arguments.length;");
+
+if (__mFunc('8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type',
+'8','8','The','List','Type','The','internal','List','type','is','not','a','language','data','type','1','It','is','defined','by','this','specification','purely','for','expository','purposes','1','An','implementation','of','ECMAScript','must','behave','as','if','it','produced','and','operated','upon','List','values','in','the','manner','described','here','1','However','1','a','value','of','the','List','type','is','used','only','as','an','intermediate','result','of','expression','evaluation','and','cannot','be','stored','as','the','value','of','a','variable','or','property','1','The','List','type','is','used','to','explain','the','evaluation','of','argument','lists','(see','11','2','4)','in','new','expressions','and','in','function','calls','1','Values','of','the','List','type','are','simply','ordered','sequences','of','values','1','These','sequences','may','be','of','any','length','1','8','8','The','List','Type') !== 8192) {
+ $ERROR('#1: Arguments list may have up to 8192 elements');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T1.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T1.js
new file mode 100644
index 000000000..8718cfd97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T1;
+ * @section: 11.13.2;
+ * @description: Result is not ToNumber(Undefined) * ToNumber(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x *= new String("-1");
+ if (isNaN(x) === true) {
+ $ERROR('#1: Result is not ToNumber32(Undefined) * ToNumber32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x *= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x *= new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T10.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T10.js
new file mode 100644
index 000000000..741be780a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T10;
+ * @section: 11.13.2;
+ * @description: Result is not ToInt32(Undefined) ^ ToInt32(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x ^= new String("-1");
+ if (x === -1) {
+ $ERROR('#1: Result is not ToInt32(Undefined) ^ ToInt32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x ^= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x ^= new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T11.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T11.js
new file mode 100644
index 000000000..b820148c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T11.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T11;
+ * @section: 11.13.2;
+ * @description: Result is not ToInt32(Undefined) | ToInt32(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x |= new String("-1");
+ if (x === -1) {
+ $ERROR('#1: Result is not ToInt32(Undefined) | ToInt32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x |= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x |= new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T2.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T2.js
new file mode 100644
index 000000000..b654bc1c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T2;
+ * @section: 11.13.2;
+ * @description: Result is not ToNumber(Undefined) / ToNumber(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x /= new String("-1");
+ if (isNaN(x) === true) {
+ $ERROR('#1: Result is not ToNumber32(Undefined) / ToNumber32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x /= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x /= new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T3.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T3.js
new file mode 100644
index 000000000..e0498da11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T3;
+ * @section: 11.13.2;
+ * @description: Result is not ToNumber(Undefined) % ToNumber(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x %= new String("-1");
+ if (isNaN(x) === true) {
+ $ERROR('#1: Result is not ToNumber32(Undefined) % ToNumber32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x %= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x %= new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T4.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T4.js
new file mode 100644
index 000000000..b2674c0a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T4;
+ * @section: 11.13.2;
+ * @description: Result is not ToNumber(Undefined) + ToNumber(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x += new String("-1");
+ if (isNaN(x) === true) {
+ $ERROR('#1: Result is not ToNumber32(Undefined) + ToNumber32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x += new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x += new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T5.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T5.js
new file mode 100644
index 000000000..b15c58483
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T5.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T5;
+ * @section: 11.13.2;
+ * @description: Result is not ToNumber(Undefined) - ToNumber(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x -= new String("-1");
+ if (isNaN(x) === true) {
+ $ERROR('#1: Result is not ToNumber32(Undefined) - ToNumber32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x -= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x -= new String("-1") throw ReferenceError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T6.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T6.js
new file mode 100644
index 000000000..935392e2c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T6.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T6;
+ * @section: 11.13.2;
+ * @description: Result is not ToInt32(Undefined) << ToInt32(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x <<= new String("-1");
+ if (x === 0) {
+ $ERROR('#1: Result is not ToInt32(Undefined) << ToInt32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x <<= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x <<= new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T7.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T7.js
new file mode 100644
index 000000000..23294e7ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T7.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T7;
+ * @section: 11.13.2;
+ * @description: Result is not ToInt32(Undefined) >> ToInt32(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x >>= new String("-1");
+ if (x === 0) {
+ $ERROR('#1: Result is not ToInt32(Undefined) >> ToInt32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x >>= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x >>= new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T8.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T8.js
new file mode 100644
index 000000000..cf0140762
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T8;
+ * @section: 11.13.2;
+ * @description: Result is not ToInt32(Undefined) >>> ToInt32(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x >>>= new String("-1");
+ if (x === 0) {
+ $ERROR('#1: Result is not ToInt32(Undefined) >>> ToInt32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x >>>= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x >>>= new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T9.js b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T9.js
new file mode 100644
index 000000000..6c9963e95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S11.13.2_R2.3_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_R2.3_T9;
+ * @section: 11.13.2;
+ * @description: Result is not ToInt32(Undefined) & ToInt32(AssignmentExpression);
+*/
+
+//CHECK#1
+try {
+ x &= new String("-1");
+ if (x === 0) {
+ $ERROR('#1: Result is not ToInt32(Undefined) & ToInt32(AssignmentExpression)');
+ } else {
+ $ERROR('#1: x &= new String("-1") throw ReferenceError');
+ }
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1: x &= new String("-1") throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S12.6.4_R1.js b/external/contributions/Google/sputniktests/tests/Regression/S12.6.4_R1.js
new file mode 100644
index 000000000..2a3a0de7d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S12.6.4_R1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.6.4_R1;
+ * @section: 12.6.4, 9.9;
+ * @description: The for-in statement must not throw TypeError for undefined
+ * values, cause it's a bug in the Standard;
+*/
+
+// CHECK#1
+try{
+ var x1 = 1;
+ for(var y1 in undefined) x1 = 2;
+ if (x1 === 1) {
+ $PRINT("#1: passed");
+ } else {
+ $ERROR("#1: The for-in statement must not fullfill, the value was changed");
+ }
+}
+catch(e){
+ if(e instanceof TypeError){
+ $ERROR("#1: The for-in statement must not throw TypeError for undefined values, cause it's a bug in the Standard");
+ } else {
+ $ERROR("#1: The for-in statement must not throw Error for undefined values, cause it's a bug in the Standard");
+ }
+}
+
+// CHECK#2
+try{
+ var x2 = 1;
+ for(var y2 in this.foo) x2 = 2;
+ if (x2 === 1) {
+ $PRINT("#1: passed");
+ } else {
+ $ERROR("#1: The for-in statement must not fullfill, the value was changed");
+ }
+}
+catch(e){
+ if(e instanceof TypeError){
+ $ERROR("#1: The for-in statement must not throw TypeError for undefined values, cause it's a bug in the Standard");
+ } else {
+ $ERROR("#1: The for-in statement must not throw Error for undefined values, cause it's a bug in the Standard");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S12.6.4_R2.js b/external/contributions/Google/sputniktests/tests/Regression/S12.6.4_R2.js
new file mode 100644
index 000000000..8be5846ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S12.6.4_R2.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S12.6.4_R2;
+ * @section: 12.6.4, 9.9;
+ * @description: The for-in statement must not throw TypeError for null
+ * values, cause it's a bug in the Standard;
+*/
+
+// CHECK#1
+try{
+ var x1 = 1;
+ for(var y1 in null) x1 = 2;
+ if (x1 === 1) {
+ $PRINT("#1: passed");
+ } else {
+ $ERROR("#1: The for-in statement must not fullfill, the value was changed");
+ }
+}
+catch(e){
+ if(e instanceof TypeError){
+ $ERROR("#1: The for-in statement must not throw TypeError for null values, cause it's a bug in the Standard");
+ } else {
+ $ERROR("#1: The for-in statement must not throw Error for null values, cause it's a bug in the Standard");
+ }
+}
+
+// CHECK#2
+try{
+ var x2 = 1;
+ for(var y2 in 'bbb'.match(/aaa/)) x2 = 2;
+ if (x2 === 1) {
+ $PRINT("#1: passed");
+ } else {
+ $ERROR("#1: The for-in statement must not fullfill, the value was changed");
+ }
+}
+catch(e){
+ if(e instanceof TypeError){
+ $ERROR("#1: The for-in statement must not throw TypeError for null values, cause it's a bug in the Standard");
+ } else {
+ $ERROR("#1: The for-in statement must not throw Error for null values, cause it's a bug in the Standard");
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R1.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R1.js
new file mode 100644
index 000000000..682575171
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.1_R1;
+ * @section: 15.1.1.1, 9.3;
+ * @description: The NaN is not ReadOnly, check Number for resettability of result;
+*/
+
+// CHECK#1
+NaN = true;
+Number();
+if (NaN !== true) {
+ NaN = true;
+ Number();
+ if (NaN === true) {
+ $ERROR('#1: Resettability of result');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R2.1.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R2.1.js
new file mode 100644
index 000000000..1a90460b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R2.1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.1_R2.1;
+ * @section: 15.1.1.1, 15.1.2, 15.1.3;
+ * @description: The NaN is not ReadOnly, check isNaN Functions that use ToNumber;
+*/
+
+// CHECK#1
+NaN = 1;
+if (isNaN(NaN) !== false) {
+ $ERROR('#1: NaN = 1; isNaN(NaN) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R2.2.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R2.2.js
new file mode 100644
index 000000000..f9c18f33e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R2.2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.1_R2.2;
+ * @section: 15.1.1.1, 15.1.2, 15.1.3;
+ * @description: The NaN is not ReadOnly, check isFinite Functions that use ToNumber;
+*/
+
+// CHECK#1
+NaN = 1;
+if (isFinite(NaN) !== true) {
+ $ERROR('#1: NaN = 1; isFinite(NaN) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R3.1.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R3.1.js
new file mode 100644
index 000000000..fc3bfbe25
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R3.1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.1_R3.1;
+ * @section: 15.1.1.1, 15.1.2.4;
+ * @description: The NaN is not ReadOnly, check isNaN for resettability of result;
+*/
+
+// CHECK#1
+NaN = 1;
+isNaN();
+if (NaN !== 1) {
+ NaN = 1;
+ isNaN();
+ if (NaN === 1) {
+ $ERROR('#1: isNaN resettability of result for NaN value');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R3.2.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R3.2.js
new file mode 100644
index 000000000..4a3d88a35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R3.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.1_R3.2;
+ * @section: 15.1.1.1, 15.1.2.4;
+ * @description: The NaN is not ReadOnly, check isFinite for resettability of result
+*/
+
+// CHECK#1
+NaN = 1;
+isFinite();
+if (NaN !== 1) {
+ NaN = 1;
+ isFinite();
+ if (NaN === 1) {
+ $ERROR('#1: isFinite resettability of result for NaN value');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R4.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R4.js
new file mode 100644
index 000000000..1470dddd5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.1_R4.js
@@ -0,0 +1,140 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.1_R4;
+ * @section: 15.1.1.1, 11;
+ * @description: The NaN is not ReadOnly, check Operators that use ToNumber;
+*/
+
+// CHECK#1
+NaN = true;
+NaN++;
+if (NaN !== 2) {
+ $ERROR('#1: NaN = true; NaN++; NaN === 2');
+}
+
+// CHECK#2
+NaN = true;
+NaN--;
+if (NaN !== 0) {
+ $ERROR('#2: NaN = true; NaN--; NaN === 0');
+}
+
+// CHECK#3
+NaN = true;
+++NaN;
+if (NaN !== 2) {
+ $ERROR('#3: NaN = true; ++NaN; NaN === 2');
+}
+
+// CHECK#4
+NaN = true;
+--NaN;
+if (NaN !== 0) {
+ $ERROR('#4: NaN = true; --NaN; NaN === 0');
+}
+
+// CHECK#5
+NaN = true;
++NaN;
+if (NaN !== true) {
+ $ERROR('#5: NaN = true; +NaN; NaN === true');
+
+}
+// CHECK#6
+NaN = true;
+-NaN;
+if (NaN !== true) {
+ $ERROR('#6: NaN = true; -NaN; NaN === true');
+}
+// CHECK#7
+NaN = true;
+NaN * 1;
+if (NaN !== true) {
+ $ERROR('#7: NaN = true; NaN * 1; NaN === true');
+}
+
+// CHECK#8
+NaN = true;
+NaN / 1;
+if (NaN !== true) {
+ $ERROR('#8: NaN = true; NaN / 1; NaN === true');
+}
+
+// CHECK#9
+NaN = true;
+NaN % 1;
+if (NaN !== true) {
+ $ERROR('#9: NaN = true; NaN % 1; NaN === true');
+}
+
+// CHECK#10
+NaN = true;
+NaN + 1;
+if (NaN !== true) {
+ $ERROR('#10: NaN = true; NaN + 1; NaN === true');
+}
+
+// CHECK#11
+NaN = true;
+NaN - 1;
+if (NaN !== true) {
+ $ERROR('#11: NaN = true; NaN - 1; NaN === true');
+}
+
+// CHECK#12
+NaN = true;
+NaN > 1;
+if (NaN !== true) {
+ $ERROR('#12: NaN = true; NaN > 1; NaN === true');
+}
+
+// CHECK#13
+NaN = true;
+NaN < 1;
+if (NaN !== true) {
+ $ERROR('#13: NaN = true; NaN < 1; NaN === true');
+}
+
+// CHECK#14
+NaN = true;
+NaN >= 1;
+if (NaN !== true) {
+ $ERROR('#14: NaN = true; NaN >= 1; NaN === true');
+}
+
+// CHECK#15
+NaN = true;
+NaN <= 1;
+if (NaN !== true) {
+ $ERROR('#15: NaN = true; NaN <= 1; NaN === true');
+}
+
+// CHECK#16
+NaN = true;
+NaN == true;
+if (NaN !== true) {
+ $ERROR('#16: NaN = true; NaN == true; NaN === true');
+}
+
+// CHECK#17
+NaN = true;
+NaN != 1;
+if (NaN !== true) {
+ $ERROR('#17: NaN = true; NaN != 1; NaN === true');
+}
+
+// CHECK#18
+NaN = true;
+NaN === true;
+if (NaN !== true) {
+ $ERROR('#18: NaN = true; NaN === true; NaN === true');
+}
+
+// CHECK#19
+NaN = true;
+NaN !== true;
+if (NaN !== true) {
+ $ERROR('#19: NaN = true; NaN !== true; NaN === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R1.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R1.js
new file mode 100644
index 000000000..8e9a69ea6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.2_R1;
+ * @section: 15.1.1.2, 9.3;
+ * @description: The Infinity is not ReadOnly, check Number for resettability of result;
+*/
+
+// CHECK#1
+Infinity = false;
+Number();
+if (Infinity !== false) {
+ Infinity = false;
+ Number();
+ if (Infinity === false) {
+ $ERROR('#1: Resettability of result');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R2.1.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R2.1.js
new file mode 100644
index 000000000..4cabefc2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R2.1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.2_R2.1;
+ * @section: 15.1.1.2, 15.1.2, 15.1.3;
+ * @description: The Infinity is not ReadOnly, check isNaN Functions that use ToNumber;
+*/
+
+// CHECK#1
+Infinity = "string";
+if (isNaN(Infinity) !== true) {
+ $ERROR('#1: Infinity = "string"; isNaN(Infinity) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R2.2.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R2.2.js
new file mode 100644
index 000000000..4b75c98bb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R2.2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.2_R2.2;
+ * @section: 15.1.1.2, 15.1.2, 15.1.3;
+ * @description: The Infinity is not ReadOnly, check isFinite Functions that use ToNumber;
+*/
+
+// CHECK#1
+Infinity = 0;
+if (isFinite(Infinity) !== true) {
+ $ERROR('#1: Infinity = 0; isFinite(Infinity) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R3.1.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R3.1.js
new file mode 100644
index 000000000..916559cc9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R3.1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.2_R3.1;
+ * @section: 15.1.1.2, 15.1.2.4;
+ * @description: The Infinity is not ReadOnly, check isNaN for resettability of result;
+*/
+
+// CHECK#1
+Infinity = "0";
+isNaN();
+if (Infinity !== "0") {
+ Infinity = "0";
+ isNaN();
+ if (Infinity === "0") {
+ $ERROR('#1: isNaN resettability of result for Infinity value');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R3.2.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R3.2.js
new file mode 100644
index 000000000..e34ae2e19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R3.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.2_R3.2;
+ * @section: 15.1.1.2, 15.1.2.4;
+ * @description: The Infinity is not ReadOnly, check isFinite for resettability of result
+*/
+
+// CHECK#1
+Infinity = 0;
+isFinite();
+if (Infinity !== 0) {
+ Infinity = 0;
+ isFinite();
+ if (Infinity === 0) {
+ $ERROR('#1: isFinite resettability of result for Infinity value');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R4.js b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R4.js
new file mode 100644
index 000000000..aedca921e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Regression/S15.1.1.2_R4.js
@@ -0,0 +1,140 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.1.2_R4;
+ * @section: 15.1.1.2, 11;
+ * @description: The Infinity is not ReadOnly, check Operators that use ToNumber;
+*/
+
+// CHECK#1
+Infinity = true;
+Infinity++;
+if (Infinity !== 2) {
+ $ERROR('#1: Infinity = true; Infinity++; Infinity === 2');
+}
+
+// CHECK#2
+Infinity = true;
+Infinity--;
+if (Infinity !== 0) {
+ $ERROR('#2: Infinity = true; Infinity--; Infinity === 0');
+}
+
+// CHECK#3
+Infinity = true;
+++Infinity;
+if (Infinity !== 2) {
+ $ERROR('#3: Infinity = true; ++Infinity; Infinity === 2');
+}
+
+// CHECK#4
+Infinity = true;
+--Infinity;
+if (Infinity !== 0) {
+ $ERROR('#4: Infinity = true; --Infinity; Infinity === 0');
+}
+
+// CHECK#5
+Infinity = true;
++Infinity;
+if (Infinity !== true) {
+ $ERROR('#5: Infinity = true; +Infinity; Infinity === true');
+
+}
+// CHECK#6
+Infinity = true;
+-Infinity;
+if (Infinity !== true) {
+ $ERROR('#6: Infinity = true; -Infinity; Infinity === true');
+}
+// CHECK#7
+Infinity = true;
+Infinity * 1;
+if (Infinity !== true) {
+ $ERROR('#7: Infinity = true; Infinity * 1; Infinity === true');
+}
+
+// CHECK#8
+Infinity = true;
+Infinity / 1;
+if (Infinity !== true) {
+ $ERROR('#8: Infinity = true; Infinity / 1; Infinity === true');
+}
+
+// CHECK#9
+Infinity = true;
+Infinity % 1;
+if (Infinity !== true) {
+ $ERROR('#9: Infinity = true; Infinity % 1; Infinity === true');
+}
+
+// CHECK#10
+Infinity = true;
+Infinity + 1;
+if (Infinity !== true) {
+ $ERROR('#10: Infinity = true; Infinity + 1; Infinity === true');
+}
+
+// CHECK#11
+Infinity = true;
+Infinity - 1;
+if (Infinity !== true) {
+ $ERROR('#11: Infinity = true; Infinity - 1; Infinity === true');
+}
+
+// CHECK#12
+Infinity = true;
+Infinity > 1;
+if (Infinity !== true) {
+ $ERROR('#12: Infinity = true; Infinity > 1; Infinity === true');
+}
+
+// CHECK#13
+Infinity = true;
+Infinity < 1;
+if (Infinity !== true) {
+ $ERROR('#13: Infinity = true; Infinity < 1; Infinity === true');
+}
+
+// CHECK#14
+Infinity = true;
+Infinity >= 1;
+if (Infinity !== true) {
+ $ERROR('#14: Infinity = true; Infinity >= 1; Infinity === true');
+}
+
+// CHECK#15
+Infinity = true;
+Infinity <= 1;
+if (Infinity !== true) {
+ $ERROR('#15: Infinity = true; Infinity <= 1; Infinity === true');
+}
+
+// CHECK#16
+Infinity = true;
+Infinity == true;
+if (Infinity !== true) {
+ $ERROR('#16: Infinity = true; Infinity == true; Infinity === true');
+}
+
+// CHECK#17
+Infinity = true;
+Infinity != 1;
+if (Infinity !== true) {
+ $ERROR('#17: Infinity = true; Infinity != 1; Infinity === true');
+}
+
+// CHECK#18
+Infinity = true;
+Infinity === true;
+if (Infinity !== true) {
+ $ERROR('#18: Infinity = true; Infinity === true; Infinity === true');
+}
+
+// CHECK#19
+Infinity = true;
+Infinity !== true;
+if (Infinity !== true) {
+ $ERROR('#19: Infinity = true; Infinity !== true; Infinity === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.10.2.12_A1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.10.2.12_A1_T6.js
new file mode 100644
index 000000000..ad120bb32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.10.2.12_A1_T6.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A1_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+ * @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+ * containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_s = /\s/;
+Zs = [[0x2000, 0x200B], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ var str = String.fromCharCode(indexJ);
+ var arr = regexp_s.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.10.2.12_A2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.10.2.12_A2_T6.js
new file mode 100644
index 000000000..1fe7ab7d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.10.2.12_A2_T6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A2_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_S = /\S/;
+Zs = [[0x2000, 0x200B], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ if (regexp_S.exec(String.fromCharCode(indexJ)) !== null) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.16_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.16_A1.js
new file mode 100644
index 000000000..e1d0af6fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.16_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1;
+* @section: 15.5.4.16;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerCase = [[0x0041, 0x0061], [0x0042, 0x0062], [0x0043, 0x0063], [0x0044, 0x0064], [0x0045, 0x0065], [0x0046, 0x0066], [0x0047, 0x0067], [0x0048, 0x0068], [0x0049, 0x0069], [0x004A, 0x006A], [0x004B, 0x006B], [0x004C, 0x006C], [0x004D, 0x006D], [0x004E, 0x006E], [0x004F, 0x006F], [0x0050, 0x0070], [0x0051, 0x0071], [0x0052, 0x0072], [0x0053, 0x0073], [0x0054, 0x0074], [0x0055, 0x0075], [0x0056, 0x0076], [0x0057, 0x0077], [0x0058, 0x0078], [0x0059, 0x0079], [0x005A, 0x007A], [0x00C0, 0x00E0], [0x00C1, 0x00E1], [0x00C2, 0x00E2], [0x00C3, 0x00E3], [0x00C4, 0x00E4], [0x00C5, 0x00E5], [0x00C6, 0x00E6], [0x00C7, 0x00E7], [0x00C8, 0x00E8], [0x00C9, 0x00E9], [0x00CA, 0x00EA], [0x00CB, 0x00EB], [0x00CC, 0x00EC], [0x00CD, 0x00ED], [0x00CE, 0x00EE], [0x00CF, 0x00EF], [0x00D0, 0x00F0], [0x00D1, 0x00F1], [0x00D2, 0x00F2], [0x00D3, 0x00F3], [0x00D4, 0x00F4], [0x00D5, 0x00F5], [0x00D6, 0x00F6], [0x00D8, 0x00F8], [0x00D9, 0x00F9], [0x00DA, 0x00FA], [0x00DB, 0x00FB], [0x00DC, 0x00FC], [0x00DD, 0x00FD], [0x00DE, 0x00FE], [0x0100, 0x0101], [0x0102, 0x0103], [0x0104, 0x0105], [0x0106, 0x0107], [0x0108, 0x0109], [0x010A, 0x010B], [0x010C, 0x010D], [0x010E, 0x010F], [0x0110, 0x0111], [0x0112, 0x0113], [0x0114, 0x0115], [0x0116, 0x0117], [0x0118, 0x0119], [0x011A, 0x011B], [0x011C, 0x011D], [0x011E, 0x011F], [0x0120, 0x0121], [0x0122, 0x0123], [0x0124, 0x0125], [0x0126, 0x0127], [0x0128, 0x0129], [0x012A, 0x012B], [0x012C, 0x012D], [0x012E, 0x012F], [0x0130, 0x0069], [0x0132, 0x0133], [0x0134, 0x0135], [0x0136, 0x0137], [0x0139, 0x013A], [0x013B, 0x013C], [0x013D, 0x013E], [0x013F, 0x0140], [0x0141, 0x0142], [0x0143, 0x0144], [0x0145, 0x0146], [0x0147, 0x0148], [0x014A, 0x014B], [0x014C, 0x014D], [0x014E, 0x014F], [0x0150, 0x0151], [0x0152, 0x0153], [0x0154, 0x0155], [0x0156, 0x0157], [0x0158, 0x0159], [0x015A, 0x015B], [0x015C, 0x015D], [0x015E, 0x015F], [0x0160, 0x0161], [0x0162, 0x0163], [0x0164, 0x0165], [0x0166, 0x0167], [0x0168, 0x0169], [0x016A, 0x016B], [0x016C, 0x016D], [0x016E, 0x016F], [0x0170, 0x0171], [0x0172, 0x0173], [0x0174, 0x0175], [0x0176, 0x0177], [0x0178, 0x00FF], [0x0179, 0x017A], [0x017B, 0x017C], [0x017D, 0x017E], [0x0181, 0x0253], [0x0182, 0x0183], [0x0184, 0x0185], [0x0186, 0x0254], [0x0187, 0x0188], [0x0189, 0x0256], [0x018A, 0x0257], [0x018B, 0x018C], [0x018E, 0x01DD], [0x018F, 0x0259], [0x0190, 0x025B], [0x0191, 0x0192], [0x0193, 0x0260], [0x0194, 0x0263], [0x0196, 0x0269], [0x0197, 0x0268], [0x0198, 0x0199], [0x019C, 0x026F], [0x019D, 0x0272], [0x019F, 0x0275], [0x01A0, 0x01A1], [0x01A2, 0x01A3], [0x01A4, 0x01A5], [0x01A6, 0x0280], [0x01A7, 0x01A8], [0x01A9, 0x0283], [0x01AC, 0x01AD], [0x01AE, 0x0288], [0x01AF, 0x01B0], [0x01B1, 0x028A], [0x01B2, 0x028B], [0x01B3, 0x01B4], [0x01B5, 0x01B6], [0x01B7, 0x0292], [0x01B8, 0x01B9], [0x01BC, 0x01BD], [0x01C4, 0x01C6], [0x01C5, 0x01C6], [0x01C7, 0x01C9], [0x01C8, 0x01C9], [0x01CA, 0x01CC], [0x01CB, 0x01CC], [0x01CD, 0x01CE], [0x01CF, 0x01D0], [0x01D1, 0x01D2], [0x01D3, 0x01D4], [0x01D5, 0x01D6], [0x01D7, 0x01D8], [0x01D9, 0x01DA], [0x01DB, 0x01DC], [0x01DE, 0x01DF], [0x01E0, 0x01E1], [0x01E2, 0x01E3], [0x01E4, 0x01E5], [0x01E6, 0x01E7], [0x01E8, 0x01E9], [0x01EA, 0x01EB], [0x01EC, 0x01ED], [0x01EE, 0x01EF], [0x01F1, 0x01F3], [0x01F2, 0x01F3], [0x01F4, 0x01F5], [0x01FA, 0x01FB], [0x01FC, 0x01FD], [0x01FE, 0x01FF], [0x0200, 0x0201], [0x0202, 0x0203], [0x0204, 0x0205], [0x0206, 0x0207], [0x0208, 0x0209], [0x020A, 0x020B], [0x020C, 0x020D], [0x020E, 0x020F], [0x0210, 0x0211], [0x0212, 0x0213], [0x0214, 0x0215], [0x0216, 0x0217], [0x0386, 0x03AC], [0x0388, 0x03AD], [0x0389, 0x03AE], [0x038A, 0x03AF], [0x038C, 0x03CC], [0x038E, 0x03CD], [0x038F, 0x03CE], [0x0391, 0x03B1], [0x0392, 0x03B2], [0x0393, 0x03B3], [0x0394, 0x03B4], [0x0395, 0x03B5], [0x0396, 0x03B6], [0x0397, 0x03B7], [0x0398, 0x03B8], [0x0399, 0x03B9], [0x039A, 0x03BA], [0x039B, 0x03BB], [0x039C, 0x03BC], [0x039D, 0x03BD], [0x039E, 0x03BE], [0x039F, 0x03BF], [0x03A0, 0x03C0], [0x03A1, 0x03C1], [0x03A4, 0x03C4], [0x03A5, 0x03C5], [0x03A6, 0x03C6], [0x03A7, 0x03C7], [0x03A8, 0x03C8], [0x03A9, 0x03C9], [0x03AA, 0x03CA], [0x03AB, 0x03CB], [0x03E2, 0x03E3], [0x03E4, 0x03E5], [0x03E6, 0x03E7], [0x03E8, 0x03E9], [0x03EA, 0x03EB], [0x03EC, 0x03ED], [0x03EE, 0x03EF], [0x0401, 0x0451], [0x0402, 0x0452], [0x0403, 0x0453], [0x0404, 0x0454], [0x0405, 0x0455], [0x0406, 0x0456], [0x0407, 0x0457], [0x0408, 0x0458], [0x0409, 0x0459], [0x040A, 0x045A], [0x040B, 0x045B], [0x040C, 0x045C], [0x040E, 0x045E], [0x040F, 0x045F], [0x0410, 0x0430], [0x0411, 0x0431], [0x0412, 0x0432], [0x0413, 0x0433], [0x0414, 0x0434], [0x0415, 0x0435], [0x0416, 0x0436], [0x0417, 0x0437], [0x0418, 0x0438], [0x0419, 0x0439], [0x041A, 0x043A], [0x041B, 0x043B], [0x041C, 0x043C], [0x041D, 0x043D], [0x041E, 0x043E], [0x041F, 0x043F], [0x0420, 0x0440], [0x0421, 0x0441], [0x0422, 0x0442], [0x0423, 0x0443], [0x0424, 0x0444], [0x0425, 0x0445], [0x0426, 0x0446], [0x0427, 0x0447], [0x0428, 0x0448], [0x0429, 0x0449], [0x042A, 0x044A], [0x042B, 0x044B], [0x042C, 0x044C], [0x042D, 0x044D], [0x042E, 0x044E], [0x042F, 0x044F], [0x0460, 0x0461], [0x0462, 0x0463], [0x0464, 0x0465], [0x0466, 0x0467], [0x0468, 0x0469], [0x046A, 0x046B], [0x046C, 0x046D], [0x046E, 0x046F], [0x0470, 0x0471], [0x0472, 0x0473], [0x0474, 0x0475], [0x0476, 0x0477], [0x0478, 0x0479], [0x047A, 0x047B], [0x047C, 0x047D], [0x047E, 0x047F], [0x0480, 0x0481], [0x0490, 0x0491], [0x0492, 0x0493], [0x0494, 0x0495], [0x0496, 0x0497], [0x0498, 0x0499], [0x049A, 0x049B], [0x049C, 0x049D], [0x049E, 0x049F], [0x04A0, 0x04A1], [0x04A2, 0x04A3], [0x04A4, 0x04A5], [0x04A6, 0x04A7], [0x04A8, 0x04A9], [0x04AA, 0x04AB], [0x04AC, 0x04AD], [0x04AE, 0x04AF], [0x04B0, 0x04B1], [0x04B2, 0x04B3], [0x04B4, 0x04B5], [0x04B6, 0x04B7], [0x04B8, 0x04B9], [0x04BA, 0x04BB], [0x04BC, 0x04BD], [0x04BE, 0x04BF], [0x04C1, 0x04C2], [0x04C3, 0x04C4], [0x04C7, 0x04C8], [0x04CB, 0x04CC], [0x04D0, 0x04D1], [0x04D2, 0x04D3], [0x04D4, 0x04D5], [0x04D6, 0x04D7], [0x04D8, 0x04D9], [0x04DA, 0x04DB], [0x04DC, 0x04DD], [0x04DE, 0x04DF], [0x04E0, 0x04E1], [0x04E2, 0x04E3], [0x04E4, 0x04E5], [0x04E6, 0x04E7], [0x04E8, 0x04E9], [0x04EA, 0x04EB], [0x04EE, 0x04EF], [0x04F0, 0x04F1], [0x04F2, 0x04F3], [0x04F4, 0x04F5], [0x04F8, 0x04F9], [0x0531, 0x0561], [0x0532, 0x0562], [0x0533, 0x0563], [0x0534, 0x0564], [0x0535, 0x0565], [0x0536, 0x0566], [0x0537, 0x0567], [0x0538, 0x0568], [0x0539, 0x0569], [0x053A, 0x056A], [0x053B, 0x056B], [0x053C, 0x056C], [0x053D, 0x056D], [0x053E, 0x056E], [0x053F, 0x056F], [0x0540, 0x0570], [0x0541, 0x0571], [0x0542, 0x0572], [0x0543, 0x0573], [0x0544, 0x0574], [0x0545, 0x0575], [0x0546, 0x0576], [0x0547, 0x0577], [0x0548, 0x0578], [0x0549, 0x0579], [0x054A, 0x057A], [0x054B, 0x057B], [0x054C, 0x057C], [0x054D, 0x057D], [0x054E, 0x057E], [0x054F, 0x057F], [0x0550, 0x0580], [0x0551, 0x0581], [0x0552, 0x0582], [0x0553, 0x0583], [0x0554, 0x0584], [0x0555, 0x0585], [0x0556, 0x0586], [0x10A0, 0x10D0], [0x10A1, 0x10D1], [0x10A2, 0x10D2], [0x10A3, 0x10D3], [0x10A4, 0x10D4], [0x10A5, 0x10D5], [0x10A6, 0x10D6], [0x10A7, 0x10D7], [0x10A8, 0x10D8], [0x10A9, 0x10D9], [0x10AA, 0x10DA], [0x10AB, 0x10DB], [0x10AC, 0x10DC], [0x10AD, 0x10DD], [0x10AE, 0x10DE], [0x10AF, 0x10DF], [0x10B0, 0x10E0], [0x10B1, 0x10E1], [0x10B2, 0x10E2], [0x10B3, 0x10E3], [0x10B4, 0x10E4], [0x10B5, 0x10E5], [0x10B6, 0x10E6], [0x10B7, 0x10E7], [0x10B8, 0x10E8], [0x10B9, 0x10E9], [0x10BA, 0x10EA], [0x10BB, 0x10EB], [0x10BC, 0x10EC], [0x10BD, 0x10ED], [0x10BE, 0x10EE], [0x10BF, 0x10EF], [0x10C0, 0x10F0], [0x10C1, 0x10F1], [0x10C2, 0x10F2], [0x10C3, 0x10F3], [0x10C4, 0x10F4], [0x10C5, 0x10F5], [0x1E00, 0x1E01], [0x1E02, 0x1E03], [0x1E04, 0x1E05], [0x1E06, 0x1E07], [0x1E08, 0x1E09], [0x1E0A, 0x1E0B], [0x1E0C, 0x1E0D], [0x1E0E, 0x1E0F], [0x1E10, 0x1E11], [0x1E12, 0x1E13], [0x1E14, 0x1E15], [0x1E16, 0x1E17], [0x1E18, 0x1E19], [0x1E1A, 0x1E1B], [0x1E1C, 0x1E1D], [0x1E1E, 0x1E1F], [0x1E20, 0x1E21], [0x1E22, 0x1E23], [0x1E24, 0x1E25], [0x1E26, 0x1E27], [0x1E28, 0x1E29], [0x1E2A, 0x1E2B], [0x1E2C, 0x1E2D], [0x1E2E, 0x1E2F], [0x1E30, 0x1E31], [0x1E32, 0x1E33], [0x1E34, 0x1E35], [0x1E36, 0x1E37], [0x1E38, 0x1E39], [0x1E3A, 0x1E3B], [0x1E3C, 0x1E3D], [0x1E3E, 0x1E3F], [0x1E40, 0x1E41], [0x1E42, 0x1E43], [0x1E44, 0x1E45], [0x1E46, 0x1E47], [0x1E48, 0x1E49], [0x1E4A, 0x1E4B], [0x1E4C, 0x1E4D], [0x1E4E, 0x1E4F], [0x1E50, 0x1E51], [0x1E52, 0x1E53], [0x1E54, 0x1E55], [0x1E56, 0x1E57], [0x1E58, 0x1E59], [0x1E5A, 0x1E5B], [0x1E5C, 0x1E5D], [0x1E5E, 0x1E5F], [0x1E60, 0x1E61], [0x1E62, 0x1E63], [0x1E64, 0x1E65], [0x1E66, 0x1E67], [0x1E68, 0x1E69], [0x1E6A, 0x1E6B], [0x1E6C, 0x1E6D], [0x1E6E, 0x1E6F], [0x1E70, 0x1E71], [0x1E72, 0x1E73], [0x1E74, 0x1E75], [0x1E76, 0x1E77], [0x1E78, 0x1E79], [0x1E7A, 0x1E7B], [0x1E7C, 0x1E7D], [0x1E7E, 0x1E7F], [0x1E80, 0x1E81], [0x1E82, 0x1E83], [0x1E84, 0x1E85], [0x1E86, 0x1E87], [0x1E88, 0x1E89], [0x1E8A, 0x1E8B], [0x1E8C, 0x1E8D], [0x1E8E, 0x1E8F], [0x1E90, 0x1E91], [0x1E92, 0x1E93], [0x1E94, 0x1E95], [0x1EA0, 0x1EA1], [0x1EA2, 0x1EA3], [0x1EA4, 0x1EA5], [0x1EA6, 0x1EA7], [0x1EA8, 0x1EA9], [0x1EAA, 0x1EAB], [0x1EAC, 0x1EAD], [0x1EAE, 0x1EAF], [0x1EB0, 0x1EB1], [0x1EB2, 0x1EB3], [0x1EB4, 0x1EB5], [0x1EB6, 0x1EB7], [0x1EB8, 0x1EB9], [0x1EBA, 0x1EBB], [0x1EBC, 0x1EBD], [0x1EBE, 0x1EBF], [0x1EC0, 0x1EC1], [0x1EC2, 0x1EC3], [0x1EC4, 0x1EC5], [0x1EC6, 0x1EC7], [0x1EC8, 0x1EC9], [0x1ECA, 0x1ECB], [0x1ECC, 0x1ECD], [0x1ECE, 0x1ECF], [0x1ED0, 0x1ED1], [0x1ED2, 0x1ED3], [0x1ED4, 0x1ED5], [0x1ED6, 0x1ED7], [0x1ED8, 0x1ED9], [0x1EDA, 0x1EDB], [0x1EDC, 0x1EDD], [0x1EDE, 0x1EDF], [0x1EE0, 0x1EE1], [0x1EE2, 0x1EE3], [0x1EE4, 0x1EE5], [0x1EE6, 0x1EE7], [0x1EE8, 0x1EE9], [0x1EEA, 0x1EEB], [0x1EEC, 0x1EED], [0x1EEE, 0x1EEF], [0x1EF0, 0x1EF1], [0x1EF2, 0x1EF3], [0x1EF4, 0x1EF5], [0x1EF6, 0x1EF7], [0x1EF8, 0x1EF9], [0x1F08, 0x1F00], [0x1F09, 0x1F01], [0x1F0A, 0x1F02], [0x1F0B, 0x1F03], [0x1F0C, 0x1F04], [0x1F0D, 0x1F05], [0x1F0E, 0x1F06], [0x1F0F, 0x1F07], [0x1F18, 0x1F10], [0x1F19, 0x1F11], [0x1F1A, 0x1F12], [0x1F1B, 0x1F13], [0x1F1C, 0x1F14], [0x1F1D, 0x1F15], [0x1F28, 0x1F20], [0x1F29, 0x1F21], [0x1F2A, 0x1F22], [0x1F2B, 0x1F23], [0x1F2C, 0x1F24], [0x1F2D, 0x1F25], [0x1F2E, 0x1F26], [0x1F2F, 0x1F27], [0x1F38, 0x1F30], [0x1F39, 0x1F31], [0x1F3A, 0x1F32], [0x1F3B, 0x1F33], [0x1F3C, 0x1F34], [0x1F3D, 0x1F35], [0x1F3E, 0x1F36], [0x1F3F, 0x1F37], [0x1F48, 0x1F40], [0x1F49, 0x1F41], [0x1F4A, 0x1F42], [0x1F4B, 0x1F43], [0x1F4C, 0x1F44], [0x1F4D, 0x1F45], [0x1F59, 0x1F51], [0x1F5B, 0x1F53], [0x1F5D, 0x1F55], [0x1F5F, 0x1F57], [0x1F68, 0x1F60], [0x1F69, 0x1F61], [0x1F6A, 0x1F62], [0x1F6B, 0x1F63], [0x1F6C, 0x1F64], [0x1F6D, 0x1F65], [0x1F6E, 0x1F66], [0x1F6F, 0x1F67], [0x1F88, 0x1F80], [0x1F89, 0x1F81], [0x1F8A, 0x1F82], [0x1F8B, 0x1F83], [0x1F8C, 0x1F84], [0x1F8D, 0x1F85], [0x1F8E, 0x1F86], [0x1F8F, 0x1F87], [0x1F98, 0x1F90], [0x1F99, 0x1F91], [0x1F9A, 0x1F92], [0x1F9B, 0x1F93], [0x1F9C, 0x1F94], [0x1F9D, 0x1F95], [0x1F9E, 0x1F96], [0x1F9F, 0x1F97], [0x1FA8, 0x1FA0], [0x1FA9, 0x1FA1], [0x1FAA, 0x1FA2], [0x1FAB, 0x1FA3], [0x1FAC, 0x1FA4], [0x1FAD, 0x1FA5], [0x1FAE, 0x1FA6], [0x1FAF, 0x1FA7], [0x1FB8, 0x1FB0], [0x1FB9, 0x1FB1], [0x1FBA, 0x1F70], [0x1FBB, 0x1F71], [0x1FBC, 0x1FB3], [0x1FC8, 0x1F72], [0x1FC9, 0x1F73], [0x1FCA, 0x1F74], [0x1FCB, 0x1F75], [0x1FCC, 0x1FC3], [0x1FD8, 0x1FD0], [0x1FD9, 0x1FD1], [0x1FDA, 0x1F76], [0x1FDB, 0x1F77], [0x1FE8, 0x1FE0], [0x1FE9, 0x1FE1], [0x1FEA, 0x1F7A], [0x1FEB, 0x1F7B], [0x1FEC, 0x1FE5], [0x1FF8, 0x1F78], [0x1FF9, 0x1F79], [0x1FFA, 0x1F7C], [0x1FFB, 0x1F7D], [0x1FFC, 0x1FF3], [0x2160, 0x2170], [0x2161, 0x2171], [0x2162, 0x2172], [0x2163, 0x2173], [0x2164, 0x2174], [0x2165, 0x2175], [0x2166, 0x2176], [0x2167, 0x2177], [0x2168, 0x2178], [0x2169, 0x2179], [0x216A, 0x217A], [0x216B, 0x217B], [0x216C, 0x217C], [0x216D, 0x217D], [0x216E, 0x217E], [0x216F, 0x217F], [0x24B6, 0x24D0], [0x24B7, 0x24D1], [0x24B8, 0x24D2], [0x24B9, 0x24D3], [0x24BA, 0x24D4], [0x24BB, 0x24D5], [0x24BC, 0x24D6], [0x24BD, 0x24D7], [0x24BE, 0x24D8], [0x24BF, 0x24D9], [0x24C0, 0x24DA], [0x24C1, 0x24DB], [0x24C2, 0x24DC], [0x24C3, 0x24DD], [0x24C4, 0x24DE], [0x24C5, 0x24DF], [0x24C6, 0x24E0], [0x24C7, 0x24E1], [0x24C8, 0x24E2], [0x24C9, 0x24E3], [0x24CA, 0x24E4], [0x24CB, 0x24E5], [0x24CC, 0x24E6], [0x24CD, 0x24E7], [0x24CE, 0x24E8], [0x24CF, 0x24E9], [0xFF21, 0xFF41], [0xFF22, 0xFF42], [0xFF23, 0xFF43], [0xFF24, 0xFF44], [0xFF25, 0xFF45], [0xFF26, 0xFF46], [0xFF27, 0xFF47], [0xFF28, 0xFF48], [0xFF29, 0xFF49], [0xFF2A, 0xFF4A], [0xFF2B, 0xFF4B], [0xFF2C, 0xFF4C], [0xFF2D, 0xFF4D], [0xFF2E, 0xFF4E], [0xFF2F, 0xFF4F], [0xFF30, 0xFF50], [0xFF31, 0xFF51], [0xFF32, 0xFF52], [0xFF33, 0xFF53], [0xFF34, 0xFF54], [0xFF35, 0xFF55], [0xFF36, 0xFF56], [0xFF37, 0xFF57], [0xFF38, 0xFF58], [0xFF39, 0xFF59], [0xFF3A, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerCase.length; index++) {
+ var capitalI = LowerCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.16_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.16_A2.js
new file mode 100644
index 000000000..925233708
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.16_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A2;
+* @section: 15.5.4.16;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerSpecialCase = [["\u03A3", "\u03C2"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerSpecialCase.length; index++) {
+ var capitalI = LowerSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.18_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.18_A1.js
new file mode 100644
index 000000000..7dbad6c7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.18_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1;
+* @section: 15.5.4.18;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperCase = [[0x0061, 0x0041], [0x0062, 0x0042], [0x0063, 0x0043], [0x0064, 0x0044], [0x0065, 0x0045], [0x0066, 0x0046], [0x0067, 0x0047], [0x0068, 0x0048], [0x006A, 0x004A], [0x006B, 0x004B], [0x006C, 0x004C], [0x006D, 0x004D], [0x006E, 0x004E], [0x006F, 0x004F], [0x0070, 0x0050], [0x0071, 0x0051], [0x0072, 0x0052], [0x0073, 0x0053], [0x0074, 0x0054], [0x0075, 0x0055], [0x0076, 0x0056], [0x0077, 0x0057], [0x0078, 0x0058], [0x0079, 0x0059], [0x007A, 0x005A], [0x00E0, 0x00C0], [0x00E1, 0x00C1], [0x00E2, 0x00C2], [0x00E3, 0x00C3], [0x00E4, 0x00C4], [0x00E5, 0x00C5], [0x00E6, 0x00C6], [0x00E7, 0x00C7], [0x00E8, 0x00C8], [0x00E9, 0x00C9], [0x00EA, 0x00CA], [0x00EB, 0x00CB], [0x00EC, 0x00CC], [0x00ED, 0x00CD], [0x00EE, 0x00CE], [0x00EF, 0x00CF], [0x00F0, 0x00D0], [0x00F1, 0x00D1], [0x00F2, 0x00D2], [0x00F3, 0x00D3], [0x00F4, 0x00D4], [0x00F5, 0x00D5], [0x00F6, 0x00D6], [0x00F8, 0x00D8], [0x00F9, 0x00D9], [0x00FA, 0x00DA], [0x00FB, 0x00DB], [0x00FC, 0x00DC], [0x00FD, 0x00DD], [0x00FE, 0x00DE], [0x00FF, 0x0178], [0x0101, 0x0100], [0x0103, 0x0102], [0x0105, 0x0104], [0x0107, 0x0106], [0x0109, 0x0108], [0x010B, 0x010A], [0x010D, 0x010C], [0x010F, 0x010E], [0x0111, 0x0110], [0x0113, 0x0112], [0x0115, 0x0114], [0x0117, 0x0116], [0x0119, 0x0118], [0x011B, 0x011A], [0x011D, 0x011C], [0x011F, 0x011E], [0x0121, 0x0120], [0x0123, 0x0122], [0x0125, 0x0124], [0x0127, 0x0126], [0x0129, 0x0128], [0x012B, 0x012A], [0x012D, 0x012C], [0x012F, 0x012E], [0x0131, 0x0049], [0x0133, 0x0132], [0x0135, 0x0134], [0x0137, 0x0136], [0x013A, 0x0139], [0x013C, 0x013B], [0x013E, 0x013D], [0x0140, 0x013F], [0x0142, 0x0141], [0x0144, 0x0143], [0x0146, 0x0145], [0x0148, 0x0147], [0x014B, 0x014A], [0x014D, 0x014C], [0x014F, 0x014E], [0x0151, 0x0150], [0x0153, 0x0152], [0x0155, 0x0154], [0x0157, 0x0156], [0x0159, 0x0158], [0x015B, 0x015A], [0x015D, 0x015C], [0x015F, 0x015E], [0x0161, 0x0160], [0x0163, 0x0162], [0x0165, 0x0164], [0x0167, 0x0166], [0x0169, 0x0168], [0x016B, 0x016A], [0x016D, 0x016C], [0x016F, 0x016E], [0x0171, 0x0170], [0x0173, 0x0172], [0x0175, 0x0174], [0x0177, 0x0176], [0x017A, 0x0179], [0x017C, 0x017B], [0x017E, 0x017D], [0x017F, 0x0053], [0x0183, 0x0182], [0x0185, 0x0184], [0x0188, 0x0187], [0x018C, 0x018B], [0x0192, 0x0191], [0x0199, 0x0198], [0x01A1, 0x01A0], [0x01A3, 0x01A2], [0x01A5, 0x01A4], [0x01A8, 0x01A7], [0x01AD, 0x01AC], [0x01B0, 0x01AF], [0x01B4, 0x01B3], [0x01B6, 0x01B5], [0x01B9, 0x01B8], [0x01BD, 0x01BC], [0x01C5, 0x01C4], [0x01C6, 0x01C4], [0x01C8, 0x01C7], [0x01C9, 0x01C7], [0x01CB, 0x01CA], [0x01CC, 0x01CA], [0x01CE, 0x01CD], [0x01D0, 0x01CF], [0x01D2, 0x01D1], [0x01D4, 0x01D3], [0x01D6, 0x01D5], [0x01D8, 0x01D7], [0x01DA, 0x01D9], [0x01DC, 0x01DB], [0x01DD, 0x018E], [0x01DF, 0x01DE], [0x01E1, 0x01E0], [0x01E3, 0x01E2], [0x01E5, 0x01E4], [0x01E7, 0x01E6], [0x01E9, 0x01E8], [0x01EB, 0x01EA], [0x01ED, 0x01EC], [0x01EF, 0x01EE], [0x01F2, 0x01F1], [0x01F3, 0x01F1], [0x01F5, 0x01F4], [0x01FB, 0x01FA], [0x01FD, 0x01FC], [0x01FF, 0x01FE], [0x0201, 0x0200], [0x0203, 0x0202], [0x0205, 0x0204], [0x0207, 0x0206], [0x0209, 0x0208], [0x020B, 0x020A], [0x020D, 0x020C], [0x020F, 0x020E], [0x0211, 0x0210], [0x0213, 0x0212], [0x0215, 0x0214], [0x0217, 0x0216], [0x0253, 0x0181], [0x0254, 0x0186], [0x0256, 0x0189], [0x0257, 0x018A], [0x0259, 0x018F], [0x025B, 0x0190], [0x0260, 0x0193], [0x0263, 0x0194], [0x0268, 0x0197], [0x0269, 0x0196], [0x026F, 0x019C], [0x0272, 0x019D], [0x0275, 0x019F], [0x0280, 0x01A6], [0x0283, 0x01A9], [0x0288, 0x01AE], [0x028A, 0x01B1], [0x028B, 0x01B2], [0x0292, 0x01B7], [0x0345, 0x0399], [0x03AC, 0x0386], [0x03AD, 0x0388], [0x03AE, 0x0389], [0x03AF, 0x038A], [0x03B1, 0x0391], [0x03B2, 0x0392], [0x03B3, 0x0393], [0x03B4, 0x0394], [0x03B5, 0x0395], [0x03B6, 0x0396], [0x03B7, 0x0397], [0x03B8, 0x0398], [0x03B9, 0x0399], [0x03BA, 0x039A], [0x03BB, 0x039B], [0x03BC, 0x039C], [0x03BD, 0x039D], [0x03BE, 0x039E], [0x03BF, 0x039F], [0x03C0, 0x03A0], [0x03C1, 0x03A1], [0x03C2, 0x03A3], [0x03C3, 0x03A3], [0x03C4, 0x03A4], [0x03C5, 0x03A5], [0x03C6, 0x03A6], [0x03C7, 0x03A7], [0x03C8, 0x03A8], [0x03C9, 0x03A9], [0x03CA, 0x03AA], [0x03CB, 0x03AB], [0x03CC, 0x038C], [0x03CD, 0x038E], [0x03CE, 0x038F], [0x03D0, 0x0392], [0x03D1, 0x0398], [0x03D5, 0x03A6], [0x03D6, 0x03A0], [0x03E3, 0x03E2], [0x03E5, 0x03E4], [0x03E7, 0x03E6], [0x03E9, 0x03E8], [0x03EB, 0x03EA], [0x03ED, 0x03EC], [0x03EF, 0x03EE], [0x03F0, 0x039A], [0x03F1, 0x03A1], [0x03F2, 0x03A3], [0x0430, 0x0410], [0x0431, 0x0411], [0x0432, 0x0412], [0x0433, 0x0413], [0x0434, 0x0414], [0x0435, 0x0415], [0x0436, 0x0416], [0x0437, 0x0417], [0x0438, 0x0418], [0x0439, 0x0419], [0x043A, 0x041A], [0x043B, 0x041B], [0x043C, 0x041C], [0x043D, 0x041D], [0x043E, 0x041E], [0x043F, 0x041F], [0x0440, 0x0420], [0x0441, 0x0421], [0x0442, 0x0422], [0x0443, 0x0423], [0x0444, 0x0424], [0x0445, 0x0425], [0x0446, 0x0426], [0x0447, 0x0427], [0x0448, 0x0428], [0x0449, 0x0429], [0x044A, 0x042A], [0x044B, 0x042B], [0x044C, 0x042C], [0x044D, 0x042D], [0x044E, 0x042E], [0x044F, 0x042F], [0x0451, 0x0401], [0x0452, 0x0402], [0x0453, 0x0403], [0x0454, 0x0404], [0x0455, 0x0405], [0x0456, 0x0406], [0x0457, 0x0407], [0x0458, 0x0408], [0x0459, 0x0409], [0x045A, 0x040A], [0x045B, 0x040B], [0x045C, 0x040C], [0x045E, 0x040E], [0x045F, 0x040F], [0x0461, 0x0460], [0x0463, 0x0462], [0x0465, 0x0464], [0x0467, 0x0466], [0x0469, 0x0468], [0x046B, 0x046A], [0x046D, 0x046C], [0x046F, 0x046E], [0x0471, 0x0470], [0x0473, 0x0472], [0x0475, 0x0474], [0x0477, 0x0476], [0x0479, 0x0478], [0x047B, 0x047A], [0x047D, 0x047C], [0x047F, 0x047E], [0x0481, 0x0480], [0x0491, 0x0490], [0x0493, 0x0492], [0x0495, 0x0494], [0x0497, 0x0496], [0x0499, 0x0498], [0x049B, 0x049A], [0x049D, 0x049C], [0x049F, 0x049E], [0x04A1, 0x04A0], [0x04A3, 0x04A2], [0x04A5, 0x04A4], [0x04A7, 0x04A6], [0x04A9, 0x04A8], [0x04AB, 0x04AA], [0x04AD, 0x04AC], [0x04AF, 0x04AE], [0x04B1, 0x04B0], [0x04B3, 0x04B2], [0x04B5, 0x04B4], [0x04B7, 0x04B6], [0x04B9, 0x04B8], [0x04BB, 0x04BA], [0x04BD, 0x04BC], [0x04BF, 0x04BE], [0x04C2, 0x04C1], [0x04C4, 0x04C3], [0x04C8, 0x04C7], [0x04CC, 0x04CB], [0x04D1, 0x04D0], [0x04D3, 0x04D2], [0x04D5, 0x04D4], [0x04D7, 0x04D6], [0x04D9, 0x04D8], [0x04DB, 0x04DA], [0x04DD, 0x04DC], [0x04DF, 0x04DE], [0x04E1, 0x04E0], [0x04E3, 0x04E2], [0x04E5, 0x04E4], [0x04E7, 0x04E6], [0x04E9, 0x04E8], [0x04EB, 0x04EA], [0x04EF, 0x04EE], [0x04F1, 0x04F0], [0x04F3, 0x04F2], [0x04F5, 0x04F4], [0x04F9, 0x04F8], [0x0561, 0x0531], [0x0562, 0x0532], [0x0563, 0x0533], [0x0564, 0x0534], [0x0565, 0x0535], [0x0566, 0x0536], [0x0567, 0x0537], [0x0568, 0x0538], [0x0569, 0x0539], [0x056A, 0x053A], [0x056B, 0x053B], [0x056C, 0x053C], [0x056D, 0x053D], [0x056E, 0x053E], [0x056F, 0x053F], [0x0570, 0x0540], [0x0571, 0x0541], [0x0572, 0x0542], [0x0573, 0x0543], [0x0574, 0x0544], [0x0575, 0x0545], [0x0576, 0x0546], [0x0577, 0x0547], [0x0578, 0x0548], [0x0579, 0x0549], [0x057A, 0x054A], [0x057B, 0x054B], [0x057C, 0x054C], [0x057D, 0x054D], [0x057E, 0x054E], [0x057F, 0x054F], [0x0580, 0x0550], [0x0581, 0x0551], [0x0582, 0x0552], [0x0583, 0x0553], [0x0584, 0x0554], [0x0585, 0x0555], [0x0586, 0x0556], [0x1E01, 0x1E00], [0x1E03, 0x1E02], [0x1E05, 0x1E04], [0x1E07, 0x1E06], [0x1E09, 0x1E08], [0x1E0B, 0x1E0A], [0x1E0D, 0x1E0C], [0x1E0F, 0x1E0E], [0x1E11, 0x1E10], [0x1E13, 0x1E12], [0x1E15, 0x1E14], [0x1E17, 0x1E16], [0x1E19, 0x1E18], [0x1E1B, 0x1E1A], [0x1E1D, 0x1E1C], [0x1E1F, 0x1E1E], [0x1E21, 0x1E20], [0x1E23, 0x1E22], [0x1E25, 0x1E24], [0x1E27, 0x1E26], [0x1E29, 0x1E28], [0x1E2B, 0x1E2A], [0x1E2D, 0x1E2C], [0x1E2F, 0x1E2E], [0x1E31, 0x1E30], [0x1E33, 0x1E32], [0x1E35, 0x1E34], [0x1E37, 0x1E36], [0x1E39, 0x1E38], [0x1E3B, 0x1E3A], [0x1E3D, 0x1E3C], [0x1E3F, 0x1E3E], [0x1E41, 0x1E40], [0x1E43, 0x1E42], [0x1E45, 0x1E44], [0x1E47, 0x1E46], [0x1E49, 0x1E48], [0x1E4B, 0x1E4A], [0x1E4D, 0x1E4C], [0x1E4F, 0x1E4E], [0x1E51, 0x1E50], [0x1E53, 0x1E52], [0x1E55, 0x1E54], [0x1E57, 0x1E56], [0x1E59, 0x1E58], [0x1E5B, 0x1E5A], [0x1E5D, 0x1E5C], [0x1E5F, 0x1E5E], [0x1E61, 0x1E60], [0x1E63, 0x1E62], [0x1E65, 0x1E64], [0x1E67, 0x1E66], [0x1E69, 0x1E68], [0x1E6B, 0x1E6A], [0x1E6D, 0x1E6C], [0x1E6F, 0x1E6E], [0x1E71, 0x1E70], [0x1E73, 0x1E72], [0x1E75, 0x1E74], [0x1E77, 0x1E76], [0x1E79, 0x1E78], [0x1E7B, 0x1E7A], [0x1E7D, 0x1E7C], [0x1E7F, 0x1E7E], [0x1E81, 0x1E80], [0x1E83, 0x1E82], [0x1E85, 0x1E84], [0x1E87, 0x1E86], [0x1E89, 0x1E88], [0x1E8B, 0x1E8A], [0x1E8D, 0x1E8C], [0x1E8F, 0x1E8E], [0x1E91, 0x1E90], [0x1E93, 0x1E92], [0x1E95, 0x1E94], [0x1E9B, 0x1E60], [0x1EA1, 0x1EA0], [0x1EA3, 0x1EA2], [0x1EA5, 0x1EA4], [0x1EA7, 0x1EA6], [0x1EA9, 0x1EA8], [0x1EAB, 0x1EAA], [0x1EAD, 0x1EAC], [0x1EAF, 0x1EAE], [0x1EB1, 0x1EB0], [0x1EB3, 0x1EB2], [0x1EB5, 0x1EB4], [0x1EB7, 0x1EB6], [0x1EB9, 0x1EB8], [0x1EBB, 0x1EBA], [0x1EBD, 0x1EBC], [0x1EBF, 0x1EBE], [0x1EC1, 0x1EC0], [0x1EC3, 0x1EC2], [0x1EC5, 0x1EC4], [0x1EC7, 0x1EC6], [0x1EC9, 0x1EC8], [0x1ECB, 0x1ECA], [0x1ECD, 0x1ECC], [0x1ECF, 0x1ECE], [0x1ED1, 0x1ED0], [0x1ED3, 0x1ED2], [0x1ED5, 0x1ED4], [0x1ED7, 0x1ED6], [0x1ED9, 0x1ED8], [0x1EDB, 0x1EDA], [0x1EDD, 0x1EDC], [0x1EDF, 0x1EDE], [0x1EE1, 0x1EE0], [0x1EE3, 0x1EE2], [0x1EE5, 0x1EE4], [0x1EE7, 0x1EE6], [0x1EE9, 0x1EE8], [0x1EEB, 0x1EEA], [0x1EED, 0x1EEC], [0x1EEF, 0x1EEE], [0x1EF1, 0x1EF0], [0x1EF3, 0x1EF2], [0x1EF5, 0x1EF4], [0x1EF7, 0x1EF6], [0x1EF9, 0x1EF8], [0x1F00, 0x1F08], [0x1F01, 0x1F09], [0x1F02, 0x1F0A], [0x1F03, 0x1F0B], [0x1F04, 0x1F0C], [0x1F05, 0x1F0D], [0x1F06, 0x1F0E], [0x1F07, 0x1F0F], [0x1F10, 0x1F18], [0x1F11, 0x1F19], [0x1F12, 0x1F1A], [0x1F13, 0x1F1B], [0x1F14, 0x1F1C], [0x1F15, 0x1F1D], [0x1F20, 0x1F28], [0x1F21, 0x1F29], [0x1F22, 0x1F2A], [0x1F23, 0x1F2B], [0x1F24, 0x1F2C], [0x1F25, 0x1F2D], [0x1F26, 0x1F2E], [0x1F27, 0x1F2F], [0x1F30, 0x1F38], [0x1F31, 0x1F39], [0x1F32, 0x1F3A], [0x1F33, 0x1F3B], [0x1F34, 0x1F3C], [0x1F35, 0x1F3D], [0x1F36, 0x1F3E], [0x1F37, 0x1F3F], [0x1F40, 0x1F48], [0x1F41, 0x1F49], [0x1F42, 0x1F4A], [0x1F43, 0x1F4B], [0x1F44, 0x1F4C], [0x1F45, 0x1F4D], [0x1F51, 0x1F59], [0x1F53, 0x1F5B], [0x1F55, 0x1F5D], [0x1F57, 0x1F5F], [0x1F60, 0x1F68], [0x1F61, 0x1F69], [0x1F62, 0x1F6A], [0x1F63, 0x1F6B], [0x1F64, 0x1F6C], [0x1F65, 0x1F6D], [0x1F66, 0x1F6E], [0x1F67, 0x1F6F], [0x1F70, 0x1FBA], [0x1F71, 0x1FBB], [0x1F72, 0x1FC8], [0x1F73, 0x1FC9], [0x1F74, 0x1FCA], [0x1F75, 0x1FCB], [0x1F76, 0x1FDA], [0x1F77, 0x1FDB], [0x1F78, 0x1FF8], [0x1F79, 0x1FF9], [0x1F7A, 0x1FEA], [0x1F7B, 0x1FEB], [0x1F7C, 0x1FFA], [0x1F7D, 0x1FFB], [0x1FB0, 0x1FB8], [0x1FB1, 0x1FB9], [0x1FBE, 0x0399], [0x1FD0, 0x1FD8], [0x1FD1, 0x1FD9], [0x1FE0, 0x1FE8], [0x1FE1, 0x1FE9], [0x1FE5, 0x1FEC], [0x2170, 0x2160], [0x2171, 0x2161], [0x2172, 0x2162], [0x2173, 0x2163], [0x2174, 0x2164], [0x2175, 0x2165], [0x2176, 0x2166], [0x2177, 0x2167], [0x2178, 0x2168], [0x2179, 0x2169], [0x217A, 0x216A], [0x217B, 0x216B], [0x217C, 0x216C], [0x217D, 0x216D], [0x217E, 0x216E], [0x217F, 0x216F], [0x24D0, 0x24B6], [0x24D1, 0x24B7], [0x24D2, 0x24B8], [0x24D3, 0x24B9], [0x24D4, 0x24BA], [0x24D5, 0x24BB], [0x24D6, 0x24BC], [0x24D7, 0x24BD], [0x24D8, 0x24BE], [0x24D9, 0x24BF], [0x24DA, 0x24C0], [0x24DB, 0x24C1], [0x24DC, 0x24C2], [0x24DD, 0x24C3], [0x24DE, 0x24C4], [0x24DF, 0x24C5], [0x24E0, 0x24C6], [0x24E1, 0x24C7], [0x24E2, 0x24C8], [0x24E3, 0x24C9], [0x24E4, 0x24CA], [0x24E5, 0x24CB], [0x24E6, 0x24CC], [0x24E7, 0x24CD], [0x24E8, 0x24CE], [0x24E9, 0x24CF], [0xFF41, 0xFF21], [0xFF42, 0xFF22], [0xFF43, 0xFF23], [0xFF44, 0xFF24], [0xFF45, 0xFF25], [0xFF46, 0xFF26], [0xFF47, 0xFF27], [0xFF48, 0xFF28], [0xFF49, 0xFF29], [0xFF4A, 0xFF2A], [0xFF4B, 0xFF2B], [0xFF4C, 0xFF2C], [0xFF4D, 0xFF2D], [0xFF4E, 0xFF2E], [0xFF4F, 0xFF2F], [0xFF50, 0xFF30], [0xFF51, 0xFF31], [0xFF52, 0xFF32], [0xFF53, 0xFF33], [0xFF54, 0xFF34], [0xFF55, 0xFF35], [0xFF56, 0xFF36], [0xFF57, 0xFF37], [0xFF58, 0xFF38], [0xFF59, 0xFF39], [0xFF5A, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperCase.length; index++) {
+ var capitalI = UpperCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.18_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.18_A2.js
new file mode 100644
index 000000000..fb560bca4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S15.5.4.18_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A2;
+* @section: 15.5.4.18;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperSpecialCase = [["\u00DF", "\u0053\u0053"], ["\uFB00", "\u0046\u0046"], ["\uFB01", "\u0046\u0049"], ["\uFB02", "\u0046\u004C"], ["\uFB03", "\u0046\u0046\u0049"], ["\uFB04", "\u0046\u0046\u004C"], ["\uFB05", "\u0053\u0054"], ["\uFB06", "\u0053\u0054"], ["\u0587", "\u0535\u0552"], ["\uFB13", "\u0544\u0546"], ["\uFB14", "\u0544\u0535"], ["\uFB15", "\u0544\u053B"], ["\uFB16", "\u054E\u0546"], ["\uFB17", "\u0544\u053D"], ["\u0149", "\u02BC\u006E"], ["\u0390", "\u03B9\u0308\u030D"], ["\u03B0", "\u03C5\u0308\u030D"], ["\u01F0", "\u006A\u030C"], ["\u1E96", "\u0068\u0331"], ["\u1E97", "\u0074\u0308"], ["\u1E98", "\u0077\u030A"], ["\u1E99", "\u0079\u030A"], ["\u1E9A", "\u0061\u02BE"], ["\u1F50", "\u03C5\u0313"], ["\u1F52", "\u03C5\u0313\u0300"], ["\u1F54", "\u03C5\u0313\u0301"], ["\u1F56", "\u03C5\u0313\u0342"], ["\u1FB6", "\u03B1\u0342"], ["\u1FC6", "\u03B7\u0342"], ["\u1FD2", "\u03B9\u0308\u0300"], ["\u1FD3", "\u03B9\u0308\u0301"], ["\u1FD6", "\u03B9\u0342"], ["\u1FD7", "\u03B9\u0308\u0342"], ["\u1FE2", "\u03C5\u0308\u0300"], ["\u1FE3", "\u03C5\u0308\u0301"], ["\u1FE4", "\u03C1\u0313"], ["\u1FE6", "\u03C5\u0342"], ["\u1FE7", "\u03C5\u0308\u0342"], ["\u1FF6", "\u03C9\u0342"], ["\u1F80", "\u1F00\u03B9"], ["\u1F88", "\u1F08\u03B9"], ["\u1F81", "\u1F09\u03B9"], ["\u1F82", "\u1F0A\u03B9"], ["\u1F83", "\u1F0B\u03B9"], ["\u1F84", "\u1F0C\u03B9"], ["\u1F85", "\u1F0D\u03B9"], ["\u1F86", "\u1F0E\u03B9"], ["\u1F87", "\u1F0F\u03B9"], ["\u1F90", "\u1F28\u03B9"], ["\u1F91", "\u1F29\u03B9"], ["\u1F92", "\u1F2A\u03B9"], ["\u1F93", "\u1F2B\u03B9"], ["\u1F94", "\u1F2C\u03B9"], ["\u1F95", "\u1F2D\u03B9"], ["\u1F96", "\u1F2E\u03B9"], ["\u1F97", "\u1F2F\u03B9"], ["\u1FA0", "\u1F68\u03B9"], ["\u1FA1", "\u1F69\u03B9"], ["\u1FA2", "\u1F6A\u03B9"], ["\u1FA3", "\u1F6B\u03B9"], ["\u1FA4", "\u1F6C\u03B9"], ["\u1FA5", "\u1F6D\u03B9"], ["\u1FA6", "\u1F6E\u03B9"], ["\u1FA7", "\u1F6F\u03B9"], ["\u1FB2", "\u1F70\u03B9"], ["\u1FB3", "\u0391\u03B9"], ["\u1FB4", "\u1F71\u03B9"], ["\u1FB7", "\u1FB6\u03B9"], ["\u1FC2", "\u1F74\u03B9"], ["\u1FC3", "\u0397\u03B9"], ["\u1FC4", "\u1F75\u03B9"], ["\u1FC7", "\u1FC6\u03B9"], ["\u1FF2", "\u1F7C\u03B9"], ["\u1FF3", "\u03A9\u03B9"], ["\u1FF4", "\u1F7D\u03B9"], ["\u1FF7", "\u1FF6\u03B9"], ["\u0049", "\u0131"], ["\u0069", "\u0130"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperSpecialCase.length; index++) {
+ var capitalI = UpperSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A1_T1.js
new file mode 100644
index 000000000..f036704f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A1_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A1_T1;
+ * @section: 7.1;
+ * @assertion: The format control character (Cf) can occur anywhere in the source text
+ * and these characters are removed before applying the lexical grammar;
+ * @description: Complex test with eval;
+*/
+
+//CHECK#1
+Cf = [[0x200C, 0x200F], [0x202A, 0x202E], [0x206A, 0x206F], [0xFEFF, 0xFEFF]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.1_T1.js
new file mode 100644
index 000000000..0bdb006a1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x200C, 0x200F], [0x202A, 0x202E], [0x206A, 0x206F], [0xFEFF, 0xFEFF]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = format + "a" + format + "b" + format;
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.1_T2.js
new file mode 100644
index 000000000..1521590ae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x200C, 0x200F], [0x202A, 0x202E], [0x206A, 0x206F], [0xFEFF, 0xFEFF]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = "' + format + 'a' + format + 'b' + format + '"');
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.2_T1.js
new file mode 100644
index 000000000..d2702c879
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x200C, 0x200F], [0x202A, 0x202E], [0x206A, 0x206F], [0xFEFF, 0xFEFF]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = RegExp(format + "a" + format + "b" + format);
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.2_T2.js
new file mode 100644
index 000000000..6e8d48837
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.1_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x200C, 0x200F], [0x202A, 0x202E], [0x206A, 0x206F], [0xFEFF, 0xFEFF]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = RegExp("' + format + 'a' + format + 'b' + format + '")');
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A1.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A1.6_T1.js
new file mode 100644
index 000000000..a8036e1aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A1.6_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.6_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: Any other Unicode "space separator" (category "Zs") between any two tokens is allowed;
+ * @description: Complex test with eval;
+*/
+
+
+//CHECK#1
+Zs = [[0x2000, 0x200B], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A2.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A2.6_T1.js
new file mode 100644
index 000000000..ffb58a753
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A2.6_T1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.6_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: Any other Unicode "space separator" (category "Zs") within strings;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+Zs = [[0x2000, 0x200B], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = "str" + format + "ing";
+ if (x !== "str" + format + "ing") {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A3.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A3.6_T1.js
new file mode 100644
index 000000000..cb92874ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A3.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x2000, 0x200B], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("//" + format + "single line" + format + "comment" + format + " x = 1;");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A4.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A4.6_T1.js
new file mode 100644
index 000000000..c3c68ec3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.2_A4.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x2000, 0x200B], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("/*" + format + "multi line" + format + "comment" + format + "\n x = 1;*/");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T1.js
new file mode 100644
index 000000000..2df467a97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Uppercase letter (Lu).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x0401, 0x040C], [0x040E, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C1, 0x04C1], [0x04C3, 0x04C3], [0x04C7, 0x04C7], [0x04CB, 0x04CB], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FB8, 0x1FBC], [0x1FC8, 0x1FCC], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFC], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T2.js
new file mode 100644
index 000000000..706c869f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Lowercase letter (Ll).
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AB, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BD], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0250, 0x02A8], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D6], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F2], [0x0430, 0x044F], [0x0451, 0x045C], [0x045E, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C8, 0x04C8], [0x04CC, 0x04CC], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0561, 0x0587], [0x10D0, 0x10F6], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x2118, 0x2118], [0x212E, 0x212F], [0x2134, 0x2134], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T3.js
new file mode 100644
index 000000000..6e63c8d50
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T3.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Titlecase letter (Lt).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T4.js
new file mode 100644
index 000000000..30fc734a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T4.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Modifier letter (Lm).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x3005, 0x3005], [0x3031, 0x3035], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T5.js
new file mode 100644
index 000000000..4dac158e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T5.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T5;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Other letter (Lo).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01AA, 0x01AA], [0x01BB, 0x01BB], [0x01BE, 0x01C3], [0x03F3, 0x03F3], [0x04C0, 0x04C0], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x0671, 0x06B7], [0x06BA, 0x06BE], [0x06C0, 0x06CE], [0x06D0, 0x06D3], [0x06D5, 0x06D5], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F69], [0x0F88, 0x0F8B], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x2135, 0x2138], [0x3006, 0x3006], [0x3041, 0x3094], [0x30A1, 0x30FA], [0x3105, 0x312C], [0x3131, 0x318E], [0x4E00, 0x9FA5], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE72], [0xFE74, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T6.js
new file mode 100644
index 000000000..35dc77f6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.1_T6.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T6;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Letter number (Nl);
+*/
+
+//CHECK
+Nl = [[0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T1.js
new file mode 100644
index 000000000..235adfe3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mn").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x0345], [0x0360, 0x0361], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0652], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F95], [0x0F97, 0x0F97], [0x0F99, 0x0FAD], [0x0FB1, 0x0FB7], [0x0FB9, 0x0FB9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T2.js
new file mode 100644
index 000000000..45161bb1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mc").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0B83, 0x0B83], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T3.js
new file mode 100644
index 000000000..3b35b4174
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T3.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeDigit ("Nd").
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T4.js
new file mode 100644
index 000000000..cd64dadaf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A1.4_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeConnectorPunctuation ("Pc") without $.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ if (hex !== "0078") {
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.2_T1.js
new file mode 100644
index 000000000..e67b5fafb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Non-spacing mark (Mn).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x0345], [0x0360, 0x0361], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0652], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F95], [0x0F97, 0x0F97], [0x0F99, 0x0FAD], [0x0FB1, 0x0FB7], [0x0FB9, 0x0FB9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.2_T2.js
new file mode 100644
index 000000000..23162c9d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Combining spacing mark (Mc).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0B83, 0x0B83], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.3.js
new file mode 100644
index 000000000..ecf129c31
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.3.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.3;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeDigit (any character in the Unicode categories "Decimal Number (Nd)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.4.js
new file mode 100644
index 000000000..7d4cc1503
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A2.4.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.4;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeConnectorPunctuation (any character in the Unicode categories "Connector Punctuation (Pc)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A3.1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A3.1.js
new file mode 100644
index 000000000..64fbbc045
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A3.1.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must contain only IdentifierPart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x0401, 0x040C], [0x040E, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C1, 0x04C1], [0x04C3, 0x04C3], [0x04C7, 0x04C7], [0x04CB, 0x04CB], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FB8, 0x1FBC], [0x1FC8, 0x1FCC], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFC], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AB, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BD], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0250, 0x02A8], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D6], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F2], [0x0430, 0x044F], [0x0451, 0x045C], [0x045E, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C8, 0x04C8], [0x04CC, 0x04CC], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0561, 0x0587], [0x10D0, 0x10F6], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x2118, 0x2118], [0x212E, 0x212F], [0x2134, 0x2134], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2]];
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x3005, 0x3005], [0x3031, 0x3035], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01AA, 0x01AA], [0x01BB, 0x01BB], [0x01BE, 0x01C3], [0x03F3, 0x03F3], [0x04C0, 0x04C0], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x0671, 0x06B7], [0x06BA, 0x06BE], [0x06C0, 0x06CE], [0x06D0, 0x06D3], [0x06D5, 0x06D5], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F69], [0x0F88, 0x0F8B], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x2135, 0x2138], [0x3006, 0x3006], [0x3041, 0x3094], [0x30A1, 0x30FA], [0x3105, 0x312C], [0x3131, 0x318E], [0x4E00, 0x9FA5], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE72], [0xFE74, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029]];
+Mn = [[0x0300, 0x0345], [0x0360, 0x0361], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0652], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F95], [0x0F97, 0x0F97], [0x0F99, 0x0FAD], [0x0FB1, 0x0FB7], [0x0FB9, 0x0FB9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0B83, 0x0B83], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = "$" + String.fromCharCode(index) + "1";
+ eval("var " + identifier + "=1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A3.2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A3.2.js
new file mode 100644
index 000000000..32c90fc4c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A3.2.js
@@ -0,0 +1,124 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin only IdentifierStart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x0401, 0x040C], [0x040E, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C1, 0x04C1], [0x04C3, 0x04C3], [0x04C7, 0x04C7], [0x04CB, 0x04CB], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FB8, 0x1FBC], [0x1FC8, 0x1FCC], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFC], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AB, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BD], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0250, 0x02A8], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D6], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F2], [0x0430, 0x044F], [0x0451, 0x045C], [0x045E, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C8, 0x04C8], [0x04CC, 0x04CC], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0561, 0x0587], [0x10D0, 0x10F6], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x2118, 0x2118], [0x212E, 0x212F], [0x2134, 0x2134], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2]];
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x3005, 0x3005], [0x3031, 0x3035], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01AA, 0x01AA], [0x01BB, 0x01BB], [0x01BE, 0x01C3], [0x03F3, 0x03F3], [0x04C0, 0x04C0], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x0671, 0x06B7], [0x06BA, 0x06BE], [0x06C0, 0x06CE], [0x06D0, 0x06D3], [0x06D5, 0x06D5], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F69], [0x0F88, 0x0F8B], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x2135, 0x2138], [0x3006, 0x3006], [0x3041, 0x3094], [0x30A1, 0x30FA], [0x3105, 0x312C], [0x3131, 0x318E], [0x4E00, 0x9FA5], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE72], [0xFE74, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = String.fromCharCode(index);
+ eval("var " + identifier + "=1");
+ if (errorCount === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T1.js
new file mode 100644
index 000000000..d4b7b5815
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T1.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.
+
+/**
+ * @name: S7.6_A5.2_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lu.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x0401, 0x040C], [0x040E, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C1, 0x04C1], [0x04C3, 0x04C3], [0x04C7, 0x04C7], [0x04CB, 0x04CB], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FB8, 0x1FBC], [0x1FC8, 0x1FCC], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFC], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T10.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T10.js
new file mode 100644
index 000000000..690490601
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T10.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.
+
+/**
+ * @name: S7.6_A5.2_T10;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Pc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T2.js
new file mode 100644
index 000000000..89d9025f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_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.
+
+/**
+ * @name: S7.6_A5.2_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Ll.
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AB, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BD], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0250, 0x02A8], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D6], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F2], [0x0430, 0x044F], [0x0451, 0x045C], [0x045E, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C8, 0x04C8], [0x04CC, 0x04CC], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0561, 0x0587], [0x10D0, 0x10F6], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x2118, 0x2118], [0x212E, 0x212F], [0x2134, 0x2134], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T3.js
new file mode 100644
index 000000000..94251bdae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T3.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T3;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lt.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T4.js
new file mode 100644
index 000000000..e9f7d1f1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T4.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T4;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lm.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x3005, 0x3005], [0x3031, 0x3035], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T5.js
new file mode 100644
index 000000000..11c8477e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T5.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.
+
+/**
+ * @name: S7.6_A5.2_T5;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lo.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01AA, 0x01AA], [0x01BB, 0x01BB], [0x01BE, 0x01C3], [0x03F3, 0x03F3], [0x04C0, 0x04C0], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x0671, 0x06B7], [0x06BA, 0x06BE], [0x06C0, 0x06CE], [0x06D0, 0x06D3], [0x06D5, 0x06D5], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F69], [0x0F88, 0x0F8B], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x2135, 0x2138], [0x3006, 0x3006], [0x3041, 0x3094], [0x30A1, 0x30FA], [0x3105, 0x312C], [0x3131, 0x318E], [0x4E00, 0x9FA5], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE72], [0xFE74, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T6.js
new file mode 100644
index 000000000..ee8b5c3d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T6.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.
+
+/**
+ * @name: S7.6_A5.2_T6;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nl.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nl = [[0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T7.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T7.js
new file mode 100644
index 000000000..ec47d0df0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T7.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.
+
+/**
+ * @name: S7.6_A5.2_T7;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mn.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x0345], [0x0360, 0x0361], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0652], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F95], [0x0F97, 0x0F97], [0x0F99, 0x0FAD], [0x0FB1, 0x0FB7], [0x0FB9, 0x0FB9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T8.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T8.js
new file mode 100644
index 000000000..90e749b78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T8.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.
+
+/**
+ * @name: S7.6_A5.2_T8;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0B83, 0x0B83], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T9.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T9.js
new file mode 100644
index 000000000..373fdf30e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.2_T9.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.
+
+/**
+ * @name: S7.6_A5.2_T9;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nd.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.3_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.3_T1.js
new file mode 100644
index 000000000..bf1587b96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.3_T1.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x0401, 0x040C], [0x040E, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C1, 0x04C1], [0x04C3, 0x04C3], [0x04C7, 0x04C7], [0x04CB, 0x04CB], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FB8, 0x1FBC], [0x1FC8, 0x1FCC], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFC], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AB, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BD], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0250, 0x02A8], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D6], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F2], [0x0430, 0x044F], [0x0451, 0x045C], [0x045E, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C8, 0x04C8], [0x04CC, 0x04CC], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0561, 0x0587], [0x10D0, 0x10F6], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x2118, 0x2118], [0x212E, 0x212F], [0x2134, 0x2134], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2]];
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x3005, 0x3005], [0x3031, 0x3035], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01AA, 0x01AA], [0x01BB, 0x01BB], [0x01BE, 0x01C3], [0x03F3, 0x03F3], [0x04C0, 0x04C0], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x0671, 0x06B7], [0x06BA, 0x06BE], [0x06C0, 0x06CE], [0x06D0, 0x06D3], [0x06D5, 0x06D5], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F69], [0x0F88, 0x0F8B], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x2135, 0x2138], [0x3006, 0x3006], [0x3041, 0x3094], [0x30A1, 0x30FA], [0x3105, 0x312C], [0x3131, 0x318E], [0x4E00, 0x9FA5], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE72], [0xFE74, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029]];
+Mn = [[0x0300, 0x0345], [0x0360, 0x0361], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0652], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F95], [0x0F97, 0x0F97], [0x0F99, 0x0FAD], [0x0FB1, 0x0FB7], [0x0FB9, 0x0FB9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0B83, 0x0B83], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier = "$\\u" + hex + "1";
+ eval(identifier + " = 1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.3_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.3_T2.js
new file mode 100644
index 000000000..15e2a247a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_218/S7.6_A5.3_T2.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x0401, 0x040C], [0x040E, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C1, 0x04C1], [0x04C3, 0x04C3], [0x04C7, 0x04C7], [0x04CB, 0x04CB], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FB8, 0x1FBC], [0x1FC8, 0x1FCC], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFC], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AB, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BD], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0250, 0x02A8], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D6], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F2], [0x0430, 0x044F], [0x0451, 0x045C], [0x045E, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C8, 0x04C8], [0x04CC, 0x04CC], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0561, 0x0587], [0x10D0, 0x10F6], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x2118, 0x2118], [0x212E, 0x212F], [0x2134, 0x2134], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2]];
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x3005, 0x3005], [0x3031, 0x3035], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01AA, 0x01AA], [0x01BB, 0x01BB], [0x01BE, 0x01C3], [0x03F3, 0x03F3], [0x04C0, 0x04C0], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x0671, 0x06B7], [0x06BA, 0x06BE], [0x06C0, 0x06CE], [0x06D0, 0x06D3], [0x06D5, 0x06D5], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F69], [0x0F88, 0x0F8B], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x2135, 0x2138], [0x3006, 0x3006], [0x3041, 0x3094], [0x30A1, 0x30FA], [0x3105, 0x312C], [0x3131, 0x318E], [0x4E00, 0x9FA5], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE72], [0xFE74, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029]];
+Mn = [[0x0300, 0x0345], [0x0360, 0x0361], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0652], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F95], [0x0F97, 0x0F97], [0x0F99, 0x0FAD], [0x0FB1, 0x0FB7], [0x0FB9, 0x0FB9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0B83, 0x0B83], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier1 = "$" + String.fromCharCode(index) + "1";
+ var identifier2 = "$\\u" + hex + "1";
+ eval(identifier1 + " = 1");
+ eval(identifier1 + " === " + identifier2);
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.10.2.12_A1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.10.2.12_A1_T6.js
new file mode 100644
index 000000000..a6bdab8f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.10.2.12_A1_T6.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A1_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+ * @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+ * containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_s = /\s/;
+Zs = [[0x1680, 0x1680], [0x2000, 0x200B], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ var str = String.fromCharCode(indexJ);
+ var arr = regexp_s.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.10.2.12_A2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.10.2.12_A2_T6.js
new file mode 100644
index 000000000..3e0c6a6ff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.10.2.12_A2_T6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A2_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_S = /\S/;
+Zs = [[0x1680, 0x1680], [0x2000, 0x200B], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ if (regexp_S.exec(String.fromCharCode(indexJ)) !== null) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.16_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.16_A1.js
new file mode 100644
index 000000000..45a3f66b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.16_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1;
+* @section: 15.5.4.16;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerCase = [[0x0041, 0x0061], [0x0042, 0x0062], [0x0043, 0x0063], [0x0044, 0x0064], [0x0045, 0x0065], [0x0046, 0x0066], [0x0047, 0x0067], [0x0048, 0x0068], [0x004B, 0x006B], [0x004C, 0x006C], [0x004D, 0x006D], [0x004E, 0x006E], [0x004F, 0x006F], [0x0050, 0x0070], [0x0051, 0x0071], [0x0052, 0x0072], [0x0053, 0x0073], [0x0054, 0x0074], [0x0055, 0x0075], [0x0056, 0x0076], [0x0057, 0x0077], [0x0058, 0x0078], [0x0059, 0x0079], [0x005A, 0x007A], [0x00C0, 0x00E0], [0x00C1, 0x00E1], [0x00C2, 0x00E2], [0x00C3, 0x00E3], [0x00C4, 0x00E4], [0x00C5, 0x00E5], [0x00C6, 0x00E6], [0x00C7, 0x00E7], [0x00C8, 0x00E8], [0x00C9, 0x00E9], [0x00CA, 0x00EA], [0x00CB, 0x00EB], [0x00CE, 0x00EE], [0x00CF, 0x00EF], [0x00D0, 0x00F0], [0x00D1, 0x00F1], [0x00D2, 0x00F2], [0x00D3, 0x00F3], [0x00D4, 0x00F4], [0x00D5, 0x00F5], [0x00D6, 0x00F6], [0x00D8, 0x00F8], [0x00D9, 0x00F9], [0x00DA, 0x00FA], [0x00DB, 0x00FB], [0x00DC, 0x00FC], [0x00DD, 0x00FD], [0x00DE, 0x00FE], [0x0100, 0x0101], [0x0102, 0x0103], [0x0104, 0x0105], [0x0106, 0x0107], [0x0108, 0x0109], [0x010A, 0x010B], [0x010C, 0x010D], [0x010E, 0x010F], [0x0110, 0x0111], [0x0112, 0x0113], [0x0114, 0x0115], [0x0116, 0x0117], [0x0118, 0x0119], [0x011A, 0x011B], [0x011C, 0x011D], [0x011E, 0x011F], [0x0120, 0x0121], [0x0122, 0x0123], [0x0124, 0x0125], [0x0126, 0x0127], [0x012A, 0x012B], [0x012C, 0x012D], [0x0132, 0x0133], [0x0134, 0x0135], [0x0136, 0x0137], [0x0139, 0x013A], [0x013B, 0x013C], [0x013D, 0x013E], [0x013F, 0x0140], [0x0141, 0x0142], [0x0143, 0x0144], [0x0145, 0x0146], [0x0147, 0x0148], [0x014A, 0x014B], [0x014C, 0x014D], [0x014E, 0x014F], [0x0150, 0x0151], [0x0152, 0x0153], [0x0154, 0x0155], [0x0156, 0x0157], [0x0158, 0x0159], [0x015A, 0x015B], [0x015C, 0x015D], [0x015E, 0x015F], [0x0160, 0x0161], [0x0162, 0x0163], [0x0164, 0x0165], [0x0166, 0x0167], [0x0168, 0x0169], [0x016A, 0x016B], [0x016C, 0x016D], [0x016E, 0x016F], [0x0170, 0x0171], [0x0172, 0x0173], [0x0174, 0x0175], [0x0176, 0x0177], [0x0178, 0x00FF], [0x0179, 0x017A], [0x017B, 0x017C], [0x017D, 0x017E], [0x0181, 0x0253], [0x0182, 0x0183], [0x0184, 0x0185], [0x0186, 0x0254], [0x0187, 0x0188], [0x0189, 0x0256], [0x018A, 0x0257], [0x018B, 0x018C], [0x018E, 0x01DD], [0x018F, 0x0259], [0x0190, 0x025B], [0x0191, 0x0192], [0x0193, 0x0260], [0x0194, 0x0263], [0x0196, 0x0269], [0x0197, 0x0268], [0x0198, 0x0199], [0x019C, 0x026F], [0x019D, 0x0272], [0x019F, 0x0275], [0x01A0, 0x01A1], [0x01A2, 0x01A3], [0x01A4, 0x01A5], [0x01A6, 0x0280], [0x01A7, 0x01A8], [0x01A9, 0x0283], [0x01AC, 0x01AD], [0x01AE, 0x0288], [0x01AF, 0x01B0], [0x01B1, 0x028A], [0x01B2, 0x028B], [0x01B3, 0x01B4], [0x01B5, 0x01B6], [0x01B7, 0x0292], [0x01B8, 0x01B9], [0x01BC, 0x01BD], [0x01C4, 0x01C6], [0x01C5, 0x01C6], [0x01C7, 0x01C9], [0x01C8, 0x01C9], [0x01CA, 0x01CC], [0x01CB, 0x01CC], [0x01CD, 0x01CE], [0x01CF, 0x01D0], [0x01D1, 0x01D2], [0x01D3, 0x01D4], [0x01D5, 0x01D6], [0x01D7, 0x01D8], [0x01D9, 0x01DA], [0x01DB, 0x01DC], [0x01DE, 0x01DF], [0x01E0, 0x01E1], [0x01E2, 0x01E3], [0x01E4, 0x01E5], [0x01E6, 0x01E7], [0x01E8, 0x01E9], [0x01EA, 0x01EB], [0x01EC, 0x01ED], [0x01EE, 0x01EF], [0x01F1, 0x01F3], [0x01F2, 0x01F3], [0x01F4, 0x01F5], [0x01F6, 0x0195], [0x01F7, 0x01BF], [0x01F8, 0x01F9], [0x01FA, 0x01FB], [0x01FC, 0x01FD], [0x01FE, 0x01FF], [0x0200, 0x0201], [0x0202, 0x0203], [0x0204, 0x0205], [0x0206, 0x0207], [0x0208, 0x0209], [0x020A, 0x020B], [0x020C, 0x020D], [0x020E, 0x020F], [0x0210, 0x0211], [0x0212, 0x0213], [0x0214, 0x0215], [0x0216, 0x0217], [0x0218, 0x0219], [0x021A, 0x021B], [0x021C, 0x021D], [0x021E, 0x021F], [0x0220, 0x019E], [0x0222, 0x0223], [0x0224, 0x0225], [0x0226, 0x0227], [0x0228, 0x0229], [0x022A, 0x022B], [0x022C, 0x022D], [0x022E, 0x022F], [0x0230, 0x0231], [0x0232, 0x0233], [0x0386, 0x03AC], [0x0388, 0x03AD], [0x0389, 0x03AE], [0x038A, 0x03AF], [0x038C, 0x03CC], [0x038E, 0x03CD], [0x038F, 0x03CE], [0x0391, 0x03B1], [0x0392, 0x03B2], [0x0393, 0x03B3], [0x0394, 0x03B4], [0x0395, 0x03B5], [0x0396, 0x03B6], [0x0397, 0x03B7], [0x0398, 0x03B8], [0x0399, 0x03B9], [0x039A, 0x03BA], [0x039B, 0x03BB], [0x039C, 0x03BC], [0x039D, 0x03BD], [0x039E, 0x03BE], [0x039F, 0x03BF], [0x03A0, 0x03C0], [0x03A1, 0x03C1], [0x03A4, 0x03C4], [0x03A5, 0x03C5], [0x03A6, 0x03C6], [0x03A7, 0x03C7], [0x03A8, 0x03C8], [0x03A9, 0x03C9], [0x03AA, 0x03CA], [0x03AB, 0x03CB], [0x03D8, 0x03D9], [0x03DA, 0x03DB], [0x03DC, 0x03DD], [0x03DE, 0x03DF], [0x03E0, 0x03E1], [0x03E2, 0x03E3], [0x03E4, 0x03E5], [0x03E6, 0x03E7], [0x03E8, 0x03E9], [0x03EA, 0x03EB], [0x03EC, 0x03ED], [0x03EE, 0x03EF], [0x03F4, 0x03B8], [0x0400, 0x0450], [0x0401, 0x0451], [0x0402, 0x0452], [0x0403, 0x0453], [0x0404, 0x0454], [0x0405, 0x0455], [0x0406, 0x0456], [0x0407, 0x0457], [0x0408, 0x0458], [0x0409, 0x0459], [0x040A, 0x045A], [0x040B, 0x045B], [0x040C, 0x045C], [0x040D, 0x045D], [0x040E, 0x045E], [0x040F, 0x045F], [0x0410, 0x0430], [0x0411, 0x0431], [0x0412, 0x0432], [0x0413, 0x0433], [0x0414, 0x0434], [0x0415, 0x0435], [0x0416, 0x0436], [0x0417, 0x0437], [0x0418, 0x0438], [0x0419, 0x0439], [0x041A, 0x043A], [0x041B, 0x043B], [0x041C, 0x043C], [0x041D, 0x043D], [0x041E, 0x043E], [0x041F, 0x043F], [0x0420, 0x0440], [0x0421, 0x0441], [0x0422, 0x0442], [0x0423, 0x0443], [0x0424, 0x0444], [0x0425, 0x0445], [0x0426, 0x0446], [0x0427, 0x0447], [0x0428, 0x0448], [0x0429, 0x0449], [0x042A, 0x044A], [0x042B, 0x044B], [0x042C, 0x044C], [0x042D, 0x044D], [0x042E, 0x044E], [0x042F, 0x044F], [0x0460, 0x0461], [0x0462, 0x0463], [0x0464, 0x0465], [0x0466, 0x0467], [0x0468, 0x0469], [0x046A, 0x046B], [0x046C, 0x046D], [0x046E, 0x046F], [0x0470, 0x0471], [0x0472, 0x0473], [0x0474, 0x0475], [0x0476, 0x0477], [0x0478, 0x0479], [0x047A, 0x047B], [0x047C, 0x047D], [0x047E, 0x047F], [0x0480, 0x0481], [0x048A, 0x048B], [0x048C, 0x048D], [0x048E, 0x048F], [0x0490, 0x0491], [0x0492, 0x0493], [0x0494, 0x0495], [0x0496, 0x0497], [0x0498, 0x0499], [0x049A, 0x049B], [0x049C, 0x049D], [0x049E, 0x049F], [0x04A0, 0x04A1], [0x04A2, 0x04A3], [0x04A4, 0x04A5], [0x04A6, 0x04A7], [0x04A8, 0x04A9], [0x04AA, 0x04AB], [0x04AC, 0x04AD], [0x04AE, 0x04AF], [0x04B0, 0x04B1], [0x04B2, 0x04B3], [0x04B4, 0x04B5], [0x04B6, 0x04B7], [0x04B8, 0x04B9], [0x04BA, 0x04BB], [0x04BC, 0x04BD], [0x04BE, 0x04BF], [0x04C1, 0x04C2], [0x04C3, 0x04C4], [0x04C5, 0x04C6], [0x04C7, 0x04C8], [0x04C9, 0x04CA], [0x04CB, 0x04CC], [0x04CD, 0x04CE], [0x04D0, 0x04D1], [0x04D2, 0x04D3], [0x04D4, 0x04D5], [0x04D6, 0x04D7], [0x04D8, 0x04D9], [0x04DA, 0x04DB], [0x04DC, 0x04DD], [0x04DE, 0x04DF], [0x04E0, 0x04E1], [0x04E2, 0x04E3], [0x04E4, 0x04E5], [0x04E6, 0x04E7], [0x04E8, 0x04E9], [0x04EA, 0x04EB], [0x04EC, 0x04ED], [0x04EE, 0x04EF], [0x04F0, 0x04F1], [0x04F2, 0x04F3], [0x04F4, 0x04F5], [0x04F8, 0x04F9], [0x0500, 0x0501], [0x0502, 0x0503], [0x0504, 0x0505], [0x0506, 0x0507], [0x0508, 0x0509], [0x050A, 0x050B], [0x050C, 0x050D], [0x050E, 0x050F], [0x0531, 0x0561], [0x0532, 0x0562], [0x0533, 0x0563], [0x0534, 0x0564], [0x0535, 0x0565], [0x0536, 0x0566], [0x0537, 0x0567], [0x0538, 0x0568], [0x0539, 0x0569], [0x053A, 0x056A], [0x053B, 0x056B], [0x053C, 0x056C], [0x053D, 0x056D], [0x053E, 0x056E], [0x053F, 0x056F], [0x0540, 0x0570], [0x0541, 0x0571], [0x0542, 0x0572], [0x0543, 0x0573], [0x0544, 0x0574], [0x0545, 0x0575], [0x0546, 0x0576], [0x0547, 0x0577], [0x0548, 0x0578], [0x0549, 0x0579], [0x054A, 0x057A], [0x054B, 0x057B], [0x054C, 0x057C], [0x054D, 0x057D], [0x054E, 0x057E], [0x054F, 0x057F], [0x0550, 0x0580], [0x0551, 0x0581], [0x0552, 0x0582], [0x0553, 0x0583], [0x0554, 0x0584], [0x0555, 0x0585], [0x0556, 0x0586], [0x1E00, 0x1E01], [0x1E02, 0x1E03], [0x1E04, 0x1E05], [0x1E06, 0x1E07], [0x1E08, 0x1E09], [0x1E0A, 0x1E0B], [0x1E0C, 0x1E0D], [0x1E0E, 0x1E0F], [0x1E10, 0x1E11], [0x1E12, 0x1E13], [0x1E14, 0x1E15], [0x1E16, 0x1E17], [0x1E18, 0x1E19], [0x1E1A, 0x1E1B], [0x1E1C, 0x1E1D], [0x1E1E, 0x1E1F], [0x1E20, 0x1E21], [0x1E22, 0x1E23], [0x1E24, 0x1E25], [0x1E26, 0x1E27], [0x1E28, 0x1E29], [0x1E2A, 0x1E2B], [0x1E2C, 0x1E2D], [0x1E2E, 0x1E2F], [0x1E30, 0x1E31], [0x1E32, 0x1E33], [0x1E34, 0x1E35], [0x1E36, 0x1E37], [0x1E38, 0x1E39], [0x1E3A, 0x1E3B], [0x1E3C, 0x1E3D], [0x1E3E, 0x1E3F], [0x1E40, 0x1E41], [0x1E42, 0x1E43], [0x1E44, 0x1E45], [0x1E46, 0x1E47], [0x1E48, 0x1E49], [0x1E4A, 0x1E4B], [0x1E4C, 0x1E4D], [0x1E4E, 0x1E4F], [0x1E50, 0x1E51], [0x1E52, 0x1E53], [0x1E54, 0x1E55], [0x1E56, 0x1E57], [0x1E58, 0x1E59], [0x1E5A, 0x1E5B], [0x1E5C, 0x1E5D], [0x1E5E, 0x1E5F], [0x1E60, 0x1E61], [0x1E62, 0x1E63], [0x1E64, 0x1E65], [0x1E66, 0x1E67], [0x1E68, 0x1E69], [0x1E6A, 0x1E6B], [0x1E6C, 0x1E6D], [0x1E6E, 0x1E6F], [0x1E70, 0x1E71], [0x1E72, 0x1E73], [0x1E74, 0x1E75], [0x1E76, 0x1E77], [0x1E78, 0x1E79], [0x1E7A, 0x1E7B], [0x1E7C, 0x1E7D], [0x1E7E, 0x1E7F], [0x1E80, 0x1E81], [0x1E82, 0x1E83], [0x1E84, 0x1E85], [0x1E86, 0x1E87], [0x1E88, 0x1E89], [0x1E8A, 0x1E8B], [0x1E8C, 0x1E8D], [0x1E8E, 0x1E8F], [0x1E90, 0x1E91], [0x1E92, 0x1E93], [0x1E94, 0x1E95], [0x1EA0, 0x1EA1], [0x1EA2, 0x1EA3], [0x1EA4, 0x1EA5], [0x1EA6, 0x1EA7], [0x1EA8, 0x1EA9], [0x1EAA, 0x1EAB], [0x1EAC, 0x1EAD], [0x1EAE, 0x1EAF], [0x1EB0, 0x1EB1], [0x1EB2, 0x1EB3], [0x1EB4, 0x1EB5], [0x1EB6, 0x1EB7], [0x1EB8, 0x1EB9], [0x1EBA, 0x1EBB], [0x1EBC, 0x1EBD], [0x1EBE, 0x1EBF], [0x1EC0, 0x1EC1], [0x1EC2, 0x1EC3], [0x1EC4, 0x1EC5], [0x1EC6, 0x1EC7], [0x1EC8, 0x1EC9], [0x1ECA, 0x1ECB], [0x1ECC, 0x1ECD], [0x1ECE, 0x1ECF], [0x1ED0, 0x1ED1], [0x1ED2, 0x1ED3], [0x1ED4, 0x1ED5], [0x1ED6, 0x1ED7], [0x1ED8, 0x1ED9], [0x1EDA, 0x1EDB], [0x1EDC, 0x1EDD], [0x1EDE, 0x1EDF], [0x1EE0, 0x1EE1], [0x1EE2, 0x1EE3], [0x1EE4, 0x1EE5], [0x1EE6, 0x1EE7], [0x1EE8, 0x1EE9], [0x1EEA, 0x1EEB], [0x1EEC, 0x1EED], [0x1EEE, 0x1EEF], [0x1EF0, 0x1EF1], [0x1EF2, 0x1EF3], [0x1EF4, 0x1EF5], [0x1EF6, 0x1EF7], [0x1EF8, 0x1EF9], [0x1F08, 0x1F00], [0x1F09, 0x1F01], [0x1F0A, 0x1F02], [0x1F0B, 0x1F03], [0x1F0C, 0x1F04], [0x1F0D, 0x1F05], [0x1F0E, 0x1F06], [0x1F0F, 0x1F07], [0x1F18, 0x1F10], [0x1F19, 0x1F11], [0x1F1A, 0x1F12], [0x1F1B, 0x1F13], [0x1F1C, 0x1F14], [0x1F1D, 0x1F15], [0x1F28, 0x1F20], [0x1F29, 0x1F21], [0x1F2A, 0x1F22], [0x1F2B, 0x1F23], [0x1F2C, 0x1F24], [0x1F2D, 0x1F25], [0x1F2E, 0x1F26], [0x1F2F, 0x1F27], [0x1F38, 0x1F30], [0x1F39, 0x1F31], [0x1F3A, 0x1F32], [0x1F3B, 0x1F33], [0x1F3C, 0x1F34], [0x1F3D, 0x1F35], [0x1F3E, 0x1F36], [0x1F3F, 0x1F37], [0x1F48, 0x1F40], [0x1F49, 0x1F41], [0x1F4A, 0x1F42], [0x1F4B, 0x1F43], [0x1F4C, 0x1F44], [0x1F4D, 0x1F45], [0x1F59, 0x1F51], [0x1F5B, 0x1F53], [0x1F5D, 0x1F55], [0x1F5F, 0x1F57], [0x1F68, 0x1F60], [0x1F69, 0x1F61], [0x1F6A, 0x1F62], [0x1F6B, 0x1F63], [0x1F6C, 0x1F64], [0x1F6D, 0x1F65], [0x1F6E, 0x1F66], [0x1F6F, 0x1F67], [0x1FB8, 0x1FB0], [0x1FB9, 0x1FB1], [0x1FBA, 0x1F70], [0x1FBB, 0x1F71], [0x1FC8, 0x1F72], [0x1FC9, 0x1F73], [0x1FCA, 0x1F74], [0x1FCB, 0x1F75], [0x1FD8, 0x1FD0], [0x1FD9, 0x1FD1], [0x1FDA, 0x1F76], [0x1FDB, 0x1F77], [0x1FE8, 0x1FE0], [0x1FE9, 0x1FE1], [0x1FEA, 0x1F7A], [0x1FEB, 0x1F7B], [0x1FEC, 0x1FE5], [0x1FF8, 0x1F78], [0x1FF9, 0x1F79], [0x1FFA, 0x1F7C], [0x1FFB, 0x1F7D], [0x2126, 0x03C9], [0x212A, 0x006B], [0x212B, 0x00E5], [0x2160, 0x2170], [0x2161, 0x2171], [0x2162, 0x2172], [0x2163, 0x2173], [0x2164, 0x2174], [0x2165, 0x2175], [0x2166, 0x2176], [0x2167, 0x2177], [0x2168, 0x2178], [0x2169, 0x2179], [0x216A, 0x217A], [0x216B, 0x217B], [0x216C, 0x217C], [0x216D, 0x217D], [0x216E, 0x217E], [0x216F, 0x217F], [0x24B6, 0x24D0], [0x24B7, 0x24D1], [0x24B8, 0x24D2], [0x24B9, 0x24D3], [0x24BA, 0x24D4], [0x24BB, 0x24D5], [0x24BC, 0x24D6], [0x24BD, 0x24D7], [0x24BE, 0x24D8], [0x24BF, 0x24D9], [0x24C0, 0x24DA], [0x24C1, 0x24DB], [0x24C2, 0x24DC], [0x24C3, 0x24DD], [0x24C4, 0x24DE], [0x24C5, 0x24DF], [0x24C6, 0x24E0], [0x24C7, 0x24E1], [0x24C8, 0x24E2], [0x24C9, 0x24E3], [0x24CA, 0x24E4], [0x24CB, 0x24E5], [0x24CC, 0x24E6], [0x24CD, 0x24E7], [0x24CE, 0x24E8], [0x24CF, 0x24E9], [0xFF21, 0xFF41], [0xFF22, 0xFF42], [0xFF23, 0xFF43], [0xFF24, 0xFF44], [0xFF25, 0xFF45], [0xFF26, 0xFF46], [0xFF27, 0xFF47], [0xFF28, 0xFF48], [0xFF29, 0xFF49], [0xFF2A, 0xFF4A], [0xFF2B, 0xFF4B], [0xFF2C, 0xFF4C], [0xFF2D, 0xFF4D], [0xFF2E, 0xFF4E], [0xFF2F, 0xFF4F], [0xFF30, 0xFF50], [0xFF31, 0xFF51], [0xFF32, 0xFF52], [0xFF33, 0xFF53], [0xFF34, 0xFF54], [0xFF35, 0xFF55], [0xFF36, 0xFF56], [0xFF37, 0xFF57], [0xFF38, 0xFF58], [0xFF39, 0xFF59], [0xFF3A, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerCase.length; index++) {
+ var capitalI = LowerCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.16_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.16_A2.js
new file mode 100644
index 000000000..79344aeac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.16_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A2;
+* @section: 15.5.4.16;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerSpecialCase = [["\u0130", "\u0069\u0307"], ["\u1F88", "\u1F80"], ["\u1F89", "\u1F81"], ["\u1F8A", "\u1F82"], ["\u1F8B", "\u1F83"], ["\u1F8C", "\u1F84"], ["\u1F8D", "\u1F85"], ["\u1F8E", "\u1F86"], ["\u1F8F", "\u1F87"], ["\u1F98", "\u1F90"], ["\u1F99", "\u1F91"], ["\u1F9A", "\u1F92"], ["\u1F9B", "\u1F93"], ["\u1F9C", "\u1F94"], ["\u1F9D", "\u1F95"], ["\u1F9E", "\u1F96"], ["\u1F9F", "\u1F97"], ["\u1FA8", "\u1FA0"], ["\u1FA9", "\u1FA1"], ["\u1FAA", "\u1FA2"], ["\u1FAB", "\u1FA3"], ["\u1FAC", "\u1FA4"], ["\u1FAD", "\u1FA5"], ["\u1FAE", "\u1FA6"], ["\u1FAF", "\u1FA7"], ["\u1FBC", "\u1FB3"], ["\u1FCC", "\u1FC3"], ["\u1FFC", "\u1FF3"], ["\u03A3", "\u03C2"], ["\u0049", "\u0069\u0307"], ["\u004A", "\u006A\u0307"], ["\u012E", "\u012F\u0307"], ["\u00CC", "\u0069\u0307\u0300"], ["\u00CD", "\u0069\u0307\u0301"], ["\u0128", "\u0069\u0307\u0303"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerSpecialCase.length; index++) {
+ var capitalI = LowerSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.18_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.18_A1.js
new file mode 100644
index 000000000..c6ea2ff2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.18_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1;
+* @section: 15.5.4.18;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperCase = [[0x0061, 0x0041], [0x0062, 0x0042], [0x0063, 0x0043], [0x0064, 0x0044], [0x0065, 0x0045], [0x0066, 0x0046], [0x0067, 0x0047], [0x0068, 0x0048], [0x006A, 0x004A], [0x006B, 0x004B], [0x006C, 0x004C], [0x006D, 0x004D], [0x006E, 0x004E], [0x006F, 0x004F], [0x0070, 0x0050], [0x0071, 0x0051], [0x0072, 0x0052], [0x0073, 0x0053], [0x0074, 0x0054], [0x0075, 0x0055], [0x0076, 0x0056], [0x0077, 0x0057], [0x0078, 0x0058], [0x0079, 0x0059], [0x007A, 0x005A], [0x00B5, 0x039C], [0x00E0, 0x00C0], [0x00E1, 0x00C1], [0x00E2, 0x00C2], [0x00E3, 0x00C3], [0x00E4, 0x00C4], [0x00E5, 0x00C5], [0x00E6, 0x00C6], [0x00E7, 0x00C7], [0x00E8, 0x00C8], [0x00E9, 0x00C9], [0x00EA, 0x00CA], [0x00EB, 0x00CB], [0x00EC, 0x00CC], [0x00ED, 0x00CD], [0x00EE, 0x00CE], [0x00EF, 0x00CF], [0x00F0, 0x00D0], [0x00F1, 0x00D1], [0x00F2, 0x00D2], [0x00F3, 0x00D3], [0x00F4, 0x00D4], [0x00F5, 0x00D5], [0x00F6, 0x00D6], [0x00F8, 0x00D8], [0x00F9, 0x00D9], [0x00FA, 0x00DA], [0x00FB, 0x00DB], [0x00FC, 0x00DC], [0x00FD, 0x00DD], [0x00FE, 0x00DE], [0x00FF, 0x0178], [0x0101, 0x0100], [0x0103, 0x0102], [0x0105, 0x0104], [0x0107, 0x0106], [0x0109, 0x0108], [0x010B, 0x010A], [0x010D, 0x010C], [0x010F, 0x010E], [0x0111, 0x0110], [0x0113, 0x0112], [0x0115, 0x0114], [0x0117, 0x0116], [0x0119, 0x0118], [0x011B, 0x011A], [0x011D, 0x011C], [0x011F, 0x011E], [0x0121, 0x0120], [0x0123, 0x0122], [0x0125, 0x0124], [0x0127, 0x0126], [0x0129, 0x0128], [0x012B, 0x012A], [0x012D, 0x012C], [0x012F, 0x012E], [0x0131, 0x0049], [0x0133, 0x0132], [0x0135, 0x0134], [0x0137, 0x0136], [0x013A, 0x0139], [0x013C, 0x013B], [0x013E, 0x013D], [0x0140, 0x013F], [0x0142, 0x0141], [0x0144, 0x0143], [0x0146, 0x0145], [0x0148, 0x0147], [0x014B, 0x014A], [0x014D, 0x014C], [0x014F, 0x014E], [0x0151, 0x0150], [0x0153, 0x0152], [0x0155, 0x0154], [0x0157, 0x0156], [0x0159, 0x0158], [0x015B, 0x015A], [0x015D, 0x015C], [0x015F, 0x015E], [0x0161, 0x0160], [0x0163, 0x0162], [0x0165, 0x0164], [0x0167, 0x0166], [0x0169, 0x0168], [0x016B, 0x016A], [0x016D, 0x016C], [0x016F, 0x016E], [0x0171, 0x0170], [0x0173, 0x0172], [0x0175, 0x0174], [0x0177, 0x0176], [0x017A, 0x0179], [0x017C, 0x017B], [0x017E, 0x017D], [0x017F, 0x0053], [0x0183, 0x0182], [0x0185, 0x0184], [0x0188, 0x0187], [0x018C, 0x018B], [0x0192, 0x0191], [0x0195, 0x01F6], [0x0199, 0x0198], [0x019E, 0x0220], [0x01A1, 0x01A0], [0x01A3, 0x01A2], [0x01A5, 0x01A4], [0x01A8, 0x01A7], [0x01AD, 0x01AC], [0x01B0, 0x01AF], [0x01B4, 0x01B3], [0x01B6, 0x01B5], [0x01B9, 0x01B8], [0x01BD, 0x01BC], [0x01BF, 0x01F7], [0x01C5, 0x01C4], [0x01C6, 0x01C4], [0x01C8, 0x01C7], [0x01C9, 0x01C7], [0x01CB, 0x01CA], [0x01CC, 0x01CA], [0x01CE, 0x01CD], [0x01D0, 0x01CF], [0x01D2, 0x01D1], [0x01D4, 0x01D3], [0x01D6, 0x01D5], [0x01D8, 0x01D7], [0x01DA, 0x01D9], [0x01DC, 0x01DB], [0x01DD, 0x018E], [0x01DF, 0x01DE], [0x01E1, 0x01E0], [0x01E3, 0x01E2], [0x01E5, 0x01E4], [0x01E7, 0x01E6], [0x01E9, 0x01E8], [0x01EB, 0x01EA], [0x01ED, 0x01EC], [0x01EF, 0x01EE], [0x01F2, 0x01F1], [0x01F3, 0x01F1], [0x01F5, 0x01F4], [0x01F9, 0x01F8], [0x01FB, 0x01FA], [0x01FD, 0x01FC], [0x01FF, 0x01FE], [0x0201, 0x0200], [0x0203, 0x0202], [0x0205, 0x0204], [0x0207, 0x0206], [0x0209, 0x0208], [0x020B, 0x020A], [0x020D, 0x020C], [0x020F, 0x020E], [0x0211, 0x0210], [0x0213, 0x0212], [0x0215, 0x0214], [0x0217, 0x0216], [0x0219, 0x0218], [0x021B, 0x021A], [0x021D, 0x021C], [0x021F, 0x021E], [0x0223, 0x0222], [0x0225, 0x0224], [0x0227, 0x0226], [0x0229, 0x0228], [0x022B, 0x022A], [0x022D, 0x022C], [0x022F, 0x022E], [0x0231, 0x0230], [0x0233, 0x0232], [0x0253, 0x0181], [0x0254, 0x0186], [0x0256, 0x0189], [0x0257, 0x018A], [0x0259, 0x018F], [0x025B, 0x0190], [0x0260, 0x0193], [0x0263, 0x0194], [0x0268, 0x0197], [0x0269, 0x0196], [0x026F, 0x019C], [0x0272, 0x019D], [0x0275, 0x019F], [0x0280, 0x01A6], [0x0283, 0x01A9], [0x0288, 0x01AE], [0x028A, 0x01B1], [0x028B, 0x01B2], [0x0292, 0x01B7], [0x0345, 0x0399], [0x03AC, 0x0386], [0x03AD, 0x0388], [0x03AE, 0x0389], [0x03AF, 0x038A], [0x03B1, 0x0391], [0x03B2, 0x0392], [0x03B3, 0x0393], [0x03B4, 0x0394], [0x03B5, 0x0395], [0x03B6, 0x0396], [0x03B7, 0x0397], [0x03B8, 0x0398], [0x03B9, 0x0399], [0x03BA, 0x039A], [0x03BB, 0x039B], [0x03BC, 0x039C], [0x03BD, 0x039D], [0x03BE, 0x039E], [0x03BF, 0x039F], [0x03C0, 0x03A0], [0x03C1, 0x03A1], [0x03C2, 0x03A3], [0x03C3, 0x03A3], [0x03C4, 0x03A4], [0x03C5, 0x03A5], [0x03C6, 0x03A6], [0x03C7, 0x03A7], [0x03C8, 0x03A8], [0x03C9, 0x03A9], [0x03CA, 0x03AA], [0x03CB, 0x03AB], [0x03CC, 0x038C], [0x03CD, 0x038E], [0x03CE, 0x038F], [0x03D0, 0x0392], [0x03D1, 0x0398], [0x03D5, 0x03A6], [0x03D6, 0x03A0], [0x03D9, 0x03D8], [0x03DB, 0x03DA], [0x03DD, 0x03DC], [0x03DF, 0x03DE], [0x03E1, 0x03E0], [0x03E3, 0x03E2], [0x03E5, 0x03E4], [0x03E7, 0x03E6], [0x03E9, 0x03E8], [0x03EB, 0x03EA], [0x03ED, 0x03EC], [0x03EF, 0x03EE], [0x03F0, 0x039A], [0x03F1, 0x03A1], [0x03F2, 0x03A3], [0x03F5, 0x0395], [0x0430, 0x0410], [0x0431, 0x0411], [0x0432, 0x0412], [0x0433, 0x0413], [0x0434, 0x0414], [0x0435, 0x0415], [0x0436, 0x0416], [0x0437, 0x0417], [0x0438, 0x0418], [0x0439, 0x0419], [0x043A, 0x041A], [0x043B, 0x041B], [0x043C, 0x041C], [0x043D, 0x041D], [0x043E, 0x041E], [0x043F, 0x041F], [0x0440, 0x0420], [0x0441, 0x0421], [0x0442, 0x0422], [0x0443, 0x0423], [0x0444, 0x0424], [0x0445, 0x0425], [0x0446, 0x0426], [0x0447, 0x0427], [0x0448, 0x0428], [0x0449, 0x0429], [0x044A, 0x042A], [0x044B, 0x042B], [0x044C, 0x042C], [0x044D, 0x042D], [0x044E, 0x042E], [0x044F, 0x042F], [0x0450, 0x0400], [0x0451, 0x0401], [0x0452, 0x0402], [0x0453, 0x0403], [0x0454, 0x0404], [0x0455, 0x0405], [0x0456, 0x0406], [0x0457, 0x0407], [0x0458, 0x0408], [0x0459, 0x0409], [0x045A, 0x040A], [0x045B, 0x040B], [0x045C, 0x040C], [0x045D, 0x040D], [0x045E, 0x040E], [0x045F, 0x040F], [0x0461, 0x0460], [0x0463, 0x0462], [0x0465, 0x0464], [0x0467, 0x0466], [0x0469, 0x0468], [0x046B, 0x046A], [0x046D, 0x046C], [0x046F, 0x046E], [0x0471, 0x0470], [0x0473, 0x0472], [0x0475, 0x0474], [0x0477, 0x0476], [0x0479, 0x0478], [0x047B, 0x047A], [0x047D, 0x047C], [0x047F, 0x047E], [0x0481, 0x0480], [0x048B, 0x048A], [0x048D, 0x048C], [0x048F, 0x048E], [0x0491, 0x0490], [0x0493, 0x0492], [0x0495, 0x0494], [0x0497, 0x0496], [0x0499, 0x0498], [0x049B, 0x049A], [0x049D, 0x049C], [0x049F, 0x049E], [0x04A1, 0x04A0], [0x04A3, 0x04A2], [0x04A5, 0x04A4], [0x04A7, 0x04A6], [0x04A9, 0x04A8], [0x04AB, 0x04AA], [0x04AD, 0x04AC], [0x04AF, 0x04AE], [0x04B1, 0x04B0], [0x04B3, 0x04B2], [0x04B5, 0x04B4], [0x04B7, 0x04B6], [0x04B9, 0x04B8], [0x04BB, 0x04BA], [0x04BD, 0x04BC], [0x04BF, 0x04BE], [0x04C2, 0x04C1], [0x04C4, 0x04C3], [0x04C6, 0x04C5], [0x04C8, 0x04C7], [0x04CA, 0x04C9], [0x04CC, 0x04CB], [0x04CE, 0x04CD], [0x04D1, 0x04D0], [0x04D3, 0x04D2], [0x04D5, 0x04D4], [0x04D7, 0x04D6], [0x04D9, 0x04D8], [0x04DB, 0x04DA], [0x04DD, 0x04DC], [0x04DF, 0x04DE], [0x04E1, 0x04E0], [0x04E3, 0x04E2], [0x04E5, 0x04E4], [0x04E7, 0x04E6], [0x04E9, 0x04E8], [0x04EB, 0x04EA], [0x04ED, 0x04EC], [0x04EF, 0x04EE], [0x04F1, 0x04F0], [0x04F3, 0x04F2], [0x04F5, 0x04F4], [0x04F9, 0x04F8], [0x0501, 0x0500], [0x0503, 0x0502], [0x0505, 0x0504], [0x0507, 0x0506], [0x0509, 0x0508], [0x050B, 0x050A], [0x050D, 0x050C], [0x050F, 0x050E], [0x0561, 0x0531], [0x0562, 0x0532], [0x0563, 0x0533], [0x0564, 0x0534], [0x0565, 0x0535], [0x0566, 0x0536], [0x0567, 0x0537], [0x0568, 0x0538], [0x0569, 0x0539], [0x056A, 0x053A], [0x056B, 0x053B], [0x056C, 0x053C], [0x056D, 0x053D], [0x056E, 0x053E], [0x056F, 0x053F], [0x0570, 0x0540], [0x0571, 0x0541], [0x0572, 0x0542], [0x0573, 0x0543], [0x0574, 0x0544], [0x0575, 0x0545], [0x0576, 0x0546], [0x0577, 0x0547], [0x0578, 0x0548], [0x0579, 0x0549], [0x057A, 0x054A], [0x057B, 0x054B], [0x057C, 0x054C], [0x057D, 0x054D], [0x057E, 0x054E], [0x057F, 0x054F], [0x0580, 0x0550], [0x0581, 0x0551], [0x0582, 0x0552], [0x0583, 0x0553], [0x0584, 0x0554], [0x0585, 0x0555], [0x0586, 0x0556], [0x1E01, 0x1E00], [0x1E03, 0x1E02], [0x1E05, 0x1E04], [0x1E07, 0x1E06], [0x1E09, 0x1E08], [0x1E0B, 0x1E0A], [0x1E0D, 0x1E0C], [0x1E0F, 0x1E0E], [0x1E11, 0x1E10], [0x1E13, 0x1E12], [0x1E15, 0x1E14], [0x1E17, 0x1E16], [0x1E19, 0x1E18], [0x1E1B, 0x1E1A], [0x1E1D, 0x1E1C], [0x1E1F, 0x1E1E], [0x1E21, 0x1E20], [0x1E23, 0x1E22], [0x1E25, 0x1E24], [0x1E27, 0x1E26], [0x1E29, 0x1E28], [0x1E2B, 0x1E2A], [0x1E2D, 0x1E2C], [0x1E2F, 0x1E2E], [0x1E31, 0x1E30], [0x1E33, 0x1E32], [0x1E35, 0x1E34], [0x1E37, 0x1E36], [0x1E39, 0x1E38], [0x1E3B, 0x1E3A], [0x1E3D, 0x1E3C], [0x1E3F, 0x1E3E], [0x1E41, 0x1E40], [0x1E43, 0x1E42], [0x1E45, 0x1E44], [0x1E47, 0x1E46], [0x1E49, 0x1E48], [0x1E4B, 0x1E4A], [0x1E4D, 0x1E4C], [0x1E4F, 0x1E4E], [0x1E51, 0x1E50], [0x1E53, 0x1E52], [0x1E55, 0x1E54], [0x1E57, 0x1E56], [0x1E59, 0x1E58], [0x1E5B, 0x1E5A], [0x1E5D, 0x1E5C], [0x1E5F, 0x1E5E], [0x1E61, 0x1E60], [0x1E63, 0x1E62], [0x1E65, 0x1E64], [0x1E67, 0x1E66], [0x1E69, 0x1E68], [0x1E6B, 0x1E6A], [0x1E6D, 0x1E6C], [0x1E6F, 0x1E6E], [0x1E71, 0x1E70], [0x1E73, 0x1E72], [0x1E75, 0x1E74], [0x1E77, 0x1E76], [0x1E79, 0x1E78], [0x1E7B, 0x1E7A], [0x1E7D, 0x1E7C], [0x1E7F, 0x1E7E], [0x1E81, 0x1E80], [0x1E83, 0x1E82], [0x1E85, 0x1E84], [0x1E87, 0x1E86], [0x1E89, 0x1E88], [0x1E8B, 0x1E8A], [0x1E8D, 0x1E8C], [0x1E8F, 0x1E8E], [0x1E91, 0x1E90], [0x1E93, 0x1E92], [0x1E95, 0x1E94], [0x1E9B, 0x1E60], [0x1EA1, 0x1EA0], [0x1EA3, 0x1EA2], [0x1EA5, 0x1EA4], [0x1EA7, 0x1EA6], [0x1EA9, 0x1EA8], [0x1EAB, 0x1EAA], [0x1EAD, 0x1EAC], [0x1EAF, 0x1EAE], [0x1EB1, 0x1EB0], [0x1EB3, 0x1EB2], [0x1EB5, 0x1EB4], [0x1EB7, 0x1EB6], [0x1EB9, 0x1EB8], [0x1EBB, 0x1EBA], [0x1EBD, 0x1EBC], [0x1EBF, 0x1EBE], [0x1EC1, 0x1EC0], [0x1EC3, 0x1EC2], [0x1EC5, 0x1EC4], [0x1EC7, 0x1EC6], [0x1EC9, 0x1EC8], [0x1ECB, 0x1ECA], [0x1ECD, 0x1ECC], [0x1ECF, 0x1ECE], [0x1ED1, 0x1ED0], [0x1ED3, 0x1ED2], [0x1ED5, 0x1ED4], [0x1ED7, 0x1ED6], [0x1ED9, 0x1ED8], [0x1EDB, 0x1EDA], [0x1EDD, 0x1EDC], [0x1EDF, 0x1EDE], [0x1EE1, 0x1EE0], [0x1EE3, 0x1EE2], [0x1EE5, 0x1EE4], [0x1EE7, 0x1EE6], [0x1EE9, 0x1EE8], [0x1EEB, 0x1EEA], [0x1EED, 0x1EEC], [0x1EEF, 0x1EEE], [0x1EF1, 0x1EF0], [0x1EF3, 0x1EF2], [0x1EF5, 0x1EF4], [0x1EF7, 0x1EF6], [0x1EF9, 0x1EF8], [0x1F00, 0x1F08], [0x1F01, 0x1F09], [0x1F02, 0x1F0A], [0x1F03, 0x1F0B], [0x1F04, 0x1F0C], [0x1F05, 0x1F0D], [0x1F06, 0x1F0E], [0x1F07, 0x1F0F], [0x1F10, 0x1F18], [0x1F11, 0x1F19], [0x1F12, 0x1F1A], [0x1F13, 0x1F1B], [0x1F14, 0x1F1C], [0x1F15, 0x1F1D], [0x1F20, 0x1F28], [0x1F21, 0x1F29], [0x1F22, 0x1F2A], [0x1F23, 0x1F2B], [0x1F24, 0x1F2C], [0x1F25, 0x1F2D], [0x1F26, 0x1F2E], [0x1F27, 0x1F2F], [0x1F30, 0x1F38], [0x1F31, 0x1F39], [0x1F32, 0x1F3A], [0x1F33, 0x1F3B], [0x1F34, 0x1F3C], [0x1F35, 0x1F3D], [0x1F36, 0x1F3E], [0x1F37, 0x1F3F], [0x1F40, 0x1F48], [0x1F41, 0x1F49], [0x1F42, 0x1F4A], [0x1F43, 0x1F4B], [0x1F44, 0x1F4C], [0x1F45, 0x1F4D], [0x1F51, 0x1F59], [0x1F53, 0x1F5B], [0x1F55, 0x1F5D], [0x1F57, 0x1F5F], [0x1F60, 0x1F68], [0x1F61, 0x1F69], [0x1F62, 0x1F6A], [0x1F63, 0x1F6B], [0x1F64, 0x1F6C], [0x1F65, 0x1F6D], [0x1F66, 0x1F6E], [0x1F67, 0x1F6F], [0x1F70, 0x1FBA], [0x1F71, 0x1FBB], [0x1F72, 0x1FC8], [0x1F73, 0x1FC9], [0x1F74, 0x1FCA], [0x1F75, 0x1FCB], [0x1F76, 0x1FDA], [0x1F77, 0x1FDB], [0x1F78, 0x1FF8], [0x1F79, 0x1FF9], [0x1F7A, 0x1FEA], [0x1F7B, 0x1FEB], [0x1F7C, 0x1FFA], [0x1F7D, 0x1FFB], [0x1FB0, 0x1FB8], [0x1FB1, 0x1FB9], [0x1FBE, 0x0399], [0x1FD0, 0x1FD8], [0x1FD1, 0x1FD9], [0x1FE0, 0x1FE8], [0x1FE1, 0x1FE9], [0x1FE5, 0x1FEC], [0x2170, 0x2160], [0x2171, 0x2161], [0x2172, 0x2162], [0x2173, 0x2163], [0x2174, 0x2164], [0x2175, 0x2165], [0x2176, 0x2166], [0x2177, 0x2167], [0x2178, 0x2168], [0x2179, 0x2169], [0x217A, 0x216A], [0x217B, 0x216B], [0x217C, 0x216C], [0x217D, 0x216D], [0x217E, 0x216E], [0x217F, 0x216F], [0x24D0, 0x24B6], [0x24D1, 0x24B7], [0x24D2, 0x24B8], [0x24D3, 0x24B9], [0x24D4, 0x24BA], [0x24D5, 0x24BB], [0x24D6, 0x24BC], [0x24D7, 0x24BD], [0x24D8, 0x24BE], [0x24D9, 0x24BF], [0x24DA, 0x24C0], [0x24DB, 0x24C1], [0x24DC, 0x24C2], [0x24DD, 0x24C3], [0x24DE, 0x24C4], [0x24DF, 0x24C5], [0x24E0, 0x24C6], [0x24E1, 0x24C7], [0x24E2, 0x24C8], [0x24E3, 0x24C9], [0x24E4, 0x24CA], [0x24E5, 0x24CB], [0x24E6, 0x24CC], [0x24E7, 0x24CD], [0x24E8, 0x24CE], [0x24E9, 0x24CF], [0xFF41, 0xFF21], [0xFF42, 0xFF22], [0xFF43, 0xFF23], [0xFF44, 0xFF24], [0xFF45, 0xFF25], [0xFF46, 0xFF26], [0xFF47, 0xFF27], [0xFF48, 0xFF28], [0xFF49, 0xFF29], [0xFF4A, 0xFF2A], [0xFF4B, 0xFF2B], [0xFF4C, 0xFF2C], [0xFF4D, 0xFF2D], [0xFF4E, 0xFF2E], [0xFF4F, 0xFF2F], [0xFF50, 0xFF30], [0xFF51, 0xFF31], [0xFF52, 0xFF32], [0xFF53, 0xFF33], [0xFF54, 0xFF34], [0xFF55, 0xFF35], [0xFF56, 0xFF36], [0xFF57, 0xFF37], [0xFF58, 0xFF38], [0xFF59, 0xFF39], [0xFF5A, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperCase.length; index++) {
+ var capitalI = UpperCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.18_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.18_A2.js
new file mode 100644
index 000000000..4dae31aaa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S15.5.4.18_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A2;
+* @section: 15.5.4.18;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperSpecialCase = [["\u00DF", "\u0053\u0053"], ["\uFB00", "\u0046\u0046"], ["\uFB01", "\u0046\u0049"], ["\uFB02", "\u0046\u004C"], ["\uFB03", "\u0046\u0046\u0049"], ["\uFB04", "\u0046\u0046\u004C"], ["\uFB05", "\u0053\u0054"], ["\uFB06", "\u0053\u0054"], ["\u0587", "\u0535\u0552"], ["\uFB13", "\u0544\u0546"], ["\uFB14", "\u0544\u0535"], ["\uFB15", "\u0544\u053B"], ["\uFB16", "\u054E\u0546"], ["\uFB17", "\u0544\u053D"], ["\u0149", "\u02BC\u004E"], ["\u0390", "\u0399\u0308\u0301"], ["\u03B0", "\u03A5\u0308\u0301"], ["\u01F0", "\u004A\u030C"], ["\u1E96", "\u0048\u0331"], ["\u1E97", "\u0054\u0308"], ["\u1E98", "\u0057\u030A"], ["\u1E99", "\u0059\u030A"], ["\u1E9A", "\u0041\u02BE"], ["\u1F50", "\u03A5\u0313"], ["\u1F52", "\u03A5\u0313\u0300"], ["\u1F54", "\u03A5\u0313\u0301"], ["\u1F56", "\u03A5\u0313\u0342"], ["\u1FB6", "\u0391\u0342"], ["\u1FC6", "\u0397\u0342"], ["\u1FD2", "\u0399\u0308\u0300"], ["\u1FD3", "\u0399\u0308\u0301"], ["\u1FD6", "\u0399\u0342"], ["\u1FD7", "\u0399\u0308\u0342"], ["\u1FE2", "\u03A5\u0308\u0300"], ["\u1FE3", "\u03A5\u0308\u0301"], ["\u1FE4", "\u03A1\u0313"], ["\u1FE6", "\u03A5\u0342"], ["\u1FE7", "\u03A5\u0308\u0342"], ["\u1FF6", "\u03A9\u0342"], ["\u1F80", "\u1F08\u0399"], ["\u1F81", "\u1F09\u0399"], ["\u1F82", "\u1F0A\u0399"], ["\u1F83", "\u1F0B\u0399"], ["\u1F84", "\u1F0C\u0399"], ["\u1F85", "\u1F0D\u0399"], ["\u1F86", "\u1F0E\u0399"], ["\u1F87", "\u1F0F\u0399"], ["\u1F88", "\u1F08\u0399"], ["\u1F89", "\u1F09\u0399"], ["\u1F8A", "\u1F0A\u0399"], ["\u1F8B", "\u1F0B\u0399"], ["\u1F8C", "\u1F0C\u0399"], ["\u1F8D", "\u1F0D\u0399"], ["\u1F8E", "\u1F0E\u0399"], ["\u1F8F", "\u1F0F\u0399"], ["\u1F90", "\u1F28\u0399"], ["\u1F91", "\u1F29\u0399"], ["\u1F92", "\u1F2A\u0399"], ["\u1F93", "\u1F2B\u0399"], ["\u1F94", "\u1F2C\u0399"], ["\u1F95", "\u1F2D\u0399"], ["\u1F96", "\u1F2E\u0399"], ["\u1F97", "\u1F2F\u0399"], ["\u1F98", "\u1F28\u0399"], ["\u1F99", "\u1F29\u0399"], ["\u1F9A", "\u1F2A\u0399"], ["\u1F9B", "\u1F2B\u0399"], ["\u1F9C", "\u1F2C\u0399"], ["\u1F9D", "\u1F2D\u0399"], ["\u1F9E", "\u1F2E\u0399"], ["\u1F9F", "\u1F2F\u0399"], ["\u1FA0", "\u1F68\u0399"], ["\u1FA1", "\u1F69\u0399"], ["\u1FA2", "\u1F6A\u0399"], ["\u1FA3", "\u1F6B\u0399"], ["\u1FA4", "\u1F6C\u0399"], ["\u1FA5", "\u1F6D\u0399"], ["\u1FA6", "\u1F6E\u0399"], ["\u1FA7", "\u1F6F\u0399"], ["\u1FA8", "\u1F68\u0399"], ["\u1FA9", "\u1F69\u0399"], ["\u1FAA", "\u1F6A\u0399"], ["\u1FAB", "\u1F6B\u0399"], ["\u1FAC", "\u1F6C\u0399"], ["\u1FAD", "\u1F6D\u0399"], ["\u1FAE", "\u1F6E\u0399"], ["\u1FAF", "\u1F6F\u0399"], ["\u1FB3", "\u0391\u0399"], ["\u1FBC", "\u0391\u0399"], ["\u1FC3", "\u0397\u0399"], ["\u1FCC", "\u0397\u0399"], ["\u1FF3", "\u03A9\u0399"], ["\u1FFC", "\u03A9\u0399"], ["\u1FB2", "\u1FBA\u0399"], ["\u1FB4", "\u0386\u0399"], ["\u1FC2", "\u1FCA\u0399"], ["\u1FC4", "\u0389\u0399"], ["\u1FF2", "\u1FFA\u0399"], ["\u1FF4", "\u038F\u0399"], ["\u1FB7", "\u0391\u0342\u0399"], ["\u1FC7", "\u0397\u0342\u0399"], ["\u1FF7", "\u03A9\u0342\u0399"], ["\u0069", "\u0130"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperSpecialCase.length; index++) {
+ var capitalI = UpperSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A1_T1.js
new file mode 100644
index 000000000..1d2185427
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A1_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A1_T1;
+ * @section: 7.1;
+ * @assertion: The format control character (Cf) can occur anywhere in the source text
+ * and these characters are removed before applying the lexical grammar;
+ * @description: Complex test with eval;
+*/
+
+//CHECK#1
+Cf = [[0x06DD, 0x06DD], [0x070F, 0x070F], [0x180E, 0x180E], [0x200C, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.1_T1.js
new file mode 100644
index 000000000..e071646c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x06DD, 0x06DD], [0x070F, 0x070F], [0x180E, 0x180E], [0x200C, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = format + "a" + format + "b" + format;
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.1_T2.js
new file mode 100644
index 000000000..c5ddf3ce4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x06DD, 0x06DD], [0x070F, 0x070F], [0x180E, 0x180E], [0x200C, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = "' + format + 'a' + format + 'b' + format + '"');
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.2_T1.js
new file mode 100644
index 000000000..17aaa55ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x06DD, 0x06DD], [0x070F, 0x070F], [0x180E, 0x180E], [0x200C, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = RegExp(format + "a" + format + "b" + format);
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.2_T2.js
new file mode 100644
index 000000000..b8239dd19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.1_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x06DD, 0x06DD], [0x070F, 0x070F], [0x180E, 0x180E], [0x200C, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = RegExp("' + format + 'a' + format + 'b' + format + '")');
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A1.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A1.6_T1.js
new file mode 100644
index 000000000..51b0b1803
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A1.6_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.6_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: Any other Unicode "space separator" (category "Zs") between any two tokens is allowed;
+ * @description: Complex test with eval;
+*/
+
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x2000, 0x200B], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A2.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A2.6_T1.js
new file mode 100644
index 000000000..03e4aad84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A2.6_T1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.6_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: Any other Unicode "space separator" (category "Zs") within strings;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x2000, 0x200B], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = "str" + format + "ing";
+ if (x !== "str" + format + "ing") {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A3.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A3.6_T1.js
new file mode 100644
index 000000000..7d0e70f73
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A3.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x2000, 0x200B], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("//" + format + "single line" + format + "comment" + format + " x = 1;");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A4.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A4.6_T1.js
new file mode 100644
index 000000000..fc661cbac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.2_A4.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x2000, 0x200B], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("/*" + format + "multi line" + format + "comment" + format + "\n x = 1;*/");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T1.js
new file mode 100644
index 000000000..7ca3c883a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Uppercase letter (Lu).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x0400, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T2.js
new file mode 100644
index 000000000..34ef3fa74
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Lowercase letter (Ll).
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0233], [0x0250, 0x02AD], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213D, 0x213D], [0x2146, 0x2149], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T3.js
new file mode 100644
index 000000000..06e9329b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T3.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Titlecase letter (Lt).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T4.js
new file mode 100644
index 000000000..7b5ec83e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T4.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Modifier letter (Lm).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T5.js
new file mode 100644
index 000000000..5db747d15
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T5.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T5;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Other letter (Lo).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06FA, 0x06FC], [0x0710, 0x0710], [0x0712, 0x072C], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10F8], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1206], [0x1208, 0x1246], [0x1248, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1286], [0x1288, 0x1288], [0x128A, 0x128D], [0x1290, 0x12AE], [0x12B0, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12CE], [0x12D0, 0x12D6], [0x12D8, 0x12EE], [0x12F0, 0x130E], [0x1310, 0x1310], [0x1312, 0x1315], [0x1318, 0x131E], [0x1320, 0x1346], [0x1348, 0x135A], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x2135, 0x2138], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FA5], [0xA000, 0xA48C], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T6.js
new file mode 100644
index 000000000..d51df6879
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.1_T6.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T6;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Letter number (Nl);
+*/
+
+//CHECK
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T1.js
new file mode 100644
index 000000000..de1e72b2c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mn").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x034F], [0x0360, 0x036F], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0655], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EA], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T2.js
new file mode 100644
index 000000000..17939d255
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mc").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B4, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T3.js
new file mode 100644
index 000000000..0f72df8ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T3.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeDigit ("Nd").
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1369, 0x1371], [0x17E0, 0x17E9], [0x1810, 0x1819], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T4.js
new file mode 100644
index 000000000..cd64dadaf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A1.4_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeConnectorPunctuation ("Pc") without $.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ if (hex !== "0078") {
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.2_T1.js
new file mode 100644
index 000000000..63fd52a85
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Non-spacing mark (Mn).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x034F], [0x0360, 0x036F], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0655], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EA], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.2_T2.js
new file mode 100644
index 000000000..197fe3f5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Combining spacing mark (Mc).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B4, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.3.js
new file mode 100644
index 000000000..fb25ca8b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.3.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.3;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeDigit (any character in the Unicode categories "Decimal Number (Nd)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1369, 0x1371], [0x17E0, 0x17E9], [0x1810, 0x1819], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.4.js
new file mode 100644
index 000000000..7d4cc1503
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A2.4.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.4;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeConnectorPunctuation (any character in the Unicode categories "Connector Punctuation (Pc)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A3.1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A3.1.js
new file mode 100644
index 000000000..cdd09c5a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A3.1.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must contain only IdentifierPart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x0400, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0233], [0x0250, 0x02AD], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213D, 0x213D], [0x2146, 0x2149], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06FA, 0x06FC], [0x0710, 0x0710], [0x0712, 0x072C], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10F8], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1206], [0x1208, 0x1246], [0x1248, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1286], [0x1288, 0x1288], [0x128A, 0x128D], [0x1290, 0x12AE], [0x12B0, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12CE], [0x12D0, 0x12D6], [0x12D8, 0x12EE], [0x12F0, 0x130E], [0x1310, 0x1310], [0x1312, 0x1315], [0x1318, 0x131E], [0x1320, 0x1346], [0x1348, 0x135A], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x2135, 0x2138], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FA5], [0xA000, 0xA48C], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x034F], [0x0360, 0x036F], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0655], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EA], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B4, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1369, 0x1371], [0x17E0, 0x17E9], [0x1810, 0x1819], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = "$" + String.fromCharCode(index) + "1";
+ eval("var " + identifier + "=1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A3.2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A3.2.js
new file mode 100644
index 000000000..d6b8ad349
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A3.2.js
@@ -0,0 +1,124 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin only IdentifierStart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x0400, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0233], [0x0250, 0x02AD], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213D, 0x213D], [0x2146, 0x2149], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06FA, 0x06FC], [0x0710, 0x0710], [0x0712, 0x072C], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10F8], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1206], [0x1208, 0x1246], [0x1248, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1286], [0x1288, 0x1288], [0x128A, 0x128D], [0x1290, 0x12AE], [0x12B0, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12CE], [0x12D0, 0x12D6], [0x12D8, 0x12EE], [0x12F0, 0x130E], [0x1310, 0x1310], [0x1312, 0x1315], [0x1318, 0x131E], [0x1320, 0x1346], [0x1348, 0x135A], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x2135, 0x2138], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FA5], [0xA000, 0xA48C], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = String.fromCharCode(index);
+ eval("var " + identifier + "=1");
+ if (errorCount === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T1.js
new file mode 100644
index 000000000..9101c8ab6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T1.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.
+
+/**
+ * @name: S7.6_A5.2_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lu.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x0400, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T10.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T10.js
new file mode 100644
index 000000000..690490601
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T10.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.
+
+/**
+ * @name: S7.6_A5.2_T10;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Pc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T2.js
new file mode 100644
index 000000000..6f77c9f3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_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.
+
+/**
+ * @name: S7.6_A5.2_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Ll.
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0233], [0x0250, 0x02AD], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213D, 0x213D], [0x2146, 0x2149], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T3.js
new file mode 100644
index 000000000..e880bd673
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T3.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T3;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lt.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T4.js
new file mode 100644
index 000000000..39906d57e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T4.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T4;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lm.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T5.js
new file mode 100644
index 000000000..89dc4cfca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T5.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.
+
+/**
+ * @name: S7.6_A5.2_T5;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lo.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06FA, 0x06FC], [0x0710, 0x0710], [0x0712, 0x072C], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10F8], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1206], [0x1208, 0x1246], [0x1248, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1286], [0x1288, 0x1288], [0x128A, 0x128D], [0x1290, 0x12AE], [0x12B0, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12CE], [0x12D0, 0x12D6], [0x12D8, 0x12EE], [0x12F0, 0x130E], [0x1310, 0x1310], [0x1312, 0x1315], [0x1318, 0x131E], [0x1320, 0x1346], [0x1348, 0x135A], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x2135, 0x2138], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FA5], [0xA000, 0xA48C], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T6.js
new file mode 100644
index 000000000..4e1ae9dc9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T6.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.
+
+/**
+ * @name: S7.6_A5.2_T6;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nl.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T7.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T7.js
new file mode 100644
index 000000000..6caa5c196
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T7.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.
+
+/**
+ * @name: S7.6_A5.2_T7;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mn.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x034F], [0x0360, 0x036F], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0655], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EA], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T8.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T8.js
new file mode 100644
index 000000000..bcf7fb19d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T8.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.
+
+/**
+ * @name: S7.6_A5.2_T8;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B4, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T9.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T9.js
new file mode 100644
index 000000000..2bdb2ae23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.2_T9.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.
+
+/**
+ * @name: S7.6_A5.2_T9;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nd.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1369, 0x1371], [0x17E0, 0x17E9], [0x1810, 0x1819], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.3_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.3_T1.js
new file mode 100644
index 000000000..75cd9abc2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.3_T1.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x0400, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0233], [0x0250, 0x02AD], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213D, 0x213D], [0x2146, 0x2149], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06FA, 0x06FC], [0x0710, 0x0710], [0x0712, 0x072C], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10F8], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1206], [0x1208, 0x1246], [0x1248, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1286], [0x1288, 0x1288], [0x128A, 0x128D], [0x1290, 0x12AE], [0x12B0, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12CE], [0x12D0, 0x12D6], [0x12D8, 0x12EE], [0x12F0, 0x130E], [0x1310, 0x1310], [0x1312, 0x1315], [0x1318, 0x131E], [0x1320, 0x1346], [0x1348, 0x135A], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x2135, 0x2138], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FA5], [0xA000, 0xA48C], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x034F], [0x0360, 0x036F], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0655], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EA], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B4, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1369, 0x1371], [0x17E0, 0x17E9], [0x1810, 0x1819], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier = "$\\u" + hex + "1";
+ eval(identifier + " = 1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.3_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.3_T2.js
new file mode 100644
index 000000000..fa2033fc7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_320/S7.6_A5.3_T2.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x0400, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0233], [0x0250, 0x02AD], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213D, 0x213D], [0x2146, 0x2149], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02B8], [0x02BB, 0x02C1], [0x02D0, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06FA, 0x06FC], [0x0710, 0x0710], [0x0712, 0x072C], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0905, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8B], [0x0A8D, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE0], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B36, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB5], [0x0BB7, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10F8], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1206], [0x1208, 0x1246], [0x1248, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1286], [0x1288, 0x1288], [0x128A, 0x128D], [0x1290, 0x12AE], [0x12B0, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12CE], [0x12D0, 0x12D6], [0x12D8, 0x12EE], [0x12F0, 0x130E], [0x1310, 0x1310], [0x1312, 0x1315], [0x1318, 0x131E], [0x1320, 0x1346], [0x1348, 0x135A], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x2135, 0x2138], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FA5], [0xA000, 0xA48C], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x034F], [0x0360, 0x036F], [0x0483, 0x0486], [0x0591, 0x05A1], [0x05A3, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C4], [0x064B, 0x0655], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A02, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EA], [0x302A, 0x302F], [0x3099, 0x309A], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B4, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE7, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1369, 0x1371], [0x17E0, 0x17E9], [0x1810, 0x1819], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x30FB, 0x30FB], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F], [0xFF65, 0xFF65]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier1 = "$" + String.fromCharCode(index) + "1";
+ var identifier2 = "$\\u" + hex + "1";
+ eval(identifier1 + " = 1");
+ eval(identifier1 + " === " + identifier2);
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.10.2.12_A1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.10.2.12_A1_T6.js
new file mode 100644
index 000000000..dc246a4c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.10.2.12_A1_T6.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A1_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+ * @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+ * containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_s = /\s/;
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ var str = String.fromCharCode(indexJ);
+ var arr = regexp_s.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.10.2.12_A2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.10.2.12_A2_T6.js
new file mode 100644
index 000000000..f2b2bc0e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.10.2.12_A2_T6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A2_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_S = /\S/;
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ if (regexp_S.exec(String.fromCharCode(indexJ)) !== null) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.16_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.16_A1.js
new file mode 100644
index 000000000..110f02eed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.16_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1;
+* @section: 15.5.4.16;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerCase = [[0x0041, 0x0061], [0x0042, 0x0062], [0x0043, 0x0063], [0x0044, 0x0064], [0x0045, 0x0065], [0x0046, 0x0066], [0x0047, 0x0067], [0x0048, 0x0068], [0x004B, 0x006B], [0x004C, 0x006C], [0x004D, 0x006D], [0x004E, 0x006E], [0x004F, 0x006F], [0x0050, 0x0070], [0x0051, 0x0071], [0x0052, 0x0072], [0x0053, 0x0073], [0x0054, 0x0074], [0x0055, 0x0075], [0x0056, 0x0076], [0x0057, 0x0077], [0x0058, 0x0078], [0x0059, 0x0079], [0x005A, 0x007A], [0x00C0, 0x00E0], [0x00C1, 0x00E1], [0x00C2, 0x00E2], [0x00C3, 0x00E3], [0x00C4, 0x00E4], [0x00C5, 0x00E5], [0x00C6, 0x00E6], [0x00C7, 0x00E7], [0x00C8, 0x00E8], [0x00C9, 0x00E9], [0x00CA, 0x00EA], [0x00CB, 0x00EB], [0x00CE, 0x00EE], [0x00CF, 0x00EF], [0x00D0, 0x00F0], [0x00D1, 0x00F1], [0x00D2, 0x00F2], [0x00D3, 0x00F3], [0x00D4, 0x00F4], [0x00D5, 0x00F5], [0x00D6, 0x00F6], [0x00D8, 0x00F8], [0x00D9, 0x00F9], [0x00DA, 0x00FA], [0x00DB, 0x00FB], [0x00DC, 0x00FC], [0x00DD, 0x00FD], [0x00DE, 0x00FE], [0x0100, 0x0101], [0x0102, 0x0103], [0x0104, 0x0105], [0x0106, 0x0107], [0x0108, 0x0109], [0x010A, 0x010B], [0x010C, 0x010D], [0x010E, 0x010F], [0x0110, 0x0111], [0x0112, 0x0113], [0x0114, 0x0115], [0x0116, 0x0117], [0x0118, 0x0119], [0x011A, 0x011B], [0x011C, 0x011D], [0x011E, 0x011F], [0x0120, 0x0121], [0x0122, 0x0123], [0x0124, 0x0125], [0x0126, 0x0127], [0x012A, 0x012B], [0x012C, 0x012D], [0x0132, 0x0133], [0x0134, 0x0135], [0x0136, 0x0137], [0x0139, 0x013A], [0x013B, 0x013C], [0x013D, 0x013E], [0x013F, 0x0140], [0x0141, 0x0142], [0x0143, 0x0144], [0x0145, 0x0146], [0x0147, 0x0148], [0x014A, 0x014B], [0x014C, 0x014D], [0x014E, 0x014F], [0x0150, 0x0151], [0x0152, 0x0153], [0x0154, 0x0155], [0x0156, 0x0157], [0x0158, 0x0159], [0x015A, 0x015B], [0x015C, 0x015D], [0x015E, 0x015F], [0x0160, 0x0161], [0x0162, 0x0163], [0x0164, 0x0165], [0x0166, 0x0167], [0x0168, 0x0169], [0x016A, 0x016B], [0x016C, 0x016D], [0x016E, 0x016F], [0x0170, 0x0171], [0x0172, 0x0173], [0x0174, 0x0175], [0x0176, 0x0177], [0x0178, 0x00FF], [0x0179, 0x017A], [0x017B, 0x017C], [0x017D, 0x017E], [0x0181, 0x0253], [0x0182, 0x0183], [0x0184, 0x0185], [0x0186, 0x0254], [0x0187, 0x0188], [0x0189, 0x0256], [0x018A, 0x0257], [0x018B, 0x018C], [0x018E, 0x01DD], [0x018F, 0x0259], [0x0190, 0x025B], [0x0191, 0x0192], [0x0193, 0x0260], [0x0194, 0x0263], [0x0196, 0x0269], [0x0197, 0x0268], [0x0198, 0x0199], [0x019C, 0x026F], [0x019D, 0x0272], [0x019F, 0x0275], [0x01A0, 0x01A1], [0x01A2, 0x01A3], [0x01A4, 0x01A5], [0x01A6, 0x0280], [0x01A7, 0x01A8], [0x01A9, 0x0283], [0x01AC, 0x01AD], [0x01AE, 0x0288], [0x01AF, 0x01B0], [0x01B1, 0x028A], [0x01B2, 0x028B], [0x01B3, 0x01B4], [0x01B5, 0x01B6], [0x01B7, 0x0292], [0x01B8, 0x01B9], [0x01BC, 0x01BD], [0x01C4, 0x01C6], [0x01C5, 0x01C6], [0x01C7, 0x01C9], [0x01C8, 0x01C9], [0x01CA, 0x01CC], [0x01CB, 0x01CC], [0x01CD, 0x01CE], [0x01CF, 0x01D0], [0x01D1, 0x01D2], [0x01D3, 0x01D4], [0x01D5, 0x01D6], [0x01D7, 0x01D8], [0x01D9, 0x01DA], [0x01DB, 0x01DC], [0x01DE, 0x01DF], [0x01E0, 0x01E1], [0x01E2, 0x01E3], [0x01E4, 0x01E5], [0x01E6, 0x01E7], [0x01E8, 0x01E9], [0x01EA, 0x01EB], [0x01EC, 0x01ED], [0x01EE, 0x01EF], [0x01F1, 0x01F3], [0x01F2, 0x01F3], [0x01F4, 0x01F5], [0x01F6, 0x0195], [0x01F7, 0x01BF], [0x01F8, 0x01F9], [0x01FA, 0x01FB], [0x01FC, 0x01FD], [0x01FE, 0x01FF], [0x0200, 0x0201], [0x0202, 0x0203], [0x0204, 0x0205], [0x0206, 0x0207], [0x0208, 0x0209], [0x020A, 0x020B], [0x020C, 0x020D], [0x020E, 0x020F], [0x0210, 0x0211], [0x0212, 0x0213], [0x0214, 0x0215], [0x0216, 0x0217], [0x0218, 0x0219], [0x021A, 0x021B], [0x021C, 0x021D], [0x021E, 0x021F], [0x0220, 0x019E], [0x0222, 0x0223], [0x0224, 0x0225], [0x0226, 0x0227], [0x0228, 0x0229], [0x022A, 0x022B], [0x022C, 0x022D], [0x022E, 0x022F], [0x0230, 0x0231], [0x0232, 0x0233], [0x023B, 0x023C], [0x023D, 0x019A], [0x0241, 0x0294], [0x0386, 0x03AC], [0x0388, 0x03AD], [0x0389, 0x03AE], [0x038A, 0x03AF], [0x038C, 0x03CC], [0x038E, 0x03CD], [0x038F, 0x03CE], [0x0391, 0x03B1], [0x0392, 0x03B2], [0x0393, 0x03B3], [0x0394, 0x03B4], [0x0395, 0x03B5], [0x0396, 0x03B6], [0x0397, 0x03B7], [0x0398, 0x03B8], [0x0399, 0x03B9], [0x039A, 0x03BA], [0x039B, 0x03BB], [0x039C, 0x03BC], [0x039D, 0x03BD], [0x039E, 0x03BE], [0x039F, 0x03BF], [0x03A0, 0x03C0], [0x03A1, 0x03C1], [0x03A4, 0x03C4], [0x03A5, 0x03C5], [0x03A6, 0x03C6], [0x03A7, 0x03C7], [0x03A8, 0x03C8], [0x03A9, 0x03C9], [0x03AA, 0x03CA], [0x03AB, 0x03CB], [0x03D8, 0x03D9], [0x03DA, 0x03DB], [0x03DC, 0x03DD], [0x03DE, 0x03DF], [0x03E0, 0x03E1], [0x03E2, 0x03E3], [0x03E4, 0x03E5], [0x03E6, 0x03E7], [0x03E8, 0x03E9], [0x03EA, 0x03EB], [0x03EC, 0x03ED], [0x03EE, 0x03EF], [0x03F4, 0x03B8], [0x03F7, 0x03F8], [0x03F9, 0x03F2], [0x03FA, 0x03FB], [0x0400, 0x0450], [0x0401, 0x0451], [0x0402, 0x0452], [0x0403, 0x0453], [0x0404, 0x0454], [0x0405, 0x0455], [0x0406, 0x0456], [0x0407, 0x0457], [0x0408, 0x0458], [0x0409, 0x0459], [0x040A, 0x045A], [0x040B, 0x045B], [0x040C, 0x045C], [0x040D, 0x045D], [0x040E, 0x045E], [0x040F, 0x045F], [0x0410, 0x0430], [0x0411, 0x0431], [0x0412, 0x0432], [0x0413, 0x0433], [0x0414, 0x0434], [0x0415, 0x0435], [0x0416, 0x0436], [0x0417, 0x0437], [0x0418, 0x0438], [0x0419, 0x0439], [0x041A, 0x043A], [0x041B, 0x043B], [0x041C, 0x043C], [0x041D, 0x043D], [0x041E, 0x043E], [0x041F, 0x043F], [0x0420, 0x0440], [0x0421, 0x0441], [0x0422, 0x0442], [0x0423, 0x0443], [0x0424, 0x0444], [0x0425, 0x0445], [0x0426, 0x0446], [0x0427, 0x0447], [0x0428, 0x0448], [0x0429, 0x0449], [0x042A, 0x044A], [0x042B, 0x044B], [0x042C, 0x044C], [0x042D, 0x044D], [0x042E, 0x044E], [0x042F, 0x044F], [0x0460, 0x0461], [0x0462, 0x0463], [0x0464, 0x0465], [0x0466, 0x0467], [0x0468, 0x0469], [0x046A, 0x046B], [0x046C, 0x046D], [0x046E, 0x046F], [0x0470, 0x0471], [0x0472, 0x0473], [0x0474, 0x0475], [0x0476, 0x0477], [0x0478, 0x0479], [0x047A, 0x047B], [0x047C, 0x047D], [0x047E, 0x047F], [0x0480, 0x0481], [0x048A, 0x048B], [0x048C, 0x048D], [0x048E, 0x048F], [0x0490, 0x0491], [0x0492, 0x0493], [0x0494, 0x0495], [0x0496, 0x0497], [0x0498, 0x0499], [0x049A, 0x049B], [0x049C, 0x049D], [0x049E, 0x049F], [0x04A0, 0x04A1], [0x04A2, 0x04A3], [0x04A4, 0x04A5], [0x04A6, 0x04A7], [0x04A8, 0x04A9], [0x04AA, 0x04AB], [0x04AC, 0x04AD], [0x04AE, 0x04AF], [0x04B0, 0x04B1], [0x04B2, 0x04B3], [0x04B4, 0x04B5], [0x04B6, 0x04B7], [0x04B8, 0x04B9], [0x04BA, 0x04BB], [0x04BC, 0x04BD], [0x04BE, 0x04BF], [0x04C1, 0x04C2], [0x04C3, 0x04C4], [0x04C5, 0x04C6], [0x04C7, 0x04C8], [0x04C9, 0x04CA], [0x04CB, 0x04CC], [0x04CD, 0x04CE], [0x04D0, 0x04D1], [0x04D2, 0x04D3], [0x04D4, 0x04D5], [0x04D6, 0x04D7], [0x04D8, 0x04D9], [0x04DA, 0x04DB], [0x04DC, 0x04DD], [0x04DE, 0x04DF], [0x04E0, 0x04E1], [0x04E2, 0x04E3], [0x04E4, 0x04E5], [0x04E6, 0x04E7], [0x04E8, 0x04E9], [0x04EA, 0x04EB], [0x04EC, 0x04ED], [0x04EE, 0x04EF], [0x04F0, 0x04F1], [0x04F2, 0x04F3], [0x04F4, 0x04F5], [0x04F6, 0x04F7], [0x04F8, 0x04F9], [0x0500, 0x0501], [0x0502, 0x0503], [0x0504, 0x0505], [0x0506, 0x0507], [0x0508, 0x0509], [0x050A, 0x050B], [0x050C, 0x050D], [0x050E, 0x050F], [0x0531, 0x0561], [0x0532, 0x0562], [0x0533, 0x0563], [0x0534, 0x0564], [0x0535, 0x0565], [0x0536, 0x0566], [0x0537, 0x0567], [0x0538, 0x0568], [0x0539, 0x0569], [0x053A, 0x056A], [0x053B, 0x056B], [0x053C, 0x056C], [0x053D, 0x056D], [0x053E, 0x056E], [0x053F, 0x056F], [0x0540, 0x0570], [0x0541, 0x0571], [0x0542, 0x0572], [0x0543, 0x0573], [0x0544, 0x0574], [0x0545, 0x0575], [0x0546, 0x0576], [0x0547, 0x0577], [0x0548, 0x0578], [0x0549, 0x0579], [0x054A, 0x057A], [0x054B, 0x057B], [0x054C, 0x057C], [0x054D, 0x057D], [0x054E, 0x057E], [0x054F, 0x057F], [0x0550, 0x0580], [0x0551, 0x0581], [0x0552, 0x0582], [0x0553, 0x0583], [0x0554, 0x0584], [0x0555, 0x0585], [0x0556, 0x0586], [0x10A0, 0x2D00], [0x10A1, 0x2D01], [0x10A2, 0x2D02], [0x10A3, 0x2D03], [0x10A4, 0x2D04], [0x10A5, 0x2D05], [0x10A6, 0x2D06], [0x10A7, 0x2D07], [0x10A8, 0x2D08], [0x10A9, 0x2D09], [0x10AA, 0x2D0A], [0x10AB, 0x2D0B], [0x10AC, 0x2D0C], [0x10AD, 0x2D0D], [0x10AE, 0x2D0E], [0x10AF, 0x2D0F], [0x10B0, 0x2D10], [0x10B1, 0x2D11], [0x10B2, 0x2D12], [0x10B3, 0x2D13], [0x10B4, 0x2D14], [0x10B5, 0x2D15], [0x10B6, 0x2D16], [0x10B7, 0x2D17], [0x10B8, 0x2D18], [0x10B9, 0x2D19], [0x10BA, 0x2D1A], [0x10BB, 0x2D1B], [0x10BC, 0x2D1C], [0x10BD, 0x2D1D], [0x10BE, 0x2D1E], [0x10BF, 0x2D1F], [0x10C0, 0x2D20], [0x10C1, 0x2D21], [0x10C2, 0x2D22], [0x10C3, 0x2D23], [0x10C4, 0x2D24], [0x10C5, 0x2D25], [0x1E00, 0x1E01], [0x1E02, 0x1E03], [0x1E04, 0x1E05], [0x1E06, 0x1E07], [0x1E08, 0x1E09], [0x1E0A, 0x1E0B], [0x1E0C, 0x1E0D], [0x1E0E, 0x1E0F], [0x1E10, 0x1E11], [0x1E12, 0x1E13], [0x1E14, 0x1E15], [0x1E16, 0x1E17], [0x1E18, 0x1E19], [0x1E1A, 0x1E1B], [0x1E1C, 0x1E1D], [0x1E1E, 0x1E1F], [0x1E20, 0x1E21], [0x1E22, 0x1E23], [0x1E24, 0x1E25], [0x1E26, 0x1E27], [0x1E28, 0x1E29], [0x1E2A, 0x1E2B], [0x1E2C, 0x1E2D], [0x1E2E, 0x1E2F], [0x1E30, 0x1E31], [0x1E32, 0x1E33], [0x1E34, 0x1E35], [0x1E36, 0x1E37], [0x1E38, 0x1E39], [0x1E3A, 0x1E3B], [0x1E3C, 0x1E3D], [0x1E3E, 0x1E3F], [0x1E40, 0x1E41], [0x1E42, 0x1E43], [0x1E44, 0x1E45], [0x1E46, 0x1E47], [0x1E48, 0x1E49], [0x1E4A, 0x1E4B], [0x1E4C, 0x1E4D], [0x1E4E, 0x1E4F], [0x1E50, 0x1E51], [0x1E52, 0x1E53], [0x1E54, 0x1E55], [0x1E56, 0x1E57], [0x1E58, 0x1E59], [0x1E5A, 0x1E5B], [0x1E5C, 0x1E5D], [0x1E5E, 0x1E5F], [0x1E60, 0x1E61], [0x1E62, 0x1E63], [0x1E64, 0x1E65], [0x1E66, 0x1E67], [0x1E68, 0x1E69], [0x1E6A, 0x1E6B], [0x1E6C, 0x1E6D], [0x1E6E, 0x1E6F], [0x1E70, 0x1E71], [0x1E72, 0x1E73], [0x1E74, 0x1E75], [0x1E76, 0x1E77], [0x1E78, 0x1E79], [0x1E7A, 0x1E7B], [0x1E7C, 0x1E7D], [0x1E7E, 0x1E7F], [0x1E80, 0x1E81], [0x1E82, 0x1E83], [0x1E84, 0x1E85], [0x1E86, 0x1E87], [0x1E88, 0x1E89], [0x1E8A, 0x1E8B], [0x1E8C, 0x1E8D], [0x1E8E, 0x1E8F], [0x1E90, 0x1E91], [0x1E92, 0x1E93], [0x1E94, 0x1E95], [0x1EA0, 0x1EA1], [0x1EA2, 0x1EA3], [0x1EA4, 0x1EA5], [0x1EA6, 0x1EA7], [0x1EA8, 0x1EA9], [0x1EAA, 0x1EAB], [0x1EAC, 0x1EAD], [0x1EAE, 0x1EAF], [0x1EB0, 0x1EB1], [0x1EB2, 0x1EB3], [0x1EB4, 0x1EB5], [0x1EB6, 0x1EB7], [0x1EB8, 0x1EB9], [0x1EBA, 0x1EBB], [0x1EBC, 0x1EBD], [0x1EBE, 0x1EBF], [0x1EC0, 0x1EC1], [0x1EC2, 0x1EC3], [0x1EC4, 0x1EC5], [0x1EC6, 0x1EC7], [0x1EC8, 0x1EC9], [0x1ECA, 0x1ECB], [0x1ECC, 0x1ECD], [0x1ECE, 0x1ECF], [0x1ED0, 0x1ED1], [0x1ED2, 0x1ED3], [0x1ED4, 0x1ED5], [0x1ED6, 0x1ED7], [0x1ED8, 0x1ED9], [0x1EDA, 0x1EDB], [0x1EDC, 0x1EDD], [0x1EDE, 0x1EDF], [0x1EE0, 0x1EE1], [0x1EE2, 0x1EE3], [0x1EE4, 0x1EE5], [0x1EE6, 0x1EE7], [0x1EE8, 0x1EE9], [0x1EEA, 0x1EEB], [0x1EEC, 0x1EED], [0x1EEE, 0x1EEF], [0x1EF0, 0x1EF1], [0x1EF2, 0x1EF3], [0x1EF4, 0x1EF5], [0x1EF6, 0x1EF7], [0x1EF8, 0x1EF9], [0x1F08, 0x1F00], [0x1F09, 0x1F01], [0x1F0A, 0x1F02], [0x1F0B, 0x1F03], [0x1F0C, 0x1F04], [0x1F0D, 0x1F05], [0x1F0E, 0x1F06], [0x1F0F, 0x1F07], [0x1F18, 0x1F10], [0x1F19, 0x1F11], [0x1F1A, 0x1F12], [0x1F1B, 0x1F13], [0x1F1C, 0x1F14], [0x1F1D, 0x1F15], [0x1F28, 0x1F20], [0x1F29, 0x1F21], [0x1F2A, 0x1F22], [0x1F2B, 0x1F23], [0x1F2C, 0x1F24], [0x1F2D, 0x1F25], [0x1F2E, 0x1F26], [0x1F2F, 0x1F27], [0x1F38, 0x1F30], [0x1F39, 0x1F31], [0x1F3A, 0x1F32], [0x1F3B, 0x1F33], [0x1F3C, 0x1F34], [0x1F3D, 0x1F35], [0x1F3E, 0x1F36], [0x1F3F, 0x1F37], [0x1F48, 0x1F40], [0x1F49, 0x1F41], [0x1F4A, 0x1F42], [0x1F4B, 0x1F43], [0x1F4C, 0x1F44], [0x1F4D, 0x1F45], [0x1F59, 0x1F51], [0x1F5B, 0x1F53], [0x1F5D, 0x1F55], [0x1F5F, 0x1F57], [0x1F68, 0x1F60], [0x1F69, 0x1F61], [0x1F6A, 0x1F62], [0x1F6B, 0x1F63], [0x1F6C, 0x1F64], [0x1F6D, 0x1F65], [0x1F6E, 0x1F66], [0x1F6F, 0x1F67], [0x1FB8, 0x1FB0], [0x1FB9, 0x1FB1], [0x1FBA, 0x1F70], [0x1FBB, 0x1F71], [0x1FC8, 0x1F72], [0x1FC9, 0x1F73], [0x1FCA, 0x1F74], [0x1FCB, 0x1F75], [0x1FD8, 0x1FD0], [0x1FD9, 0x1FD1], [0x1FDA, 0x1F76], [0x1FDB, 0x1F77], [0x1FE8, 0x1FE0], [0x1FE9, 0x1FE1], [0x1FEA, 0x1F7A], [0x1FEB, 0x1F7B], [0x1FEC, 0x1FE5], [0x1FF8, 0x1F78], [0x1FF9, 0x1F79], [0x1FFA, 0x1F7C], [0x1FFB, 0x1F7D], [0x2126, 0x03C9], [0x212A, 0x006B], [0x212B, 0x00E5], [0x2160, 0x2170], [0x2161, 0x2171], [0x2162, 0x2172], [0x2163, 0x2173], [0x2164, 0x2174], [0x2165, 0x2175], [0x2166, 0x2176], [0x2167, 0x2177], [0x2168, 0x2178], [0x2169, 0x2179], [0x216A, 0x217A], [0x216B, 0x217B], [0x216C, 0x217C], [0x216D, 0x217D], [0x216E, 0x217E], [0x216F, 0x217F], [0x24B6, 0x24D0], [0x24B7, 0x24D1], [0x24B8, 0x24D2], [0x24B9, 0x24D3], [0x24BA, 0x24D4], [0x24BB, 0x24D5], [0x24BC, 0x24D6], [0x24BD, 0x24D7], [0x24BE, 0x24D8], [0x24BF, 0x24D9], [0x24C0, 0x24DA], [0x24C1, 0x24DB], [0x24C2, 0x24DC], [0x24C3, 0x24DD], [0x24C4, 0x24DE], [0x24C5, 0x24DF], [0x24C6, 0x24E0], [0x24C7, 0x24E1], [0x24C8, 0x24E2], [0x24C9, 0x24E3], [0x24CA, 0x24E4], [0x24CB, 0x24E5], [0x24CC, 0x24E6], [0x24CD, 0x24E7], [0x24CE, 0x24E8], [0x24CF, 0x24E9], [0x2C00, 0x2C30], [0x2C01, 0x2C31], [0x2C02, 0x2C32], [0x2C03, 0x2C33], [0x2C04, 0x2C34], [0x2C05, 0x2C35], [0x2C06, 0x2C36], [0x2C07, 0x2C37], [0x2C08, 0x2C38], [0x2C09, 0x2C39], [0x2C0A, 0x2C3A], [0x2C0B, 0x2C3B], [0x2C0C, 0x2C3C], [0x2C0D, 0x2C3D], [0x2C0E, 0x2C3E], [0x2C0F, 0x2C3F], [0x2C10, 0x2C40], [0x2C11, 0x2C41], [0x2C12, 0x2C42], [0x2C13, 0x2C43], [0x2C14, 0x2C44], [0x2C15, 0x2C45], [0x2C16, 0x2C46], [0x2C17, 0x2C47], [0x2C18, 0x2C48], [0x2C19, 0x2C49], [0x2C1A, 0x2C4A], [0x2C1B, 0x2C4B], [0x2C1C, 0x2C4C], [0x2C1D, 0x2C4D], [0x2C1E, 0x2C4E], [0x2C1F, 0x2C4F], [0x2C20, 0x2C50], [0x2C21, 0x2C51], [0x2C22, 0x2C52], [0x2C23, 0x2C53], [0x2C24, 0x2C54], [0x2C25, 0x2C55], [0x2C26, 0x2C56], [0x2C27, 0x2C57], [0x2C28, 0x2C58], [0x2C29, 0x2C59], [0x2C2A, 0x2C5A], [0x2C2B, 0x2C5B], [0x2C2C, 0x2C5C], [0x2C2D, 0x2C5D], [0x2C2E, 0x2C5E], [0x2C80, 0x2C81], [0x2C82, 0x2C83], [0x2C84, 0x2C85], [0x2C86, 0x2C87], [0x2C88, 0x2C89], [0x2C8A, 0x2C8B], [0x2C8C, 0x2C8D], [0x2C8E, 0x2C8F], [0x2C90, 0x2C91], [0x2C92, 0x2C93], [0x2C94, 0x2C95], [0x2C96, 0x2C97], [0x2C98, 0x2C99], [0x2C9A, 0x2C9B], [0x2C9C, 0x2C9D], [0x2C9E, 0x2C9F], [0x2CA0, 0x2CA1], [0x2CA2, 0x2CA3], [0x2CA4, 0x2CA5], [0x2CA6, 0x2CA7], [0x2CA8, 0x2CA9], [0x2CAA, 0x2CAB], [0x2CAC, 0x2CAD], [0x2CAE, 0x2CAF], [0x2CB0, 0x2CB1], [0x2CB2, 0x2CB3], [0x2CB4, 0x2CB5], [0x2CB6, 0x2CB7], [0x2CB8, 0x2CB9], [0x2CBA, 0x2CBB], [0x2CBC, 0x2CBD], [0x2CBE, 0x2CBF], [0x2CC0, 0x2CC1], [0x2CC2, 0x2CC3], [0x2CC4, 0x2CC5], [0x2CC6, 0x2CC7], [0x2CC8, 0x2CC9], [0x2CCA, 0x2CCB], [0x2CCC, 0x2CCD], [0x2CCE, 0x2CCF], [0x2CD0, 0x2CD1], [0x2CD2, 0x2CD3], [0x2CD4, 0x2CD5], [0x2CD6, 0x2CD7], [0x2CD8, 0x2CD9], [0x2CDA, 0x2CDB], [0x2CDC, 0x2CDD], [0x2CDE, 0x2CDF], [0x2CE0, 0x2CE1], [0x2CE2, 0x2CE3], [0xFF21, 0xFF41], [0xFF22, 0xFF42], [0xFF23, 0xFF43], [0xFF24, 0xFF44], [0xFF25, 0xFF45], [0xFF26, 0xFF46], [0xFF27, 0xFF47], [0xFF28, 0xFF48], [0xFF29, 0xFF49], [0xFF2A, 0xFF4A], [0xFF2B, 0xFF4B], [0xFF2C, 0xFF4C], [0xFF2D, 0xFF4D], [0xFF2E, 0xFF4E], [0xFF2F, 0xFF4F], [0xFF30, 0xFF50], [0xFF31, 0xFF51], [0xFF32, 0xFF52], [0xFF33, 0xFF53], [0xFF34, 0xFF54], [0xFF35, 0xFF55], [0xFF36, 0xFF56], [0xFF37, 0xFF57], [0xFF38, 0xFF58], [0xFF39, 0xFF59], [0xFF3A, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerCase.length; index++) {
+ var capitalI = LowerCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.16_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.16_A2.js
new file mode 100644
index 000000000..4aae14fcb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.16_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A2;
+* @section: 15.5.4.16;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerSpecialCase = [["\u0130", "\u0069\u0307"], ["\u1F88", "\u1F80"], ["\u1F89", "\u1F81"], ["\u1F8A", "\u1F82"], ["\u1F8B", "\u1F83"], ["\u1F8C", "\u1F84"], ["\u1F8D", "\u1F85"], ["\u1F8E", "\u1F86"], ["\u1F8F", "\u1F87"], ["\u1F98", "\u1F90"], ["\u1F99", "\u1F91"], ["\u1F9A", "\u1F92"], ["\u1F9B", "\u1F93"], ["\u1F9C", "\u1F94"], ["\u1F9D", "\u1F95"], ["\u1F9E", "\u1F96"], ["\u1F9F", "\u1F97"], ["\u1FA8", "\u1FA0"], ["\u1FA9", "\u1FA1"], ["\u1FAA", "\u1FA2"], ["\u1FAB", "\u1FA3"], ["\u1FAC", "\u1FA4"], ["\u1FAD", "\u1FA5"], ["\u1FAE", "\u1FA6"], ["\u1FAF", "\u1FA7"], ["\u1FBC", "\u1FB3"], ["\u1FCC", "\u1FC3"], ["\u1FFC", "\u1FF3"], ["\u03A3", "\u03C2"], ["\u0049", "\u0069\u0307"], ["\u004A", "\u006A\u0307"], ["\u012E", "\u012F\u0307"], ["\u00CC", "\u0069\u0307\u0300"], ["\u00CD", "\u0069\u0307\u0301"], ["\u0128", "\u0069\u0307\u0303"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerSpecialCase.length; index++) {
+ var capitalI = LowerSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.18_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.18_A1.js
new file mode 100644
index 000000000..fb760b742
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.18_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1;
+* @section: 15.5.4.18;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperCase = [[0x0061, 0x0041], [0x0062, 0x0042], [0x0063, 0x0043], [0x0064, 0x0044], [0x0065, 0x0045], [0x0066, 0x0046], [0x0067, 0x0047], [0x0068, 0x0048], [0x006A, 0x004A], [0x006B, 0x004B], [0x006C, 0x004C], [0x006D, 0x004D], [0x006E, 0x004E], [0x006F, 0x004F], [0x0070, 0x0050], [0x0071, 0x0051], [0x0072, 0x0052], [0x0073, 0x0053], [0x0074, 0x0054], [0x0075, 0x0055], [0x0076, 0x0056], [0x0077, 0x0057], [0x0078, 0x0058], [0x0079, 0x0059], [0x007A, 0x005A], [0x00B5, 0x039C], [0x00E0, 0x00C0], [0x00E1, 0x00C1], [0x00E2, 0x00C2], [0x00E3, 0x00C3], [0x00E4, 0x00C4], [0x00E5, 0x00C5], [0x00E6, 0x00C6], [0x00E7, 0x00C7], [0x00E8, 0x00C8], [0x00E9, 0x00C9], [0x00EA, 0x00CA], [0x00EB, 0x00CB], [0x00EC, 0x00CC], [0x00ED, 0x00CD], [0x00EE, 0x00CE], [0x00EF, 0x00CF], [0x00F0, 0x00D0], [0x00F1, 0x00D1], [0x00F2, 0x00D2], [0x00F3, 0x00D3], [0x00F4, 0x00D4], [0x00F5, 0x00D5], [0x00F6, 0x00D6], [0x00F8, 0x00D8], [0x00F9, 0x00D9], [0x00FA, 0x00DA], [0x00FB, 0x00DB], [0x00FC, 0x00DC], [0x00FD, 0x00DD], [0x00FE, 0x00DE], [0x00FF, 0x0178], [0x0101, 0x0100], [0x0103, 0x0102], [0x0105, 0x0104], [0x0107, 0x0106], [0x0109, 0x0108], [0x010B, 0x010A], [0x010D, 0x010C], [0x010F, 0x010E], [0x0111, 0x0110], [0x0113, 0x0112], [0x0115, 0x0114], [0x0117, 0x0116], [0x0119, 0x0118], [0x011B, 0x011A], [0x011D, 0x011C], [0x011F, 0x011E], [0x0121, 0x0120], [0x0123, 0x0122], [0x0125, 0x0124], [0x0127, 0x0126], [0x0129, 0x0128], [0x012B, 0x012A], [0x012D, 0x012C], [0x012F, 0x012E], [0x0131, 0x0049], [0x0133, 0x0132], [0x0135, 0x0134], [0x0137, 0x0136], [0x013A, 0x0139], [0x013C, 0x013B], [0x013E, 0x013D], [0x0140, 0x013F], [0x0142, 0x0141], [0x0144, 0x0143], [0x0146, 0x0145], [0x0148, 0x0147], [0x014B, 0x014A], [0x014D, 0x014C], [0x014F, 0x014E], [0x0151, 0x0150], [0x0153, 0x0152], [0x0155, 0x0154], [0x0157, 0x0156], [0x0159, 0x0158], [0x015B, 0x015A], [0x015D, 0x015C], [0x015F, 0x015E], [0x0161, 0x0160], [0x0163, 0x0162], [0x0165, 0x0164], [0x0167, 0x0166], [0x0169, 0x0168], [0x016B, 0x016A], [0x016D, 0x016C], [0x016F, 0x016E], [0x0171, 0x0170], [0x0173, 0x0172], [0x0175, 0x0174], [0x0177, 0x0176], [0x017A, 0x0179], [0x017C, 0x017B], [0x017E, 0x017D], [0x017F, 0x0053], [0x0183, 0x0182], [0x0185, 0x0184], [0x0188, 0x0187], [0x018C, 0x018B], [0x0192, 0x0191], [0x0195, 0x01F6], [0x0199, 0x0198], [0x019A, 0x023D], [0x019E, 0x0220], [0x01A1, 0x01A0], [0x01A3, 0x01A2], [0x01A5, 0x01A4], [0x01A8, 0x01A7], [0x01AD, 0x01AC], [0x01B0, 0x01AF], [0x01B4, 0x01B3], [0x01B6, 0x01B5], [0x01B9, 0x01B8], [0x01BD, 0x01BC], [0x01BF, 0x01F7], [0x01C5, 0x01C4], [0x01C6, 0x01C4], [0x01C8, 0x01C7], [0x01C9, 0x01C7], [0x01CB, 0x01CA], [0x01CC, 0x01CA], [0x01CE, 0x01CD], [0x01D0, 0x01CF], [0x01D2, 0x01D1], [0x01D4, 0x01D3], [0x01D6, 0x01D5], [0x01D8, 0x01D7], [0x01DA, 0x01D9], [0x01DC, 0x01DB], [0x01DD, 0x018E], [0x01DF, 0x01DE], [0x01E1, 0x01E0], [0x01E3, 0x01E2], [0x01E5, 0x01E4], [0x01E7, 0x01E6], [0x01E9, 0x01E8], [0x01EB, 0x01EA], [0x01ED, 0x01EC], [0x01EF, 0x01EE], [0x01F2, 0x01F1], [0x01F3, 0x01F1], [0x01F5, 0x01F4], [0x01F9, 0x01F8], [0x01FB, 0x01FA], [0x01FD, 0x01FC], [0x01FF, 0x01FE], [0x0201, 0x0200], [0x0203, 0x0202], [0x0205, 0x0204], [0x0207, 0x0206], [0x0209, 0x0208], [0x020B, 0x020A], [0x020D, 0x020C], [0x020F, 0x020E], [0x0211, 0x0210], [0x0213, 0x0212], [0x0215, 0x0214], [0x0217, 0x0216], [0x0219, 0x0218], [0x021B, 0x021A], [0x021D, 0x021C], [0x021F, 0x021E], [0x0223, 0x0222], [0x0225, 0x0224], [0x0227, 0x0226], [0x0229, 0x0228], [0x022B, 0x022A], [0x022D, 0x022C], [0x022F, 0x022E], [0x0231, 0x0230], [0x0233, 0x0232], [0x023C, 0x023B], [0x0253, 0x0181], [0x0254, 0x0186], [0x0256, 0x0189], [0x0257, 0x018A], [0x0259, 0x018F], [0x025B, 0x0190], [0x0260, 0x0193], [0x0263, 0x0194], [0x0268, 0x0197], [0x0269, 0x0196], [0x026F, 0x019C], [0x0272, 0x019D], [0x0275, 0x019F], [0x0280, 0x01A6], [0x0283, 0x01A9], [0x0288, 0x01AE], [0x028A, 0x01B1], [0x028B, 0x01B2], [0x0292, 0x01B7], [0x0294, 0x0241], [0x0345, 0x0399], [0x03AC, 0x0386], [0x03AD, 0x0388], [0x03AE, 0x0389], [0x03AF, 0x038A], [0x03B1, 0x0391], [0x03B2, 0x0392], [0x03B3, 0x0393], [0x03B4, 0x0394], [0x03B5, 0x0395], [0x03B6, 0x0396], [0x03B7, 0x0397], [0x03B8, 0x0398], [0x03B9, 0x0399], [0x03BA, 0x039A], [0x03BB, 0x039B], [0x03BC, 0x039C], [0x03BD, 0x039D], [0x03BE, 0x039E], [0x03BF, 0x039F], [0x03C0, 0x03A0], [0x03C1, 0x03A1], [0x03C2, 0x03A3], [0x03C3, 0x03A3], [0x03C4, 0x03A4], [0x03C5, 0x03A5], [0x03C6, 0x03A6], [0x03C7, 0x03A7], [0x03C8, 0x03A8], [0x03C9, 0x03A9], [0x03CA, 0x03AA], [0x03CB, 0x03AB], [0x03CC, 0x038C], [0x03CD, 0x038E], [0x03CE, 0x038F], [0x03D0, 0x0392], [0x03D1, 0x0398], [0x03D5, 0x03A6], [0x03D6, 0x03A0], [0x03D9, 0x03D8], [0x03DB, 0x03DA], [0x03DD, 0x03DC], [0x03DF, 0x03DE], [0x03E1, 0x03E0], [0x03E3, 0x03E2], [0x03E5, 0x03E4], [0x03E7, 0x03E6], [0x03E9, 0x03E8], [0x03EB, 0x03EA], [0x03ED, 0x03EC], [0x03EF, 0x03EE], [0x03F0, 0x039A], [0x03F1, 0x03A1], [0x03F2, 0x03F9], [0x03F5, 0x0395], [0x03F8, 0x03F7], [0x03FB, 0x03FA], [0x0430, 0x0410], [0x0431, 0x0411], [0x0432, 0x0412], [0x0433, 0x0413], [0x0434, 0x0414], [0x0435, 0x0415], [0x0436, 0x0416], [0x0437, 0x0417], [0x0438, 0x0418], [0x0439, 0x0419], [0x043A, 0x041A], [0x043B, 0x041B], [0x043C, 0x041C], [0x043D, 0x041D], [0x043E, 0x041E], [0x043F, 0x041F], [0x0440, 0x0420], [0x0441, 0x0421], [0x0442, 0x0422], [0x0443, 0x0423], [0x0444, 0x0424], [0x0445, 0x0425], [0x0446, 0x0426], [0x0447, 0x0427], [0x0448, 0x0428], [0x0449, 0x0429], [0x044A, 0x042A], [0x044B, 0x042B], [0x044C, 0x042C], [0x044D, 0x042D], [0x044E, 0x042E], [0x044F, 0x042F], [0x0450, 0x0400], [0x0451, 0x0401], [0x0452, 0x0402], [0x0453, 0x0403], [0x0454, 0x0404], [0x0455, 0x0405], [0x0456, 0x0406], [0x0457, 0x0407], [0x0458, 0x0408], [0x0459, 0x0409], [0x045A, 0x040A], [0x045B, 0x040B], [0x045C, 0x040C], [0x045D, 0x040D], [0x045E, 0x040E], [0x045F, 0x040F], [0x0461, 0x0460], [0x0463, 0x0462], [0x0465, 0x0464], [0x0467, 0x0466], [0x0469, 0x0468], [0x046B, 0x046A], [0x046D, 0x046C], [0x046F, 0x046E], [0x0471, 0x0470], [0x0473, 0x0472], [0x0475, 0x0474], [0x0477, 0x0476], [0x0479, 0x0478], [0x047B, 0x047A], [0x047D, 0x047C], [0x047F, 0x047E], [0x0481, 0x0480], [0x048B, 0x048A], [0x048D, 0x048C], [0x048F, 0x048E], [0x0491, 0x0490], [0x0493, 0x0492], [0x0495, 0x0494], [0x0497, 0x0496], [0x0499, 0x0498], [0x049B, 0x049A], [0x049D, 0x049C], [0x049F, 0x049E], [0x04A1, 0x04A0], [0x04A3, 0x04A2], [0x04A5, 0x04A4], [0x04A7, 0x04A6], [0x04A9, 0x04A8], [0x04AB, 0x04AA], [0x04AD, 0x04AC], [0x04AF, 0x04AE], [0x04B1, 0x04B0], [0x04B3, 0x04B2], [0x04B5, 0x04B4], [0x04B7, 0x04B6], [0x04B9, 0x04B8], [0x04BB, 0x04BA], [0x04BD, 0x04BC], [0x04BF, 0x04BE], [0x04C2, 0x04C1], [0x04C4, 0x04C3], [0x04C6, 0x04C5], [0x04C8, 0x04C7], [0x04CA, 0x04C9], [0x04CC, 0x04CB], [0x04CE, 0x04CD], [0x04D1, 0x04D0], [0x04D3, 0x04D2], [0x04D5, 0x04D4], [0x04D7, 0x04D6], [0x04D9, 0x04D8], [0x04DB, 0x04DA], [0x04DD, 0x04DC], [0x04DF, 0x04DE], [0x04E1, 0x04E0], [0x04E3, 0x04E2], [0x04E5, 0x04E4], [0x04E7, 0x04E6], [0x04E9, 0x04E8], [0x04EB, 0x04EA], [0x04ED, 0x04EC], [0x04EF, 0x04EE], [0x04F1, 0x04F0], [0x04F3, 0x04F2], [0x04F5, 0x04F4], [0x04F7, 0x04F6], [0x04F9, 0x04F8], [0x0501, 0x0500], [0x0503, 0x0502], [0x0505, 0x0504], [0x0507, 0x0506], [0x0509, 0x0508], [0x050B, 0x050A], [0x050D, 0x050C], [0x050F, 0x050E], [0x0561, 0x0531], [0x0562, 0x0532], [0x0563, 0x0533], [0x0564, 0x0534], [0x0565, 0x0535], [0x0566, 0x0536], [0x0567, 0x0537], [0x0568, 0x0538], [0x0569, 0x0539], [0x056A, 0x053A], [0x056B, 0x053B], [0x056C, 0x053C], [0x056D, 0x053D], [0x056E, 0x053E], [0x056F, 0x053F], [0x0570, 0x0540], [0x0571, 0x0541], [0x0572, 0x0542], [0x0573, 0x0543], [0x0574, 0x0544], [0x0575, 0x0545], [0x0576, 0x0546], [0x0577, 0x0547], [0x0578, 0x0548], [0x0579, 0x0549], [0x057A, 0x054A], [0x057B, 0x054B], [0x057C, 0x054C], [0x057D, 0x054D], [0x057E, 0x054E], [0x057F, 0x054F], [0x0580, 0x0550], [0x0581, 0x0551], [0x0582, 0x0552], [0x0583, 0x0553], [0x0584, 0x0554], [0x0585, 0x0555], [0x0586, 0x0556], [0x1E01, 0x1E00], [0x1E03, 0x1E02], [0x1E05, 0x1E04], [0x1E07, 0x1E06], [0x1E09, 0x1E08], [0x1E0B, 0x1E0A], [0x1E0D, 0x1E0C], [0x1E0F, 0x1E0E], [0x1E11, 0x1E10], [0x1E13, 0x1E12], [0x1E15, 0x1E14], [0x1E17, 0x1E16], [0x1E19, 0x1E18], [0x1E1B, 0x1E1A], [0x1E1D, 0x1E1C], [0x1E1F, 0x1E1E], [0x1E21, 0x1E20], [0x1E23, 0x1E22], [0x1E25, 0x1E24], [0x1E27, 0x1E26], [0x1E29, 0x1E28], [0x1E2B, 0x1E2A], [0x1E2D, 0x1E2C], [0x1E2F, 0x1E2E], [0x1E31, 0x1E30], [0x1E33, 0x1E32], [0x1E35, 0x1E34], [0x1E37, 0x1E36], [0x1E39, 0x1E38], [0x1E3B, 0x1E3A], [0x1E3D, 0x1E3C], [0x1E3F, 0x1E3E], [0x1E41, 0x1E40], [0x1E43, 0x1E42], [0x1E45, 0x1E44], [0x1E47, 0x1E46], [0x1E49, 0x1E48], [0x1E4B, 0x1E4A], [0x1E4D, 0x1E4C], [0x1E4F, 0x1E4E], [0x1E51, 0x1E50], [0x1E53, 0x1E52], [0x1E55, 0x1E54], [0x1E57, 0x1E56], [0x1E59, 0x1E58], [0x1E5B, 0x1E5A], [0x1E5D, 0x1E5C], [0x1E5F, 0x1E5E], [0x1E61, 0x1E60], [0x1E63, 0x1E62], [0x1E65, 0x1E64], [0x1E67, 0x1E66], [0x1E69, 0x1E68], [0x1E6B, 0x1E6A], [0x1E6D, 0x1E6C], [0x1E6F, 0x1E6E], [0x1E71, 0x1E70], [0x1E73, 0x1E72], [0x1E75, 0x1E74], [0x1E77, 0x1E76], [0x1E79, 0x1E78], [0x1E7B, 0x1E7A], [0x1E7D, 0x1E7C], [0x1E7F, 0x1E7E], [0x1E81, 0x1E80], [0x1E83, 0x1E82], [0x1E85, 0x1E84], [0x1E87, 0x1E86], [0x1E89, 0x1E88], [0x1E8B, 0x1E8A], [0x1E8D, 0x1E8C], [0x1E8F, 0x1E8E], [0x1E91, 0x1E90], [0x1E93, 0x1E92], [0x1E95, 0x1E94], [0x1E9B, 0x1E60], [0x1EA1, 0x1EA0], [0x1EA3, 0x1EA2], [0x1EA5, 0x1EA4], [0x1EA7, 0x1EA6], [0x1EA9, 0x1EA8], [0x1EAB, 0x1EAA], [0x1EAD, 0x1EAC], [0x1EAF, 0x1EAE], [0x1EB1, 0x1EB0], [0x1EB3, 0x1EB2], [0x1EB5, 0x1EB4], [0x1EB7, 0x1EB6], [0x1EB9, 0x1EB8], [0x1EBB, 0x1EBA], [0x1EBD, 0x1EBC], [0x1EBF, 0x1EBE], [0x1EC1, 0x1EC0], [0x1EC3, 0x1EC2], [0x1EC5, 0x1EC4], [0x1EC7, 0x1EC6], [0x1EC9, 0x1EC8], [0x1ECB, 0x1ECA], [0x1ECD, 0x1ECC], [0x1ECF, 0x1ECE], [0x1ED1, 0x1ED0], [0x1ED3, 0x1ED2], [0x1ED5, 0x1ED4], [0x1ED7, 0x1ED6], [0x1ED9, 0x1ED8], [0x1EDB, 0x1EDA], [0x1EDD, 0x1EDC], [0x1EDF, 0x1EDE], [0x1EE1, 0x1EE0], [0x1EE3, 0x1EE2], [0x1EE5, 0x1EE4], [0x1EE7, 0x1EE6], [0x1EE9, 0x1EE8], [0x1EEB, 0x1EEA], [0x1EED, 0x1EEC], [0x1EEF, 0x1EEE], [0x1EF1, 0x1EF0], [0x1EF3, 0x1EF2], [0x1EF5, 0x1EF4], [0x1EF7, 0x1EF6], [0x1EF9, 0x1EF8], [0x1F00, 0x1F08], [0x1F01, 0x1F09], [0x1F02, 0x1F0A], [0x1F03, 0x1F0B], [0x1F04, 0x1F0C], [0x1F05, 0x1F0D], [0x1F06, 0x1F0E], [0x1F07, 0x1F0F], [0x1F10, 0x1F18], [0x1F11, 0x1F19], [0x1F12, 0x1F1A], [0x1F13, 0x1F1B], [0x1F14, 0x1F1C], [0x1F15, 0x1F1D], [0x1F20, 0x1F28], [0x1F21, 0x1F29], [0x1F22, 0x1F2A], [0x1F23, 0x1F2B], [0x1F24, 0x1F2C], [0x1F25, 0x1F2D], [0x1F26, 0x1F2E], [0x1F27, 0x1F2F], [0x1F30, 0x1F38], [0x1F31, 0x1F39], [0x1F32, 0x1F3A], [0x1F33, 0x1F3B], [0x1F34, 0x1F3C], [0x1F35, 0x1F3D], [0x1F36, 0x1F3E], [0x1F37, 0x1F3F], [0x1F40, 0x1F48], [0x1F41, 0x1F49], [0x1F42, 0x1F4A], [0x1F43, 0x1F4B], [0x1F44, 0x1F4C], [0x1F45, 0x1F4D], [0x1F51, 0x1F59], [0x1F53, 0x1F5B], [0x1F55, 0x1F5D], [0x1F57, 0x1F5F], [0x1F60, 0x1F68], [0x1F61, 0x1F69], [0x1F62, 0x1F6A], [0x1F63, 0x1F6B], [0x1F64, 0x1F6C], [0x1F65, 0x1F6D], [0x1F66, 0x1F6E], [0x1F67, 0x1F6F], [0x1F70, 0x1FBA], [0x1F71, 0x1FBB], [0x1F72, 0x1FC8], [0x1F73, 0x1FC9], [0x1F74, 0x1FCA], [0x1F75, 0x1FCB], [0x1F76, 0x1FDA], [0x1F77, 0x1FDB], [0x1F78, 0x1FF8], [0x1F79, 0x1FF9], [0x1F7A, 0x1FEA], [0x1F7B, 0x1FEB], [0x1F7C, 0x1FFA], [0x1F7D, 0x1FFB], [0x1FB0, 0x1FB8], [0x1FB1, 0x1FB9], [0x1FBE, 0x0399], [0x1FD0, 0x1FD8], [0x1FD1, 0x1FD9], [0x1FE0, 0x1FE8], [0x1FE1, 0x1FE9], [0x1FE5, 0x1FEC], [0x2170, 0x2160], [0x2171, 0x2161], [0x2172, 0x2162], [0x2173, 0x2163], [0x2174, 0x2164], [0x2175, 0x2165], [0x2176, 0x2166], [0x2177, 0x2167], [0x2178, 0x2168], [0x2179, 0x2169], [0x217A, 0x216A], [0x217B, 0x216B], [0x217C, 0x216C], [0x217D, 0x216D], [0x217E, 0x216E], [0x217F, 0x216F], [0x24D0, 0x24B6], [0x24D1, 0x24B7], [0x24D2, 0x24B8], [0x24D3, 0x24B9], [0x24D4, 0x24BA], [0x24D5, 0x24BB], [0x24D6, 0x24BC], [0x24D7, 0x24BD], [0x24D8, 0x24BE], [0x24D9, 0x24BF], [0x24DA, 0x24C0], [0x24DB, 0x24C1], [0x24DC, 0x24C2], [0x24DD, 0x24C3], [0x24DE, 0x24C4], [0x24DF, 0x24C5], [0x24E0, 0x24C6], [0x24E1, 0x24C7], [0x24E2, 0x24C8], [0x24E3, 0x24C9], [0x24E4, 0x24CA], [0x24E5, 0x24CB], [0x24E6, 0x24CC], [0x24E7, 0x24CD], [0x24E8, 0x24CE], [0x24E9, 0x24CF], [0x2C30, 0x2C00], [0x2C31, 0x2C01], [0x2C32, 0x2C02], [0x2C33, 0x2C03], [0x2C34, 0x2C04], [0x2C35, 0x2C05], [0x2C36, 0x2C06], [0x2C37, 0x2C07], [0x2C38, 0x2C08], [0x2C39, 0x2C09], [0x2C3A, 0x2C0A], [0x2C3B, 0x2C0B], [0x2C3C, 0x2C0C], [0x2C3D, 0x2C0D], [0x2C3E, 0x2C0E], [0x2C3F, 0x2C0F], [0x2C40, 0x2C10], [0x2C41, 0x2C11], [0x2C42, 0x2C12], [0x2C43, 0x2C13], [0x2C44, 0x2C14], [0x2C45, 0x2C15], [0x2C46, 0x2C16], [0x2C47, 0x2C17], [0x2C48, 0x2C18], [0x2C49, 0x2C19], [0x2C4A, 0x2C1A], [0x2C4B, 0x2C1B], [0x2C4C, 0x2C1C], [0x2C4D, 0x2C1D], [0x2C4E, 0x2C1E], [0x2C4F, 0x2C1F], [0x2C50, 0x2C20], [0x2C51, 0x2C21], [0x2C52, 0x2C22], [0x2C53, 0x2C23], [0x2C54, 0x2C24], [0x2C55, 0x2C25], [0x2C56, 0x2C26], [0x2C57, 0x2C27], [0x2C58, 0x2C28], [0x2C59, 0x2C29], [0x2C5A, 0x2C2A], [0x2C5B, 0x2C2B], [0x2C5C, 0x2C2C], [0x2C5D, 0x2C2D], [0x2C5E, 0x2C2E], [0x2C81, 0x2C80], [0x2C83, 0x2C82], [0x2C85, 0x2C84], [0x2C87, 0x2C86], [0x2C89, 0x2C88], [0x2C8B, 0x2C8A], [0x2C8D, 0x2C8C], [0x2C8F, 0x2C8E], [0x2C91, 0x2C90], [0x2C93, 0x2C92], [0x2C95, 0x2C94], [0x2C97, 0x2C96], [0x2C99, 0x2C98], [0x2C9B, 0x2C9A], [0x2C9D, 0x2C9C], [0x2C9F, 0x2C9E], [0x2CA1, 0x2CA0], [0x2CA3, 0x2CA2], [0x2CA5, 0x2CA4], [0x2CA7, 0x2CA6], [0x2CA9, 0x2CA8], [0x2CAB, 0x2CAA], [0x2CAD, 0x2CAC], [0x2CAF, 0x2CAE], [0x2CB1, 0x2CB0], [0x2CB3, 0x2CB2], [0x2CB5, 0x2CB4], [0x2CB7, 0x2CB6], [0x2CB9, 0x2CB8], [0x2CBB, 0x2CBA], [0x2CBD, 0x2CBC], [0x2CBF, 0x2CBE], [0x2CC1, 0x2CC0], [0x2CC3, 0x2CC2], [0x2CC5, 0x2CC4], [0x2CC7, 0x2CC6], [0x2CC9, 0x2CC8], [0x2CCB, 0x2CCA], [0x2CCD, 0x2CCC], [0x2CCF, 0x2CCE], [0x2CD1, 0x2CD0], [0x2CD3, 0x2CD2], [0x2CD5, 0x2CD4], [0x2CD7, 0x2CD6], [0x2CD9, 0x2CD8], [0x2CDB, 0x2CDA], [0x2CDD, 0x2CDC], [0x2CDF, 0x2CDE], [0x2CE1, 0x2CE0], [0x2CE3, 0x2CE2], [0x2D00, 0x10A0], [0x2D01, 0x10A1], [0x2D02, 0x10A2], [0x2D03, 0x10A3], [0x2D04, 0x10A4], [0x2D05, 0x10A5], [0x2D06, 0x10A6], [0x2D07, 0x10A7], [0x2D08, 0x10A8], [0x2D09, 0x10A9], [0x2D0A, 0x10AA], [0x2D0B, 0x10AB], [0x2D0C, 0x10AC], [0x2D0D, 0x10AD], [0x2D0E, 0x10AE], [0x2D0F, 0x10AF], [0x2D10, 0x10B0], [0x2D11, 0x10B1], [0x2D12, 0x10B2], [0x2D13, 0x10B3], [0x2D14, 0x10B4], [0x2D15, 0x10B5], [0x2D16, 0x10B6], [0x2D17, 0x10B7], [0x2D18, 0x10B8], [0x2D19, 0x10B9], [0x2D1A, 0x10BA], [0x2D1B, 0x10BB], [0x2D1C, 0x10BC], [0x2D1D, 0x10BD], [0x2D1E, 0x10BE], [0x2D1F, 0x10BF], [0x2D20, 0x10C0], [0x2D21, 0x10C1], [0x2D22, 0x10C2], [0x2D23, 0x10C3], [0x2D24, 0x10C4], [0x2D25, 0x10C5], [0xFF41, 0xFF21], [0xFF42, 0xFF22], [0xFF43, 0xFF23], [0xFF44, 0xFF24], [0xFF45, 0xFF25], [0xFF46, 0xFF26], [0xFF47, 0xFF27], [0xFF48, 0xFF28], [0xFF49, 0xFF29], [0xFF4A, 0xFF2A], [0xFF4B, 0xFF2B], [0xFF4C, 0xFF2C], [0xFF4D, 0xFF2D], [0xFF4E, 0xFF2E], [0xFF4F, 0xFF2F], [0xFF50, 0xFF30], [0xFF51, 0xFF31], [0xFF52, 0xFF32], [0xFF53, 0xFF33], [0xFF54, 0xFF34], [0xFF55, 0xFF35], [0xFF56, 0xFF36], [0xFF57, 0xFF37], [0xFF58, 0xFF38], [0xFF59, 0xFF39], [0xFF5A, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperCase.length; index++) {
+ var capitalI = UpperCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.18_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.18_A2.js
new file mode 100644
index 000000000..4dae31aaa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S15.5.4.18_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A2;
+* @section: 15.5.4.18;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperSpecialCase = [["\u00DF", "\u0053\u0053"], ["\uFB00", "\u0046\u0046"], ["\uFB01", "\u0046\u0049"], ["\uFB02", "\u0046\u004C"], ["\uFB03", "\u0046\u0046\u0049"], ["\uFB04", "\u0046\u0046\u004C"], ["\uFB05", "\u0053\u0054"], ["\uFB06", "\u0053\u0054"], ["\u0587", "\u0535\u0552"], ["\uFB13", "\u0544\u0546"], ["\uFB14", "\u0544\u0535"], ["\uFB15", "\u0544\u053B"], ["\uFB16", "\u054E\u0546"], ["\uFB17", "\u0544\u053D"], ["\u0149", "\u02BC\u004E"], ["\u0390", "\u0399\u0308\u0301"], ["\u03B0", "\u03A5\u0308\u0301"], ["\u01F0", "\u004A\u030C"], ["\u1E96", "\u0048\u0331"], ["\u1E97", "\u0054\u0308"], ["\u1E98", "\u0057\u030A"], ["\u1E99", "\u0059\u030A"], ["\u1E9A", "\u0041\u02BE"], ["\u1F50", "\u03A5\u0313"], ["\u1F52", "\u03A5\u0313\u0300"], ["\u1F54", "\u03A5\u0313\u0301"], ["\u1F56", "\u03A5\u0313\u0342"], ["\u1FB6", "\u0391\u0342"], ["\u1FC6", "\u0397\u0342"], ["\u1FD2", "\u0399\u0308\u0300"], ["\u1FD3", "\u0399\u0308\u0301"], ["\u1FD6", "\u0399\u0342"], ["\u1FD7", "\u0399\u0308\u0342"], ["\u1FE2", "\u03A5\u0308\u0300"], ["\u1FE3", "\u03A5\u0308\u0301"], ["\u1FE4", "\u03A1\u0313"], ["\u1FE6", "\u03A5\u0342"], ["\u1FE7", "\u03A5\u0308\u0342"], ["\u1FF6", "\u03A9\u0342"], ["\u1F80", "\u1F08\u0399"], ["\u1F81", "\u1F09\u0399"], ["\u1F82", "\u1F0A\u0399"], ["\u1F83", "\u1F0B\u0399"], ["\u1F84", "\u1F0C\u0399"], ["\u1F85", "\u1F0D\u0399"], ["\u1F86", "\u1F0E\u0399"], ["\u1F87", "\u1F0F\u0399"], ["\u1F88", "\u1F08\u0399"], ["\u1F89", "\u1F09\u0399"], ["\u1F8A", "\u1F0A\u0399"], ["\u1F8B", "\u1F0B\u0399"], ["\u1F8C", "\u1F0C\u0399"], ["\u1F8D", "\u1F0D\u0399"], ["\u1F8E", "\u1F0E\u0399"], ["\u1F8F", "\u1F0F\u0399"], ["\u1F90", "\u1F28\u0399"], ["\u1F91", "\u1F29\u0399"], ["\u1F92", "\u1F2A\u0399"], ["\u1F93", "\u1F2B\u0399"], ["\u1F94", "\u1F2C\u0399"], ["\u1F95", "\u1F2D\u0399"], ["\u1F96", "\u1F2E\u0399"], ["\u1F97", "\u1F2F\u0399"], ["\u1F98", "\u1F28\u0399"], ["\u1F99", "\u1F29\u0399"], ["\u1F9A", "\u1F2A\u0399"], ["\u1F9B", "\u1F2B\u0399"], ["\u1F9C", "\u1F2C\u0399"], ["\u1F9D", "\u1F2D\u0399"], ["\u1F9E", "\u1F2E\u0399"], ["\u1F9F", "\u1F2F\u0399"], ["\u1FA0", "\u1F68\u0399"], ["\u1FA1", "\u1F69\u0399"], ["\u1FA2", "\u1F6A\u0399"], ["\u1FA3", "\u1F6B\u0399"], ["\u1FA4", "\u1F6C\u0399"], ["\u1FA5", "\u1F6D\u0399"], ["\u1FA6", "\u1F6E\u0399"], ["\u1FA7", "\u1F6F\u0399"], ["\u1FA8", "\u1F68\u0399"], ["\u1FA9", "\u1F69\u0399"], ["\u1FAA", "\u1F6A\u0399"], ["\u1FAB", "\u1F6B\u0399"], ["\u1FAC", "\u1F6C\u0399"], ["\u1FAD", "\u1F6D\u0399"], ["\u1FAE", "\u1F6E\u0399"], ["\u1FAF", "\u1F6F\u0399"], ["\u1FB3", "\u0391\u0399"], ["\u1FBC", "\u0391\u0399"], ["\u1FC3", "\u0397\u0399"], ["\u1FCC", "\u0397\u0399"], ["\u1FF3", "\u03A9\u0399"], ["\u1FFC", "\u03A9\u0399"], ["\u1FB2", "\u1FBA\u0399"], ["\u1FB4", "\u0386\u0399"], ["\u1FC2", "\u1FCA\u0399"], ["\u1FC4", "\u0389\u0399"], ["\u1FF2", "\u1FFA\u0399"], ["\u1FF4", "\u038F\u0399"], ["\u1FB7", "\u0391\u0342\u0399"], ["\u1FC7", "\u0397\u0342\u0399"], ["\u1FF7", "\u03A9\u0342\u0399"], ["\u0069", "\u0130"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperSpecialCase.length; index++) {
+ var capitalI = UpperSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A1_T1.js
new file mode 100644
index 000000000..ef3da705d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A1_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A1_T1;
+ * @section: 7.1;
+ * @assertion: The format control character (Cf) can occur anywhere in the source text
+ * and these characters are removed before applying the lexical grammar;
+ * @description: Complex test with eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.1_T1.js
new file mode 100644
index 000000000..f9ef6f5ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = format + "a" + format + "b" + format;
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.1_T2.js
new file mode 100644
index 000000000..16d19a870
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = "' + format + 'a' + format + 'b' + format + '"');
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.2_T1.js
new file mode 100644
index 000000000..a8571f3fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = RegExp(format + "a" + format + "b" + format);
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.2_T2.js
new file mode 100644
index 000000000..011668f46
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.1_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = RegExp("' + format + 'a' + format + 'b' + format + '")');
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A1.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A1.6_T1.js
new file mode 100644
index 000000000..5a7da9bf6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A1.6_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.6_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: Any other Unicode "space separator" (category "Zs") between any two tokens is allowed;
+ * @description: Complex test with eval;
+*/
+
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A2.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A2.6_T1.js
new file mode 100644
index 000000000..3c9b51236
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A2.6_T1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.6_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: Any other Unicode "space separator" (category "Zs") within strings;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = "str" + format + "ing";
+ if (x !== "str" + format + "ing") {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A3.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A3.6_T1.js
new file mode 100644
index 000000000..3cf973648
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A3.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("//" + format + "single line" + format + "comment" + format + " x = 1;");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A4.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A4.6_T1.js
new file mode 100644
index 000000000..c7eacb73c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.2_A4.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("/*" + format + "multi line" + format + "comment" + format + "\n x = 1;*/");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T1.js
new file mode 100644
index 000000000..64ceaf23e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Uppercase letter (Lu).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2C00, 0x2C2E], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T2.js
new file mode 100644
index 000000000..1dc7bdea9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Lowercase letter (Ll).
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0250, 0x02AF], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x2C30, 0x2C5E], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T3.js
new file mode 100644
index 000000000..06e9329b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T3.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Titlecase letter (Lt).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T4.js
new file mode 100644
index 000000000..70cfe6286
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T4.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Modifier letter (Lm).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T5.js
new file mode 100644
index 000000000..73dac0b38
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T5.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T5;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Other letter (Lo).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097D, 0x097D], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T6.js
new file mode 100644
index 000000000..d51df6879
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.1_T6.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T6;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Letter number (Nl);
+*/
+
+//CHECK
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T1.js
new file mode 100644
index 000000000..c19f6308e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mn").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1DC0, 0x1DC3], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EB], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T2.js
new file mode 100644
index 000000000..c28a92b16
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mc").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T3.js
new file mode 100644
index 000000000..0b5620ef4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T3.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeDigit ("Nd").
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T4.js
new file mode 100644
index 000000000..d1f641833
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A1.4_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeConnectorPunctuation ("Pc") without $.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ if (hex !== "0078") {
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.2_T1.js
new file mode 100644
index 000000000..676d94346
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Non-spacing mark (Mn).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1DC0, 0x1DC3], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EB], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.2_T2.js
new file mode 100644
index 000000000..f1bbb3e01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Combining spacing mark (Mc).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.3.js
new file mode 100644
index 000000000..34b5a4c3d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.3.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.3;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeDigit (any character in the Unicode categories "Decimal Number (Nd)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.4.js
new file mode 100644
index 000000000..e7b636a2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A2.4.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.4;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeConnectorPunctuation (any character in the Unicode categories "Connector Punctuation (Pc)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A3.1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A3.1.js
new file mode 100644
index 000000000..77733d7f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A3.1.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must contain only IdentifierPart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2C00, 0x2C2E], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0250, 0x02AF], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x2C30, 0x2C5E], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097D, 0x097D], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1DC0, 0x1DC3], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EB], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = "$" + String.fromCharCode(index) + "1";
+ eval("var " + identifier + "=1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A3.2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A3.2.js
new file mode 100644
index 000000000..0bb17e512
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A3.2.js
@@ -0,0 +1,124 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin only IdentifierStart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2C00, 0x2C2E], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0250, 0x02AF], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x2C30, 0x2C5E], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097D, 0x097D], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = String.fromCharCode(index);
+ eval("var " + identifier + "=1");
+ if (errorCount === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T1.js
new file mode 100644
index 000000000..01b1ba0ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T1.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.
+
+/**
+ * @name: S7.6_A5.2_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lu.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2C00, 0x2C2E], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T10.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T10.js
new file mode 100644
index 000000000..596e2b172
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T10.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.
+
+/**
+ * @name: S7.6_A5.2_T10;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Pc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T2.js
new file mode 100644
index 000000000..aacb12dd4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_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.
+
+/**
+ * @name: S7.6_A5.2_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Ll.
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0250, 0x02AF], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x2C30, 0x2C5E], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T3.js
new file mode 100644
index 000000000..e880bd673
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T3.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T3;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lt.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T4.js
new file mode 100644
index 000000000..0bded023b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T4.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T4;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lm.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T5.js
new file mode 100644
index 000000000..61054d6b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T5.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.
+
+/**
+ * @name: S7.6_A5.2_T5;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lo.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097D, 0x097D], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T6.js
new file mode 100644
index 000000000..4e1ae9dc9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T6.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.
+
+/**
+ * @name: S7.6_A5.2_T6;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nl.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T7.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T7.js
new file mode 100644
index 000000000..857a9f64d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T7.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.
+
+/**
+ * @name: S7.6_A5.2_T7;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mn.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1DC0, 0x1DC3], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EB], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T8.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T8.js
new file mode 100644
index 000000000..f1c188d54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T8.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.
+
+/**
+ * @name: S7.6_A5.2_T8;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T9.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T9.js
new file mode 100644
index 000000000..14ff48cc5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.2_T9.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.
+
+/**
+ * @name: S7.6_A5.2_T9;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nd.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.3_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.3_T1.js
new file mode 100644
index 000000000..8f5359e97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.3_T1.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2C00, 0x2C2E], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0250, 0x02AF], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x2C30, 0x2C5E], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097D, 0x097D], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1DC0, 0x1DC3], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EB], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier = "$\\u" + hex + "1";
+ eval(identifier + " = 1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.3_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.3_T2.js
new file mode 100644
index 000000000..4bb66ac0c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_410/S7.6_A5.3_T2.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2131], [0x2133, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2C00, 0x2C2E], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0250, 0x02AF], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CE], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x2C30, 0x2C5E], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097D, 0x097D], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2183], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05B9], [0x05BB, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1DC0, 0x1DC3], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EB], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier1 = "$" + String.fromCharCode(index) + "1";
+ var identifier2 = "$\\u" + hex + "1";
+ eval(identifier1 + " = 1");
+ eval(identifier1 + " === " + identifier2);
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.10.2.12_A1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.10.2.12_A1_T6.js
new file mode 100644
index 000000000..dc246a4c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.10.2.12_A1_T6.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A1_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+ * @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+ * containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_s = /\s/;
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ var str = String.fromCharCode(indexJ);
+ var arr = regexp_s.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.10.2.12_A2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.10.2.12_A2_T6.js
new file mode 100644
index 000000000..f2b2bc0e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.10.2.12_A2_T6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A2_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_S = /\S/;
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ if (regexp_S.exec(String.fromCharCode(indexJ)) !== null) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.16_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.16_A1.js
new file mode 100644
index 000000000..c758e7b15
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.16_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1;
+* @section: 15.5.4.16;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerCase = [[0x0041, 0x0061], [0x0042, 0x0062], [0x0043, 0x0063], [0x0044, 0x0064], [0x0045, 0x0065], [0x0046, 0x0066], [0x0047, 0x0067], [0x0048, 0x0068], [0x004B, 0x006B], [0x004C, 0x006C], [0x004D, 0x006D], [0x004E, 0x006E], [0x004F, 0x006F], [0x0050, 0x0070], [0x0051, 0x0071], [0x0052, 0x0072], [0x0053, 0x0073], [0x0054, 0x0074], [0x0055, 0x0075], [0x0056, 0x0076], [0x0057, 0x0077], [0x0058, 0x0078], [0x0059, 0x0079], [0x005A, 0x007A], [0x00C0, 0x00E0], [0x00C1, 0x00E1], [0x00C2, 0x00E2], [0x00C3, 0x00E3], [0x00C4, 0x00E4], [0x00C5, 0x00E5], [0x00C6, 0x00E6], [0x00C7, 0x00E7], [0x00C8, 0x00E8], [0x00C9, 0x00E9], [0x00CA, 0x00EA], [0x00CB, 0x00EB], [0x00CE, 0x00EE], [0x00CF, 0x00EF], [0x00D0, 0x00F0], [0x00D1, 0x00F1], [0x00D2, 0x00F2], [0x00D3, 0x00F3], [0x00D4, 0x00F4], [0x00D5, 0x00F5], [0x00D6, 0x00F6], [0x00D8, 0x00F8], [0x00D9, 0x00F9], [0x00DA, 0x00FA], [0x00DB, 0x00FB], [0x00DC, 0x00FC], [0x00DD, 0x00FD], [0x00DE, 0x00FE], [0x0100, 0x0101], [0x0102, 0x0103], [0x0104, 0x0105], [0x0106, 0x0107], [0x0108, 0x0109], [0x010A, 0x010B], [0x010C, 0x010D], [0x010E, 0x010F], [0x0110, 0x0111], [0x0112, 0x0113], [0x0114, 0x0115], [0x0116, 0x0117], [0x0118, 0x0119], [0x011A, 0x011B], [0x011C, 0x011D], [0x011E, 0x011F], [0x0120, 0x0121], [0x0122, 0x0123], [0x0124, 0x0125], [0x0126, 0x0127], [0x012A, 0x012B], [0x012C, 0x012D], [0x0132, 0x0133], [0x0134, 0x0135], [0x0136, 0x0137], [0x0139, 0x013A], [0x013B, 0x013C], [0x013D, 0x013E], [0x013F, 0x0140], [0x0141, 0x0142], [0x0143, 0x0144], [0x0145, 0x0146], [0x0147, 0x0148], [0x014A, 0x014B], [0x014C, 0x014D], [0x014E, 0x014F], [0x0150, 0x0151], [0x0152, 0x0153], [0x0154, 0x0155], [0x0156, 0x0157], [0x0158, 0x0159], [0x015A, 0x015B], [0x015C, 0x015D], [0x015E, 0x015F], [0x0160, 0x0161], [0x0162, 0x0163], [0x0164, 0x0165], [0x0166, 0x0167], [0x0168, 0x0169], [0x016A, 0x016B], [0x016C, 0x016D], [0x016E, 0x016F], [0x0170, 0x0171], [0x0172, 0x0173], [0x0174, 0x0175], [0x0176, 0x0177], [0x0178, 0x00FF], [0x0179, 0x017A], [0x017B, 0x017C], [0x017D, 0x017E], [0x0181, 0x0253], [0x0182, 0x0183], [0x0184, 0x0185], [0x0186, 0x0254], [0x0187, 0x0188], [0x0189, 0x0256], [0x018A, 0x0257], [0x018B, 0x018C], [0x018E, 0x01DD], [0x018F, 0x0259], [0x0190, 0x025B], [0x0191, 0x0192], [0x0193, 0x0260], [0x0194, 0x0263], [0x0196, 0x0269], [0x0197, 0x0268], [0x0198, 0x0199], [0x019C, 0x026F], [0x019D, 0x0272], [0x019F, 0x0275], [0x01A0, 0x01A1], [0x01A2, 0x01A3], [0x01A4, 0x01A5], [0x01A6, 0x0280], [0x01A7, 0x01A8], [0x01A9, 0x0283], [0x01AC, 0x01AD], [0x01AE, 0x0288], [0x01AF, 0x01B0], [0x01B1, 0x028A], [0x01B2, 0x028B], [0x01B3, 0x01B4], [0x01B5, 0x01B6], [0x01B7, 0x0292], [0x01B8, 0x01B9], [0x01BC, 0x01BD], [0x01C4, 0x01C6], [0x01C5, 0x01C6], [0x01C7, 0x01C9], [0x01C8, 0x01C9], [0x01CA, 0x01CC], [0x01CB, 0x01CC], [0x01CD, 0x01CE], [0x01CF, 0x01D0], [0x01D1, 0x01D2], [0x01D3, 0x01D4], [0x01D5, 0x01D6], [0x01D7, 0x01D8], [0x01D9, 0x01DA], [0x01DB, 0x01DC], [0x01DE, 0x01DF], [0x01E0, 0x01E1], [0x01E2, 0x01E3], [0x01E4, 0x01E5], [0x01E6, 0x01E7], [0x01E8, 0x01E9], [0x01EA, 0x01EB], [0x01EC, 0x01ED], [0x01EE, 0x01EF], [0x01F1, 0x01F3], [0x01F2, 0x01F3], [0x01F4, 0x01F5], [0x01F6, 0x0195], [0x01F7, 0x01BF], [0x01F8, 0x01F9], [0x01FA, 0x01FB], [0x01FC, 0x01FD], [0x01FE, 0x01FF], [0x0200, 0x0201], [0x0202, 0x0203], [0x0204, 0x0205], [0x0206, 0x0207], [0x0208, 0x0209], [0x020A, 0x020B], [0x020C, 0x020D], [0x020E, 0x020F], [0x0210, 0x0211], [0x0212, 0x0213], [0x0214, 0x0215], [0x0216, 0x0217], [0x0218, 0x0219], [0x021A, 0x021B], [0x021C, 0x021D], [0x021E, 0x021F], [0x0220, 0x019E], [0x0222, 0x0223], [0x0224, 0x0225], [0x0226, 0x0227], [0x0228, 0x0229], [0x022A, 0x022B], [0x022C, 0x022D], [0x022E, 0x022F], [0x0230, 0x0231], [0x0232, 0x0233], [0x023A, 0x2C65], [0x023B, 0x023C], [0x023D, 0x019A], [0x023E, 0x2C66], [0x0241, 0x0242], [0x0243, 0x0180], [0x0244, 0x0289], [0x0245, 0x028C], [0x0246, 0x0247], [0x0248, 0x0249], [0x024A, 0x024B], [0x024C, 0x024D], [0x024E, 0x024F], [0x0386, 0x03AC], [0x0388, 0x03AD], [0x0389, 0x03AE], [0x038A, 0x03AF], [0x038C, 0x03CC], [0x038E, 0x03CD], [0x038F, 0x03CE], [0x0391, 0x03B1], [0x0392, 0x03B2], [0x0393, 0x03B3], [0x0394, 0x03B4], [0x0395, 0x03B5], [0x0396, 0x03B6], [0x0397, 0x03B7], [0x0398, 0x03B8], [0x0399, 0x03B9], [0x039A, 0x03BA], [0x039B, 0x03BB], [0x039C, 0x03BC], [0x039D, 0x03BD], [0x039E, 0x03BE], [0x039F, 0x03BF], [0x03A0, 0x03C0], [0x03A1, 0x03C1], [0x03A4, 0x03C4], [0x03A5, 0x03C5], [0x03A6, 0x03C6], [0x03A7, 0x03C7], [0x03A8, 0x03C8], [0x03A9, 0x03C9], [0x03AA, 0x03CA], [0x03AB, 0x03CB], [0x03D8, 0x03D9], [0x03DA, 0x03DB], [0x03DC, 0x03DD], [0x03DE, 0x03DF], [0x03E0, 0x03E1], [0x03E2, 0x03E3], [0x03E4, 0x03E5], [0x03E6, 0x03E7], [0x03E8, 0x03E9], [0x03EA, 0x03EB], [0x03EC, 0x03ED], [0x03EE, 0x03EF], [0x03F4, 0x03B8], [0x03F7, 0x03F8], [0x03F9, 0x03F2], [0x03FA, 0x03FB], [0x03FD, 0x037B], [0x03FE, 0x037C], [0x03FF, 0x037D], [0x0400, 0x0450], [0x0401, 0x0451], [0x0402, 0x0452], [0x0403, 0x0453], [0x0404, 0x0454], [0x0405, 0x0455], [0x0406, 0x0456], [0x0407, 0x0457], [0x0408, 0x0458], [0x0409, 0x0459], [0x040A, 0x045A], [0x040B, 0x045B], [0x040C, 0x045C], [0x040D, 0x045D], [0x040E, 0x045E], [0x040F, 0x045F], [0x0410, 0x0430], [0x0411, 0x0431], [0x0412, 0x0432], [0x0413, 0x0433], [0x0414, 0x0434], [0x0415, 0x0435], [0x0416, 0x0436], [0x0417, 0x0437], [0x0418, 0x0438], [0x0419, 0x0439], [0x041A, 0x043A], [0x041B, 0x043B], [0x041C, 0x043C], [0x041D, 0x043D], [0x041E, 0x043E], [0x041F, 0x043F], [0x0420, 0x0440], [0x0421, 0x0441], [0x0422, 0x0442], [0x0423, 0x0443], [0x0424, 0x0444], [0x0425, 0x0445], [0x0426, 0x0446], [0x0427, 0x0447], [0x0428, 0x0448], [0x0429, 0x0449], [0x042A, 0x044A], [0x042B, 0x044B], [0x042C, 0x044C], [0x042D, 0x044D], [0x042E, 0x044E], [0x042F, 0x044F], [0x0460, 0x0461], [0x0462, 0x0463], [0x0464, 0x0465], [0x0466, 0x0467], [0x0468, 0x0469], [0x046A, 0x046B], [0x046C, 0x046D], [0x046E, 0x046F], [0x0470, 0x0471], [0x0472, 0x0473], [0x0474, 0x0475], [0x0476, 0x0477], [0x0478, 0x0479], [0x047A, 0x047B], [0x047C, 0x047D], [0x047E, 0x047F], [0x0480, 0x0481], [0x048A, 0x048B], [0x048C, 0x048D], [0x048E, 0x048F], [0x0490, 0x0491], [0x0492, 0x0493], [0x0494, 0x0495], [0x0496, 0x0497], [0x0498, 0x0499], [0x049A, 0x049B], [0x049C, 0x049D], [0x049E, 0x049F], [0x04A0, 0x04A1], [0x04A2, 0x04A3], [0x04A4, 0x04A5], [0x04A6, 0x04A7], [0x04A8, 0x04A9], [0x04AA, 0x04AB], [0x04AC, 0x04AD], [0x04AE, 0x04AF], [0x04B0, 0x04B1], [0x04B2, 0x04B3], [0x04B4, 0x04B5], [0x04B6, 0x04B7], [0x04B8, 0x04B9], [0x04BA, 0x04BB], [0x04BC, 0x04BD], [0x04BE, 0x04BF], [0x04C0, 0x04CF], [0x04C1, 0x04C2], [0x04C3, 0x04C4], [0x04C5, 0x04C6], [0x04C7, 0x04C8], [0x04C9, 0x04CA], [0x04CB, 0x04CC], [0x04CD, 0x04CE], [0x04D0, 0x04D1], [0x04D2, 0x04D3], [0x04D4, 0x04D5], [0x04D6, 0x04D7], [0x04D8, 0x04D9], [0x04DA, 0x04DB], [0x04DC, 0x04DD], [0x04DE, 0x04DF], [0x04E0, 0x04E1], [0x04E2, 0x04E3], [0x04E4, 0x04E5], [0x04E6, 0x04E7], [0x04E8, 0x04E9], [0x04EA, 0x04EB], [0x04EC, 0x04ED], [0x04EE, 0x04EF], [0x04F0, 0x04F1], [0x04F2, 0x04F3], [0x04F4, 0x04F5], [0x04F6, 0x04F7], [0x04F8, 0x04F9], [0x04FA, 0x04FB], [0x04FC, 0x04FD], [0x04FE, 0x04FF], [0x0500, 0x0501], [0x0502, 0x0503], [0x0504, 0x0505], [0x0506, 0x0507], [0x0508, 0x0509], [0x050A, 0x050B], [0x050C, 0x050D], [0x050E, 0x050F], [0x0510, 0x0511], [0x0512, 0x0513], [0x0531, 0x0561], [0x0532, 0x0562], [0x0533, 0x0563], [0x0534, 0x0564], [0x0535, 0x0565], [0x0536, 0x0566], [0x0537, 0x0567], [0x0538, 0x0568], [0x0539, 0x0569], [0x053A, 0x056A], [0x053B, 0x056B], [0x053C, 0x056C], [0x053D, 0x056D], [0x053E, 0x056E], [0x053F, 0x056F], [0x0540, 0x0570], [0x0541, 0x0571], [0x0542, 0x0572], [0x0543, 0x0573], [0x0544, 0x0574], [0x0545, 0x0575], [0x0546, 0x0576], [0x0547, 0x0577], [0x0548, 0x0578], [0x0549, 0x0579], [0x054A, 0x057A], [0x054B, 0x057B], [0x054C, 0x057C], [0x054D, 0x057D], [0x054E, 0x057E], [0x054F, 0x057F], [0x0550, 0x0580], [0x0551, 0x0581], [0x0552, 0x0582], [0x0553, 0x0583], [0x0554, 0x0584], [0x0555, 0x0585], [0x0556, 0x0586], [0x10A0, 0x2D00], [0x10A1, 0x2D01], [0x10A2, 0x2D02], [0x10A3, 0x2D03], [0x10A4, 0x2D04], [0x10A5, 0x2D05], [0x10A6, 0x2D06], [0x10A7, 0x2D07], [0x10A8, 0x2D08], [0x10A9, 0x2D09], [0x10AA, 0x2D0A], [0x10AB, 0x2D0B], [0x10AC, 0x2D0C], [0x10AD, 0x2D0D], [0x10AE, 0x2D0E], [0x10AF, 0x2D0F], [0x10B0, 0x2D10], [0x10B1, 0x2D11], [0x10B2, 0x2D12], [0x10B3, 0x2D13], [0x10B4, 0x2D14], [0x10B5, 0x2D15], [0x10B6, 0x2D16], [0x10B7, 0x2D17], [0x10B8, 0x2D18], [0x10B9, 0x2D19], [0x10BA, 0x2D1A], [0x10BB, 0x2D1B], [0x10BC, 0x2D1C], [0x10BD, 0x2D1D], [0x10BE, 0x2D1E], [0x10BF, 0x2D1F], [0x10C0, 0x2D20], [0x10C1, 0x2D21], [0x10C2, 0x2D22], [0x10C3, 0x2D23], [0x10C4, 0x2D24], [0x10C5, 0x2D25], [0x1E00, 0x1E01], [0x1E02, 0x1E03], [0x1E04, 0x1E05], [0x1E06, 0x1E07], [0x1E08, 0x1E09], [0x1E0A, 0x1E0B], [0x1E0C, 0x1E0D], [0x1E0E, 0x1E0F], [0x1E10, 0x1E11], [0x1E12, 0x1E13], [0x1E14, 0x1E15], [0x1E16, 0x1E17], [0x1E18, 0x1E19], [0x1E1A, 0x1E1B], [0x1E1C, 0x1E1D], [0x1E1E, 0x1E1F], [0x1E20, 0x1E21], [0x1E22, 0x1E23], [0x1E24, 0x1E25], [0x1E26, 0x1E27], [0x1E28, 0x1E29], [0x1E2A, 0x1E2B], [0x1E2C, 0x1E2D], [0x1E2E, 0x1E2F], [0x1E30, 0x1E31], [0x1E32, 0x1E33], [0x1E34, 0x1E35], [0x1E36, 0x1E37], [0x1E38, 0x1E39], [0x1E3A, 0x1E3B], [0x1E3C, 0x1E3D], [0x1E3E, 0x1E3F], [0x1E40, 0x1E41], [0x1E42, 0x1E43], [0x1E44, 0x1E45], [0x1E46, 0x1E47], [0x1E48, 0x1E49], [0x1E4A, 0x1E4B], [0x1E4C, 0x1E4D], [0x1E4E, 0x1E4F], [0x1E50, 0x1E51], [0x1E52, 0x1E53], [0x1E54, 0x1E55], [0x1E56, 0x1E57], [0x1E58, 0x1E59], [0x1E5A, 0x1E5B], [0x1E5C, 0x1E5D], [0x1E5E, 0x1E5F], [0x1E60, 0x1E61], [0x1E62, 0x1E63], [0x1E64, 0x1E65], [0x1E66, 0x1E67], [0x1E68, 0x1E69], [0x1E6A, 0x1E6B], [0x1E6C, 0x1E6D], [0x1E6E, 0x1E6F], [0x1E70, 0x1E71], [0x1E72, 0x1E73], [0x1E74, 0x1E75], [0x1E76, 0x1E77], [0x1E78, 0x1E79], [0x1E7A, 0x1E7B], [0x1E7C, 0x1E7D], [0x1E7E, 0x1E7F], [0x1E80, 0x1E81], [0x1E82, 0x1E83], [0x1E84, 0x1E85], [0x1E86, 0x1E87], [0x1E88, 0x1E89], [0x1E8A, 0x1E8B], [0x1E8C, 0x1E8D], [0x1E8E, 0x1E8F], [0x1E90, 0x1E91], [0x1E92, 0x1E93], [0x1E94, 0x1E95], [0x1EA0, 0x1EA1], [0x1EA2, 0x1EA3], [0x1EA4, 0x1EA5], [0x1EA6, 0x1EA7], [0x1EA8, 0x1EA9], [0x1EAA, 0x1EAB], [0x1EAC, 0x1EAD], [0x1EAE, 0x1EAF], [0x1EB0, 0x1EB1], [0x1EB2, 0x1EB3], [0x1EB4, 0x1EB5], [0x1EB6, 0x1EB7], [0x1EB8, 0x1EB9], [0x1EBA, 0x1EBB], [0x1EBC, 0x1EBD], [0x1EBE, 0x1EBF], [0x1EC0, 0x1EC1], [0x1EC2, 0x1EC3], [0x1EC4, 0x1EC5], [0x1EC6, 0x1EC7], [0x1EC8, 0x1EC9], [0x1ECA, 0x1ECB], [0x1ECC, 0x1ECD], [0x1ECE, 0x1ECF], [0x1ED0, 0x1ED1], [0x1ED2, 0x1ED3], [0x1ED4, 0x1ED5], [0x1ED6, 0x1ED7], [0x1ED8, 0x1ED9], [0x1EDA, 0x1EDB], [0x1EDC, 0x1EDD], [0x1EDE, 0x1EDF], [0x1EE0, 0x1EE1], [0x1EE2, 0x1EE3], [0x1EE4, 0x1EE5], [0x1EE6, 0x1EE7], [0x1EE8, 0x1EE9], [0x1EEA, 0x1EEB], [0x1EEC, 0x1EED], [0x1EEE, 0x1EEF], [0x1EF0, 0x1EF1], [0x1EF2, 0x1EF3], [0x1EF4, 0x1EF5], [0x1EF6, 0x1EF7], [0x1EF8, 0x1EF9], [0x1F08, 0x1F00], [0x1F09, 0x1F01], [0x1F0A, 0x1F02], [0x1F0B, 0x1F03], [0x1F0C, 0x1F04], [0x1F0D, 0x1F05], [0x1F0E, 0x1F06], [0x1F0F, 0x1F07], [0x1F18, 0x1F10], [0x1F19, 0x1F11], [0x1F1A, 0x1F12], [0x1F1B, 0x1F13], [0x1F1C, 0x1F14], [0x1F1D, 0x1F15], [0x1F28, 0x1F20], [0x1F29, 0x1F21], [0x1F2A, 0x1F22], [0x1F2B, 0x1F23], [0x1F2C, 0x1F24], [0x1F2D, 0x1F25], [0x1F2E, 0x1F26], [0x1F2F, 0x1F27], [0x1F38, 0x1F30], [0x1F39, 0x1F31], [0x1F3A, 0x1F32], [0x1F3B, 0x1F33], [0x1F3C, 0x1F34], [0x1F3D, 0x1F35], [0x1F3E, 0x1F36], [0x1F3F, 0x1F37], [0x1F48, 0x1F40], [0x1F49, 0x1F41], [0x1F4A, 0x1F42], [0x1F4B, 0x1F43], [0x1F4C, 0x1F44], [0x1F4D, 0x1F45], [0x1F59, 0x1F51], [0x1F5B, 0x1F53], [0x1F5D, 0x1F55], [0x1F5F, 0x1F57], [0x1F68, 0x1F60], [0x1F69, 0x1F61], [0x1F6A, 0x1F62], [0x1F6B, 0x1F63], [0x1F6C, 0x1F64], [0x1F6D, 0x1F65], [0x1F6E, 0x1F66], [0x1F6F, 0x1F67], [0x1FB8, 0x1FB0], [0x1FB9, 0x1FB1], [0x1FBA, 0x1F70], [0x1FBB, 0x1F71], [0x1FC8, 0x1F72], [0x1FC9, 0x1F73], [0x1FCA, 0x1F74], [0x1FCB, 0x1F75], [0x1FD8, 0x1FD0], [0x1FD9, 0x1FD1], [0x1FDA, 0x1F76], [0x1FDB, 0x1F77], [0x1FE8, 0x1FE0], [0x1FE9, 0x1FE1], [0x1FEA, 0x1F7A], [0x1FEB, 0x1F7B], [0x1FEC, 0x1FE5], [0x1FF8, 0x1F78], [0x1FF9, 0x1F79], [0x1FFA, 0x1F7C], [0x1FFB, 0x1F7D], [0x2126, 0x03C9], [0x212A, 0x006B], [0x212B, 0x00E5], [0x2132, 0x214E], [0x2160, 0x2170], [0x2161, 0x2171], [0x2162, 0x2172], [0x2163, 0x2173], [0x2164, 0x2174], [0x2165, 0x2175], [0x2166, 0x2176], [0x2167, 0x2177], [0x2168, 0x2178], [0x2169, 0x2179], [0x216A, 0x217A], [0x216B, 0x217B], [0x216C, 0x217C], [0x216D, 0x217D], [0x216E, 0x217E], [0x216F, 0x217F], [0x2183, 0x2184], [0x24B6, 0x24D0], [0x24B7, 0x24D1], [0x24B8, 0x24D2], [0x24B9, 0x24D3], [0x24BA, 0x24D4], [0x24BB, 0x24D5], [0x24BC, 0x24D6], [0x24BD, 0x24D7], [0x24BE, 0x24D8], [0x24BF, 0x24D9], [0x24C0, 0x24DA], [0x24C1, 0x24DB], [0x24C2, 0x24DC], [0x24C3, 0x24DD], [0x24C4, 0x24DE], [0x24C5, 0x24DF], [0x24C6, 0x24E0], [0x24C7, 0x24E1], [0x24C8, 0x24E2], [0x24C9, 0x24E3], [0x24CA, 0x24E4], [0x24CB, 0x24E5], [0x24CC, 0x24E6], [0x24CD, 0x24E7], [0x24CE, 0x24E8], [0x24CF, 0x24E9], [0x2C00, 0x2C30], [0x2C01, 0x2C31], [0x2C02, 0x2C32], [0x2C03, 0x2C33], [0x2C04, 0x2C34], [0x2C05, 0x2C35], [0x2C06, 0x2C36], [0x2C07, 0x2C37], [0x2C08, 0x2C38], [0x2C09, 0x2C39], [0x2C0A, 0x2C3A], [0x2C0B, 0x2C3B], [0x2C0C, 0x2C3C], [0x2C0D, 0x2C3D], [0x2C0E, 0x2C3E], [0x2C0F, 0x2C3F], [0x2C10, 0x2C40], [0x2C11, 0x2C41], [0x2C12, 0x2C42], [0x2C13, 0x2C43], [0x2C14, 0x2C44], [0x2C15, 0x2C45], [0x2C16, 0x2C46], [0x2C17, 0x2C47], [0x2C18, 0x2C48], [0x2C19, 0x2C49], [0x2C1A, 0x2C4A], [0x2C1B, 0x2C4B], [0x2C1C, 0x2C4C], [0x2C1D, 0x2C4D], [0x2C1E, 0x2C4E], [0x2C1F, 0x2C4F], [0x2C20, 0x2C50], [0x2C21, 0x2C51], [0x2C22, 0x2C52], [0x2C23, 0x2C53], [0x2C24, 0x2C54], [0x2C25, 0x2C55], [0x2C26, 0x2C56], [0x2C27, 0x2C57], [0x2C28, 0x2C58], [0x2C29, 0x2C59], [0x2C2A, 0x2C5A], [0x2C2B, 0x2C5B], [0x2C2C, 0x2C5C], [0x2C2D, 0x2C5D], [0x2C2E, 0x2C5E], [0x2C60, 0x2C61], [0x2C62, 0x026B], [0x2C63, 0x1D7D], [0x2C64, 0x027D], [0x2C67, 0x2C68], [0x2C69, 0x2C6A], [0x2C6B, 0x2C6C], [0x2C75, 0x2C76], [0x2C80, 0x2C81], [0x2C82, 0x2C83], [0x2C84, 0x2C85], [0x2C86, 0x2C87], [0x2C88, 0x2C89], [0x2C8A, 0x2C8B], [0x2C8C, 0x2C8D], [0x2C8E, 0x2C8F], [0x2C90, 0x2C91], [0x2C92, 0x2C93], [0x2C94, 0x2C95], [0x2C96, 0x2C97], [0x2C98, 0x2C99], [0x2C9A, 0x2C9B], [0x2C9C, 0x2C9D], [0x2C9E, 0x2C9F], [0x2CA0, 0x2CA1], [0x2CA2, 0x2CA3], [0x2CA4, 0x2CA5], [0x2CA6, 0x2CA7], [0x2CA8, 0x2CA9], [0x2CAA, 0x2CAB], [0x2CAC, 0x2CAD], [0x2CAE, 0x2CAF], [0x2CB0, 0x2CB1], [0x2CB2, 0x2CB3], [0x2CB4, 0x2CB5], [0x2CB6, 0x2CB7], [0x2CB8, 0x2CB9], [0x2CBA, 0x2CBB], [0x2CBC, 0x2CBD], [0x2CBE, 0x2CBF], [0x2CC0, 0x2CC1], [0x2CC2, 0x2CC3], [0x2CC4, 0x2CC5], [0x2CC6, 0x2CC7], [0x2CC8, 0x2CC9], [0x2CCA, 0x2CCB], [0x2CCC, 0x2CCD], [0x2CCE, 0x2CCF], [0x2CD0, 0x2CD1], [0x2CD2, 0x2CD3], [0x2CD4, 0x2CD5], [0x2CD6, 0x2CD7], [0x2CD8, 0x2CD9], [0x2CDA, 0x2CDB], [0x2CDC, 0x2CDD], [0x2CDE, 0x2CDF], [0x2CE0, 0x2CE1], [0x2CE2, 0x2CE3], [0xFF21, 0xFF41], [0xFF22, 0xFF42], [0xFF23, 0xFF43], [0xFF24, 0xFF44], [0xFF25, 0xFF45], [0xFF26, 0xFF46], [0xFF27, 0xFF47], [0xFF28, 0xFF48], [0xFF29, 0xFF49], [0xFF2A, 0xFF4A], [0xFF2B, 0xFF4B], [0xFF2C, 0xFF4C], [0xFF2D, 0xFF4D], [0xFF2E, 0xFF4E], [0xFF2F, 0xFF4F], [0xFF30, 0xFF50], [0xFF31, 0xFF51], [0xFF32, 0xFF52], [0xFF33, 0xFF53], [0xFF34, 0xFF54], [0xFF35, 0xFF55], [0xFF36, 0xFF56], [0xFF37, 0xFF57], [0xFF38, 0xFF58], [0xFF39, 0xFF59], [0xFF3A, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerCase.length; index++) {
+ var capitalI = LowerCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.16_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.16_A2.js
new file mode 100644
index 000000000..4aae14fcb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.16_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A2;
+* @section: 15.5.4.16;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerSpecialCase = [["\u0130", "\u0069\u0307"], ["\u1F88", "\u1F80"], ["\u1F89", "\u1F81"], ["\u1F8A", "\u1F82"], ["\u1F8B", "\u1F83"], ["\u1F8C", "\u1F84"], ["\u1F8D", "\u1F85"], ["\u1F8E", "\u1F86"], ["\u1F8F", "\u1F87"], ["\u1F98", "\u1F90"], ["\u1F99", "\u1F91"], ["\u1F9A", "\u1F92"], ["\u1F9B", "\u1F93"], ["\u1F9C", "\u1F94"], ["\u1F9D", "\u1F95"], ["\u1F9E", "\u1F96"], ["\u1F9F", "\u1F97"], ["\u1FA8", "\u1FA0"], ["\u1FA9", "\u1FA1"], ["\u1FAA", "\u1FA2"], ["\u1FAB", "\u1FA3"], ["\u1FAC", "\u1FA4"], ["\u1FAD", "\u1FA5"], ["\u1FAE", "\u1FA6"], ["\u1FAF", "\u1FA7"], ["\u1FBC", "\u1FB3"], ["\u1FCC", "\u1FC3"], ["\u1FFC", "\u1FF3"], ["\u03A3", "\u03C2"], ["\u0049", "\u0069\u0307"], ["\u004A", "\u006A\u0307"], ["\u012E", "\u012F\u0307"], ["\u00CC", "\u0069\u0307\u0300"], ["\u00CD", "\u0069\u0307\u0301"], ["\u0128", "\u0069\u0307\u0303"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerSpecialCase.length; index++) {
+ var capitalI = LowerSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.18_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.18_A1.js
new file mode 100644
index 000000000..9b8673432
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.18_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1;
+* @section: 15.5.4.18;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperCase = [[0x0061, 0x0041], [0x0062, 0x0042], [0x0063, 0x0043], [0x0064, 0x0044], [0x0065, 0x0045], [0x0066, 0x0046], [0x0067, 0x0047], [0x0068, 0x0048], [0x006A, 0x004A], [0x006B, 0x004B], [0x006C, 0x004C], [0x006D, 0x004D], [0x006E, 0x004E], [0x006F, 0x004F], [0x0070, 0x0050], [0x0071, 0x0051], [0x0072, 0x0052], [0x0073, 0x0053], [0x0074, 0x0054], [0x0075, 0x0055], [0x0076, 0x0056], [0x0077, 0x0057], [0x0078, 0x0058], [0x0079, 0x0059], [0x007A, 0x005A], [0x00B5, 0x039C], [0x00E0, 0x00C0], [0x00E1, 0x00C1], [0x00E2, 0x00C2], [0x00E3, 0x00C3], [0x00E4, 0x00C4], [0x00E5, 0x00C5], [0x00E6, 0x00C6], [0x00E7, 0x00C7], [0x00E8, 0x00C8], [0x00E9, 0x00C9], [0x00EA, 0x00CA], [0x00EB, 0x00CB], [0x00EC, 0x00CC], [0x00ED, 0x00CD], [0x00EE, 0x00CE], [0x00EF, 0x00CF], [0x00F0, 0x00D0], [0x00F1, 0x00D1], [0x00F2, 0x00D2], [0x00F3, 0x00D3], [0x00F4, 0x00D4], [0x00F5, 0x00D5], [0x00F6, 0x00D6], [0x00F8, 0x00D8], [0x00F9, 0x00D9], [0x00FA, 0x00DA], [0x00FB, 0x00DB], [0x00FC, 0x00DC], [0x00FD, 0x00DD], [0x00FE, 0x00DE], [0x00FF, 0x0178], [0x0101, 0x0100], [0x0103, 0x0102], [0x0105, 0x0104], [0x0107, 0x0106], [0x0109, 0x0108], [0x010B, 0x010A], [0x010D, 0x010C], [0x010F, 0x010E], [0x0111, 0x0110], [0x0113, 0x0112], [0x0115, 0x0114], [0x0117, 0x0116], [0x0119, 0x0118], [0x011B, 0x011A], [0x011D, 0x011C], [0x011F, 0x011E], [0x0121, 0x0120], [0x0123, 0x0122], [0x0125, 0x0124], [0x0127, 0x0126], [0x0129, 0x0128], [0x012B, 0x012A], [0x012D, 0x012C], [0x012F, 0x012E], [0x0131, 0x0049], [0x0133, 0x0132], [0x0135, 0x0134], [0x0137, 0x0136], [0x013A, 0x0139], [0x013C, 0x013B], [0x013E, 0x013D], [0x0140, 0x013F], [0x0142, 0x0141], [0x0144, 0x0143], [0x0146, 0x0145], [0x0148, 0x0147], [0x014B, 0x014A], [0x014D, 0x014C], [0x014F, 0x014E], [0x0151, 0x0150], [0x0153, 0x0152], [0x0155, 0x0154], [0x0157, 0x0156], [0x0159, 0x0158], [0x015B, 0x015A], [0x015D, 0x015C], [0x015F, 0x015E], [0x0161, 0x0160], [0x0163, 0x0162], [0x0165, 0x0164], [0x0167, 0x0166], [0x0169, 0x0168], [0x016B, 0x016A], [0x016D, 0x016C], [0x016F, 0x016E], [0x0171, 0x0170], [0x0173, 0x0172], [0x0175, 0x0174], [0x0177, 0x0176], [0x017A, 0x0179], [0x017C, 0x017B], [0x017E, 0x017D], [0x017F, 0x0053], [0x0180, 0x0243], [0x0183, 0x0182], [0x0185, 0x0184], [0x0188, 0x0187], [0x018C, 0x018B], [0x0192, 0x0191], [0x0195, 0x01F6], [0x0199, 0x0198], [0x019A, 0x023D], [0x019E, 0x0220], [0x01A1, 0x01A0], [0x01A3, 0x01A2], [0x01A5, 0x01A4], [0x01A8, 0x01A7], [0x01AD, 0x01AC], [0x01B0, 0x01AF], [0x01B4, 0x01B3], [0x01B6, 0x01B5], [0x01B9, 0x01B8], [0x01BD, 0x01BC], [0x01BF, 0x01F7], [0x01C5, 0x01C4], [0x01C6, 0x01C4], [0x01C8, 0x01C7], [0x01C9, 0x01C7], [0x01CB, 0x01CA], [0x01CC, 0x01CA], [0x01CE, 0x01CD], [0x01D0, 0x01CF], [0x01D2, 0x01D1], [0x01D4, 0x01D3], [0x01D6, 0x01D5], [0x01D8, 0x01D7], [0x01DA, 0x01D9], [0x01DC, 0x01DB], [0x01DD, 0x018E], [0x01DF, 0x01DE], [0x01E1, 0x01E0], [0x01E3, 0x01E2], [0x01E5, 0x01E4], [0x01E7, 0x01E6], [0x01E9, 0x01E8], [0x01EB, 0x01EA], [0x01ED, 0x01EC], [0x01EF, 0x01EE], [0x01F2, 0x01F1], [0x01F3, 0x01F1], [0x01F5, 0x01F4], [0x01F9, 0x01F8], [0x01FB, 0x01FA], [0x01FD, 0x01FC], [0x01FF, 0x01FE], [0x0201, 0x0200], [0x0203, 0x0202], [0x0205, 0x0204], [0x0207, 0x0206], [0x0209, 0x0208], [0x020B, 0x020A], [0x020D, 0x020C], [0x020F, 0x020E], [0x0211, 0x0210], [0x0213, 0x0212], [0x0215, 0x0214], [0x0217, 0x0216], [0x0219, 0x0218], [0x021B, 0x021A], [0x021D, 0x021C], [0x021F, 0x021E], [0x0223, 0x0222], [0x0225, 0x0224], [0x0227, 0x0226], [0x0229, 0x0228], [0x022B, 0x022A], [0x022D, 0x022C], [0x022F, 0x022E], [0x0231, 0x0230], [0x0233, 0x0232], [0x023C, 0x023B], [0x0242, 0x0241], [0x0247, 0x0246], [0x0249, 0x0248], [0x024B, 0x024A], [0x024D, 0x024C], [0x024F, 0x024E], [0x0253, 0x0181], [0x0254, 0x0186], [0x0256, 0x0189], [0x0257, 0x018A], [0x0259, 0x018F], [0x025B, 0x0190], [0x0260, 0x0193], [0x0263, 0x0194], [0x0268, 0x0197], [0x0269, 0x0196], [0x026B, 0x2C62], [0x026F, 0x019C], [0x0272, 0x019D], [0x0275, 0x019F], [0x027D, 0x2C64], [0x0280, 0x01A6], [0x0283, 0x01A9], [0x0288, 0x01AE], [0x0289, 0x0244], [0x028A, 0x01B1], [0x028B, 0x01B2], [0x028C, 0x0245], [0x0292, 0x01B7], [0x0345, 0x0399], [0x037B, 0x03FD], [0x037C, 0x03FE], [0x037D, 0x03FF], [0x03AC, 0x0386], [0x03AD, 0x0388], [0x03AE, 0x0389], [0x03AF, 0x038A], [0x03B1, 0x0391], [0x03B2, 0x0392], [0x03B3, 0x0393], [0x03B4, 0x0394], [0x03B5, 0x0395], [0x03B6, 0x0396], [0x03B7, 0x0397], [0x03B8, 0x0398], [0x03B9, 0x0399], [0x03BA, 0x039A], [0x03BB, 0x039B], [0x03BC, 0x039C], [0x03BD, 0x039D], [0x03BE, 0x039E], [0x03BF, 0x039F], [0x03C0, 0x03A0], [0x03C1, 0x03A1], [0x03C2, 0x03A3], [0x03C3, 0x03A3], [0x03C4, 0x03A4], [0x03C5, 0x03A5], [0x03C6, 0x03A6], [0x03C7, 0x03A7], [0x03C8, 0x03A8], [0x03C9, 0x03A9], [0x03CA, 0x03AA], [0x03CB, 0x03AB], [0x03CC, 0x038C], [0x03CD, 0x038E], [0x03CE, 0x038F], [0x03D0, 0x0392], [0x03D1, 0x0398], [0x03D5, 0x03A6], [0x03D6, 0x03A0], [0x03D9, 0x03D8], [0x03DB, 0x03DA], [0x03DD, 0x03DC], [0x03DF, 0x03DE], [0x03E1, 0x03E0], [0x03E3, 0x03E2], [0x03E5, 0x03E4], [0x03E7, 0x03E6], [0x03E9, 0x03E8], [0x03EB, 0x03EA], [0x03ED, 0x03EC], [0x03EF, 0x03EE], [0x03F0, 0x039A], [0x03F1, 0x03A1], [0x03F2, 0x03F9], [0x03F5, 0x0395], [0x03F8, 0x03F7], [0x03FB, 0x03FA], [0x0430, 0x0410], [0x0431, 0x0411], [0x0432, 0x0412], [0x0433, 0x0413], [0x0434, 0x0414], [0x0435, 0x0415], [0x0436, 0x0416], [0x0437, 0x0417], [0x0438, 0x0418], [0x0439, 0x0419], [0x043A, 0x041A], [0x043B, 0x041B], [0x043C, 0x041C], [0x043D, 0x041D], [0x043E, 0x041E], [0x043F, 0x041F], [0x0440, 0x0420], [0x0441, 0x0421], [0x0442, 0x0422], [0x0443, 0x0423], [0x0444, 0x0424], [0x0445, 0x0425], [0x0446, 0x0426], [0x0447, 0x0427], [0x0448, 0x0428], [0x0449, 0x0429], [0x044A, 0x042A], [0x044B, 0x042B], [0x044C, 0x042C], [0x044D, 0x042D], [0x044E, 0x042E], [0x044F, 0x042F], [0x0450, 0x0400], [0x0451, 0x0401], [0x0452, 0x0402], [0x0453, 0x0403], [0x0454, 0x0404], [0x0455, 0x0405], [0x0456, 0x0406], [0x0457, 0x0407], [0x0458, 0x0408], [0x0459, 0x0409], [0x045A, 0x040A], [0x045B, 0x040B], [0x045C, 0x040C], [0x045D, 0x040D], [0x045E, 0x040E], [0x045F, 0x040F], [0x0461, 0x0460], [0x0463, 0x0462], [0x0465, 0x0464], [0x0467, 0x0466], [0x0469, 0x0468], [0x046B, 0x046A], [0x046D, 0x046C], [0x046F, 0x046E], [0x0471, 0x0470], [0x0473, 0x0472], [0x0475, 0x0474], [0x0477, 0x0476], [0x0479, 0x0478], [0x047B, 0x047A], [0x047D, 0x047C], [0x047F, 0x047E], [0x0481, 0x0480], [0x048B, 0x048A], [0x048D, 0x048C], [0x048F, 0x048E], [0x0491, 0x0490], [0x0493, 0x0492], [0x0495, 0x0494], [0x0497, 0x0496], [0x0499, 0x0498], [0x049B, 0x049A], [0x049D, 0x049C], [0x049F, 0x049E], [0x04A1, 0x04A0], [0x04A3, 0x04A2], [0x04A5, 0x04A4], [0x04A7, 0x04A6], [0x04A9, 0x04A8], [0x04AB, 0x04AA], [0x04AD, 0x04AC], [0x04AF, 0x04AE], [0x04B1, 0x04B0], [0x04B3, 0x04B2], [0x04B5, 0x04B4], [0x04B7, 0x04B6], [0x04B9, 0x04B8], [0x04BB, 0x04BA], [0x04BD, 0x04BC], [0x04BF, 0x04BE], [0x04C2, 0x04C1], [0x04C4, 0x04C3], [0x04C6, 0x04C5], [0x04C8, 0x04C7], [0x04CA, 0x04C9], [0x04CC, 0x04CB], [0x04CE, 0x04CD], [0x04CF, 0x04C0], [0x04D1, 0x04D0], [0x04D3, 0x04D2], [0x04D5, 0x04D4], [0x04D7, 0x04D6], [0x04D9, 0x04D8], [0x04DB, 0x04DA], [0x04DD, 0x04DC], [0x04DF, 0x04DE], [0x04E1, 0x04E0], [0x04E3, 0x04E2], [0x04E5, 0x04E4], [0x04E7, 0x04E6], [0x04E9, 0x04E8], [0x04EB, 0x04EA], [0x04ED, 0x04EC], [0x04EF, 0x04EE], [0x04F1, 0x04F0], [0x04F3, 0x04F2], [0x04F5, 0x04F4], [0x04F7, 0x04F6], [0x04F9, 0x04F8], [0x04FB, 0x04FA], [0x04FD, 0x04FC], [0x04FF, 0x04FE], [0x0501, 0x0500], [0x0503, 0x0502], [0x0505, 0x0504], [0x0507, 0x0506], [0x0509, 0x0508], [0x050B, 0x050A], [0x050D, 0x050C], [0x050F, 0x050E], [0x0511, 0x0510], [0x0513, 0x0512], [0x0561, 0x0531], [0x0562, 0x0532], [0x0563, 0x0533], [0x0564, 0x0534], [0x0565, 0x0535], [0x0566, 0x0536], [0x0567, 0x0537], [0x0568, 0x0538], [0x0569, 0x0539], [0x056A, 0x053A], [0x056B, 0x053B], [0x056C, 0x053C], [0x056D, 0x053D], [0x056E, 0x053E], [0x056F, 0x053F], [0x0570, 0x0540], [0x0571, 0x0541], [0x0572, 0x0542], [0x0573, 0x0543], [0x0574, 0x0544], [0x0575, 0x0545], [0x0576, 0x0546], [0x0577, 0x0547], [0x0578, 0x0548], [0x0579, 0x0549], [0x057A, 0x054A], [0x057B, 0x054B], [0x057C, 0x054C], [0x057D, 0x054D], [0x057E, 0x054E], [0x057F, 0x054F], [0x0580, 0x0550], [0x0581, 0x0551], [0x0582, 0x0552], [0x0583, 0x0553], [0x0584, 0x0554], [0x0585, 0x0555], [0x0586, 0x0556], [0x1D7D, 0x2C63], [0x1E01, 0x1E00], [0x1E03, 0x1E02], [0x1E05, 0x1E04], [0x1E07, 0x1E06], [0x1E09, 0x1E08], [0x1E0B, 0x1E0A], [0x1E0D, 0x1E0C], [0x1E0F, 0x1E0E], [0x1E11, 0x1E10], [0x1E13, 0x1E12], [0x1E15, 0x1E14], [0x1E17, 0x1E16], [0x1E19, 0x1E18], [0x1E1B, 0x1E1A], [0x1E1D, 0x1E1C], [0x1E1F, 0x1E1E], [0x1E21, 0x1E20], [0x1E23, 0x1E22], [0x1E25, 0x1E24], [0x1E27, 0x1E26], [0x1E29, 0x1E28], [0x1E2B, 0x1E2A], [0x1E2D, 0x1E2C], [0x1E2F, 0x1E2E], [0x1E31, 0x1E30], [0x1E33, 0x1E32], [0x1E35, 0x1E34], [0x1E37, 0x1E36], [0x1E39, 0x1E38], [0x1E3B, 0x1E3A], [0x1E3D, 0x1E3C], [0x1E3F, 0x1E3E], [0x1E41, 0x1E40], [0x1E43, 0x1E42], [0x1E45, 0x1E44], [0x1E47, 0x1E46], [0x1E49, 0x1E48], [0x1E4B, 0x1E4A], [0x1E4D, 0x1E4C], [0x1E4F, 0x1E4E], [0x1E51, 0x1E50], [0x1E53, 0x1E52], [0x1E55, 0x1E54], [0x1E57, 0x1E56], [0x1E59, 0x1E58], [0x1E5B, 0x1E5A], [0x1E5D, 0x1E5C], [0x1E5F, 0x1E5E], [0x1E61, 0x1E60], [0x1E63, 0x1E62], [0x1E65, 0x1E64], [0x1E67, 0x1E66], [0x1E69, 0x1E68], [0x1E6B, 0x1E6A], [0x1E6D, 0x1E6C], [0x1E6F, 0x1E6E], [0x1E71, 0x1E70], [0x1E73, 0x1E72], [0x1E75, 0x1E74], [0x1E77, 0x1E76], [0x1E79, 0x1E78], [0x1E7B, 0x1E7A], [0x1E7D, 0x1E7C], [0x1E7F, 0x1E7E], [0x1E81, 0x1E80], [0x1E83, 0x1E82], [0x1E85, 0x1E84], [0x1E87, 0x1E86], [0x1E89, 0x1E88], [0x1E8B, 0x1E8A], [0x1E8D, 0x1E8C], [0x1E8F, 0x1E8E], [0x1E91, 0x1E90], [0x1E93, 0x1E92], [0x1E95, 0x1E94], [0x1E9B, 0x1E60], [0x1EA1, 0x1EA0], [0x1EA3, 0x1EA2], [0x1EA5, 0x1EA4], [0x1EA7, 0x1EA6], [0x1EA9, 0x1EA8], [0x1EAB, 0x1EAA], [0x1EAD, 0x1EAC], [0x1EAF, 0x1EAE], [0x1EB1, 0x1EB0], [0x1EB3, 0x1EB2], [0x1EB5, 0x1EB4], [0x1EB7, 0x1EB6], [0x1EB9, 0x1EB8], [0x1EBB, 0x1EBA], [0x1EBD, 0x1EBC], [0x1EBF, 0x1EBE], [0x1EC1, 0x1EC0], [0x1EC3, 0x1EC2], [0x1EC5, 0x1EC4], [0x1EC7, 0x1EC6], [0x1EC9, 0x1EC8], [0x1ECB, 0x1ECA], [0x1ECD, 0x1ECC], [0x1ECF, 0x1ECE], [0x1ED1, 0x1ED0], [0x1ED3, 0x1ED2], [0x1ED5, 0x1ED4], [0x1ED7, 0x1ED6], [0x1ED9, 0x1ED8], [0x1EDB, 0x1EDA], [0x1EDD, 0x1EDC], [0x1EDF, 0x1EDE], [0x1EE1, 0x1EE0], [0x1EE3, 0x1EE2], [0x1EE5, 0x1EE4], [0x1EE7, 0x1EE6], [0x1EE9, 0x1EE8], [0x1EEB, 0x1EEA], [0x1EED, 0x1EEC], [0x1EEF, 0x1EEE], [0x1EF1, 0x1EF0], [0x1EF3, 0x1EF2], [0x1EF5, 0x1EF4], [0x1EF7, 0x1EF6], [0x1EF9, 0x1EF8], [0x1F00, 0x1F08], [0x1F01, 0x1F09], [0x1F02, 0x1F0A], [0x1F03, 0x1F0B], [0x1F04, 0x1F0C], [0x1F05, 0x1F0D], [0x1F06, 0x1F0E], [0x1F07, 0x1F0F], [0x1F10, 0x1F18], [0x1F11, 0x1F19], [0x1F12, 0x1F1A], [0x1F13, 0x1F1B], [0x1F14, 0x1F1C], [0x1F15, 0x1F1D], [0x1F20, 0x1F28], [0x1F21, 0x1F29], [0x1F22, 0x1F2A], [0x1F23, 0x1F2B], [0x1F24, 0x1F2C], [0x1F25, 0x1F2D], [0x1F26, 0x1F2E], [0x1F27, 0x1F2F], [0x1F30, 0x1F38], [0x1F31, 0x1F39], [0x1F32, 0x1F3A], [0x1F33, 0x1F3B], [0x1F34, 0x1F3C], [0x1F35, 0x1F3D], [0x1F36, 0x1F3E], [0x1F37, 0x1F3F], [0x1F40, 0x1F48], [0x1F41, 0x1F49], [0x1F42, 0x1F4A], [0x1F43, 0x1F4B], [0x1F44, 0x1F4C], [0x1F45, 0x1F4D], [0x1F51, 0x1F59], [0x1F53, 0x1F5B], [0x1F55, 0x1F5D], [0x1F57, 0x1F5F], [0x1F60, 0x1F68], [0x1F61, 0x1F69], [0x1F62, 0x1F6A], [0x1F63, 0x1F6B], [0x1F64, 0x1F6C], [0x1F65, 0x1F6D], [0x1F66, 0x1F6E], [0x1F67, 0x1F6F], [0x1F70, 0x1FBA], [0x1F71, 0x1FBB], [0x1F72, 0x1FC8], [0x1F73, 0x1FC9], [0x1F74, 0x1FCA], [0x1F75, 0x1FCB], [0x1F76, 0x1FDA], [0x1F77, 0x1FDB], [0x1F78, 0x1FF8], [0x1F79, 0x1FF9], [0x1F7A, 0x1FEA], [0x1F7B, 0x1FEB], [0x1F7C, 0x1FFA], [0x1F7D, 0x1FFB], [0x1FB0, 0x1FB8], [0x1FB1, 0x1FB9], [0x1FBE, 0x0399], [0x1FD0, 0x1FD8], [0x1FD1, 0x1FD9], [0x1FE0, 0x1FE8], [0x1FE1, 0x1FE9], [0x1FE5, 0x1FEC], [0x214E, 0x2132], [0x2170, 0x2160], [0x2171, 0x2161], [0x2172, 0x2162], [0x2173, 0x2163], [0x2174, 0x2164], [0x2175, 0x2165], [0x2176, 0x2166], [0x2177, 0x2167], [0x2178, 0x2168], [0x2179, 0x2169], [0x217A, 0x216A], [0x217B, 0x216B], [0x217C, 0x216C], [0x217D, 0x216D], [0x217E, 0x216E], [0x217F, 0x216F], [0x2184, 0x2183], [0x24D0, 0x24B6], [0x24D1, 0x24B7], [0x24D2, 0x24B8], [0x24D3, 0x24B9], [0x24D4, 0x24BA], [0x24D5, 0x24BB], [0x24D6, 0x24BC], [0x24D7, 0x24BD], [0x24D8, 0x24BE], [0x24D9, 0x24BF], [0x24DA, 0x24C0], [0x24DB, 0x24C1], [0x24DC, 0x24C2], [0x24DD, 0x24C3], [0x24DE, 0x24C4], [0x24DF, 0x24C5], [0x24E0, 0x24C6], [0x24E1, 0x24C7], [0x24E2, 0x24C8], [0x24E3, 0x24C9], [0x24E4, 0x24CA], [0x24E5, 0x24CB], [0x24E6, 0x24CC], [0x24E7, 0x24CD], [0x24E8, 0x24CE], [0x24E9, 0x24CF], [0x2C30, 0x2C00], [0x2C31, 0x2C01], [0x2C32, 0x2C02], [0x2C33, 0x2C03], [0x2C34, 0x2C04], [0x2C35, 0x2C05], [0x2C36, 0x2C06], [0x2C37, 0x2C07], [0x2C38, 0x2C08], [0x2C39, 0x2C09], [0x2C3A, 0x2C0A], [0x2C3B, 0x2C0B], [0x2C3C, 0x2C0C], [0x2C3D, 0x2C0D], [0x2C3E, 0x2C0E], [0x2C3F, 0x2C0F], [0x2C40, 0x2C10], [0x2C41, 0x2C11], [0x2C42, 0x2C12], [0x2C43, 0x2C13], [0x2C44, 0x2C14], [0x2C45, 0x2C15], [0x2C46, 0x2C16], [0x2C47, 0x2C17], [0x2C48, 0x2C18], [0x2C49, 0x2C19], [0x2C4A, 0x2C1A], [0x2C4B, 0x2C1B], [0x2C4C, 0x2C1C], [0x2C4D, 0x2C1D], [0x2C4E, 0x2C1E], [0x2C4F, 0x2C1F], [0x2C50, 0x2C20], [0x2C51, 0x2C21], [0x2C52, 0x2C22], [0x2C53, 0x2C23], [0x2C54, 0x2C24], [0x2C55, 0x2C25], [0x2C56, 0x2C26], [0x2C57, 0x2C27], [0x2C58, 0x2C28], [0x2C59, 0x2C29], [0x2C5A, 0x2C2A], [0x2C5B, 0x2C2B], [0x2C5C, 0x2C2C], [0x2C5D, 0x2C2D], [0x2C5E, 0x2C2E], [0x2C61, 0x2C60], [0x2C65, 0x023A], [0x2C66, 0x023E], [0x2C68, 0x2C67], [0x2C6A, 0x2C69], [0x2C6C, 0x2C6B], [0x2C76, 0x2C75], [0x2C81, 0x2C80], [0x2C83, 0x2C82], [0x2C85, 0x2C84], [0x2C87, 0x2C86], [0x2C89, 0x2C88], [0x2C8B, 0x2C8A], [0x2C8D, 0x2C8C], [0x2C8F, 0x2C8E], [0x2C91, 0x2C90], [0x2C93, 0x2C92], [0x2C95, 0x2C94], [0x2C97, 0x2C96], [0x2C99, 0x2C98], [0x2C9B, 0x2C9A], [0x2C9D, 0x2C9C], [0x2C9F, 0x2C9E], [0x2CA1, 0x2CA0], [0x2CA3, 0x2CA2], [0x2CA5, 0x2CA4], [0x2CA7, 0x2CA6], [0x2CA9, 0x2CA8], [0x2CAB, 0x2CAA], [0x2CAD, 0x2CAC], [0x2CAF, 0x2CAE], [0x2CB1, 0x2CB0], [0x2CB3, 0x2CB2], [0x2CB5, 0x2CB4], [0x2CB7, 0x2CB6], [0x2CB9, 0x2CB8], [0x2CBB, 0x2CBA], [0x2CBD, 0x2CBC], [0x2CBF, 0x2CBE], [0x2CC1, 0x2CC0], [0x2CC3, 0x2CC2], [0x2CC5, 0x2CC4], [0x2CC7, 0x2CC6], [0x2CC9, 0x2CC8], [0x2CCB, 0x2CCA], [0x2CCD, 0x2CCC], [0x2CCF, 0x2CCE], [0x2CD1, 0x2CD0], [0x2CD3, 0x2CD2], [0x2CD5, 0x2CD4], [0x2CD7, 0x2CD6], [0x2CD9, 0x2CD8], [0x2CDB, 0x2CDA], [0x2CDD, 0x2CDC], [0x2CDF, 0x2CDE], [0x2CE1, 0x2CE0], [0x2CE3, 0x2CE2], [0x2D00, 0x10A0], [0x2D01, 0x10A1], [0x2D02, 0x10A2], [0x2D03, 0x10A3], [0x2D04, 0x10A4], [0x2D05, 0x10A5], [0x2D06, 0x10A6], [0x2D07, 0x10A7], [0x2D08, 0x10A8], [0x2D09, 0x10A9], [0x2D0A, 0x10AA], [0x2D0B, 0x10AB], [0x2D0C, 0x10AC], [0x2D0D, 0x10AD], [0x2D0E, 0x10AE], [0x2D0F, 0x10AF], [0x2D10, 0x10B0], [0x2D11, 0x10B1], [0x2D12, 0x10B2], [0x2D13, 0x10B3], [0x2D14, 0x10B4], [0x2D15, 0x10B5], [0x2D16, 0x10B6], [0x2D17, 0x10B7], [0x2D18, 0x10B8], [0x2D19, 0x10B9], [0x2D1A, 0x10BA], [0x2D1B, 0x10BB], [0x2D1C, 0x10BC], [0x2D1D, 0x10BD], [0x2D1E, 0x10BE], [0x2D1F, 0x10BF], [0x2D20, 0x10C0], [0x2D21, 0x10C1], [0x2D22, 0x10C2], [0x2D23, 0x10C3], [0x2D24, 0x10C4], [0x2D25, 0x10C5], [0xFF41, 0xFF21], [0xFF42, 0xFF22], [0xFF43, 0xFF23], [0xFF44, 0xFF24], [0xFF45, 0xFF25], [0xFF46, 0xFF26], [0xFF47, 0xFF27], [0xFF48, 0xFF28], [0xFF49, 0xFF29], [0xFF4A, 0xFF2A], [0xFF4B, 0xFF2B], [0xFF4C, 0xFF2C], [0xFF4D, 0xFF2D], [0xFF4E, 0xFF2E], [0xFF4F, 0xFF2F], [0xFF50, 0xFF30], [0xFF51, 0xFF31], [0xFF52, 0xFF32], [0xFF53, 0xFF33], [0xFF54, 0xFF34], [0xFF55, 0xFF35], [0xFF56, 0xFF36], [0xFF57, 0xFF37], [0xFF58, 0xFF38], [0xFF59, 0xFF39], [0xFF5A, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperCase.length; index++) {
+ var capitalI = UpperCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.18_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.18_A2.js
new file mode 100644
index 000000000..0793f66a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S15.5.4.18_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A2;
+* @section: 15.5.4.18;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperSpecialCase = [["\u00DF", "\u0053\u0053"], ["\uFB00", "\u0046\u0046"], ["\uFB01", "\u0046\u0049"], ["\uFB02", "\u0046\u004C"], ["\uFB03", "\u0046\u0046\u0049"], ["\uFB04", "\u0046\u0046\u004C"], ["\uFB05", "\u0053\u0054"], ["\uFB06", "\u0053\u0054"], ["\u0587", "\u0535\u0552"], ["\uFB13", "\u0544\u0546"], ["\uFB14", "\u0544\u0535"], ["\uFB15", "\u0544\u053B"], ["\uFB16", "\u054E\u0546"], ["\uFB17", "\u0544\u053D"], ["\u0149", "\u02BC\u004E"], ["\u0390", "\u0399\u0308\u0301"], ["\u03B0", "\u03A5\u0308\u0301"], ["\u01F0", "\u004A\u030C"], ["\u1E96", "\u0048\u0331"], ["\u1E97", "\u0054\u0308"], ["\u1E98", "\u0057\u030A"], ["\u1E99", "\u0059\u030A"], ["\u1E9A", "\u0041\u02BE"], ["\u1F50", "\u03A5\u0313"], ["\u1F52", "\u03A5\u0313\u0300"], ["\u1F54", "\u03A5\u0313\u0301"], ["\u1F56", "\u03A5\u0313\u0342"], ["\u1FB6", "\u0391\u0342"], ["\u1FC6", "\u0397\u0342"], ["\u1FD2", "\u0399\u0308\u0300"], ["\u1FD3", "\u0399\u0308\u0301"], ["\u1FD6", "\u0399\u0342"], ["\u1FD7", "\u0399\u0308\u0342"], ["\u1FE2", "\u03A5\u0308\u0300"], ["\u1FE3", "\u03A5\u0308\u0301"], ["\u1FE4", "\u03A1\u0313"], ["\u1FE6", "\u03A5\u0342"], ["\u1FE7", "\u03A5\u0308\u0342"], ["\u1FF6", "\u03A9\u0342"], ["\u1F80", "\u1F08\u0399"], ["\u1F81", "\u1F09\u0399"], ["\u1F82", "\u1F0A\u0399"], ["\u1F83", "\u1F0B\u0399"], ["\u1F84", "\u1F0C\u0399"], ["\u1F85", "\u1F0D\u0399"], ["\u1F86", "\u1F0E\u0399"], ["\u1F87", "\u1F0F\u0399"], ["\u1F88", "\u1F08\u0399"], ["\u1F89", "\u1F09\u0399"], ["\u1F8A", "\u1F0A\u0399"], ["\u1F8B", "\u1F0B\u0399"], ["\u1F8C", "\u1F0C\u0399"], ["\u1F8D", "\u1F0D\u0399"], ["\u1F8E", "\u1F0E\u0399"], ["\u1F8F", "\u1F0F\u0399"], ["\u1F90", "\u1F28\u0399"], ["\u1F91", "\u1F29\u0399"], ["\u1F92", "\u1F2A\u0399"], ["\u1F93", "\u1F2B\u0399"], ["\u1F94", "\u1F2C\u0399"], ["\u1F95", "\u1F2D\u0399"], ["\u1F96", "\u1F2E\u0399"], ["\u1F97", "\u1F2F\u0399"], ["\u1F98", "\u1F28\u0399"], ["\u1F99", "\u1F29\u0399"], ["\u1F9A", "\u1F2A\u0399"], ["\u1F9B", "\u1F2B\u0399"], ["\u1F9C", "\u1F2C\u0399"], ["\u1F9D", "\u1F2D\u0399"], ["\u1F9E", "\u1F2E\u0399"], ["\u1F9F", "\u1F2F\u0399"], ["\u1FA0", "\u1F68\u0399"], ["\u1FA1", "\u1F69\u0399"], ["\u1FA2", "\u1F6A\u0399"], ["\u1FA3", "\u1F6B\u0399"], ["\u1FA4", "\u1F6C\u0399"], ["\u1FA5", "\u1F6D\u0399"], ["\u1FA6", "\u1F6E\u0399"], ["\u1FA7", "\u1F6F\u0399"], ["\u1FA8", "\u1F68\u0399"], ["\u1FA9", "\u1F69\u0399"], ["\u1FAA", "\u1F6A\u0399"], ["\u1FAB", "\u1F6B\u0399"], ["\u1FAC", "\u1F6C\u0399"], ["\u1FAD", "\u1F6D\u0399"], ["\u1FAE", "\u1F6E\u0399"], ["\u1FAF", "\u1F6F\u0399"], ["\u1FB3", "\u0391\u0399"], ["\u1FBC", "\u0391\u0399"], ["\u1FC3", "\u0397\u0399"], ["\u1FCC", "\u0397\u0399"], ["\u1FF3", "\u03A9\u0399"], ["\u1FFC", "\u03A9\u0399"], ["\u1FB2", "\u1FBA\u0399"], ["\u1FB4", "\u0386\u0399"], ["\u1FC2", "\u1FCA\u0399"], ["\u1FC4", "\u0389\u0399"], ["\u1FF2", "\u1FFA\u0399"], ["\u1FF4", "\u038F\u0399"], ["\u1FB7", "\u0391\u0342\u0399"], ["\u1FC7", "\u0397\u0342\u0399"], ["\u1FF7", "\u03A9\u0342\u0399"], ["\u0069", "\u0130"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperSpecialCase.length; index++) {
+ var capitalI = UpperSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A1_T1.js
new file mode 100644
index 000000000..ef3da705d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A1_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A1_T1;
+ * @section: 7.1;
+ * @assertion: The format control character (Cf) can occur anywhere in the source text
+ * and these characters are removed before applying the lexical grammar;
+ * @description: Complex test with eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.1_T1.js
new file mode 100644
index 000000000..f9ef6f5ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = format + "a" + format + "b" + format;
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.1_T2.js
new file mode 100644
index 000000000..16d19a870
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = "' + format + 'a' + format + 'b' + format + '"');
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.2_T1.js
new file mode 100644
index 000000000..a8571f3fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = RegExp(format + "a" + format + "b" + format);
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.2_T2.js
new file mode 100644
index 000000000..011668f46
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.1_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = RegExp("' + format + 'a' + format + 'b' + format + '")');
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A1.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A1.6_T1.js
new file mode 100644
index 000000000..5a7da9bf6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A1.6_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.6_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: Any other Unicode "space separator" (category "Zs") between any two tokens is allowed;
+ * @description: Complex test with eval;
+*/
+
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A2.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A2.6_T1.js
new file mode 100644
index 000000000..3c9b51236
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A2.6_T1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.6_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: Any other Unicode "space separator" (category "Zs") within strings;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = "str" + format + "ing";
+ if (x !== "str" + format + "ing") {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A3.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A3.6_T1.js
new file mode 100644
index 000000000..3cf973648
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A3.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("//" + format + "single line" + format + "comment" + format + " x = 1;");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A4.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A4.6_T1.js
new file mode 100644
index 000000000..c7eacb73c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.2_A4.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("/*" + format + "multi line" + format + "comment" + format + "\n x = 1;*/");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T1.js
new file mode 100644
index 000000000..ec0fa4075
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Uppercase letter (Lu).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T2.js
new file mode 100644
index 000000000..bea256c62
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Lowercase letter (Ll).
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C74, 0x2C74], [0x2C76, 0x2C77], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T3.js
new file mode 100644
index 000000000..06e9329b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T3.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Titlecase letter (Lt).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T4.js
new file mode 100644
index 000000000..b65a4b6ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T4.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Modifier letter (Lm).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA717, 0xA71A], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T5.js
new file mode 100644
index 000000000..99973738a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T5.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T5;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Other letter (Lo).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T6.js
new file mode 100644
index 000000000..eb1954613
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.1_T6.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T6;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Letter number (Nl);
+*/
+
+//CHECK
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T1.js
new file mode 100644
index 000000000..d88bd3faa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mn").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T2.js
new file mode 100644
index 000000000..6986cfd6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mc").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T3.js
new file mode 100644
index 000000000..20031645d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T3.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeDigit ("Nd").
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T4.js
new file mode 100644
index 000000000..d1f641833
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A1.4_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeConnectorPunctuation ("Pc") without $.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ if (hex !== "0078") {
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.2_T1.js
new file mode 100644
index 000000000..cf61f5068
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Non-spacing mark (Mn).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.2_T2.js
new file mode 100644
index 000000000..52aec18f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Combining spacing mark (Mc).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.3.js
new file mode 100644
index 000000000..e9845e5f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.3.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.3;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeDigit (any character in the Unicode categories "Decimal Number (Nd)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.4.js
new file mode 100644
index 000000000..e7b636a2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A2.4.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.4;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeConnectorPunctuation (any character in the Unicode categories "Connector Punctuation (Pc)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A3.1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A3.1.js
new file mode 100644
index 000000000..c1e4e8c32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A3.1.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must contain only IdentifierPart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C74, 0x2C74], [0x2C76, 0x2C77], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA717, 0xA71A], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = "$" + String.fromCharCode(index) + "1";
+ eval("var " + identifier + "=1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A3.2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A3.2.js
new file mode 100644
index 000000000..b0b623f0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A3.2.js
@@ -0,0 +1,124 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin only IdentifierStart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C74, 0x2C74], [0x2C76, 0x2C77], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA717, 0xA71A], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = String.fromCharCode(index);
+ eval("var " + identifier + "=1");
+ if (errorCount === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T1.js
new file mode 100644
index 000000000..d5a60ee4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T1.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.
+
+/**
+ * @name: S7.6_A5.2_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lu.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T10.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T10.js
new file mode 100644
index 000000000..596e2b172
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T10.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.
+
+/**
+ * @name: S7.6_A5.2_T10;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Pc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T2.js
new file mode 100644
index 000000000..e4be5e244
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_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.
+
+/**
+ * @name: S7.6_A5.2_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Ll.
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C74, 0x2C74], [0x2C76, 0x2C77], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T3.js
new file mode 100644
index 000000000..e880bd673
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T3.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T3;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lt.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T4.js
new file mode 100644
index 000000000..ba9a20617
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T4.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T4;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lm.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA717, 0xA71A], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T5.js
new file mode 100644
index 000000000..06fc25447
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T5.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.
+
+/**
+ * @name: S7.6_A5.2_T5;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lo.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T6.js
new file mode 100644
index 000000000..6eb55e634
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T6.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.
+
+/**
+ * @name: S7.6_A5.2_T6;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nl.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T7.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T7.js
new file mode 100644
index 000000000..e6b25fc3c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T7.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.
+
+/**
+ * @name: S7.6_A5.2_T7;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mn.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T8.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T8.js
new file mode 100644
index 000000000..9250baf36
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T8.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.
+
+/**
+ * @name: S7.6_A5.2_T8;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T9.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T9.js
new file mode 100644
index 000000000..19c40233c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.2_T9.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.
+
+/**
+ * @name: S7.6_A5.2_T9;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nd.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.3_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.3_T1.js
new file mode 100644
index 000000000..e5cb4e2b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.3_T1.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C74, 0x2C74], [0x2C76, 0x2C77], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA717, 0xA71A], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier = "$\\u" + hex + "1";
+ eval(identifier + " = 1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.3_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.3_T2.js
new file mode 100644
index 000000000..8c0e9e1d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_500/S7.6_A5.3_T2.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9B], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1F00, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C74, 0x2C74], [0x2C76, 0x2C77], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EE, 0x02EE], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2D6F, 0x2D6F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA717, 0xA71A], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063A], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x076D], [0x0780, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D60, 0x0D61], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6A], [0x0F88, 0x0F8B], [0x1000, 0x1021], [0x1023, 0x1027], [0x1029, 0x102A], [0x1050, 0x1055], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312C], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FBB], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA800, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x036F], [0x0483, 0x0486], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], [0x1058, 0x1059], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20EF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE23]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102C, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x1056, 0x1057], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0xA802, 0xA802], [0xA823, 0xA824], [0xA827, 0xA827]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier1 = "$" + String.fromCharCode(index) + "1";
+ var identifier2 = "$\\u" + hex + "1";
+ eval(identifier1 + " = 1");
+ eval(identifier1 + " === " + identifier2);
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.10.2.12_A1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.10.2.12_A1_T6.js
new file mode 100644
index 000000000..dc246a4c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.10.2.12_A1_T6.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A1_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+ * @assertion: The production CharacterClassEscape :: s evaluates by returning the set of characters
+ * containing the characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_s = /\s/;
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ var str = String.fromCharCode(indexJ);
+ var arr = regexp_s.exec(str);
+ if ((arr === null) || (arr[0] !== str)) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.10.2.12_A2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.10.2.12_A2_T6.js
new file mode 100644
index 000000000..f2b2bc0e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.10.2.12_A2_T6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.10.2.12_A2_T6;
+ * @section: 15.10.2.12, 7.2, 7.3;
+* @assertion: The production CharacterClassEscape :: S evaluates by returning
+* the set of all characters not included in the set returned by
+* CharacterClassEscape :: s;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+var regexp_S = /\S/;
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ if (regexp_S.exec(String.fromCharCode(indexJ)) !== null) {
+ var hex = decimalToHexString(indexJ);
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.16_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.16_A1.js
new file mode 100644
index 000000000..4ed495929
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.16_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A1;
+* @section: 15.5.4.16;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerCase = [[0x0041, 0x0061], [0x0042, 0x0062], [0x0043, 0x0063], [0x0044, 0x0064], [0x0045, 0x0065], [0x0046, 0x0066], [0x0047, 0x0067], [0x0048, 0x0068], [0x004B, 0x006B], [0x004C, 0x006C], [0x004D, 0x006D], [0x004E, 0x006E], [0x004F, 0x006F], [0x0050, 0x0070], [0x0051, 0x0071], [0x0052, 0x0072], [0x0053, 0x0073], [0x0054, 0x0074], [0x0055, 0x0075], [0x0056, 0x0076], [0x0057, 0x0077], [0x0058, 0x0078], [0x0059, 0x0079], [0x005A, 0x007A], [0x00C0, 0x00E0], [0x00C1, 0x00E1], [0x00C2, 0x00E2], [0x00C3, 0x00E3], [0x00C4, 0x00E4], [0x00C5, 0x00E5], [0x00C6, 0x00E6], [0x00C7, 0x00E7], [0x00C8, 0x00E8], [0x00C9, 0x00E9], [0x00CA, 0x00EA], [0x00CB, 0x00EB], [0x00CE, 0x00EE], [0x00CF, 0x00EF], [0x00D0, 0x00F0], [0x00D1, 0x00F1], [0x00D2, 0x00F2], [0x00D3, 0x00F3], [0x00D4, 0x00F4], [0x00D5, 0x00F5], [0x00D6, 0x00F6], [0x00D8, 0x00F8], [0x00D9, 0x00F9], [0x00DA, 0x00FA], [0x00DB, 0x00FB], [0x00DC, 0x00FC], [0x00DD, 0x00FD], [0x00DE, 0x00FE], [0x0100, 0x0101], [0x0102, 0x0103], [0x0104, 0x0105], [0x0106, 0x0107], [0x0108, 0x0109], [0x010A, 0x010B], [0x010C, 0x010D], [0x010E, 0x010F], [0x0110, 0x0111], [0x0112, 0x0113], [0x0114, 0x0115], [0x0116, 0x0117], [0x0118, 0x0119], [0x011A, 0x011B], [0x011C, 0x011D], [0x011E, 0x011F], [0x0120, 0x0121], [0x0122, 0x0123], [0x0124, 0x0125], [0x0126, 0x0127], [0x012A, 0x012B], [0x012C, 0x012D], [0x0132, 0x0133], [0x0134, 0x0135], [0x0136, 0x0137], [0x0139, 0x013A], [0x013B, 0x013C], [0x013D, 0x013E], [0x013F, 0x0140], [0x0141, 0x0142], [0x0143, 0x0144], [0x0145, 0x0146], [0x0147, 0x0148], [0x014A, 0x014B], [0x014C, 0x014D], [0x014E, 0x014F], [0x0150, 0x0151], [0x0152, 0x0153], [0x0154, 0x0155], [0x0156, 0x0157], [0x0158, 0x0159], [0x015A, 0x015B], [0x015C, 0x015D], [0x015E, 0x015F], [0x0160, 0x0161], [0x0162, 0x0163], [0x0164, 0x0165], [0x0166, 0x0167], [0x0168, 0x0169], [0x016A, 0x016B], [0x016C, 0x016D], [0x016E, 0x016F], [0x0170, 0x0171], [0x0172, 0x0173], [0x0174, 0x0175], [0x0176, 0x0177], [0x0178, 0x00FF], [0x0179, 0x017A], [0x017B, 0x017C], [0x017D, 0x017E], [0x0181, 0x0253], [0x0182, 0x0183], [0x0184, 0x0185], [0x0186, 0x0254], [0x0187, 0x0188], [0x0189, 0x0256], [0x018A, 0x0257], [0x018B, 0x018C], [0x018E, 0x01DD], [0x018F, 0x0259], [0x0190, 0x025B], [0x0191, 0x0192], [0x0193, 0x0260], [0x0194, 0x0263], [0x0196, 0x0269], [0x0197, 0x0268], [0x0198, 0x0199], [0x019C, 0x026F], [0x019D, 0x0272], [0x019F, 0x0275], [0x01A0, 0x01A1], [0x01A2, 0x01A3], [0x01A4, 0x01A5], [0x01A6, 0x0280], [0x01A7, 0x01A8], [0x01A9, 0x0283], [0x01AC, 0x01AD], [0x01AE, 0x0288], [0x01AF, 0x01B0], [0x01B1, 0x028A], [0x01B2, 0x028B], [0x01B3, 0x01B4], [0x01B5, 0x01B6], [0x01B7, 0x0292], [0x01B8, 0x01B9], [0x01BC, 0x01BD], [0x01C4, 0x01C6], [0x01C5, 0x01C6], [0x01C7, 0x01C9], [0x01C8, 0x01C9], [0x01CA, 0x01CC], [0x01CB, 0x01CC], [0x01CD, 0x01CE], [0x01CF, 0x01D0], [0x01D1, 0x01D2], [0x01D3, 0x01D4], [0x01D5, 0x01D6], [0x01D7, 0x01D8], [0x01D9, 0x01DA], [0x01DB, 0x01DC], [0x01DE, 0x01DF], [0x01E0, 0x01E1], [0x01E2, 0x01E3], [0x01E4, 0x01E5], [0x01E6, 0x01E7], [0x01E8, 0x01E9], [0x01EA, 0x01EB], [0x01EC, 0x01ED], [0x01EE, 0x01EF], [0x01F1, 0x01F3], [0x01F2, 0x01F3], [0x01F4, 0x01F5], [0x01F6, 0x0195], [0x01F7, 0x01BF], [0x01F8, 0x01F9], [0x01FA, 0x01FB], [0x01FC, 0x01FD], [0x01FE, 0x01FF], [0x0200, 0x0201], [0x0202, 0x0203], [0x0204, 0x0205], [0x0206, 0x0207], [0x0208, 0x0209], [0x020A, 0x020B], [0x020C, 0x020D], [0x020E, 0x020F], [0x0210, 0x0211], [0x0212, 0x0213], [0x0214, 0x0215], [0x0216, 0x0217], [0x0218, 0x0219], [0x021A, 0x021B], [0x021C, 0x021D], [0x021E, 0x021F], [0x0220, 0x019E], [0x0222, 0x0223], [0x0224, 0x0225], [0x0226, 0x0227], [0x0228, 0x0229], [0x022A, 0x022B], [0x022C, 0x022D], [0x022E, 0x022F], [0x0230, 0x0231], [0x0232, 0x0233], [0x023A, 0x2C65], [0x023B, 0x023C], [0x023D, 0x019A], [0x023E, 0x2C66], [0x0241, 0x0242], [0x0243, 0x0180], [0x0244, 0x0289], [0x0245, 0x028C], [0x0246, 0x0247], [0x0248, 0x0249], [0x024A, 0x024B], [0x024C, 0x024D], [0x024E, 0x024F], [0x0370, 0x0371], [0x0372, 0x0373], [0x0376, 0x0377], [0x0386, 0x03AC], [0x0388, 0x03AD], [0x0389, 0x03AE], [0x038A, 0x03AF], [0x038C, 0x03CC], [0x038E, 0x03CD], [0x038F, 0x03CE], [0x0391, 0x03B1], [0x0392, 0x03B2], [0x0393, 0x03B3], [0x0394, 0x03B4], [0x0395, 0x03B5], [0x0396, 0x03B6], [0x0397, 0x03B7], [0x0398, 0x03B8], [0x0399, 0x03B9], [0x039A, 0x03BA], [0x039B, 0x03BB], [0x039C, 0x03BC], [0x039D, 0x03BD], [0x039E, 0x03BE], [0x039F, 0x03BF], [0x03A0, 0x03C0], [0x03A1, 0x03C1], [0x03A4, 0x03C4], [0x03A5, 0x03C5], [0x03A6, 0x03C6], [0x03A7, 0x03C7], [0x03A8, 0x03C8], [0x03A9, 0x03C9], [0x03AA, 0x03CA], [0x03AB, 0x03CB], [0x03CF, 0x03D7], [0x03D8, 0x03D9], [0x03DA, 0x03DB], [0x03DC, 0x03DD], [0x03DE, 0x03DF], [0x03E0, 0x03E1], [0x03E2, 0x03E3], [0x03E4, 0x03E5], [0x03E6, 0x03E7], [0x03E8, 0x03E9], [0x03EA, 0x03EB], [0x03EC, 0x03ED], [0x03EE, 0x03EF], [0x03F4, 0x03B8], [0x03F7, 0x03F8], [0x03F9, 0x03F2], [0x03FA, 0x03FB], [0x03FD, 0x037B], [0x03FE, 0x037C], [0x03FF, 0x037D], [0x0400, 0x0450], [0x0401, 0x0451], [0x0402, 0x0452], [0x0403, 0x0453], [0x0404, 0x0454], [0x0405, 0x0455], [0x0406, 0x0456], [0x0407, 0x0457], [0x0408, 0x0458], [0x0409, 0x0459], [0x040A, 0x045A], [0x040B, 0x045B], [0x040C, 0x045C], [0x040D, 0x045D], [0x040E, 0x045E], [0x040F, 0x045F], [0x0410, 0x0430], [0x0411, 0x0431], [0x0412, 0x0432], [0x0413, 0x0433], [0x0414, 0x0434], [0x0415, 0x0435], [0x0416, 0x0436], [0x0417, 0x0437], [0x0418, 0x0438], [0x0419, 0x0439], [0x041A, 0x043A], [0x041B, 0x043B], [0x041C, 0x043C], [0x041D, 0x043D], [0x041E, 0x043E], [0x041F, 0x043F], [0x0420, 0x0440], [0x0421, 0x0441], [0x0422, 0x0442], [0x0423, 0x0443], [0x0424, 0x0444], [0x0425, 0x0445], [0x0426, 0x0446], [0x0427, 0x0447], [0x0428, 0x0448], [0x0429, 0x0449], [0x042A, 0x044A], [0x042B, 0x044B], [0x042C, 0x044C], [0x042D, 0x044D], [0x042E, 0x044E], [0x042F, 0x044F], [0x0460, 0x0461], [0x0462, 0x0463], [0x0464, 0x0465], [0x0466, 0x0467], [0x0468, 0x0469], [0x046A, 0x046B], [0x046C, 0x046D], [0x046E, 0x046F], [0x0470, 0x0471], [0x0472, 0x0473], [0x0474, 0x0475], [0x0476, 0x0477], [0x0478, 0x0479], [0x047A, 0x047B], [0x047C, 0x047D], [0x047E, 0x047F], [0x0480, 0x0481], [0x048A, 0x048B], [0x048C, 0x048D], [0x048E, 0x048F], [0x0490, 0x0491], [0x0492, 0x0493], [0x0494, 0x0495], [0x0496, 0x0497], [0x0498, 0x0499], [0x049A, 0x049B], [0x049C, 0x049D], [0x049E, 0x049F], [0x04A0, 0x04A1], [0x04A2, 0x04A3], [0x04A4, 0x04A5], [0x04A6, 0x04A7], [0x04A8, 0x04A9], [0x04AA, 0x04AB], [0x04AC, 0x04AD], [0x04AE, 0x04AF], [0x04B0, 0x04B1], [0x04B2, 0x04B3], [0x04B4, 0x04B5], [0x04B6, 0x04B7], [0x04B8, 0x04B9], [0x04BA, 0x04BB], [0x04BC, 0x04BD], [0x04BE, 0x04BF], [0x04C0, 0x04CF], [0x04C1, 0x04C2], [0x04C3, 0x04C4], [0x04C5, 0x04C6], [0x04C7, 0x04C8], [0x04C9, 0x04CA], [0x04CB, 0x04CC], [0x04CD, 0x04CE], [0x04D0, 0x04D1], [0x04D2, 0x04D3], [0x04D4, 0x04D5], [0x04D6, 0x04D7], [0x04D8, 0x04D9], [0x04DA, 0x04DB], [0x04DC, 0x04DD], [0x04DE, 0x04DF], [0x04E0, 0x04E1], [0x04E2, 0x04E3], [0x04E4, 0x04E5], [0x04E6, 0x04E7], [0x04E8, 0x04E9], [0x04EA, 0x04EB], [0x04EC, 0x04ED], [0x04EE, 0x04EF], [0x04F0, 0x04F1], [0x04F2, 0x04F3], [0x04F4, 0x04F5], [0x04F6, 0x04F7], [0x04F8, 0x04F9], [0x04FA, 0x04FB], [0x04FC, 0x04FD], [0x04FE, 0x04FF], [0x0500, 0x0501], [0x0502, 0x0503], [0x0504, 0x0505], [0x0506, 0x0507], [0x0508, 0x0509], [0x050A, 0x050B], [0x050C, 0x050D], [0x050E, 0x050F], [0x0510, 0x0511], [0x0512, 0x0513], [0x0514, 0x0515], [0x0516, 0x0517], [0x0518, 0x0519], [0x051A, 0x051B], [0x051C, 0x051D], [0x051E, 0x051F], [0x0520, 0x0521], [0x0522, 0x0523], [0x0531, 0x0561], [0x0532, 0x0562], [0x0533, 0x0563], [0x0534, 0x0564], [0x0535, 0x0565], [0x0536, 0x0566], [0x0537, 0x0567], [0x0538, 0x0568], [0x0539, 0x0569], [0x053A, 0x056A], [0x053B, 0x056B], [0x053C, 0x056C], [0x053D, 0x056D], [0x053E, 0x056E], [0x053F, 0x056F], [0x0540, 0x0570], [0x0541, 0x0571], [0x0542, 0x0572], [0x0543, 0x0573], [0x0544, 0x0574], [0x0545, 0x0575], [0x0546, 0x0576], [0x0547, 0x0577], [0x0548, 0x0578], [0x0549, 0x0579], [0x054A, 0x057A], [0x054B, 0x057B], [0x054C, 0x057C], [0x054D, 0x057D], [0x054E, 0x057E], [0x054F, 0x057F], [0x0550, 0x0580], [0x0551, 0x0581], [0x0552, 0x0582], [0x0553, 0x0583], [0x0554, 0x0584], [0x0555, 0x0585], [0x0556, 0x0586], [0x10A0, 0x2D00], [0x10A1, 0x2D01], [0x10A2, 0x2D02], [0x10A3, 0x2D03], [0x10A4, 0x2D04], [0x10A5, 0x2D05], [0x10A6, 0x2D06], [0x10A7, 0x2D07], [0x10A8, 0x2D08], [0x10A9, 0x2D09], [0x10AA, 0x2D0A], [0x10AB, 0x2D0B], [0x10AC, 0x2D0C], [0x10AD, 0x2D0D], [0x10AE, 0x2D0E], [0x10AF, 0x2D0F], [0x10B0, 0x2D10], [0x10B1, 0x2D11], [0x10B2, 0x2D12], [0x10B3, 0x2D13], [0x10B4, 0x2D14], [0x10B5, 0x2D15], [0x10B6, 0x2D16], [0x10B7, 0x2D17], [0x10B8, 0x2D18], [0x10B9, 0x2D19], [0x10BA, 0x2D1A], [0x10BB, 0x2D1B], [0x10BC, 0x2D1C], [0x10BD, 0x2D1D], [0x10BE, 0x2D1E], [0x10BF, 0x2D1F], [0x10C0, 0x2D20], [0x10C1, 0x2D21], [0x10C2, 0x2D22], [0x10C3, 0x2D23], [0x10C4, 0x2D24], [0x10C5, 0x2D25], [0x1E00, 0x1E01], [0x1E02, 0x1E03], [0x1E04, 0x1E05], [0x1E06, 0x1E07], [0x1E08, 0x1E09], [0x1E0A, 0x1E0B], [0x1E0C, 0x1E0D], [0x1E0E, 0x1E0F], [0x1E10, 0x1E11], [0x1E12, 0x1E13], [0x1E14, 0x1E15], [0x1E16, 0x1E17], [0x1E18, 0x1E19], [0x1E1A, 0x1E1B], [0x1E1C, 0x1E1D], [0x1E1E, 0x1E1F], [0x1E20, 0x1E21], [0x1E22, 0x1E23], [0x1E24, 0x1E25], [0x1E26, 0x1E27], [0x1E28, 0x1E29], [0x1E2A, 0x1E2B], [0x1E2C, 0x1E2D], [0x1E2E, 0x1E2F], [0x1E30, 0x1E31], [0x1E32, 0x1E33], [0x1E34, 0x1E35], [0x1E36, 0x1E37], [0x1E38, 0x1E39], [0x1E3A, 0x1E3B], [0x1E3C, 0x1E3D], [0x1E3E, 0x1E3F], [0x1E40, 0x1E41], [0x1E42, 0x1E43], [0x1E44, 0x1E45], [0x1E46, 0x1E47], [0x1E48, 0x1E49], [0x1E4A, 0x1E4B], [0x1E4C, 0x1E4D], [0x1E4E, 0x1E4F], [0x1E50, 0x1E51], [0x1E52, 0x1E53], [0x1E54, 0x1E55], [0x1E56, 0x1E57], [0x1E58, 0x1E59], [0x1E5A, 0x1E5B], [0x1E5C, 0x1E5D], [0x1E5E, 0x1E5F], [0x1E60, 0x1E61], [0x1E62, 0x1E63], [0x1E64, 0x1E65], [0x1E66, 0x1E67], [0x1E68, 0x1E69], [0x1E6A, 0x1E6B], [0x1E6C, 0x1E6D], [0x1E6E, 0x1E6F], [0x1E70, 0x1E71], [0x1E72, 0x1E73], [0x1E74, 0x1E75], [0x1E76, 0x1E77], [0x1E78, 0x1E79], [0x1E7A, 0x1E7B], [0x1E7C, 0x1E7D], [0x1E7E, 0x1E7F], [0x1E80, 0x1E81], [0x1E82, 0x1E83], [0x1E84, 0x1E85], [0x1E86, 0x1E87], [0x1E88, 0x1E89], [0x1E8A, 0x1E8B], [0x1E8C, 0x1E8D], [0x1E8E, 0x1E8F], [0x1E90, 0x1E91], [0x1E92, 0x1E93], [0x1E94, 0x1E95], [0x1E9E, 0x00DF], [0x1EA0, 0x1EA1], [0x1EA2, 0x1EA3], [0x1EA4, 0x1EA5], [0x1EA6, 0x1EA7], [0x1EA8, 0x1EA9], [0x1EAA, 0x1EAB], [0x1EAC, 0x1EAD], [0x1EAE, 0x1EAF], [0x1EB0, 0x1EB1], [0x1EB2, 0x1EB3], [0x1EB4, 0x1EB5], [0x1EB6, 0x1EB7], [0x1EB8, 0x1EB9], [0x1EBA, 0x1EBB], [0x1EBC, 0x1EBD], [0x1EBE, 0x1EBF], [0x1EC0, 0x1EC1], [0x1EC2, 0x1EC3], [0x1EC4, 0x1EC5], [0x1EC6, 0x1EC7], [0x1EC8, 0x1EC9], [0x1ECA, 0x1ECB], [0x1ECC, 0x1ECD], [0x1ECE, 0x1ECF], [0x1ED0, 0x1ED1], [0x1ED2, 0x1ED3], [0x1ED4, 0x1ED5], [0x1ED6, 0x1ED7], [0x1ED8, 0x1ED9], [0x1EDA, 0x1EDB], [0x1EDC, 0x1EDD], [0x1EDE, 0x1EDF], [0x1EE0, 0x1EE1], [0x1EE2, 0x1EE3], [0x1EE4, 0x1EE5], [0x1EE6, 0x1EE7], [0x1EE8, 0x1EE9], [0x1EEA, 0x1EEB], [0x1EEC, 0x1EED], [0x1EEE, 0x1EEF], [0x1EF0, 0x1EF1], [0x1EF2, 0x1EF3], [0x1EF4, 0x1EF5], [0x1EF6, 0x1EF7], [0x1EF8, 0x1EF9], [0x1EFA, 0x1EFB], [0x1EFC, 0x1EFD], [0x1EFE, 0x1EFF], [0x1F08, 0x1F00], [0x1F09, 0x1F01], [0x1F0A, 0x1F02], [0x1F0B, 0x1F03], [0x1F0C, 0x1F04], [0x1F0D, 0x1F05], [0x1F0E, 0x1F06], [0x1F0F, 0x1F07], [0x1F18, 0x1F10], [0x1F19, 0x1F11], [0x1F1A, 0x1F12], [0x1F1B, 0x1F13], [0x1F1C, 0x1F14], [0x1F1D, 0x1F15], [0x1F28, 0x1F20], [0x1F29, 0x1F21], [0x1F2A, 0x1F22], [0x1F2B, 0x1F23], [0x1F2C, 0x1F24], [0x1F2D, 0x1F25], [0x1F2E, 0x1F26], [0x1F2F, 0x1F27], [0x1F38, 0x1F30], [0x1F39, 0x1F31], [0x1F3A, 0x1F32], [0x1F3B, 0x1F33], [0x1F3C, 0x1F34], [0x1F3D, 0x1F35], [0x1F3E, 0x1F36], [0x1F3F, 0x1F37], [0x1F48, 0x1F40], [0x1F49, 0x1F41], [0x1F4A, 0x1F42], [0x1F4B, 0x1F43], [0x1F4C, 0x1F44], [0x1F4D, 0x1F45], [0x1F59, 0x1F51], [0x1F5B, 0x1F53], [0x1F5D, 0x1F55], [0x1F5F, 0x1F57], [0x1F68, 0x1F60], [0x1F69, 0x1F61], [0x1F6A, 0x1F62], [0x1F6B, 0x1F63], [0x1F6C, 0x1F64], [0x1F6D, 0x1F65], [0x1F6E, 0x1F66], [0x1F6F, 0x1F67], [0x1FB8, 0x1FB0], [0x1FB9, 0x1FB1], [0x1FBA, 0x1F70], [0x1FBB, 0x1F71], [0x1FC8, 0x1F72], [0x1FC9, 0x1F73], [0x1FCA, 0x1F74], [0x1FCB, 0x1F75], [0x1FD8, 0x1FD0], [0x1FD9, 0x1FD1], [0x1FDA, 0x1F76], [0x1FDB, 0x1F77], [0x1FE8, 0x1FE0], [0x1FE9, 0x1FE1], [0x1FEA, 0x1F7A], [0x1FEB, 0x1F7B], [0x1FEC, 0x1FE5], [0x1FF8, 0x1F78], [0x1FF9, 0x1F79], [0x1FFA, 0x1F7C], [0x1FFB, 0x1F7D], [0x2126, 0x03C9], [0x212A, 0x006B], [0x212B, 0x00E5], [0x2132, 0x214E], [0x2160, 0x2170], [0x2161, 0x2171], [0x2162, 0x2172], [0x2163, 0x2173], [0x2164, 0x2174], [0x2165, 0x2175], [0x2166, 0x2176], [0x2167, 0x2177], [0x2168, 0x2178], [0x2169, 0x2179], [0x216A, 0x217A], [0x216B, 0x217B], [0x216C, 0x217C], [0x216D, 0x217D], [0x216E, 0x217E], [0x216F, 0x217F], [0x2183, 0x2184], [0x24B6, 0x24D0], [0x24B7, 0x24D1], [0x24B8, 0x24D2], [0x24B9, 0x24D3], [0x24BA, 0x24D4], [0x24BB, 0x24D5], [0x24BC, 0x24D6], [0x24BD, 0x24D7], [0x24BE, 0x24D8], [0x24BF, 0x24D9], [0x24C0, 0x24DA], [0x24C1, 0x24DB], [0x24C2, 0x24DC], [0x24C3, 0x24DD], [0x24C4, 0x24DE], [0x24C5, 0x24DF], [0x24C6, 0x24E0], [0x24C7, 0x24E1], [0x24C8, 0x24E2], [0x24C9, 0x24E3], [0x24CA, 0x24E4], [0x24CB, 0x24E5], [0x24CC, 0x24E6], [0x24CD, 0x24E7], [0x24CE, 0x24E8], [0x24CF, 0x24E9], [0x2C00, 0x2C30], [0x2C01, 0x2C31], [0x2C02, 0x2C32], [0x2C03, 0x2C33], [0x2C04, 0x2C34], [0x2C05, 0x2C35], [0x2C06, 0x2C36], [0x2C07, 0x2C37], [0x2C08, 0x2C38], [0x2C09, 0x2C39], [0x2C0A, 0x2C3A], [0x2C0B, 0x2C3B], [0x2C0C, 0x2C3C], [0x2C0D, 0x2C3D], [0x2C0E, 0x2C3E], [0x2C0F, 0x2C3F], [0x2C10, 0x2C40], [0x2C11, 0x2C41], [0x2C12, 0x2C42], [0x2C13, 0x2C43], [0x2C14, 0x2C44], [0x2C15, 0x2C45], [0x2C16, 0x2C46], [0x2C17, 0x2C47], [0x2C18, 0x2C48], [0x2C19, 0x2C49], [0x2C1A, 0x2C4A], [0x2C1B, 0x2C4B], [0x2C1C, 0x2C4C], [0x2C1D, 0x2C4D], [0x2C1E, 0x2C4E], [0x2C1F, 0x2C4F], [0x2C20, 0x2C50], [0x2C21, 0x2C51], [0x2C22, 0x2C52], [0x2C23, 0x2C53], [0x2C24, 0x2C54], [0x2C25, 0x2C55], [0x2C26, 0x2C56], [0x2C27, 0x2C57], [0x2C28, 0x2C58], [0x2C29, 0x2C59], [0x2C2A, 0x2C5A], [0x2C2B, 0x2C5B], [0x2C2C, 0x2C5C], [0x2C2D, 0x2C5D], [0x2C2E, 0x2C5E], [0x2C60, 0x2C61], [0x2C62, 0x026B], [0x2C63, 0x1D7D], [0x2C64, 0x027D], [0x2C67, 0x2C68], [0x2C69, 0x2C6A], [0x2C6B, 0x2C6C], [0x2C6D, 0x0251], [0x2C6E, 0x0271], [0x2C6F, 0x0250], [0x2C72, 0x2C73], [0x2C75, 0x2C76], [0x2C80, 0x2C81], [0x2C82, 0x2C83], [0x2C84, 0x2C85], [0x2C86, 0x2C87], [0x2C88, 0x2C89], [0x2C8A, 0x2C8B], [0x2C8C, 0x2C8D], [0x2C8E, 0x2C8F], [0x2C90, 0x2C91], [0x2C92, 0x2C93], [0x2C94, 0x2C95], [0x2C96, 0x2C97], [0x2C98, 0x2C99], [0x2C9A, 0x2C9B], [0x2C9C, 0x2C9D], [0x2C9E, 0x2C9F], [0x2CA0, 0x2CA1], [0x2CA2, 0x2CA3], [0x2CA4, 0x2CA5], [0x2CA6, 0x2CA7], [0x2CA8, 0x2CA9], [0x2CAA, 0x2CAB], [0x2CAC, 0x2CAD], [0x2CAE, 0x2CAF], [0x2CB0, 0x2CB1], [0x2CB2, 0x2CB3], [0x2CB4, 0x2CB5], [0x2CB6, 0x2CB7], [0x2CB8, 0x2CB9], [0x2CBA, 0x2CBB], [0x2CBC, 0x2CBD], [0x2CBE, 0x2CBF], [0x2CC0, 0x2CC1], [0x2CC2, 0x2CC3], [0x2CC4, 0x2CC5], [0x2CC6, 0x2CC7], [0x2CC8, 0x2CC9], [0x2CCA, 0x2CCB], [0x2CCC, 0x2CCD], [0x2CCE, 0x2CCF], [0x2CD0, 0x2CD1], [0x2CD2, 0x2CD3], [0x2CD4, 0x2CD5], [0x2CD6, 0x2CD7], [0x2CD8, 0x2CD9], [0x2CDA, 0x2CDB], [0x2CDC, 0x2CDD], [0x2CDE, 0x2CDF], [0x2CE0, 0x2CE1], [0x2CE2, 0x2CE3], [0xA640, 0xA641], [0xA642, 0xA643], [0xA644, 0xA645], [0xA646, 0xA647], [0xA648, 0xA649], [0xA64A, 0xA64B], [0xA64C, 0xA64D], [0xA64E, 0xA64F], [0xA650, 0xA651], [0xA652, 0xA653], [0xA654, 0xA655], [0xA656, 0xA657], [0xA658, 0xA659], [0xA65A, 0xA65B], [0xA65C, 0xA65D], [0xA65E, 0xA65F], [0xA662, 0xA663], [0xA664, 0xA665], [0xA666, 0xA667], [0xA668, 0xA669], [0xA66A, 0xA66B], [0xA66C, 0xA66D], [0xA680, 0xA681], [0xA682, 0xA683], [0xA684, 0xA685], [0xA686, 0xA687], [0xA688, 0xA689], [0xA68A, 0xA68B], [0xA68C, 0xA68D], [0xA68E, 0xA68F], [0xA690, 0xA691], [0xA692, 0xA693], [0xA694, 0xA695], [0xA696, 0xA697], [0xA722, 0xA723], [0xA724, 0xA725], [0xA726, 0xA727], [0xA728, 0xA729], [0xA72A, 0xA72B], [0xA72C, 0xA72D], [0xA72E, 0xA72F], [0xA732, 0xA733], [0xA734, 0xA735], [0xA736, 0xA737], [0xA738, 0xA739], [0xA73A, 0xA73B], [0xA73C, 0xA73D], [0xA73E, 0xA73F], [0xA740, 0xA741], [0xA742, 0xA743], [0xA744, 0xA745], [0xA746, 0xA747], [0xA748, 0xA749], [0xA74A, 0xA74B], [0xA74C, 0xA74D], [0xA74E, 0xA74F], [0xA750, 0xA751], [0xA752, 0xA753], [0xA754, 0xA755], [0xA756, 0xA757], [0xA758, 0xA759], [0xA75A, 0xA75B], [0xA75C, 0xA75D], [0xA75E, 0xA75F], [0xA760, 0xA761], [0xA762, 0xA763], [0xA764, 0xA765], [0xA766, 0xA767], [0xA768, 0xA769], [0xA76A, 0xA76B], [0xA76C, 0xA76D], [0xA76E, 0xA76F], [0xA779, 0xA77A], [0xA77B, 0xA77C], [0xA77D, 0x1D79], [0xA77E, 0xA77F], [0xA780, 0xA781], [0xA782, 0xA783], [0xA784, 0xA785], [0xA786, 0xA787], [0xA78B, 0xA78C], [0xFF21, 0xFF41], [0xFF22, 0xFF42], [0xFF23, 0xFF43], [0xFF24, 0xFF44], [0xFF25, 0xFF45], [0xFF26, 0xFF46], [0xFF27, 0xFF47], [0xFF28, 0xFF48], [0xFF29, 0xFF49], [0xFF2A, 0xFF4A], [0xFF2B, 0xFF4B], [0xFF2C, 0xFF4C], [0xFF2D, 0xFF4D], [0xFF2E, 0xFF4E], [0xFF2F, 0xFF4F], [0xFF30, 0xFF50], [0xFF31, 0xFF51], [0xFF32, 0xFF52], [0xFF33, 0xFF53], [0xFF34, 0xFF54], [0xFF35, 0xFF55], [0xFF36, 0xFF56], [0xFF37, 0xFF57], [0xFF38, 0xFF58], [0xFF39, 0xFF59], [0xFF3A, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerCase.length; index++) {
+ var capitalI = LowerCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.16_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.16_A2.js
new file mode 100644
index 000000000..4aae14fcb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.16_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.16_A2;
+* @section: 15.5.4.16;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+LowerSpecialCase = [["\u0130", "\u0069\u0307"], ["\u1F88", "\u1F80"], ["\u1F89", "\u1F81"], ["\u1F8A", "\u1F82"], ["\u1F8B", "\u1F83"], ["\u1F8C", "\u1F84"], ["\u1F8D", "\u1F85"], ["\u1F8E", "\u1F86"], ["\u1F8F", "\u1F87"], ["\u1F98", "\u1F90"], ["\u1F99", "\u1F91"], ["\u1F9A", "\u1F92"], ["\u1F9B", "\u1F93"], ["\u1F9C", "\u1F94"], ["\u1F9D", "\u1F95"], ["\u1F9E", "\u1F96"], ["\u1F9F", "\u1F97"], ["\u1FA8", "\u1FA0"], ["\u1FA9", "\u1FA1"], ["\u1FAA", "\u1FA2"], ["\u1FAB", "\u1FA3"], ["\u1FAC", "\u1FA4"], ["\u1FAD", "\u1FA5"], ["\u1FAE", "\u1FA6"], ["\u1FAF", "\u1FA7"], ["\u1FBC", "\u1FB3"], ["\u1FCC", "\u1FC3"], ["\u1FFC", "\u1FF3"], ["\u03A3", "\u03C2"], ["\u0049", "\u0069\u0307"], ["\u004A", "\u006A\u0307"], ["\u012E", "\u012F\u0307"], ["\u00CC", "\u0069\u0307\u0300"], ["\u00CD", "\u0069\u0307\u0301"], ["\u0128", "\u0069\u0307\u0303"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < LowerSpecialCase.length; index++) {
+ var capitalI = LowerSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = LowerSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toLowerCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.18_A1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.18_A1.js
new file mode 100644
index 000000000..ded8f7175
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.18_A1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A1;
+* @section: 15.5.4.18;
+* @assertion: The characters in UnicodeData.txt, but not in SpecialCasings.txt are converted one by one;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperCase = [[0x0061, 0x0041], [0x0062, 0x0042], [0x0063, 0x0043], [0x0064, 0x0044], [0x0065, 0x0045], [0x0066, 0x0046], [0x0067, 0x0047], [0x0068, 0x0048], [0x006A, 0x004A], [0x006B, 0x004B], [0x006C, 0x004C], [0x006D, 0x004D], [0x006E, 0x004E], [0x006F, 0x004F], [0x0070, 0x0050], [0x0071, 0x0051], [0x0072, 0x0052], [0x0073, 0x0053], [0x0074, 0x0054], [0x0075, 0x0055], [0x0076, 0x0056], [0x0077, 0x0057], [0x0078, 0x0058], [0x0079, 0x0059], [0x007A, 0x005A], [0x00B5, 0x039C], [0x00E0, 0x00C0], [0x00E1, 0x00C1], [0x00E2, 0x00C2], [0x00E3, 0x00C3], [0x00E4, 0x00C4], [0x00E5, 0x00C5], [0x00E6, 0x00C6], [0x00E7, 0x00C7], [0x00E8, 0x00C8], [0x00E9, 0x00C9], [0x00EA, 0x00CA], [0x00EB, 0x00CB], [0x00EC, 0x00CC], [0x00ED, 0x00CD], [0x00EE, 0x00CE], [0x00EF, 0x00CF], [0x00F0, 0x00D0], [0x00F1, 0x00D1], [0x00F2, 0x00D2], [0x00F3, 0x00D3], [0x00F4, 0x00D4], [0x00F5, 0x00D5], [0x00F6, 0x00D6], [0x00F8, 0x00D8], [0x00F9, 0x00D9], [0x00FA, 0x00DA], [0x00FB, 0x00DB], [0x00FC, 0x00DC], [0x00FD, 0x00DD], [0x00FE, 0x00DE], [0x00FF, 0x0178], [0x0101, 0x0100], [0x0103, 0x0102], [0x0105, 0x0104], [0x0107, 0x0106], [0x0109, 0x0108], [0x010B, 0x010A], [0x010D, 0x010C], [0x010F, 0x010E], [0x0111, 0x0110], [0x0113, 0x0112], [0x0115, 0x0114], [0x0117, 0x0116], [0x0119, 0x0118], [0x011B, 0x011A], [0x011D, 0x011C], [0x011F, 0x011E], [0x0121, 0x0120], [0x0123, 0x0122], [0x0125, 0x0124], [0x0127, 0x0126], [0x0129, 0x0128], [0x012B, 0x012A], [0x012D, 0x012C], [0x012F, 0x012E], [0x0131, 0x0049], [0x0133, 0x0132], [0x0135, 0x0134], [0x0137, 0x0136], [0x013A, 0x0139], [0x013C, 0x013B], [0x013E, 0x013D], [0x0140, 0x013F], [0x0142, 0x0141], [0x0144, 0x0143], [0x0146, 0x0145], [0x0148, 0x0147], [0x014B, 0x014A], [0x014D, 0x014C], [0x014F, 0x014E], [0x0151, 0x0150], [0x0153, 0x0152], [0x0155, 0x0154], [0x0157, 0x0156], [0x0159, 0x0158], [0x015B, 0x015A], [0x015D, 0x015C], [0x015F, 0x015E], [0x0161, 0x0160], [0x0163, 0x0162], [0x0165, 0x0164], [0x0167, 0x0166], [0x0169, 0x0168], [0x016B, 0x016A], [0x016D, 0x016C], [0x016F, 0x016E], [0x0171, 0x0170], [0x0173, 0x0172], [0x0175, 0x0174], [0x0177, 0x0176], [0x017A, 0x0179], [0x017C, 0x017B], [0x017E, 0x017D], [0x017F, 0x0053], [0x0180, 0x0243], [0x0183, 0x0182], [0x0185, 0x0184], [0x0188, 0x0187], [0x018C, 0x018B], [0x0192, 0x0191], [0x0195, 0x01F6], [0x0199, 0x0198], [0x019A, 0x023D], [0x019E, 0x0220], [0x01A1, 0x01A0], [0x01A3, 0x01A2], [0x01A5, 0x01A4], [0x01A8, 0x01A7], [0x01AD, 0x01AC], [0x01B0, 0x01AF], [0x01B4, 0x01B3], [0x01B6, 0x01B5], [0x01B9, 0x01B8], [0x01BD, 0x01BC], [0x01BF, 0x01F7], [0x01C5, 0x01C4], [0x01C6, 0x01C4], [0x01C8, 0x01C7], [0x01C9, 0x01C7], [0x01CB, 0x01CA], [0x01CC, 0x01CA], [0x01CE, 0x01CD], [0x01D0, 0x01CF], [0x01D2, 0x01D1], [0x01D4, 0x01D3], [0x01D6, 0x01D5], [0x01D8, 0x01D7], [0x01DA, 0x01D9], [0x01DC, 0x01DB], [0x01DD, 0x018E], [0x01DF, 0x01DE], [0x01E1, 0x01E0], [0x01E3, 0x01E2], [0x01E5, 0x01E4], [0x01E7, 0x01E6], [0x01E9, 0x01E8], [0x01EB, 0x01EA], [0x01ED, 0x01EC], [0x01EF, 0x01EE], [0x01F2, 0x01F1], [0x01F3, 0x01F1], [0x01F5, 0x01F4], [0x01F9, 0x01F8], [0x01FB, 0x01FA], [0x01FD, 0x01FC], [0x01FF, 0x01FE], [0x0201, 0x0200], [0x0203, 0x0202], [0x0205, 0x0204], [0x0207, 0x0206], [0x0209, 0x0208], [0x020B, 0x020A], [0x020D, 0x020C], [0x020F, 0x020E], [0x0211, 0x0210], [0x0213, 0x0212], [0x0215, 0x0214], [0x0217, 0x0216], [0x0219, 0x0218], [0x021B, 0x021A], [0x021D, 0x021C], [0x021F, 0x021E], [0x0223, 0x0222], [0x0225, 0x0224], [0x0227, 0x0226], [0x0229, 0x0228], [0x022B, 0x022A], [0x022D, 0x022C], [0x022F, 0x022E], [0x0231, 0x0230], [0x0233, 0x0232], [0x023C, 0x023B], [0x0242, 0x0241], [0x0247, 0x0246], [0x0249, 0x0248], [0x024B, 0x024A], [0x024D, 0x024C], [0x024F, 0x024E], [0x0250, 0x2C6F], [0x0251, 0x2C6D], [0x0253, 0x0181], [0x0254, 0x0186], [0x0256, 0x0189], [0x0257, 0x018A], [0x0259, 0x018F], [0x025B, 0x0190], [0x0260, 0x0193], [0x0263, 0x0194], [0x0268, 0x0197], [0x0269, 0x0196], [0x026B, 0x2C62], [0x026F, 0x019C], [0x0271, 0x2C6E], [0x0272, 0x019D], [0x0275, 0x019F], [0x027D, 0x2C64], [0x0280, 0x01A6], [0x0283, 0x01A9], [0x0288, 0x01AE], [0x0289, 0x0244], [0x028A, 0x01B1], [0x028B, 0x01B2], [0x028C, 0x0245], [0x0292, 0x01B7], [0x0345, 0x0399], [0x0371, 0x0370], [0x0373, 0x0372], [0x0377, 0x0376], [0x037B, 0x03FD], [0x037C, 0x03FE], [0x037D, 0x03FF], [0x03AC, 0x0386], [0x03AD, 0x0388], [0x03AE, 0x0389], [0x03AF, 0x038A], [0x03B1, 0x0391], [0x03B2, 0x0392], [0x03B3, 0x0393], [0x03B4, 0x0394], [0x03B5, 0x0395], [0x03B6, 0x0396], [0x03B7, 0x0397], [0x03B8, 0x0398], [0x03B9, 0x0399], [0x03BA, 0x039A], [0x03BB, 0x039B], [0x03BC, 0x039C], [0x03BD, 0x039D], [0x03BE, 0x039E], [0x03BF, 0x039F], [0x03C0, 0x03A0], [0x03C1, 0x03A1], [0x03C2, 0x03A3], [0x03C3, 0x03A3], [0x03C4, 0x03A4], [0x03C5, 0x03A5], [0x03C6, 0x03A6], [0x03C7, 0x03A7], [0x03C8, 0x03A8], [0x03C9, 0x03A9], [0x03CA, 0x03AA], [0x03CB, 0x03AB], [0x03CC, 0x038C], [0x03CD, 0x038E], [0x03CE, 0x038F], [0x03D0, 0x0392], [0x03D1, 0x0398], [0x03D5, 0x03A6], [0x03D6, 0x03A0], [0x03D7, 0x03CF], [0x03D9, 0x03D8], [0x03DB, 0x03DA], [0x03DD, 0x03DC], [0x03DF, 0x03DE], [0x03E1, 0x03E0], [0x03E3, 0x03E2], [0x03E5, 0x03E4], [0x03E7, 0x03E6], [0x03E9, 0x03E8], [0x03EB, 0x03EA], [0x03ED, 0x03EC], [0x03EF, 0x03EE], [0x03F0, 0x039A], [0x03F1, 0x03A1], [0x03F2, 0x03F9], [0x03F5, 0x0395], [0x03F8, 0x03F7], [0x03FB, 0x03FA], [0x0430, 0x0410], [0x0431, 0x0411], [0x0432, 0x0412], [0x0433, 0x0413], [0x0434, 0x0414], [0x0435, 0x0415], [0x0436, 0x0416], [0x0437, 0x0417], [0x0438, 0x0418], [0x0439, 0x0419], [0x043A, 0x041A], [0x043B, 0x041B], [0x043C, 0x041C], [0x043D, 0x041D], [0x043E, 0x041E], [0x043F, 0x041F], [0x0440, 0x0420], [0x0441, 0x0421], [0x0442, 0x0422], [0x0443, 0x0423], [0x0444, 0x0424], [0x0445, 0x0425], [0x0446, 0x0426], [0x0447, 0x0427], [0x0448, 0x0428], [0x0449, 0x0429], [0x044A, 0x042A], [0x044B, 0x042B], [0x044C, 0x042C], [0x044D, 0x042D], [0x044E, 0x042E], [0x044F, 0x042F], [0x0450, 0x0400], [0x0451, 0x0401], [0x0452, 0x0402], [0x0453, 0x0403], [0x0454, 0x0404], [0x0455, 0x0405], [0x0456, 0x0406], [0x0457, 0x0407], [0x0458, 0x0408], [0x0459, 0x0409], [0x045A, 0x040A], [0x045B, 0x040B], [0x045C, 0x040C], [0x045D, 0x040D], [0x045E, 0x040E], [0x045F, 0x040F], [0x0461, 0x0460], [0x0463, 0x0462], [0x0465, 0x0464], [0x0467, 0x0466], [0x0469, 0x0468], [0x046B, 0x046A], [0x046D, 0x046C], [0x046F, 0x046E], [0x0471, 0x0470], [0x0473, 0x0472], [0x0475, 0x0474], [0x0477, 0x0476], [0x0479, 0x0478], [0x047B, 0x047A], [0x047D, 0x047C], [0x047F, 0x047E], [0x0481, 0x0480], [0x048B, 0x048A], [0x048D, 0x048C], [0x048F, 0x048E], [0x0491, 0x0490], [0x0493, 0x0492], [0x0495, 0x0494], [0x0497, 0x0496], [0x0499, 0x0498], [0x049B, 0x049A], [0x049D, 0x049C], [0x049F, 0x049E], [0x04A1, 0x04A0], [0x04A3, 0x04A2], [0x04A5, 0x04A4], [0x04A7, 0x04A6], [0x04A9, 0x04A8], [0x04AB, 0x04AA], [0x04AD, 0x04AC], [0x04AF, 0x04AE], [0x04B1, 0x04B0], [0x04B3, 0x04B2], [0x04B5, 0x04B4], [0x04B7, 0x04B6], [0x04B9, 0x04B8], [0x04BB, 0x04BA], [0x04BD, 0x04BC], [0x04BF, 0x04BE], [0x04C2, 0x04C1], [0x04C4, 0x04C3], [0x04C6, 0x04C5], [0x04C8, 0x04C7], [0x04CA, 0x04C9], [0x04CC, 0x04CB], [0x04CE, 0x04CD], [0x04CF, 0x04C0], [0x04D1, 0x04D0], [0x04D3, 0x04D2], [0x04D5, 0x04D4], [0x04D7, 0x04D6], [0x04D9, 0x04D8], [0x04DB, 0x04DA], [0x04DD, 0x04DC], [0x04DF, 0x04DE], [0x04E1, 0x04E0], [0x04E3, 0x04E2], [0x04E5, 0x04E4], [0x04E7, 0x04E6], [0x04E9, 0x04E8], [0x04EB, 0x04EA], [0x04ED, 0x04EC], [0x04EF, 0x04EE], [0x04F1, 0x04F0], [0x04F3, 0x04F2], [0x04F5, 0x04F4], [0x04F7, 0x04F6], [0x04F9, 0x04F8], [0x04FB, 0x04FA], [0x04FD, 0x04FC], [0x04FF, 0x04FE], [0x0501, 0x0500], [0x0503, 0x0502], [0x0505, 0x0504], [0x0507, 0x0506], [0x0509, 0x0508], [0x050B, 0x050A], [0x050D, 0x050C], [0x050F, 0x050E], [0x0511, 0x0510], [0x0513, 0x0512], [0x0515, 0x0514], [0x0517, 0x0516], [0x0519, 0x0518], [0x051B, 0x051A], [0x051D, 0x051C], [0x051F, 0x051E], [0x0521, 0x0520], [0x0523, 0x0522], [0x0561, 0x0531], [0x0562, 0x0532], [0x0563, 0x0533], [0x0564, 0x0534], [0x0565, 0x0535], [0x0566, 0x0536], [0x0567, 0x0537], [0x0568, 0x0538], [0x0569, 0x0539], [0x056A, 0x053A], [0x056B, 0x053B], [0x056C, 0x053C], [0x056D, 0x053D], [0x056E, 0x053E], [0x056F, 0x053F], [0x0570, 0x0540], [0x0571, 0x0541], [0x0572, 0x0542], [0x0573, 0x0543], [0x0574, 0x0544], [0x0575, 0x0545], [0x0576, 0x0546], [0x0577, 0x0547], [0x0578, 0x0548], [0x0579, 0x0549], [0x057A, 0x054A], [0x057B, 0x054B], [0x057C, 0x054C], [0x057D, 0x054D], [0x057E, 0x054E], [0x057F, 0x054F], [0x0580, 0x0550], [0x0581, 0x0551], [0x0582, 0x0552], [0x0583, 0x0553], [0x0584, 0x0554], [0x0585, 0x0555], [0x0586, 0x0556], [0x1D79, 0xA77D], [0x1D7D, 0x2C63], [0x1E01, 0x1E00], [0x1E03, 0x1E02], [0x1E05, 0x1E04], [0x1E07, 0x1E06], [0x1E09, 0x1E08], [0x1E0B, 0x1E0A], [0x1E0D, 0x1E0C], [0x1E0F, 0x1E0E], [0x1E11, 0x1E10], [0x1E13, 0x1E12], [0x1E15, 0x1E14], [0x1E17, 0x1E16], [0x1E19, 0x1E18], [0x1E1B, 0x1E1A], [0x1E1D, 0x1E1C], [0x1E1F, 0x1E1E], [0x1E21, 0x1E20], [0x1E23, 0x1E22], [0x1E25, 0x1E24], [0x1E27, 0x1E26], [0x1E29, 0x1E28], [0x1E2B, 0x1E2A], [0x1E2D, 0x1E2C], [0x1E2F, 0x1E2E], [0x1E31, 0x1E30], [0x1E33, 0x1E32], [0x1E35, 0x1E34], [0x1E37, 0x1E36], [0x1E39, 0x1E38], [0x1E3B, 0x1E3A], [0x1E3D, 0x1E3C], [0x1E3F, 0x1E3E], [0x1E41, 0x1E40], [0x1E43, 0x1E42], [0x1E45, 0x1E44], [0x1E47, 0x1E46], [0x1E49, 0x1E48], [0x1E4B, 0x1E4A], [0x1E4D, 0x1E4C], [0x1E4F, 0x1E4E], [0x1E51, 0x1E50], [0x1E53, 0x1E52], [0x1E55, 0x1E54], [0x1E57, 0x1E56], [0x1E59, 0x1E58], [0x1E5B, 0x1E5A], [0x1E5D, 0x1E5C], [0x1E5F, 0x1E5E], [0x1E61, 0x1E60], [0x1E63, 0x1E62], [0x1E65, 0x1E64], [0x1E67, 0x1E66], [0x1E69, 0x1E68], [0x1E6B, 0x1E6A], [0x1E6D, 0x1E6C], [0x1E6F, 0x1E6E], [0x1E71, 0x1E70], [0x1E73, 0x1E72], [0x1E75, 0x1E74], [0x1E77, 0x1E76], [0x1E79, 0x1E78], [0x1E7B, 0x1E7A], [0x1E7D, 0x1E7C], [0x1E7F, 0x1E7E], [0x1E81, 0x1E80], [0x1E83, 0x1E82], [0x1E85, 0x1E84], [0x1E87, 0x1E86], [0x1E89, 0x1E88], [0x1E8B, 0x1E8A], [0x1E8D, 0x1E8C], [0x1E8F, 0x1E8E], [0x1E91, 0x1E90], [0x1E93, 0x1E92], [0x1E95, 0x1E94], [0x1E9B, 0x1E60], [0x1EA1, 0x1EA0], [0x1EA3, 0x1EA2], [0x1EA5, 0x1EA4], [0x1EA7, 0x1EA6], [0x1EA9, 0x1EA8], [0x1EAB, 0x1EAA], [0x1EAD, 0x1EAC], [0x1EAF, 0x1EAE], [0x1EB1, 0x1EB0], [0x1EB3, 0x1EB2], [0x1EB5, 0x1EB4], [0x1EB7, 0x1EB6], [0x1EB9, 0x1EB8], [0x1EBB, 0x1EBA], [0x1EBD, 0x1EBC], [0x1EBF, 0x1EBE], [0x1EC1, 0x1EC0], [0x1EC3, 0x1EC2], [0x1EC5, 0x1EC4], [0x1EC7, 0x1EC6], [0x1EC9, 0x1EC8], [0x1ECB, 0x1ECA], [0x1ECD, 0x1ECC], [0x1ECF, 0x1ECE], [0x1ED1, 0x1ED0], [0x1ED3, 0x1ED2], [0x1ED5, 0x1ED4], [0x1ED7, 0x1ED6], [0x1ED9, 0x1ED8], [0x1EDB, 0x1EDA], [0x1EDD, 0x1EDC], [0x1EDF, 0x1EDE], [0x1EE1, 0x1EE0], [0x1EE3, 0x1EE2], [0x1EE5, 0x1EE4], [0x1EE7, 0x1EE6], [0x1EE9, 0x1EE8], [0x1EEB, 0x1EEA], [0x1EED, 0x1EEC], [0x1EEF, 0x1EEE], [0x1EF1, 0x1EF0], [0x1EF3, 0x1EF2], [0x1EF5, 0x1EF4], [0x1EF7, 0x1EF6], [0x1EF9, 0x1EF8], [0x1EFB, 0x1EFA], [0x1EFD, 0x1EFC], [0x1EFF, 0x1EFE], [0x1F00, 0x1F08], [0x1F01, 0x1F09], [0x1F02, 0x1F0A], [0x1F03, 0x1F0B], [0x1F04, 0x1F0C], [0x1F05, 0x1F0D], [0x1F06, 0x1F0E], [0x1F07, 0x1F0F], [0x1F10, 0x1F18], [0x1F11, 0x1F19], [0x1F12, 0x1F1A], [0x1F13, 0x1F1B], [0x1F14, 0x1F1C], [0x1F15, 0x1F1D], [0x1F20, 0x1F28], [0x1F21, 0x1F29], [0x1F22, 0x1F2A], [0x1F23, 0x1F2B], [0x1F24, 0x1F2C], [0x1F25, 0x1F2D], [0x1F26, 0x1F2E], [0x1F27, 0x1F2F], [0x1F30, 0x1F38], [0x1F31, 0x1F39], [0x1F32, 0x1F3A], [0x1F33, 0x1F3B], [0x1F34, 0x1F3C], [0x1F35, 0x1F3D], [0x1F36, 0x1F3E], [0x1F37, 0x1F3F], [0x1F40, 0x1F48], [0x1F41, 0x1F49], [0x1F42, 0x1F4A], [0x1F43, 0x1F4B], [0x1F44, 0x1F4C], [0x1F45, 0x1F4D], [0x1F51, 0x1F59], [0x1F53, 0x1F5B], [0x1F55, 0x1F5D], [0x1F57, 0x1F5F], [0x1F60, 0x1F68], [0x1F61, 0x1F69], [0x1F62, 0x1F6A], [0x1F63, 0x1F6B], [0x1F64, 0x1F6C], [0x1F65, 0x1F6D], [0x1F66, 0x1F6E], [0x1F67, 0x1F6F], [0x1F70, 0x1FBA], [0x1F71, 0x1FBB], [0x1F72, 0x1FC8], [0x1F73, 0x1FC9], [0x1F74, 0x1FCA], [0x1F75, 0x1FCB], [0x1F76, 0x1FDA], [0x1F77, 0x1FDB], [0x1F78, 0x1FF8], [0x1F79, 0x1FF9], [0x1F7A, 0x1FEA], [0x1F7B, 0x1FEB], [0x1F7C, 0x1FFA], [0x1F7D, 0x1FFB], [0x1FB0, 0x1FB8], [0x1FB1, 0x1FB9], [0x1FBE, 0x0399], [0x1FD0, 0x1FD8], [0x1FD1, 0x1FD9], [0x1FE0, 0x1FE8], [0x1FE1, 0x1FE9], [0x1FE5, 0x1FEC], [0x214E, 0x2132], [0x2170, 0x2160], [0x2171, 0x2161], [0x2172, 0x2162], [0x2173, 0x2163], [0x2174, 0x2164], [0x2175, 0x2165], [0x2176, 0x2166], [0x2177, 0x2167], [0x2178, 0x2168], [0x2179, 0x2169], [0x217A, 0x216A], [0x217B, 0x216B], [0x217C, 0x216C], [0x217D, 0x216D], [0x217E, 0x216E], [0x217F, 0x216F], [0x2184, 0x2183], [0x24D0, 0x24B6], [0x24D1, 0x24B7], [0x24D2, 0x24B8], [0x24D3, 0x24B9], [0x24D4, 0x24BA], [0x24D5, 0x24BB], [0x24D6, 0x24BC], [0x24D7, 0x24BD], [0x24D8, 0x24BE], [0x24D9, 0x24BF], [0x24DA, 0x24C0], [0x24DB, 0x24C1], [0x24DC, 0x24C2], [0x24DD, 0x24C3], [0x24DE, 0x24C4], [0x24DF, 0x24C5], [0x24E0, 0x24C6], [0x24E1, 0x24C7], [0x24E2, 0x24C8], [0x24E3, 0x24C9], [0x24E4, 0x24CA], [0x24E5, 0x24CB], [0x24E6, 0x24CC], [0x24E7, 0x24CD], [0x24E8, 0x24CE], [0x24E9, 0x24CF], [0x2C30, 0x2C00], [0x2C31, 0x2C01], [0x2C32, 0x2C02], [0x2C33, 0x2C03], [0x2C34, 0x2C04], [0x2C35, 0x2C05], [0x2C36, 0x2C06], [0x2C37, 0x2C07], [0x2C38, 0x2C08], [0x2C39, 0x2C09], [0x2C3A, 0x2C0A], [0x2C3B, 0x2C0B], [0x2C3C, 0x2C0C], [0x2C3D, 0x2C0D], [0x2C3E, 0x2C0E], [0x2C3F, 0x2C0F], [0x2C40, 0x2C10], [0x2C41, 0x2C11], [0x2C42, 0x2C12], [0x2C43, 0x2C13], [0x2C44, 0x2C14], [0x2C45, 0x2C15], [0x2C46, 0x2C16], [0x2C47, 0x2C17], [0x2C48, 0x2C18], [0x2C49, 0x2C19], [0x2C4A, 0x2C1A], [0x2C4B, 0x2C1B], [0x2C4C, 0x2C1C], [0x2C4D, 0x2C1D], [0x2C4E, 0x2C1E], [0x2C4F, 0x2C1F], [0x2C50, 0x2C20], [0x2C51, 0x2C21], [0x2C52, 0x2C22], [0x2C53, 0x2C23], [0x2C54, 0x2C24], [0x2C55, 0x2C25], [0x2C56, 0x2C26], [0x2C57, 0x2C27], [0x2C58, 0x2C28], [0x2C59, 0x2C29], [0x2C5A, 0x2C2A], [0x2C5B, 0x2C2B], [0x2C5C, 0x2C2C], [0x2C5D, 0x2C2D], [0x2C5E, 0x2C2E], [0x2C61, 0x2C60], [0x2C65, 0x023A], [0x2C66, 0x023E], [0x2C68, 0x2C67], [0x2C6A, 0x2C69], [0x2C6C, 0x2C6B], [0x2C73, 0x2C72], [0x2C76, 0x2C75], [0x2C81, 0x2C80], [0x2C83, 0x2C82], [0x2C85, 0x2C84], [0x2C87, 0x2C86], [0x2C89, 0x2C88], [0x2C8B, 0x2C8A], [0x2C8D, 0x2C8C], [0x2C8F, 0x2C8E], [0x2C91, 0x2C90], [0x2C93, 0x2C92], [0x2C95, 0x2C94], [0x2C97, 0x2C96], [0x2C99, 0x2C98], [0x2C9B, 0x2C9A], [0x2C9D, 0x2C9C], [0x2C9F, 0x2C9E], [0x2CA1, 0x2CA0], [0x2CA3, 0x2CA2], [0x2CA5, 0x2CA4], [0x2CA7, 0x2CA6], [0x2CA9, 0x2CA8], [0x2CAB, 0x2CAA], [0x2CAD, 0x2CAC], [0x2CAF, 0x2CAE], [0x2CB1, 0x2CB0], [0x2CB3, 0x2CB2], [0x2CB5, 0x2CB4], [0x2CB7, 0x2CB6], [0x2CB9, 0x2CB8], [0x2CBB, 0x2CBA], [0x2CBD, 0x2CBC], [0x2CBF, 0x2CBE], [0x2CC1, 0x2CC0], [0x2CC3, 0x2CC2], [0x2CC5, 0x2CC4], [0x2CC7, 0x2CC6], [0x2CC9, 0x2CC8], [0x2CCB, 0x2CCA], [0x2CCD, 0x2CCC], [0x2CCF, 0x2CCE], [0x2CD1, 0x2CD0], [0x2CD3, 0x2CD2], [0x2CD5, 0x2CD4], [0x2CD7, 0x2CD6], [0x2CD9, 0x2CD8], [0x2CDB, 0x2CDA], [0x2CDD, 0x2CDC], [0x2CDF, 0x2CDE], [0x2CE1, 0x2CE0], [0x2CE3, 0x2CE2], [0x2D00, 0x10A0], [0x2D01, 0x10A1], [0x2D02, 0x10A2], [0x2D03, 0x10A3], [0x2D04, 0x10A4], [0x2D05, 0x10A5], [0x2D06, 0x10A6], [0x2D07, 0x10A7], [0x2D08, 0x10A8], [0x2D09, 0x10A9], [0x2D0A, 0x10AA], [0x2D0B, 0x10AB], [0x2D0C, 0x10AC], [0x2D0D, 0x10AD], [0x2D0E, 0x10AE], [0x2D0F, 0x10AF], [0x2D10, 0x10B0], [0x2D11, 0x10B1], [0x2D12, 0x10B2], [0x2D13, 0x10B3], [0x2D14, 0x10B4], [0x2D15, 0x10B5], [0x2D16, 0x10B6], [0x2D17, 0x10B7], [0x2D18, 0x10B8], [0x2D19, 0x10B9], [0x2D1A, 0x10BA], [0x2D1B, 0x10BB], [0x2D1C, 0x10BC], [0x2D1D, 0x10BD], [0x2D1E, 0x10BE], [0x2D1F, 0x10BF], [0x2D20, 0x10C0], [0x2D21, 0x10C1], [0x2D22, 0x10C2], [0x2D23, 0x10C3], [0x2D24, 0x10C4], [0x2D25, 0x10C5], [0xA641, 0xA640], [0xA643, 0xA642], [0xA645, 0xA644], [0xA647, 0xA646], [0xA649, 0xA648], [0xA64B, 0xA64A], [0xA64D, 0xA64C], [0xA64F, 0xA64E], [0xA651, 0xA650], [0xA653, 0xA652], [0xA655, 0xA654], [0xA657, 0xA656], [0xA659, 0xA658], [0xA65B, 0xA65A], [0xA65D, 0xA65C], [0xA65F, 0xA65E], [0xA663, 0xA662], [0xA665, 0xA664], [0xA667, 0xA666], [0xA669, 0xA668], [0xA66B, 0xA66A], [0xA66D, 0xA66C], [0xA681, 0xA680], [0xA683, 0xA682], [0xA685, 0xA684], [0xA687, 0xA686], [0xA689, 0xA688], [0xA68B, 0xA68A], [0xA68D, 0xA68C], [0xA68F, 0xA68E], [0xA691, 0xA690], [0xA693, 0xA692], [0xA695, 0xA694], [0xA697, 0xA696], [0xA723, 0xA722], [0xA725, 0xA724], [0xA727, 0xA726], [0xA729, 0xA728], [0xA72B, 0xA72A], [0xA72D, 0xA72C], [0xA72F, 0xA72E], [0xA733, 0xA732], [0xA735, 0xA734], [0xA737, 0xA736], [0xA739, 0xA738], [0xA73B, 0xA73A], [0xA73D, 0xA73C], [0xA73F, 0xA73E], [0xA741, 0xA740], [0xA743, 0xA742], [0xA745, 0xA744], [0xA747, 0xA746], [0xA749, 0xA748], [0xA74B, 0xA74A], [0xA74D, 0xA74C], [0xA74F, 0xA74E], [0xA751, 0xA750], [0xA753, 0xA752], [0xA755, 0xA754], [0xA757, 0xA756], [0xA759, 0xA758], [0xA75B, 0xA75A], [0xA75D, 0xA75C], [0xA75F, 0xA75E], [0xA761, 0xA760], [0xA763, 0xA762], [0xA765, 0xA764], [0xA767, 0xA766], [0xA769, 0xA768], [0xA76B, 0xA76A], [0xA76D, 0xA76C], [0xA76F, 0xA76E], [0xA77A, 0xA779], [0xA77C, 0xA77B], [0xA77F, 0xA77E], [0xA781, 0xA780], [0xA783, 0xA782], [0xA785, 0xA784], [0xA787, 0xA786], [0xA78C, 0xA78B], [0xFF41, 0xFF21], [0xFF42, 0xFF22], [0xFF43, 0xFF23], [0xFF44, 0xFF24], [0xFF45, 0xFF25], [0xFF46, 0xFF26], [0xFF47, 0xFF27], [0xFF48, 0xFF28], [0xFF49, 0xFF29], [0xFF4A, 0xFF2A], [0xFF4B, 0xFF2B], [0xFF4C, 0xFF2C], [0xFF4D, 0xFF2D], [0xFF4E, 0xFF2E], [0xFF4F, 0xFF2F], [0xFF50, 0xFF30], [0xFF51, 0xFF31], [0xFF52, 0xFF32], [0xFF53, 0xFF33], [0xFF54, 0xFF34], [0xFF55, 0xFF35], [0xFF56, 0xFF36], [0xFF57, 0xFF37], [0xFF58, 0xFF38], [0xFF59, 0xFF39], [0xFF5A, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperCase.length; index++) {
+ var capitalI = UpperCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.18_A2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.18_A2.js
new file mode 100644
index 000000000..0793f66a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S15.5.4.18_A2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.5.4.18_A2;
+* @section: 15.5.4.18;
+* @assertion: The characters in SpecialCasings.txt are converted by multi-character results;
+* @description: Complex test;
+*/
+
+//CHECK
+UpperSpecialCase = [["\u00DF", "\u0053\u0053"], ["\uFB00", "\u0046\u0046"], ["\uFB01", "\u0046\u0049"], ["\uFB02", "\u0046\u004C"], ["\uFB03", "\u0046\u0046\u0049"], ["\uFB04", "\u0046\u0046\u004C"], ["\uFB05", "\u0053\u0054"], ["\uFB06", "\u0053\u0054"], ["\u0587", "\u0535\u0552"], ["\uFB13", "\u0544\u0546"], ["\uFB14", "\u0544\u0535"], ["\uFB15", "\u0544\u053B"], ["\uFB16", "\u054E\u0546"], ["\uFB17", "\u0544\u053D"], ["\u0149", "\u02BC\u004E"], ["\u0390", "\u0399\u0308\u0301"], ["\u03B0", "\u03A5\u0308\u0301"], ["\u01F0", "\u004A\u030C"], ["\u1E96", "\u0048\u0331"], ["\u1E97", "\u0054\u0308"], ["\u1E98", "\u0057\u030A"], ["\u1E99", "\u0059\u030A"], ["\u1E9A", "\u0041\u02BE"], ["\u1F50", "\u03A5\u0313"], ["\u1F52", "\u03A5\u0313\u0300"], ["\u1F54", "\u03A5\u0313\u0301"], ["\u1F56", "\u03A5\u0313\u0342"], ["\u1FB6", "\u0391\u0342"], ["\u1FC6", "\u0397\u0342"], ["\u1FD2", "\u0399\u0308\u0300"], ["\u1FD3", "\u0399\u0308\u0301"], ["\u1FD6", "\u0399\u0342"], ["\u1FD7", "\u0399\u0308\u0342"], ["\u1FE2", "\u03A5\u0308\u0300"], ["\u1FE3", "\u03A5\u0308\u0301"], ["\u1FE4", "\u03A1\u0313"], ["\u1FE6", "\u03A5\u0342"], ["\u1FE7", "\u03A5\u0308\u0342"], ["\u1FF6", "\u03A9\u0342"], ["\u1F80", "\u1F08\u0399"], ["\u1F81", "\u1F09\u0399"], ["\u1F82", "\u1F0A\u0399"], ["\u1F83", "\u1F0B\u0399"], ["\u1F84", "\u1F0C\u0399"], ["\u1F85", "\u1F0D\u0399"], ["\u1F86", "\u1F0E\u0399"], ["\u1F87", "\u1F0F\u0399"], ["\u1F88", "\u1F08\u0399"], ["\u1F89", "\u1F09\u0399"], ["\u1F8A", "\u1F0A\u0399"], ["\u1F8B", "\u1F0B\u0399"], ["\u1F8C", "\u1F0C\u0399"], ["\u1F8D", "\u1F0D\u0399"], ["\u1F8E", "\u1F0E\u0399"], ["\u1F8F", "\u1F0F\u0399"], ["\u1F90", "\u1F28\u0399"], ["\u1F91", "\u1F29\u0399"], ["\u1F92", "\u1F2A\u0399"], ["\u1F93", "\u1F2B\u0399"], ["\u1F94", "\u1F2C\u0399"], ["\u1F95", "\u1F2D\u0399"], ["\u1F96", "\u1F2E\u0399"], ["\u1F97", "\u1F2F\u0399"], ["\u1F98", "\u1F28\u0399"], ["\u1F99", "\u1F29\u0399"], ["\u1F9A", "\u1F2A\u0399"], ["\u1F9B", "\u1F2B\u0399"], ["\u1F9C", "\u1F2C\u0399"], ["\u1F9D", "\u1F2D\u0399"], ["\u1F9E", "\u1F2E\u0399"], ["\u1F9F", "\u1F2F\u0399"], ["\u1FA0", "\u1F68\u0399"], ["\u1FA1", "\u1F69\u0399"], ["\u1FA2", "\u1F6A\u0399"], ["\u1FA3", "\u1F6B\u0399"], ["\u1FA4", "\u1F6C\u0399"], ["\u1FA5", "\u1F6D\u0399"], ["\u1FA6", "\u1F6E\u0399"], ["\u1FA7", "\u1F6F\u0399"], ["\u1FA8", "\u1F68\u0399"], ["\u1FA9", "\u1F69\u0399"], ["\u1FAA", "\u1F6A\u0399"], ["\u1FAB", "\u1F6B\u0399"], ["\u1FAC", "\u1F6C\u0399"], ["\u1FAD", "\u1F6D\u0399"], ["\u1FAE", "\u1F6E\u0399"], ["\u1FAF", "\u1F6F\u0399"], ["\u1FB3", "\u0391\u0399"], ["\u1FBC", "\u0391\u0399"], ["\u1FC3", "\u0397\u0399"], ["\u1FCC", "\u0397\u0399"], ["\u1FF3", "\u03A9\u0399"], ["\u1FFC", "\u03A9\u0399"], ["\u1FB2", "\u1FBA\u0399"], ["\u1FB4", "\u0386\u0399"], ["\u1FC2", "\u1FCA\u0399"], ["\u1FC4", "\u0389\u0399"], ["\u1FF2", "\u1FFA\u0399"], ["\u1FF4", "\u038F\u0399"], ["\u1FB7", "\u0391\u0342\u0399"], ["\u1FC7", "\u0397\u0342\u0399"], ["\u1FF7", "\u03A9\u0342\u0399"], ["\u0069", "\u0130"]];
+
+errorCount = 0;
+count = 0;
+
+for (index = 0; index < UpperSpecialCase.length; index++) {
+ var capitalI = UpperSpecialCase[index][0];
+ var capitalS = String.fromCharCode(capitalI);
+ var smallI = UpperSpecialCase[index][1];
+ var smallS = String.fromCharCode(smallI);
+ if (capitalS.toUpperCase() !== smallS) {
+ var hexC = decimalToHexString(capitalI);
+ var hexS = decimalToHexString(smallI);
+ $ERROR('#' + hexC + '->' + hexS + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A1_T1.js
new file mode 100644
index 000000000..b8fcf731d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A1_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A1_T1;
+ * @section: 7.1;
+ * @assertion: The format control character (Cf) can occur anywhere in the source text
+ * and these characters are removed before applying the lexical grammar;
+ * @description: Complex test with eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2064], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.1_T1.js
new file mode 100644
index 000000000..02ee42c9e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2064], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = format + "a" + format + "b" + format;
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.1_T2.js
new file mode 100644
index 000000000..6dc5b86a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.1_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing string literals,
+ * one must use a Unicode escape sequence to include a Cf inside string literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2064], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = "' + format + 'a' + format + 'b' + format + '"');
+ if (x.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.2_T1.js
new file mode 100644
index 000000000..003d9ca1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T1;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, without eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2064], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = RegExp(format + "a" + format + "b" + format);
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.2_T2.js
new file mode 100644
index 000000000..a66a69f84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.1_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.1_A2.2_T2;
+ * @section: 7.1;
+ * @assertion: Since the format control character (Cf) are removed before processing regular expression literals,
+ * one must use a Unicode escape sequence to include a Cf inside regular expression literal;
+ * @description: Complex test, with eval;
+*/
+
+//CHECK#1
+Cf = [[0x00AD, 0x00AD], [0x0600, 0x0603], [0x06DD, 0x06DD], [0x070F, 0x070F], [0x17B4, 0x17B5], [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2064], [0x206A, 0x206F], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Cf.length; indexI++) {
+ for (indexJ = Cf[indexI][0]; indexJ <= Cf[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval('var x = RegExp("' + format + 'a' + format + 'b' + format + '")');
+ if (x.source.length !== 5) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A1.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A1.6_T1.js
new file mode 100644
index 000000000..5a7da9bf6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A1.6_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A1.6_T1;
+ * @section: 7.2, 7.5;
+ * @assertion: Any other Unicode "space separator" (category "Zs") between any two tokens is allowed;
+ * @description: Complex test with eval;
+*/
+
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval(format);
+ eval(format + "var " + format + "x" + format + "=" + format + "1" + format);
+ eval(format);
+ if (x !== 1) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A2.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A2.6_T1.js
new file mode 100644
index 000000000..3c9b51236
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A2.6_T1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A2.6_T1;
+ * @section: 7.2, 7.8.4;
+ * @assertion: Any other Unicode "space separator" (category "Zs") within strings;
+ * @description: Complex test;
+*/
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = "str" + format + "ing";
+ if (x !== "str" + format + "ing") {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A3.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A3.6_T1.js
new file mode 100644
index 000000000..3cf973648
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A3.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A3.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Single line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("//" + format + "single line" + format + "comment" + format + " x = 1;");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A4.6_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A4.6_T1.js
new file mode 100644
index 000000000..c7eacb73c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.2_A4.6_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.2_A4.6_T1;
+ * @section: 7.2, 7.4;
+ * @assertion: Multi line comment can contain any other Unicode "space separator" (category "Zs");
+ * @description: Complex test with eval;
+ */
+
+//CHECK#1
+Zs = [[0x1680, 0x1680], [0x180E, 0x180E], [0x2000, 0x200A], [0x202F, 0x202F], [0x205F, 0x205F], [0x3000, 0x3000]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Zs.length; indexI++) {
+ for (indexJ = Zs[indexI][0]; indexJ <= Zs[indexI][1]; indexJ++) {
+ try {
+ var format = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ var x = 0;
+ eval("/*" + format + "multi line" + format + "comment" + format + "\n x = 1;*/");
+ if (x !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T1.js
new file mode 100644
index 000000000..4fc85668e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Uppercase letter (Lu).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0370, 0x0370], [0x0372, 0x0372], [0x0376, 0x0376], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03CF, 0x03CF], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0514, 0x0514], [0x0516, 0x0516], [0x0518, 0x0518], [0x051A, 0x051A], [0x051C, 0x051C], [0x051E, 0x051E], [0x0520, 0x0520], [0x0522, 0x0522], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1E9E, 0x1E9E], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1EFA, 0x1EFA], [0x1EFC, 0x1EFC], [0x1EFE, 0x1EFE], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C6D, 0x2C6F], [0x2C72, 0x2C72], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xA640, 0xA640], [0xA642, 0xA642], [0xA644, 0xA644], [0xA646, 0xA646], [0xA648, 0xA648], [0xA64A, 0xA64A], [0xA64C, 0xA64C], [0xA64E, 0xA64E], [0xA650, 0xA650], [0xA652, 0xA652], [0xA654, 0xA654], [0xA656, 0xA656], [0xA658, 0xA658], [0xA65A, 0xA65A], [0xA65C, 0xA65C], [0xA65E, 0xA65E], [0xA662, 0xA662], [0xA664, 0xA664], [0xA666, 0xA666], [0xA668, 0xA668], [0xA66A, 0xA66A], [0xA66C, 0xA66C], [0xA680, 0xA680], [0xA682, 0xA682], [0xA684, 0xA684], [0xA686, 0xA686], [0xA688, 0xA688], [0xA68A, 0xA68A], [0xA68C, 0xA68C], [0xA68E, 0xA68E], [0xA690, 0xA690], [0xA692, 0xA692], [0xA694, 0xA694], [0xA696, 0xA696], [0xA722, 0xA722], [0xA724, 0xA724], [0xA726, 0xA726], [0xA728, 0xA728], [0xA72A, 0xA72A], [0xA72C, 0xA72C], [0xA72E, 0xA72E], [0xA732, 0xA732], [0xA734, 0xA734], [0xA736, 0xA736], [0xA738, 0xA738], [0xA73A, 0xA73A], [0xA73C, 0xA73C], [0xA73E, 0xA73E], [0xA740, 0xA740], [0xA742, 0xA742], [0xA744, 0xA744], [0xA746, 0xA746], [0xA748, 0xA748], [0xA74A, 0xA74A], [0xA74C, 0xA74C], [0xA74E, 0xA74E], [0xA750, 0xA750], [0xA752, 0xA752], [0xA754, 0xA754], [0xA756, 0xA756], [0xA758, 0xA758], [0xA75A, 0xA75A], [0xA75C, 0xA75C], [0xA75E, 0xA75E], [0xA760, 0xA760], [0xA762, 0xA762], [0xA764, 0xA764], [0xA766, 0xA766], [0xA768, 0xA768], [0xA76A, 0xA76A], [0xA76C, 0xA76C], [0xA76E, 0xA76E], [0xA779, 0xA779], [0xA77B, 0xA77B], [0xA77D, 0xA77E], [0xA780, 0xA780], [0xA782, 0xA782], [0xA784, 0xA784], [0xA786, 0xA786], [0xA78B, 0xA78B], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T2.js
new file mode 100644
index 000000000..444e758b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Lowercase letter (Ll).
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x0371, 0x0371], [0x0373, 0x0373], [0x0377, 0x0377], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0515, 0x0515], [0x0517, 0x0517], [0x0519, 0x0519], [0x051B, 0x051B], [0x051D, 0x051D], [0x051F, 0x051F], [0x0521, 0x0521], [0x0523, 0x0523], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9D], [0x1E9F, 0x1E9F], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1EFB, 0x1EFB], [0x1EFD, 0x1EFD], [0x1EFF, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C71, 0x2C71], [0x2C73, 0x2C74], [0x2C76, 0x2C7C], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xA641, 0xA641], [0xA643, 0xA643], [0xA645, 0xA645], [0xA647, 0xA647], [0xA649, 0xA649], [0xA64B, 0xA64B], [0xA64D, 0xA64D], [0xA64F, 0xA64F], [0xA651, 0xA651], [0xA653, 0xA653], [0xA655, 0xA655], [0xA657, 0xA657], [0xA659, 0xA659], [0xA65B, 0xA65B], [0xA65D, 0xA65D], [0xA65F, 0xA65F], [0xA663, 0xA663], [0xA665, 0xA665], [0xA667, 0xA667], [0xA669, 0xA669], [0xA66B, 0xA66B], [0xA66D, 0xA66D], [0xA681, 0xA681], [0xA683, 0xA683], [0xA685, 0xA685], [0xA687, 0xA687], [0xA689, 0xA689], [0xA68B, 0xA68B], [0xA68D, 0xA68D], [0xA68F, 0xA68F], [0xA691, 0xA691], [0xA693, 0xA693], [0xA695, 0xA695], [0xA697, 0xA697], [0xA723, 0xA723], [0xA725, 0xA725], [0xA727, 0xA727], [0xA729, 0xA729], [0xA72B, 0xA72B], [0xA72D, 0xA72D], [0xA72F, 0xA731], [0xA733, 0xA733], [0xA735, 0xA735], [0xA737, 0xA737], [0xA739, 0xA739], [0xA73B, 0xA73B], [0xA73D, 0xA73D], [0xA73F, 0xA73F], [0xA741, 0xA741], [0xA743, 0xA743], [0xA745, 0xA745], [0xA747, 0xA747], [0xA749, 0xA749], [0xA74B, 0xA74B], [0xA74D, 0xA74D], [0xA74F, 0xA74F], [0xA751, 0xA751], [0xA753, 0xA753], [0xA755, 0xA755], [0xA757, 0xA757], [0xA759, 0xA759], [0xA75B, 0xA75B], [0xA75D, 0xA75D], [0xA75F, 0xA75F], [0xA761, 0xA761], [0xA763, 0xA763], [0xA765, 0xA765], [0xA767, 0xA767], [0xA769, 0xA769], [0xA76B, 0xA76B], [0xA76D, 0xA76D], [0xA76F, 0xA76F], [0xA771, 0xA778], [0xA77A, 0xA77A], [0xA77C, 0xA77C], [0xA77F, 0xA77F], [0xA781, 0xA781], [0xA783, 0xA783], [0xA785, 0xA785], [0xA787, 0xA787], [0xA78C, 0xA78C], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T3.js
new file mode 100644
index 000000000..06e9329b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T3.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Titlecase letter (Lt).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T4.js
new file mode 100644
index 000000000..30390e1db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T4.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Modifier letter (Lm).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EC, 0x02EC], [0x02EE, 0x02EE], [0x0374, 0x0374], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0971, 0x0971], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1C78, 0x1C7D], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2C7D, 0x2C7D], [0x2D6F, 0x2D6F], [0x2E2F, 0x2E2F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA60C, 0xA60C], [0xA67F, 0xA67F], [0xA717, 0xA71F], [0xA770, 0xA770], [0xA788, 0xA788], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T5.js
new file mode 100644
index 000000000..fc91d3a1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T5.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T5;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Other letter (Lo).
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063F], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0972, 0x0972], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0BD0, 0x0BD0], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C3D, 0x0C3D], [0x0C58, 0x0C59], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D3D, 0x0D3D], [0x0D60, 0x0D61], [0x0D7A, 0x0D7F], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6C], [0x0F88, 0x0F8B], [0x1000, 0x102A], [0x103F, 0x103F], [0x1050, 0x1055], [0x105A, 0x105D], [0x1061, 0x1061], [0x1065, 0x1066], [0x106E, 0x1070], [0x1075, 0x1081], [0x108E, 0x108E], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x18AA, 0x18AA], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x1B83, 0x1BA0], [0x1BAE, 0x1BAF], [0x1C00, 0x1C23], [0x1C4D, 0x1C4F], [0x1C5A, 0x1C77], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312D], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FC3], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA500, 0xA60B], [0xA610, 0xA61F], [0xA62A, 0xA62B], [0xA66E, 0xA66E], [0xA7FB, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xA882, 0xA8B3], [0xA90A, 0xA925], [0xA930, 0xA946], [0xAA00, 0xAA28], [0xAA40, 0xAA42], [0xAA44, 0xAA4B], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T6.js
new file mode 100644
index 000000000..2f6ab4dc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.1_T6.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.1_T6;
+ * @section: 7.6;
+ * @assertion: IdentifierStart :: UnicodeLetter (any character in the Unicode categories "Lu", "Ll", "Lt", "Lm", "Lo", "Nl");
+ * @description: UnicodeLetter :: Letter number (Nl);
+*/
+
+//CHECK
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x2185, 0x2188], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T1.js
new file mode 100644
index 000000000..af65435a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mn").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x036F], [0x0483, 0x0487], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x061A], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A51, 0x0A51], [0x0A70, 0x0A71], [0x0A75, 0x0A75], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B44], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B62, 0x0B63], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0C62, 0x0C63], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D44], [0x0D4D, 0x0D4D], [0x0D62, 0x0D63], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1037], [0x1039, 0x103A], [0x103D, 0x103E], [0x1058, 0x1059], [0x105E, 0x1060], [0x1071, 0x1074], [0x1082, 0x1082], [0x1085, 0x1086], [0x108D, 0x108D], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1B80, 0x1B81], [0x1BA2, 0x1BA5], [0x1BA8, 0x1BA9], [0x1C2C, 0x1C33], [0x1C36, 0x1C37], [0x1DC0, 0x1DE6], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20F0], [0x2DE0, 0x2DFF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA66F, 0xA66F], [0xA67C, 0xA67D], [0xA802, 0xA802], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xA8C4, 0xA8C4], [0xA926, 0xA92D], [0xA947, 0xA951], [0xAA29, 0xAA2E], [0xAA31, 0xAA32], [0xAA35, 0xAA36], [0xAA43, 0xAA43], [0xAA4C, 0xAA4C], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE26]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T2.js
new file mode 100644
index 000000000..0ea16d6af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T2.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeCombiningMark ("Mc").
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102B, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x103B, 0x103C], [0x1056, 0x1057], [0x1062, 0x1064], [0x1067, 0x106D], [0x1083, 0x1084], [0x1087, 0x108C], [0x108F, 0x108F], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0x1B82, 0x1B82], [0x1BA1, 0x1BA1], [0x1BA6, 0x1BA7], [0x1BAA, 0x1BAA], [0x1C24, 0x1C2B], [0x1C34, 0x1C35], [0xA823, 0xA824], [0xA827, 0xA827], [0xA880, 0xA881], [0xA8B4, 0xA8C3], [0xA952, 0xA953], [0xAA2F, 0xAA30], [0xAA33, 0xAA34], [0xAA4D, 0xAA4D]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T3.js
new file mode 100644
index 000000000..4c990dc03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T3.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T3;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeDigit ("Nd").
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1090, 0x1099], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0x1BB0, 0x1BB9], [0x1C40, 0x1C49], [0x1C50, 0x1C59], [0xA620, 0xA629], [0xA8D0, 0xA8D9], [0xA900, 0xA909], [0xAA50, 0xAA59], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T4.js
new file mode 100644
index 000000000..d1f641833
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A1.4_T4.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A1.4_T4;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin at IdentifierStart;
+ * @description: IdentifierStart is not UnicodeConnectorPunctuation ("Pc") without $.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ if (hex !== "0078") {
+ eval("var " + identifier + "=1");
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.2_T1.js
new file mode 100644
index 000000000..1e173b1b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.2_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T1;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Non-spacing mark (Mn).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x036F], [0x0483, 0x0487], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x061A], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A51, 0x0A51], [0x0A70, 0x0A71], [0x0A75, 0x0A75], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B44], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B62, 0x0B63], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0C62, 0x0C63], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D44], [0x0D4D, 0x0D4D], [0x0D62, 0x0D63], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1037], [0x1039, 0x103A], [0x103D, 0x103E], [0x1058, 0x1059], [0x105E, 0x1060], [0x1071, 0x1074], [0x1082, 0x1082], [0x1085, 0x1086], [0x108D, 0x108D], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1B80, 0x1B81], [0x1BA2, 0x1BA5], [0x1BA8, 0x1BA9], [0x1C2C, 0x1C33], [0x1C36, 0x1C37], [0x1DC0, 0x1DE6], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20F0], [0x2DE0, 0x2DFF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA66F, 0xA66F], [0xA67C, 0xA67D], [0xA802, 0xA802], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xA8C4, 0xA8C4], [0xA926, 0xA92D], [0xA947, 0xA951], [0xAA29, 0xAA2E], [0xAA31, 0xAA32], [0xAA35, 0xAA36], [0xAA43, 0xAA43], [0xAA4C, 0xAA4C], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE26]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.2_T2.js
new file mode 100644
index 000000000..edd8709e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.2_T2.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.2_T2;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeCombiningMark (any character in the Unicode categories "Mn", "Mc");
+ * @description: UnicodeCombiningMark :: Combining spacing mark (Mc).
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102B, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x103B, 0x103C], [0x1056, 0x1057], [0x1062, 0x1064], [0x1067, 0x106D], [0x1083, 0x1084], [0x1087, 0x108C], [0x108F, 0x108F], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0x1B82, 0x1B82], [0x1BA1, 0x1BA1], [0x1BA6, 0x1BA7], [0x1BAA, 0x1BAA], [0x1C24, 0x1C2B], [0x1C34, 0x1C35], [0xA823, 0xA824], [0xA827, 0xA827], [0xA880, 0xA881], [0xA8B4, 0xA8C3], [0xA952, 0xA953], [0xAA2F, 0xAA30], [0xAA33, 0xAA34], [0xAA4D, 0xAA4D]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.3.js
new file mode 100644
index 000000000..b4e9ef292
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.3.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.3;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeDigit (any character in the Unicode categories "Decimal Number (Nd)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1090, 0x1099], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0x1BB0, 0x1BB9], [0x1C40, 0x1C49], [0x1C50, 0x1C59], [0xA620, 0xA629], [0xA8D0, 0xA8D9], [0xA900, 0xA909], [0xAA50, 0xAA59], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.4.js
new file mode 100644
index 000000000..e7b636a2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A2.4.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A2.4;
+ * @section: 7.6;
+ * @assertion: IdentifierPart :: UnicodeConnectorPunctuation (any character in the Unicode categories "Connector Punctuation (Pc)".
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var identifier = "$" + String.fromCharCode(indexJ);
+ var hex = decimalToHexString(indexJ);
+ eval("var " + identifier + "=1");
+ if (eval(identifier + "===1") !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A3.1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A3.1.js
new file mode 100644
index 000000000..79dea16a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A3.1.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.1;
+ * @section: 7.6;
+ * @assertion: IdentifierName must contain only IdentifierPart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0370, 0x0370], [0x0372, 0x0372], [0x0376, 0x0376], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03CF, 0x03CF], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0514, 0x0514], [0x0516, 0x0516], [0x0518, 0x0518], [0x051A, 0x051A], [0x051C, 0x051C], [0x051E, 0x051E], [0x0520, 0x0520], [0x0522, 0x0522], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1E9E, 0x1E9E], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1EFA, 0x1EFA], [0x1EFC, 0x1EFC], [0x1EFE, 0x1EFE], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C6D, 0x2C6F], [0x2C72, 0x2C72], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xA640, 0xA640], [0xA642, 0xA642], [0xA644, 0xA644], [0xA646, 0xA646], [0xA648, 0xA648], [0xA64A, 0xA64A], [0xA64C, 0xA64C], [0xA64E, 0xA64E], [0xA650, 0xA650], [0xA652, 0xA652], [0xA654, 0xA654], [0xA656, 0xA656], [0xA658, 0xA658], [0xA65A, 0xA65A], [0xA65C, 0xA65C], [0xA65E, 0xA65E], [0xA662, 0xA662], [0xA664, 0xA664], [0xA666, 0xA666], [0xA668, 0xA668], [0xA66A, 0xA66A], [0xA66C, 0xA66C], [0xA680, 0xA680], [0xA682, 0xA682], [0xA684, 0xA684], [0xA686, 0xA686], [0xA688, 0xA688], [0xA68A, 0xA68A], [0xA68C, 0xA68C], [0xA68E, 0xA68E], [0xA690, 0xA690], [0xA692, 0xA692], [0xA694, 0xA694], [0xA696, 0xA696], [0xA722, 0xA722], [0xA724, 0xA724], [0xA726, 0xA726], [0xA728, 0xA728], [0xA72A, 0xA72A], [0xA72C, 0xA72C], [0xA72E, 0xA72E], [0xA732, 0xA732], [0xA734, 0xA734], [0xA736, 0xA736], [0xA738, 0xA738], [0xA73A, 0xA73A], [0xA73C, 0xA73C], [0xA73E, 0xA73E], [0xA740, 0xA740], [0xA742, 0xA742], [0xA744, 0xA744], [0xA746, 0xA746], [0xA748, 0xA748], [0xA74A, 0xA74A], [0xA74C, 0xA74C], [0xA74E, 0xA74E], [0xA750, 0xA750], [0xA752, 0xA752], [0xA754, 0xA754], [0xA756, 0xA756], [0xA758, 0xA758], [0xA75A, 0xA75A], [0xA75C, 0xA75C], [0xA75E, 0xA75E], [0xA760, 0xA760], [0xA762, 0xA762], [0xA764, 0xA764], [0xA766, 0xA766], [0xA768, 0xA768], [0xA76A, 0xA76A], [0xA76C, 0xA76C], [0xA76E, 0xA76E], [0xA779, 0xA779], [0xA77B, 0xA77B], [0xA77D, 0xA77E], [0xA780, 0xA780], [0xA782, 0xA782], [0xA784, 0xA784], [0xA786, 0xA786], [0xA78B, 0xA78B], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x0371, 0x0371], [0x0373, 0x0373], [0x0377, 0x0377], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0515, 0x0515], [0x0517, 0x0517], [0x0519, 0x0519], [0x051B, 0x051B], [0x051D, 0x051D], [0x051F, 0x051F], [0x0521, 0x0521], [0x0523, 0x0523], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9D], [0x1E9F, 0x1E9F], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1EFB, 0x1EFB], [0x1EFD, 0x1EFD], [0x1EFF, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C71, 0x2C71], [0x2C73, 0x2C74], [0x2C76, 0x2C7C], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xA641, 0xA641], [0xA643, 0xA643], [0xA645, 0xA645], [0xA647, 0xA647], [0xA649, 0xA649], [0xA64B, 0xA64B], [0xA64D, 0xA64D], [0xA64F, 0xA64F], [0xA651, 0xA651], [0xA653, 0xA653], [0xA655, 0xA655], [0xA657, 0xA657], [0xA659, 0xA659], [0xA65B, 0xA65B], [0xA65D, 0xA65D], [0xA65F, 0xA65F], [0xA663, 0xA663], [0xA665, 0xA665], [0xA667, 0xA667], [0xA669, 0xA669], [0xA66B, 0xA66B], [0xA66D, 0xA66D], [0xA681, 0xA681], [0xA683, 0xA683], [0xA685, 0xA685], [0xA687, 0xA687], [0xA689, 0xA689], [0xA68B, 0xA68B], [0xA68D, 0xA68D], [0xA68F, 0xA68F], [0xA691, 0xA691], [0xA693, 0xA693], [0xA695, 0xA695], [0xA697, 0xA697], [0xA723, 0xA723], [0xA725, 0xA725], [0xA727, 0xA727], [0xA729, 0xA729], [0xA72B, 0xA72B], [0xA72D, 0xA72D], [0xA72F, 0xA731], [0xA733, 0xA733], [0xA735, 0xA735], [0xA737, 0xA737], [0xA739, 0xA739], [0xA73B, 0xA73B], [0xA73D, 0xA73D], [0xA73F, 0xA73F], [0xA741, 0xA741], [0xA743, 0xA743], [0xA745, 0xA745], [0xA747, 0xA747], [0xA749, 0xA749], [0xA74B, 0xA74B], [0xA74D, 0xA74D], [0xA74F, 0xA74F], [0xA751, 0xA751], [0xA753, 0xA753], [0xA755, 0xA755], [0xA757, 0xA757], [0xA759, 0xA759], [0xA75B, 0xA75B], [0xA75D, 0xA75D], [0xA75F, 0xA75F], [0xA761, 0xA761], [0xA763, 0xA763], [0xA765, 0xA765], [0xA767, 0xA767], [0xA769, 0xA769], [0xA76B, 0xA76B], [0xA76D, 0xA76D], [0xA76F, 0xA76F], [0xA771, 0xA778], [0xA77A, 0xA77A], [0xA77C, 0xA77C], [0xA77F, 0xA77F], [0xA781, 0xA781], [0xA783, 0xA783], [0xA785, 0xA785], [0xA787, 0xA787], [0xA78C, 0xA78C], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EC, 0x02EC], [0x02EE, 0x02EE], [0x0374, 0x0374], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0971, 0x0971], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1C78, 0x1C7D], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2C7D, 0x2C7D], [0x2D6F, 0x2D6F], [0x2E2F, 0x2E2F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA60C, 0xA60C], [0xA67F, 0xA67F], [0xA717, 0xA71F], [0xA770, 0xA770], [0xA788, 0xA788], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063F], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0972, 0x0972], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0BD0, 0x0BD0], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C3D, 0x0C3D], [0x0C58, 0x0C59], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D3D, 0x0D3D], [0x0D60, 0x0D61], [0x0D7A, 0x0D7F], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6C], [0x0F88, 0x0F8B], [0x1000, 0x102A], [0x103F, 0x103F], [0x1050, 0x1055], [0x105A, 0x105D], [0x1061, 0x1061], [0x1065, 0x1066], [0x106E, 0x1070], [0x1075, 0x1081], [0x108E, 0x108E], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x18AA, 0x18AA], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x1B83, 0x1BA0], [0x1BAE, 0x1BAF], [0x1C00, 0x1C23], [0x1C4D, 0x1C4F], [0x1C5A, 0x1C77], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312D], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FC3], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA500, 0xA60B], [0xA610, 0xA61F], [0xA62A, 0xA62B], [0xA66E, 0xA66E], [0xA7FB, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xA882, 0xA8B3], [0xA90A, 0xA925], [0xA930, 0xA946], [0xAA00, 0xAA28], [0xAA40, 0xAA42], [0xAA44, 0xAA4B], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x2185, 0x2188], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x036F], [0x0483, 0x0487], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x061A], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A51, 0x0A51], [0x0A70, 0x0A71], [0x0A75, 0x0A75], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B44], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B62, 0x0B63], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0C62, 0x0C63], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D44], [0x0D4D, 0x0D4D], [0x0D62, 0x0D63], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1037], [0x1039, 0x103A], [0x103D, 0x103E], [0x1058, 0x1059], [0x105E, 0x1060], [0x1071, 0x1074], [0x1082, 0x1082], [0x1085, 0x1086], [0x108D, 0x108D], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1B80, 0x1B81], [0x1BA2, 0x1BA5], [0x1BA8, 0x1BA9], [0x1C2C, 0x1C33], [0x1C36, 0x1C37], [0x1DC0, 0x1DE6], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20F0], [0x2DE0, 0x2DFF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA66F, 0xA66F], [0xA67C, 0xA67D], [0xA802, 0xA802], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xA8C4, 0xA8C4], [0xA926, 0xA92D], [0xA947, 0xA951], [0xAA29, 0xAA2E], [0xAA31, 0xAA32], [0xAA35, 0xAA36], [0xAA43, 0xAA43], [0xAA4C, 0xAA4C], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE26]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102B, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x103B, 0x103C], [0x1056, 0x1057], [0x1062, 0x1064], [0x1067, 0x106D], [0x1083, 0x1084], [0x1087, 0x108C], [0x108F, 0x108F], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0x1B82, 0x1B82], [0x1BA1, 0x1BA1], [0x1BA6, 0x1BA7], [0x1BAA, 0x1BAA], [0x1C24, 0x1C2B], [0x1C34, 0x1C35], [0xA823, 0xA824], [0xA827, 0xA827], [0xA880, 0xA881], [0xA8B4, 0xA8C3], [0xA952, 0xA953], [0xAA2F, 0xAA30], [0xAA33, 0xAA34], [0xAA4D, 0xAA4D]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1090, 0x1099], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0x1BB0, 0x1BB9], [0x1C40, 0x1C49], [0x1C50, 0x1C59], [0xA620, 0xA629], [0xA8D0, 0xA8D9], [0xA900, 0xA909], [0xAA50, 0xAA59], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = "$" + String.fromCharCode(index) + "1";
+ eval("var " + identifier + "=1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A3.2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A3.2.js
new file mode 100644
index 000000000..3b5bc86a4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A3.2.js
@@ -0,0 +1,124 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A3.2;
+ * @section: 7.6;
+ * @assertion: IdentifierName must begin only IdentifierStart character;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0370, 0x0370], [0x0372, 0x0372], [0x0376, 0x0376], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03CF, 0x03CF], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0514, 0x0514], [0x0516, 0x0516], [0x0518, 0x0518], [0x051A, 0x051A], [0x051C, 0x051C], [0x051E, 0x051E], [0x0520, 0x0520], [0x0522, 0x0522], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1E9E, 0x1E9E], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1EFA, 0x1EFA], [0x1EFC, 0x1EFC], [0x1EFE, 0x1EFE], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C6D, 0x2C6F], [0x2C72, 0x2C72], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xA640, 0xA640], [0xA642, 0xA642], [0xA644, 0xA644], [0xA646, 0xA646], [0xA648, 0xA648], [0xA64A, 0xA64A], [0xA64C, 0xA64C], [0xA64E, 0xA64E], [0xA650, 0xA650], [0xA652, 0xA652], [0xA654, 0xA654], [0xA656, 0xA656], [0xA658, 0xA658], [0xA65A, 0xA65A], [0xA65C, 0xA65C], [0xA65E, 0xA65E], [0xA662, 0xA662], [0xA664, 0xA664], [0xA666, 0xA666], [0xA668, 0xA668], [0xA66A, 0xA66A], [0xA66C, 0xA66C], [0xA680, 0xA680], [0xA682, 0xA682], [0xA684, 0xA684], [0xA686, 0xA686], [0xA688, 0xA688], [0xA68A, 0xA68A], [0xA68C, 0xA68C], [0xA68E, 0xA68E], [0xA690, 0xA690], [0xA692, 0xA692], [0xA694, 0xA694], [0xA696, 0xA696], [0xA722, 0xA722], [0xA724, 0xA724], [0xA726, 0xA726], [0xA728, 0xA728], [0xA72A, 0xA72A], [0xA72C, 0xA72C], [0xA72E, 0xA72E], [0xA732, 0xA732], [0xA734, 0xA734], [0xA736, 0xA736], [0xA738, 0xA738], [0xA73A, 0xA73A], [0xA73C, 0xA73C], [0xA73E, 0xA73E], [0xA740, 0xA740], [0xA742, 0xA742], [0xA744, 0xA744], [0xA746, 0xA746], [0xA748, 0xA748], [0xA74A, 0xA74A], [0xA74C, 0xA74C], [0xA74E, 0xA74E], [0xA750, 0xA750], [0xA752, 0xA752], [0xA754, 0xA754], [0xA756, 0xA756], [0xA758, 0xA758], [0xA75A, 0xA75A], [0xA75C, 0xA75C], [0xA75E, 0xA75E], [0xA760, 0xA760], [0xA762, 0xA762], [0xA764, 0xA764], [0xA766, 0xA766], [0xA768, 0xA768], [0xA76A, 0xA76A], [0xA76C, 0xA76C], [0xA76E, 0xA76E], [0xA779, 0xA779], [0xA77B, 0xA77B], [0xA77D, 0xA77E], [0xA780, 0xA780], [0xA782, 0xA782], [0xA784, 0xA784], [0xA786, 0xA786], [0xA78B, 0xA78B], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x0371, 0x0371], [0x0373, 0x0373], [0x0377, 0x0377], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0515, 0x0515], [0x0517, 0x0517], [0x0519, 0x0519], [0x051B, 0x051B], [0x051D, 0x051D], [0x051F, 0x051F], [0x0521, 0x0521], [0x0523, 0x0523], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9D], [0x1E9F, 0x1E9F], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1EFB, 0x1EFB], [0x1EFD, 0x1EFD], [0x1EFF, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C71, 0x2C71], [0x2C73, 0x2C74], [0x2C76, 0x2C7C], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xA641, 0xA641], [0xA643, 0xA643], [0xA645, 0xA645], [0xA647, 0xA647], [0xA649, 0xA649], [0xA64B, 0xA64B], [0xA64D, 0xA64D], [0xA64F, 0xA64F], [0xA651, 0xA651], [0xA653, 0xA653], [0xA655, 0xA655], [0xA657, 0xA657], [0xA659, 0xA659], [0xA65B, 0xA65B], [0xA65D, 0xA65D], [0xA65F, 0xA65F], [0xA663, 0xA663], [0xA665, 0xA665], [0xA667, 0xA667], [0xA669, 0xA669], [0xA66B, 0xA66B], [0xA66D, 0xA66D], [0xA681, 0xA681], [0xA683, 0xA683], [0xA685, 0xA685], [0xA687, 0xA687], [0xA689, 0xA689], [0xA68B, 0xA68B], [0xA68D, 0xA68D], [0xA68F, 0xA68F], [0xA691, 0xA691], [0xA693, 0xA693], [0xA695, 0xA695], [0xA697, 0xA697], [0xA723, 0xA723], [0xA725, 0xA725], [0xA727, 0xA727], [0xA729, 0xA729], [0xA72B, 0xA72B], [0xA72D, 0xA72D], [0xA72F, 0xA731], [0xA733, 0xA733], [0xA735, 0xA735], [0xA737, 0xA737], [0xA739, 0xA739], [0xA73B, 0xA73B], [0xA73D, 0xA73D], [0xA73F, 0xA73F], [0xA741, 0xA741], [0xA743, 0xA743], [0xA745, 0xA745], [0xA747, 0xA747], [0xA749, 0xA749], [0xA74B, 0xA74B], [0xA74D, 0xA74D], [0xA74F, 0xA74F], [0xA751, 0xA751], [0xA753, 0xA753], [0xA755, 0xA755], [0xA757, 0xA757], [0xA759, 0xA759], [0xA75B, 0xA75B], [0xA75D, 0xA75D], [0xA75F, 0xA75F], [0xA761, 0xA761], [0xA763, 0xA763], [0xA765, 0xA765], [0xA767, 0xA767], [0xA769, 0xA769], [0xA76B, 0xA76B], [0xA76D, 0xA76D], [0xA76F, 0xA76F], [0xA771, 0xA778], [0xA77A, 0xA77A], [0xA77C, 0xA77C], [0xA77F, 0xA77F], [0xA781, 0xA781], [0xA783, 0xA783], [0xA785, 0xA785], [0xA787, 0xA787], [0xA78C, 0xA78C], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EC, 0x02EC], [0x02EE, 0x02EE], [0x0374, 0x0374], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0971, 0x0971], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1C78, 0x1C7D], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2C7D, 0x2C7D], [0x2D6F, 0x2D6F], [0x2E2F, 0x2E2F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA60C, 0xA60C], [0xA67F, 0xA67F], [0xA717, 0xA71F], [0xA770, 0xA770], [0xA788, 0xA788], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063F], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0972, 0x0972], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0BD0, 0x0BD0], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C3D, 0x0C3D], [0x0C58, 0x0C59], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D3D, 0x0D3D], [0x0D60, 0x0D61], [0x0D7A, 0x0D7F], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6C], [0x0F88, 0x0F8B], [0x1000, 0x102A], [0x103F, 0x103F], [0x1050, 0x1055], [0x105A, 0x105D], [0x1061, 0x1061], [0x1065, 0x1066], [0x106E, 0x1070], [0x1075, 0x1081], [0x108E, 0x108E], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x18AA, 0x18AA], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x1B83, 0x1BA0], [0x1BAE, 0x1BAF], [0x1C00, 0x1C23], [0x1C4D, 0x1C4F], [0x1C5A, 0x1C77], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312D], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FC3], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA500, 0xA60B], [0xA610, 0xA61F], [0xA62A, 0xA62B], [0xA66E, 0xA66E], [0xA7FB, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xA882, 0xA8B3], [0xA90A, 0xA925], [0xA930, 0xA946], [0xAA00, 0xAA28], [0xAA40, 0xAA42], [0xAA44, 0xAA4B], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x2185, 0x2188], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var identifier = String.fromCharCode(index);
+ eval("var " + identifier + "=1");
+ if (errorCount === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T1.js
new file mode 100644
index 000000000..e5047186b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T1.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.
+
+/**
+ * @name: S7.6_A5.2_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lu.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0370, 0x0370], [0x0372, 0x0372], [0x0376, 0x0376], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03CF, 0x03CF], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0514, 0x0514], [0x0516, 0x0516], [0x0518, 0x0518], [0x051A, 0x051A], [0x051C, 0x051C], [0x051E, 0x051E], [0x0520, 0x0520], [0x0522, 0x0522], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1E9E, 0x1E9E], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1EFA, 0x1EFA], [0x1EFC, 0x1EFC], [0x1EFE, 0x1EFE], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C6D, 0x2C6F], [0x2C72, 0x2C72], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xA640, 0xA640], [0xA642, 0xA642], [0xA644, 0xA644], [0xA646, 0xA646], [0xA648, 0xA648], [0xA64A, 0xA64A], [0xA64C, 0xA64C], [0xA64E, 0xA64E], [0xA650, 0xA650], [0xA652, 0xA652], [0xA654, 0xA654], [0xA656, 0xA656], [0xA658, 0xA658], [0xA65A, 0xA65A], [0xA65C, 0xA65C], [0xA65E, 0xA65E], [0xA662, 0xA662], [0xA664, 0xA664], [0xA666, 0xA666], [0xA668, 0xA668], [0xA66A, 0xA66A], [0xA66C, 0xA66C], [0xA680, 0xA680], [0xA682, 0xA682], [0xA684, 0xA684], [0xA686, 0xA686], [0xA688, 0xA688], [0xA68A, 0xA68A], [0xA68C, 0xA68C], [0xA68E, 0xA68E], [0xA690, 0xA690], [0xA692, 0xA692], [0xA694, 0xA694], [0xA696, 0xA696], [0xA722, 0xA722], [0xA724, 0xA724], [0xA726, 0xA726], [0xA728, 0xA728], [0xA72A, 0xA72A], [0xA72C, 0xA72C], [0xA72E, 0xA72E], [0xA732, 0xA732], [0xA734, 0xA734], [0xA736, 0xA736], [0xA738, 0xA738], [0xA73A, 0xA73A], [0xA73C, 0xA73C], [0xA73E, 0xA73E], [0xA740, 0xA740], [0xA742, 0xA742], [0xA744, 0xA744], [0xA746, 0xA746], [0xA748, 0xA748], [0xA74A, 0xA74A], [0xA74C, 0xA74C], [0xA74E, 0xA74E], [0xA750, 0xA750], [0xA752, 0xA752], [0xA754, 0xA754], [0xA756, 0xA756], [0xA758, 0xA758], [0xA75A, 0xA75A], [0xA75C, 0xA75C], [0xA75E, 0xA75E], [0xA760, 0xA760], [0xA762, 0xA762], [0xA764, 0xA764], [0xA766, 0xA766], [0xA768, 0xA768], [0xA76A, 0xA76A], [0xA76C, 0xA76C], [0xA76E, 0xA76E], [0xA779, 0xA779], [0xA77B, 0xA77B], [0xA77D, 0xA77E], [0xA780, 0xA780], [0xA782, 0xA782], [0xA784, 0xA784], [0xA786, 0xA786], [0xA78B, 0xA78B], [0xFF21, 0xFF3A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T10.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T10.js
new file mode 100644
index 000000000..596e2b172
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T10.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.
+
+/**
+ * @name: S7.6_A5.2_T10;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Pc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T2.js
new file mode 100644
index 000000000..ac92473f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_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.
+
+/**
+ * @name: S7.6_A5.2_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Ll.
+ * Complex test with eval;
+*/
+
+//CHECK
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x0371, 0x0371], [0x0373, 0x0373], [0x0377, 0x0377], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0515, 0x0515], [0x0517, 0x0517], [0x0519, 0x0519], [0x051B, 0x051B], [0x051D, 0x051D], [0x051F, 0x051F], [0x0521, 0x0521], [0x0523, 0x0523], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9D], [0x1E9F, 0x1E9F], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1EFB, 0x1EFB], [0x1EFD, 0x1EFD], [0x1EFF, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C71, 0x2C71], [0x2C73, 0x2C74], [0x2C76, 0x2C7C], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xA641, 0xA641], [0xA643, 0xA643], [0xA645, 0xA645], [0xA647, 0xA647], [0xA649, 0xA649], [0xA64B, 0xA64B], [0xA64D, 0xA64D], [0xA64F, 0xA64F], [0xA651, 0xA651], [0xA653, 0xA653], [0xA655, 0xA655], [0xA657, 0xA657], [0xA659, 0xA659], [0xA65B, 0xA65B], [0xA65D, 0xA65D], [0xA65F, 0xA65F], [0xA663, 0xA663], [0xA665, 0xA665], [0xA667, 0xA667], [0xA669, 0xA669], [0xA66B, 0xA66B], [0xA66D, 0xA66D], [0xA681, 0xA681], [0xA683, 0xA683], [0xA685, 0xA685], [0xA687, 0xA687], [0xA689, 0xA689], [0xA68B, 0xA68B], [0xA68D, 0xA68D], [0xA68F, 0xA68F], [0xA691, 0xA691], [0xA693, 0xA693], [0xA695, 0xA695], [0xA697, 0xA697], [0xA723, 0xA723], [0xA725, 0xA725], [0xA727, 0xA727], [0xA729, 0xA729], [0xA72B, 0xA72B], [0xA72D, 0xA72D], [0xA72F, 0xA731], [0xA733, 0xA733], [0xA735, 0xA735], [0xA737, 0xA737], [0xA739, 0xA739], [0xA73B, 0xA73B], [0xA73D, 0xA73D], [0xA73F, 0xA73F], [0xA741, 0xA741], [0xA743, 0xA743], [0xA745, 0xA745], [0xA747, 0xA747], [0xA749, 0xA749], [0xA74B, 0xA74B], [0xA74D, 0xA74D], [0xA74F, 0xA74F], [0xA751, 0xA751], [0xA753, 0xA753], [0xA755, 0xA755], [0xA757, 0xA757], [0xA759, 0xA759], [0xA75B, 0xA75B], [0xA75D, 0xA75D], [0xA75F, 0xA75F], [0xA761, 0xA761], [0xA763, 0xA763], [0xA765, 0xA765], [0xA767, 0xA767], [0xA769, 0xA769], [0xA76B, 0xA76B], [0xA76D, 0xA76D], [0xA76F, 0xA76F], [0xA771, 0xA778], [0xA77A, 0xA77A], [0xA77C, 0xA77C], [0xA77F, 0xA77F], [0xA781, 0xA781], [0xA783, 0xA783], [0xA785, 0xA785], [0xA787, 0xA787], [0xA78C, 0xA78C], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T3.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T3.js
new file mode 100644
index 000000000..e880bd673
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T3.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T3;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lt.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T4.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T4.js
new file mode 100644
index 000000000..44883907a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T4.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.2_T4;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lm.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EC, 0x02EC], [0x02EE, 0x02EE], [0x0374, 0x0374], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0971, 0x0971], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1C78, 0x1C7D], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2C7D, 0x2C7D], [0x2D6F, 0x2D6F], [0x2E2F, 0x2E2F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA60C, 0xA60C], [0xA67F, 0xA67F], [0xA717, 0xA71F], [0xA770, 0xA770], [0xA788, 0xA788], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T5.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T5.js
new file mode 100644
index 000000000..d7cfda0cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T5.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.
+
+/**
+ * @name: S7.6_A5.2_T5;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Lo.
+ * Complex test with eval;
+*/
+
+//CHECK
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063F], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0972, 0x0972], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0BD0, 0x0BD0], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C3D, 0x0C3D], [0x0C58, 0x0C59], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D3D, 0x0D3D], [0x0D60, 0x0D61], [0x0D7A, 0x0D7F], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6C], [0x0F88, 0x0F8B], [0x1000, 0x102A], [0x103F, 0x103F], [0x1050, 0x1055], [0x105A, 0x105D], [0x1061, 0x1061], [0x1065, 0x1066], [0x106E, 0x1070], [0x1075, 0x1081], [0x108E, 0x108E], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x18AA, 0x18AA], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x1B83, 0x1BA0], [0x1BAE, 0x1BAF], [0x1C00, 0x1C23], [0x1C4D, 0x1C4F], [0x1C5A, 0x1C77], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312D], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FC3], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA500, 0xA60B], [0xA610, 0xA61F], [0xA62A, 0xA62B], [0xA66E, 0xA66E], [0xA7FB, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xA882, 0xA8B3], [0xA90A, 0xA925], [0xA930, 0xA946], [0xAA00, 0xAA28], [0xAA40, 0xAA42], [0xAA44, 0xAA4B], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = String.fromCharCode(indexJ);
+ var identifier2 = "\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T6.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T6.js
new file mode 100644
index 000000000..8bcf9c5ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T6.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.
+
+/**
+ * @name: S7.6_A5.2_T6;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nl.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x2185, 0x2188], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T7.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T7.js
new file mode 100644
index 000000000..b84a5def4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T7.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.
+
+/**
+ * @name: S7.6_A5.2_T7;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mn.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mn = [[0x0300, 0x036F], [0x0483, 0x0487], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x061A], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A51, 0x0A51], [0x0A70, 0x0A71], [0x0A75, 0x0A75], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B44], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B62, 0x0B63], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0C62, 0x0C63], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D44], [0x0D4D, 0x0D4D], [0x0D62, 0x0D63], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1037], [0x1039, 0x103A], [0x103D, 0x103E], [0x1058, 0x1059], [0x105E, 0x1060], [0x1071, 0x1074], [0x1082, 0x1082], [0x1085, 0x1086], [0x108D, 0x108D], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1B80, 0x1B81], [0x1BA2, 0x1BA5], [0x1BA8, 0x1BA9], [0x1C2C, 0x1C33], [0x1C36, 0x1C37], [0x1DC0, 0x1DE6], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20F0], [0x2DE0, 0x2DFF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA66F, 0xA66F], [0xA67C, 0xA67D], [0xA802, 0xA802], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xA8C4, 0xA8C4], [0xA926, 0xA92D], [0xA947, 0xA951], [0xAA29, 0xAA2E], [0xAA31, 0xAA32], [0xAA35, 0xAA36], [0xAA43, 0xAA43], [0xAA4C, 0xAA4C], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE26]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T8.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T8.js
new file mode 100644
index 000000000..7de012476
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T8.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.
+
+/**
+ * @name: S7.6_A5.2_T8;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Mc.
+ * Complex test with eval;
+*/
+
+//CHECK
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102B, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x103B, 0x103C], [0x1056, 0x1057], [0x1062, 0x1064], [0x1067, 0x106D], [0x1083, 0x1084], [0x1087, 0x108C], [0x108F, 0x108F], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0x1B82, 0x1B82], [0x1BA1, 0x1BA1], [0x1BA6, 0x1BA7], [0x1BAA, 0x1BAA], [0x1C24, 0x1C2B], [0x1C34, 0x1C35], [0xA823, 0xA824], [0xA827, 0xA827], [0xA880, 0xA881], [0xA8B4, 0xA8C3], [0xA952, 0xA953], [0xAA2F, 0xAA30], [0xAA33, 0xAA34], [0xAA4D, 0xAA4D]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T9.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T9.js
new file mode 100644
index 000000000..292e10421
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.2_T9.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.
+
+/**
+ * @name: S7.6_A5.2_T9;
+ * @section: 7.6, 6;
+ * @assertion: If a \UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence's CV, the result must still be a valid Identifier that has the exact same sequence of characters as the original Identifier;
+ * @description: The CV of UnicodeEscapeSequence is Nd.
+ * Complex test with eval;
+*/
+
+//CHECK
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1090, 0x1099], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0x1BB0, 0x1BB9], [0x1C40, 0x1C49], [0x1C50, 0x1C59], [0xA620, 0xA629], [0xA8D0, 0xA8D9], [0xA900, 0xA909], [0xAA50, 0xAA59], [0xFF10, 0xFF19]];
+
+errorCount = 0;
+count = 0;
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ try {
+ var hex = decimalToHexString(indexJ);
+ var identifier1 = "$" + String.fromCharCode(indexJ);
+ var identifier2 = "$\\u" + hex;
+ eval(identifier2 + " = 1");
+ if (eval(identifier1 + " === " + identifier2) !== true) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.3_T1.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.3_T1.js
new file mode 100644
index 000000000..6f2f487a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.3_T1.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T1;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0370, 0x0370], [0x0372, 0x0372], [0x0376, 0x0376], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03CF, 0x03CF], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0514, 0x0514], [0x0516, 0x0516], [0x0518, 0x0518], [0x051A, 0x051A], [0x051C, 0x051C], [0x051E, 0x051E], [0x0520, 0x0520], [0x0522, 0x0522], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1E9E, 0x1E9E], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1EFA, 0x1EFA], [0x1EFC, 0x1EFC], [0x1EFE, 0x1EFE], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C6D, 0x2C6F], [0x2C72, 0x2C72], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xA640, 0xA640], [0xA642, 0xA642], [0xA644, 0xA644], [0xA646, 0xA646], [0xA648, 0xA648], [0xA64A, 0xA64A], [0xA64C, 0xA64C], [0xA64E, 0xA64E], [0xA650, 0xA650], [0xA652, 0xA652], [0xA654, 0xA654], [0xA656, 0xA656], [0xA658, 0xA658], [0xA65A, 0xA65A], [0xA65C, 0xA65C], [0xA65E, 0xA65E], [0xA662, 0xA662], [0xA664, 0xA664], [0xA666, 0xA666], [0xA668, 0xA668], [0xA66A, 0xA66A], [0xA66C, 0xA66C], [0xA680, 0xA680], [0xA682, 0xA682], [0xA684, 0xA684], [0xA686, 0xA686], [0xA688, 0xA688], [0xA68A, 0xA68A], [0xA68C, 0xA68C], [0xA68E, 0xA68E], [0xA690, 0xA690], [0xA692, 0xA692], [0xA694, 0xA694], [0xA696, 0xA696], [0xA722, 0xA722], [0xA724, 0xA724], [0xA726, 0xA726], [0xA728, 0xA728], [0xA72A, 0xA72A], [0xA72C, 0xA72C], [0xA72E, 0xA72E], [0xA732, 0xA732], [0xA734, 0xA734], [0xA736, 0xA736], [0xA738, 0xA738], [0xA73A, 0xA73A], [0xA73C, 0xA73C], [0xA73E, 0xA73E], [0xA740, 0xA740], [0xA742, 0xA742], [0xA744, 0xA744], [0xA746, 0xA746], [0xA748, 0xA748], [0xA74A, 0xA74A], [0xA74C, 0xA74C], [0xA74E, 0xA74E], [0xA750, 0xA750], [0xA752, 0xA752], [0xA754, 0xA754], [0xA756, 0xA756], [0xA758, 0xA758], [0xA75A, 0xA75A], [0xA75C, 0xA75C], [0xA75E, 0xA75E], [0xA760, 0xA760], [0xA762, 0xA762], [0xA764, 0xA764], [0xA766, 0xA766], [0xA768, 0xA768], [0xA76A, 0xA76A], [0xA76C, 0xA76C], [0xA76E, 0xA76E], [0xA779, 0xA779], [0xA77B, 0xA77B], [0xA77D, 0xA77E], [0xA780, 0xA780], [0xA782, 0xA782], [0xA784, 0xA784], [0xA786, 0xA786], [0xA78B, 0xA78B], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x0371, 0x0371], [0x0373, 0x0373], [0x0377, 0x0377], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0515, 0x0515], [0x0517, 0x0517], [0x0519, 0x0519], [0x051B, 0x051B], [0x051D, 0x051D], [0x051F, 0x051F], [0x0521, 0x0521], [0x0523, 0x0523], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9D], [0x1E9F, 0x1E9F], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1EFB, 0x1EFB], [0x1EFD, 0x1EFD], [0x1EFF, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C71, 0x2C71], [0x2C73, 0x2C74], [0x2C76, 0x2C7C], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xA641, 0xA641], [0xA643, 0xA643], [0xA645, 0xA645], [0xA647, 0xA647], [0xA649, 0xA649], [0xA64B, 0xA64B], [0xA64D, 0xA64D], [0xA64F, 0xA64F], [0xA651, 0xA651], [0xA653, 0xA653], [0xA655, 0xA655], [0xA657, 0xA657], [0xA659, 0xA659], [0xA65B, 0xA65B], [0xA65D, 0xA65D], [0xA65F, 0xA65F], [0xA663, 0xA663], [0xA665, 0xA665], [0xA667, 0xA667], [0xA669, 0xA669], [0xA66B, 0xA66B], [0xA66D, 0xA66D], [0xA681, 0xA681], [0xA683, 0xA683], [0xA685, 0xA685], [0xA687, 0xA687], [0xA689, 0xA689], [0xA68B, 0xA68B], [0xA68D, 0xA68D], [0xA68F, 0xA68F], [0xA691, 0xA691], [0xA693, 0xA693], [0xA695, 0xA695], [0xA697, 0xA697], [0xA723, 0xA723], [0xA725, 0xA725], [0xA727, 0xA727], [0xA729, 0xA729], [0xA72B, 0xA72B], [0xA72D, 0xA72D], [0xA72F, 0xA731], [0xA733, 0xA733], [0xA735, 0xA735], [0xA737, 0xA737], [0xA739, 0xA739], [0xA73B, 0xA73B], [0xA73D, 0xA73D], [0xA73F, 0xA73F], [0xA741, 0xA741], [0xA743, 0xA743], [0xA745, 0xA745], [0xA747, 0xA747], [0xA749, 0xA749], [0xA74B, 0xA74B], [0xA74D, 0xA74D], [0xA74F, 0xA74F], [0xA751, 0xA751], [0xA753, 0xA753], [0xA755, 0xA755], [0xA757, 0xA757], [0xA759, 0xA759], [0xA75B, 0xA75B], [0xA75D, 0xA75D], [0xA75F, 0xA75F], [0xA761, 0xA761], [0xA763, 0xA763], [0xA765, 0xA765], [0xA767, 0xA767], [0xA769, 0xA769], [0xA76B, 0xA76B], [0xA76D, 0xA76D], [0xA76F, 0xA76F], [0xA771, 0xA778], [0xA77A, 0xA77A], [0xA77C, 0xA77C], [0xA77F, 0xA77F], [0xA781, 0xA781], [0xA783, 0xA783], [0xA785, 0xA785], [0xA787, 0xA787], [0xA78C, 0xA78C], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EC, 0x02EC], [0x02EE, 0x02EE], [0x0374, 0x0374], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0971, 0x0971], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1C78, 0x1C7D], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2C7D, 0x2C7D], [0x2D6F, 0x2D6F], [0x2E2F, 0x2E2F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA60C, 0xA60C], [0xA67F, 0xA67F], [0xA717, 0xA71F], [0xA770, 0xA770], [0xA788, 0xA788], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063F], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0972, 0x0972], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0BD0, 0x0BD0], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C3D, 0x0C3D], [0x0C58, 0x0C59], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D3D, 0x0D3D], [0x0D60, 0x0D61], [0x0D7A, 0x0D7F], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6C], [0x0F88, 0x0F8B], [0x1000, 0x102A], [0x103F, 0x103F], [0x1050, 0x1055], [0x105A, 0x105D], [0x1061, 0x1061], [0x1065, 0x1066], [0x106E, 0x1070], [0x1075, 0x1081], [0x108E, 0x108E], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x18AA, 0x18AA], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x1B83, 0x1BA0], [0x1BAE, 0x1BAF], [0x1C00, 0x1C23], [0x1C4D, 0x1C4F], [0x1C5A, 0x1C77], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312D], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FC3], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA500, 0xA60B], [0xA610, 0xA61F], [0xA62A, 0xA62B], [0xA66E, 0xA66E], [0xA7FB, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xA882, 0xA8B3], [0xA90A, 0xA925], [0xA930, 0xA946], [0xAA00, 0xAA28], [0xAA40, 0xAA42], [0xAA44, 0xAA4B], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x2185, 0x2188], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x036F], [0x0483, 0x0487], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x061A], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A51, 0x0A51], [0x0A70, 0x0A71], [0x0A75, 0x0A75], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B44], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B62, 0x0B63], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0C62, 0x0C63], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D44], [0x0D4D, 0x0D4D], [0x0D62, 0x0D63], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1037], [0x1039, 0x103A], [0x103D, 0x103E], [0x1058, 0x1059], [0x105E, 0x1060], [0x1071, 0x1074], [0x1082, 0x1082], [0x1085, 0x1086], [0x108D, 0x108D], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1B80, 0x1B81], [0x1BA2, 0x1BA5], [0x1BA8, 0x1BA9], [0x1C2C, 0x1C33], [0x1C36, 0x1C37], [0x1DC0, 0x1DE6], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20F0], [0x2DE0, 0x2DFF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA66F, 0xA66F], [0xA67C, 0xA67D], [0xA802, 0xA802], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xA8C4, 0xA8C4], [0xA926, 0xA92D], [0xA947, 0xA951], [0xAA29, 0xAA2E], [0xAA31, 0xAA32], [0xAA35, 0xAA36], [0xAA43, 0xAA43], [0xAA4C, 0xAA4C], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE26]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102B, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x103B, 0x103C], [0x1056, 0x1057], [0x1062, 0x1064], [0x1067, 0x106D], [0x1083, 0x1084], [0x1087, 0x108C], [0x108F, 0x108F], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0x1B82, 0x1B82], [0x1BA1, 0x1BA1], [0x1BA6, 0x1BA7], [0x1BAA, 0x1BAA], [0x1C24, 0x1C2B], [0x1C34, 0x1C35], [0xA823, 0xA824], [0xA827, 0xA827], [0xA880, 0xA881], [0xA8B4, 0xA8C3], [0xA952, 0xA953], [0xAA2F, 0xAA30], [0xAA33, 0xAA34], [0xAA4D, 0xAA4D]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1090, 0x1099], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0x1BB0, 0x1BB9], [0x1C40, 0x1C49], [0x1C50, 0x1C59], [0xA620, 0xA629], [0xA8D0, 0xA8D9], [0xA900, 0xA909], [0xAA50, 0xAA59], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier = "$\\u" + hex + "1";
+ eval(identifier + " = 1");
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.3_T2.js b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.3_T2.js
new file mode 100644
index 000000000..ba39a6c03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Unicode/Unicode_510/S7.6_A5.3_T2.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S7.6_A5.3_T2;
+ * @section: 7.6, 6;
+ * @assertion: If a UnicodeEscapeSequence put a character into an identifier that would otherwise be illegal, throw SyntaxError;
+ * @description: Complex test with eval;
+*/
+
+//CHECK
+Lu = [[0x0041, 0x005A], [0x00C0, 0x00D6], [0x00D8, 0x00DE], [0x0100, 0x0100], [0x0102, 0x0102], [0x0104, 0x0104], [0x0106, 0x0106], [0x0108, 0x0108], [0x010A, 0x010A], [0x010C, 0x010C], [0x010E, 0x010E], [0x0110, 0x0110], [0x0112, 0x0112], [0x0114, 0x0114], [0x0116, 0x0116], [0x0118, 0x0118], [0x011A, 0x011A], [0x011C, 0x011C], [0x011E, 0x011E], [0x0120, 0x0120], [0x0122, 0x0122], [0x0124, 0x0124], [0x0126, 0x0126], [0x0128, 0x0128], [0x012A, 0x012A], [0x012C, 0x012C], [0x012E, 0x012E], [0x0130, 0x0130], [0x0132, 0x0132], [0x0134, 0x0134], [0x0136, 0x0136], [0x0139, 0x0139], [0x013B, 0x013B], [0x013D, 0x013D], [0x013F, 0x013F], [0x0141, 0x0141], [0x0143, 0x0143], [0x0145, 0x0145], [0x0147, 0x0147], [0x014A, 0x014A], [0x014C, 0x014C], [0x014E, 0x014E], [0x0150, 0x0150], [0x0152, 0x0152], [0x0154, 0x0154], [0x0156, 0x0156], [0x0158, 0x0158], [0x015A, 0x015A], [0x015C, 0x015C], [0x015E, 0x015E], [0x0160, 0x0160], [0x0162, 0x0162], [0x0164, 0x0164], [0x0166, 0x0166], [0x0168, 0x0168], [0x016A, 0x016A], [0x016C, 0x016C], [0x016E, 0x016E], [0x0170, 0x0170], [0x0172, 0x0172], [0x0174, 0x0174], [0x0176, 0x0176], [0x0178, 0x0179], [0x017B, 0x017B], [0x017D, 0x017D], [0x0181, 0x0182], [0x0184, 0x0184], [0x0186, 0x0187], [0x0189, 0x018B], [0x018E, 0x0191], [0x0193, 0x0194], [0x0196, 0x0198], [0x019C, 0x019D], [0x019F, 0x01A0], [0x01A2, 0x01A2], [0x01A4, 0x01A4], [0x01A6, 0x01A7], [0x01A9, 0x01A9], [0x01AC, 0x01AC], [0x01AE, 0x01AF], [0x01B1, 0x01B3], [0x01B5, 0x01B5], [0x01B7, 0x01B8], [0x01BC, 0x01BC], [0x01C4, 0x01C4], [0x01C7, 0x01C7], [0x01CA, 0x01CA], [0x01CD, 0x01CD], [0x01CF, 0x01CF], [0x01D1, 0x01D1], [0x01D3, 0x01D3], [0x01D5, 0x01D5], [0x01D7, 0x01D7], [0x01D9, 0x01D9], [0x01DB, 0x01DB], [0x01DE, 0x01DE], [0x01E0, 0x01E0], [0x01E2, 0x01E2], [0x01E4, 0x01E4], [0x01E6, 0x01E6], [0x01E8, 0x01E8], [0x01EA, 0x01EA], [0x01EC, 0x01EC], [0x01EE, 0x01EE], [0x01F1, 0x01F1], [0x01F4, 0x01F4], [0x01F6, 0x01F8], [0x01FA, 0x01FA], [0x01FC, 0x01FC], [0x01FE, 0x01FE], [0x0200, 0x0200], [0x0202, 0x0202], [0x0204, 0x0204], [0x0206, 0x0206], [0x0208, 0x0208], [0x020A, 0x020A], [0x020C, 0x020C], [0x020E, 0x020E], [0x0210, 0x0210], [0x0212, 0x0212], [0x0214, 0x0214], [0x0216, 0x0216], [0x0218, 0x0218], [0x021A, 0x021A], [0x021C, 0x021C], [0x021E, 0x021E], [0x0220, 0x0220], [0x0222, 0x0222], [0x0224, 0x0224], [0x0226, 0x0226], [0x0228, 0x0228], [0x022A, 0x022A], [0x022C, 0x022C], [0x022E, 0x022E], [0x0230, 0x0230], [0x0232, 0x0232], [0x023A, 0x023B], [0x023D, 0x023E], [0x0241, 0x0241], [0x0243, 0x0246], [0x0248, 0x0248], [0x024A, 0x024A], [0x024C, 0x024C], [0x024E, 0x024E], [0x0370, 0x0370], [0x0372, 0x0372], [0x0376, 0x0376], [0x0386, 0x0386], [0x0388, 0x038A], [0x038C, 0x038C], [0x038E, 0x038F], [0x0391, 0x03A1], [0x03A3, 0x03AB], [0x03CF, 0x03CF], [0x03D2, 0x03D4], [0x03D8, 0x03D8], [0x03DA, 0x03DA], [0x03DC, 0x03DC], [0x03DE, 0x03DE], [0x03E0, 0x03E0], [0x03E2, 0x03E2], [0x03E4, 0x03E4], [0x03E6, 0x03E6], [0x03E8, 0x03E8], [0x03EA, 0x03EA], [0x03EC, 0x03EC], [0x03EE, 0x03EE], [0x03F4, 0x03F4], [0x03F7, 0x03F7], [0x03F9, 0x03FA], [0x03FD, 0x042F], [0x0460, 0x0460], [0x0462, 0x0462], [0x0464, 0x0464], [0x0466, 0x0466], [0x0468, 0x0468], [0x046A, 0x046A], [0x046C, 0x046C], [0x046E, 0x046E], [0x0470, 0x0470], [0x0472, 0x0472], [0x0474, 0x0474], [0x0476, 0x0476], [0x0478, 0x0478], [0x047A, 0x047A], [0x047C, 0x047C], [0x047E, 0x047E], [0x0480, 0x0480], [0x048A, 0x048A], [0x048C, 0x048C], [0x048E, 0x048E], [0x0490, 0x0490], [0x0492, 0x0492], [0x0494, 0x0494], [0x0496, 0x0496], [0x0498, 0x0498], [0x049A, 0x049A], [0x049C, 0x049C], [0x049E, 0x049E], [0x04A0, 0x04A0], [0x04A2, 0x04A2], [0x04A4, 0x04A4], [0x04A6, 0x04A6], [0x04A8, 0x04A8], [0x04AA, 0x04AA], [0x04AC, 0x04AC], [0x04AE, 0x04AE], [0x04B0, 0x04B0], [0x04B2, 0x04B2], [0x04B4, 0x04B4], [0x04B6, 0x04B6], [0x04B8, 0x04B8], [0x04BA, 0x04BA], [0x04BC, 0x04BC], [0x04BE, 0x04BE], [0x04C0, 0x04C1], [0x04C3, 0x04C3], [0x04C5, 0x04C5], [0x04C7, 0x04C7], [0x04C9, 0x04C9], [0x04CB, 0x04CB], [0x04CD, 0x04CD], [0x04D0, 0x04D0], [0x04D2, 0x04D2], [0x04D4, 0x04D4], [0x04D6, 0x04D6], [0x04D8, 0x04D8], [0x04DA, 0x04DA], [0x04DC, 0x04DC], [0x04DE, 0x04DE], [0x04E0, 0x04E0], [0x04E2, 0x04E2], [0x04E4, 0x04E4], [0x04E6, 0x04E6], [0x04E8, 0x04E8], [0x04EA, 0x04EA], [0x04EC, 0x04EC], [0x04EE, 0x04EE], [0x04F0, 0x04F0], [0x04F2, 0x04F2], [0x04F4, 0x04F4], [0x04F6, 0x04F6], [0x04F8, 0x04F8], [0x04FA, 0x04FA], [0x04FC, 0x04FC], [0x04FE, 0x04FE], [0x0500, 0x0500], [0x0502, 0x0502], [0x0504, 0x0504], [0x0506, 0x0506], [0x0508, 0x0508], [0x050A, 0x050A], [0x050C, 0x050C], [0x050E, 0x050E], [0x0510, 0x0510], [0x0512, 0x0512], [0x0514, 0x0514], [0x0516, 0x0516], [0x0518, 0x0518], [0x051A, 0x051A], [0x051C, 0x051C], [0x051E, 0x051E], [0x0520, 0x0520], [0x0522, 0x0522], [0x0531, 0x0556], [0x10A0, 0x10C5], [0x1E00, 0x1E00], [0x1E02, 0x1E02], [0x1E04, 0x1E04], [0x1E06, 0x1E06], [0x1E08, 0x1E08], [0x1E0A, 0x1E0A], [0x1E0C, 0x1E0C], [0x1E0E, 0x1E0E], [0x1E10, 0x1E10], [0x1E12, 0x1E12], [0x1E14, 0x1E14], [0x1E16, 0x1E16], [0x1E18, 0x1E18], [0x1E1A, 0x1E1A], [0x1E1C, 0x1E1C], [0x1E1E, 0x1E1E], [0x1E20, 0x1E20], [0x1E22, 0x1E22], [0x1E24, 0x1E24], [0x1E26, 0x1E26], [0x1E28, 0x1E28], [0x1E2A, 0x1E2A], [0x1E2C, 0x1E2C], [0x1E2E, 0x1E2E], [0x1E30, 0x1E30], [0x1E32, 0x1E32], [0x1E34, 0x1E34], [0x1E36, 0x1E36], [0x1E38, 0x1E38], [0x1E3A, 0x1E3A], [0x1E3C, 0x1E3C], [0x1E3E, 0x1E3E], [0x1E40, 0x1E40], [0x1E42, 0x1E42], [0x1E44, 0x1E44], [0x1E46, 0x1E46], [0x1E48, 0x1E48], [0x1E4A, 0x1E4A], [0x1E4C, 0x1E4C], [0x1E4E, 0x1E4E], [0x1E50, 0x1E50], [0x1E52, 0x1E52], [0x1E54, 0x1E54], [0x1E56, 0x1E56], [0x1E58, 0x1E58], [0x1E5A, 0x1E5A], [0x1E5C, 0x1E5C], [0x1E5E, 0x1E5E], [0x1E60, 0x1E60], [0x1E62, 0x1E62], [0x1E64, 0x1E64], [0x1E66, 0x1E66], [0x1E68, 0x1E68], [0x1E6A, 0x1E6A], [0x1E6C, 0x1E6C], [0x1E6E, 0x1E6E], [0x1E70, 0x1E70], [0x1E72, 0x1E72], [0x1E74, 0x1E74], [0x1E76, 0x1E76], [0x1E78, 0x1E78], [0x1E7A, 0x1E7A], [0x1E7C, 0x1E7C], [0x1E7E, 0x1E7E], [0x1E80, 0x1E80], [0x1E82, 0x1E82], [0x1E84, 0x1E84], [0x1E86, 0x1E86], [0x1E88, 0x1E88], [0x1E8A, 0x1E8A], [0x1E8C, 0x1E8C], [0x1E8E, 0x1E8E], [0x1E90, 0x1E90], [0x1E92, 0x1E92], [0x1E94, 0x1E94], [0x1E9E, 0x1E9E], [0x1EA0, 0x1EA0], [0x1EA2, 0x1EA2], [0x1EA4, 0x1EA4], [0x1EA6, 0x1EA6], [0x1EA8, 0x1EA8], [0x1EAA, 0x1EAA], [0x1EAC, 0x1EAC], [0x1EAE, 0x1EAE], [0x1EB0, 0x1EB0], [0x1EB2, 0x1EB2], [0x1EB4, 0x1EB4], [0x1EB6, 0x1EB6], [0x1EB8, 0x1EB8], [0x1EBA, 0x1EBA], [0x1EBC, 0x1EBC], [0x1EBE, 0x1EBE], [0x1EC0, 0x1EC0], [0x1EC2, 0x1EC2], [0x1EC4, 0x1EC4], [0x1EC6, 0x1EC6], [0x1EC8, 0x1EC8], [0x1ECA, 0x1ECA], [0x1ECC, 0x1ECC], [0x1ECE, 0x1ECE], [0x1ED0, 0x1ED0], [0x1ED2, 0x1ED2], [0x1ED4, 0x1ED4], [0x1ED6, 0x1ED6], [0x1ED8, 0x1ED8], [0x1EDA, 0x1EDA], [0x1EDC, 0x1EDC], [0x1EDE, 0x1EDE], [0x1EE0, 0x1EE0], [0x1EE2, 0x1EE2], [0x1EE4, 0x1EE4], [0x1EE6, 0x1EE6], [0x1EE8, 0x1EE8], [0x1EEA, 0x1EEA], [0x1EEC, 0x1EEC], [0x1EEE, 0x1EEE], [0x1EF0, 0x1EF0], [0x1EF2, 0x1EF2], [0x1EF4, 0x1EF4], [0x1EF6, 0x1EF6], [0x1EF8, 0x1EF8], [0x1EFA, 0x1EFA], [0x1EFC, 0x1EFC], [0x1EFE, 0x1EFE], [0x1F08, 0x1F0F], [0x1F18, 0x1F1D], [0x1F28, 0x1F2F], [0x1F38, 0x1F3F], [0x1F48, 0x1F4D], [0x1F59, 0x1F59], [0x1F5B, 0x1F5B], [0x1F5D, 0x1F5D], [0x1F5F, 0x1F5F], [0x1F68, 0x1F6F], [0x1FB8, 0x1FBB], [0x1FC8, 0x1FCB], [0x1FD8, 0x1FDB], [0x1FE8, 0x1FEC], [0x1FF8, 0x1FFB], [0x2102, 0x2102], [0x2107, 0x2107], [0x210B, 0x210D], [0x2110, 0x2112], [0x2115, 0x2115], [0x2119, 0x211D], [0x2124, 0x2124], [0x2126, 0x2126], [0x2128, 0x2128], [0x212A, 0x212D], [0x2130, 0x2133], [0x213E, 0x213F], [0x2145, 0x2145], [0x2183, 0x2183], [0x2C00, 0x2C2E], [0x2C60, 0x2C60], [0x2C62, 0x2C64], [0x2C67, 0x2C67], [0x2C69, 0x2C69], [0x2C6B, 0x2C6B], [0x2C6D, 0x2C6F], [0x2C72, 0x2C72], [0x2C75, 0x2C75], [0x2C80, 0x2C80], [0x2C82, 0x2C82], [0x2C84, 0x2C84], [0x2C86, 0x2C86], [0x2C88, 0x2C88], [0x2C8A, 0x2C8A], [0x2C8C, 0x2C8C], [0x2C8E, 0x2C8E], [0x2C90, 0x2C90], [0x2C92, 0x2C92], [0x2C94, 0x2C94], [0x2C96, 0x2C96], [0x2C98, 0x2C98], [0x2C9A, 0x2C9A], [0x2C9C, 0x2C9C], [0x2C9E, 0x2C9E], [0x2CA0, 0x2CA0], [0x2CA2, 0x2CA2], [0x2CA4, 0x2CA4], [0x2CA6, 0x2CA6], [0x2CA8, 0x2CA8], [0x2CAA, 0x2CAA], [0x2CAC, 0x2CAC], [0x2CAE, 0x2CAE], [0x2CB0, 0x2CB0], [0x2CB2, 0x2CB2], [0x2CB4, 0x2CB4], [0x2CB6, 0x2CB6], [0x2CB8, 0x2CB8], [0x2CBA, 0x2CBA], [0x2CBC, 0x2CBC], [0x2CBE, 0x2CBE], [0x2CC0, 0x2CC0], [0x2CC2, 0x2CC2], [0x2CC4, 0x2CC4], [0x2CC6, 0x2CC6], [0x2CC8, 0x2CC8], [0x2CCA, 0x2CCA], [0x2CCC, 0x2CCC], [0x2CCE, 0x2CCE], [0x2CD0, 0x2CD0], [0x2CD2, 0x2CD2], [0x2CD4, 0x2CD4], [0x2CD6, 0x2CD6], [0x2CD8, 0x2CD8], [0x2CDA, 0x2CDA], [0x2CDC, 0x2CDC], [0x2CDE, 0x2CDE], [0x2CE0, 0x2CE0], [0x2CE2, 0x2CE2], [0xA640, 0xA640], [0xA642, 0xA642], [0xA644, 0xA644], [0xA646, 0xA646], [0xA648, 0xA648], [0xA64A, 0xA64A], [0xA64C, 0xA64C], [0xA64E, 0xA64E], [0xA650, 0xA650], [0xA652, 0xA652], [0xA654, 0xA654], [0xA656, 0xA656], [0xA658, 0xA658], [0xA65A, 0xA65A], [0xA65C, 0xA65C], [0xA65E, 0xA65E], [0xA662, 0xA662], [0xA664, 0xA664], [0xA666, 0xA666], [0xA668, 0xA668], [0xA66A, 0xA66A], [0xA66C, 0xA66C], [0xA680, 0xA680], [0xA682, 0xA682], [0xA684, 0xA684], [0xA686, 0xA686], [0xA688, 0xA688], [0xA68A, 0xA68A], [0xA68C, 0xA68C], [0xA68E, 0xA68E], [0xA690, 0xA690], [0xA692, 0xA692], [0xA694, 0xA694], [0xA696, 0xA696], [0xA722, 0xA722], [0xA724, 0xA724], [0xA726, 0xA726], [0xA728, 0xA728], [0xA72A, 0xA72A], [0xA72C, 0xA72C], [0xA72E, 0xA72E], [0xA732, 0xA732], [0xA734, 0xA734], [0xA736, 0xA736], [0xA738, 0xA738], [0xA73A, 0xA73A], [0xA73C, 0xA73C], [0xA73E, 0xA73E], [0xA740, 0xA740], [0xA742, 0xA742], [0xA744, 0xA744], [0xA746, 0xA746], [0xA748, 0xA748], [0xA74A, 0xA74A], [0xA74C, 0xA74C], [0xA74E, 0xA74E], [0xA750, 0xA750], [0xA752, 0xA752], [0xA754, 0xA754], [0xA756, 0xA756], [0xA758, 0xA758], [0xA75A, 0xA75A], [0xA75C, 0xA75C], [0xA75E, 0xA75E], [0xA760, 0xA760], [0xA762, 0xA762], [0xA764, 0xA764], [0xA766, 0xA766], [0xA768, 0xA768], [0xA76A, 0xA76A], [0xA76C, 0xA76C], [0xA76E, 0xA76E], [0xA779, 0xA779], [0xA77B, 0xA77B], [0xA77D, 0xA77E], [0xA780, 0xA780], [0xA782, 0xA782], [0xA784, 0xA784], [0xA786, 0xA786], [0xA78B, 0xA78B], [0xFF21, 0xFF3A]];
+Ll = [[0x0061, 0x007A], [0x00AA, 0x00AA], [0x00B5, 0x00B5], [0x00BA, 0x00BA], [0x00DF, 0x00F6], [0x00F8, 0x00FF], [0x0101, 0x0101], [0x0103, 0x0103], [0x0105, 0x0105], [0x0107, 0x0107], [0x0109, 0x0109], [0x010B, 0x010B], [0x010D, 0x010D], [0x010F, 0x010F], [0x0111, 0x0111], [0x0113, 0x0113], [0x0115, 0x0115], [0x0117, 0x0117], [0x0119, 0x0119], [0x011B, 0x011B], [0x011D, 0x011D], [0x011F, 0x011F], [0x0121, 0x0121], [0x0123, 0x0123], [0x0125, 0x0125], [0x0127, 0x0127], [0x0129, 0x0129], [0x012B, 0x012B], [0x012D, 0x012D], [0x012F, 0x012F], [0x0131, 0x0131], [0x0133, 0x0133], [0x0135, 0x0135], [0x0137, 0x0138], [0x013A, 0x013A], [0x013C, 0x013C], [0x013E, 0x013E], [0x0140, 0x0140], [0x0142, 0x0142], [0x0144, 0x0144], [0x0146, 0x0146], [0x0148, 0x0149], [0x014B, 0x014B], [0x014D, 0x014D], [0x014F, 0x014F], [0x0151, 0x0151], [0x0153, 0x0153], [0x0155, 0x0155], [0x0157, 0x0157], [0x0159, 0x0159], [0x015B, 0x015B], [0x015D, 0x015D], [0x015F, 0x015F], [0x0161, 0x0161], [0x0163, 0x0163], [0x0165, 0x0165], [0x0167, 0x0167], [0x0169, 0x0169], [0x016B, 0x016B], [0x016D, 0x016D], [0x016F, 0x016F], [0x0171, 0x0171], [0x0173, 0x0173], [0x0175, 0x0175], [0x0177, 0x0177], [0x017A, 0x017A], [0x017C, 0x017C], [0x017E, 0x0180], [0x0183, 0x0183], [0x0185, 0x0185], [0x0188, 0x0188], [0x018C, 0x018D], [0x0192, 0x0192], [0x0195, 0x0195], [0x0199, 0x019B], [0x019E, 0x019E], [0x01A1, 0x01A1], [0x01A3, 0x01A3], [0x01A5, 0x01A5], [0x01A8, 0x01A8], [0x01AA, 0x01AB], [0x01AD, 0x01AD], [0x01B0, 0x01B0], [0x01B4, 0x01B4], [0x01B6, 0x01B6], [0x01B9, 0x01BA], [0x01BD, 0x01BF], [0x01C6, 0x01C6], [0x01C9, 0x01C9], [0x01CC, 0x01CC], [0x01CE, 0x01CE], [0x01D0, 0x01D0], [0x01D2, 0x01D2], [0x01D4, 0x01D4], [0x01D6, 0x01D6], [0x01D8, 0x01D8], [0x01DA, 0x01DA], [0x01DC, 0x01DD], [0x01DF, 0x01DF], [0x01E1, 0x01E1], [0x01E3, 0x01E3], [0x01E5, 0x01E5], [0x01E7, 0x01E7], [0x01E9, 0x01E9], [0x01EB, 0x01EB], [0x01ED, 0x01ED], [0x01EF, 0x01F0], [0x01F3, 0x01F3], [0x01F5, 0x01F5], [0x01F9, 0x01F9], [0x01FB, 0x01FB], [0x01FD, 0x01FD], [0x01FF, 0x01FF], [0x0201, 0x0201], [0x0203, 0x0203], [0x0205, 0x0205], [0x0207, 0x0207], [0x0209, 0x0209], [0x020B, 0x020B], [0x020D, 0x020D], [0x020F, 0x020F], [0x0211, 0x0211], [0x0213, 0x0213], [0x0215, 0x0215], [0x0217, 0x0217], [0x0219, 0x0219], [0x021B, 0x021B], [0x021D, 0x021D], [0x021F, 0x021F], [0x0221, 0x0221], [0x0223, 0x0223], [0x0225, 0x0225], [0x0227, 0x0227], [0x0229, 0x0229], [0x022B, 0x022B], [0x022D, 0x022D], [0x022F, 0x022F], [0x0231, 0x0231], [0x0233, 0x0239], [0x023C, 0x023C], [0x023F, 0x0240], [0x0242, 0x0242], [0x0247, 0x0247], [0x0249, 0x0249], [0x024B, 0x024B], [0x024D, 0x024D], [0x024F, 0x0293], [0x0295, 0x02AF], [0x0371, 0x0371], [0x0373, 0x0373], [0x0377, 0x0377], [0x037B, 0x037D], [0x0390, 0x0390], [0x03AC, 0x03CE], [0x03D0, 0x03D1], [0x03D5, 0x03D7], [0x03D9, 0x03D9], [0x03DB, 0x03DB], [0x03DD, 0x03DD], [0x03DF, 0x03DF], [0x03E1, 0x03E1], [0x03E3, 0x03E3], [0x03E5, 0x03E5], [0x03E7, 0x03E7], [0x03E9, 0x03E9], [0x03EB, 0x03EB], [0x03ED, 0x03ED], [0x03EF, 0x03F3], [0x03F5, 0x03F5], [0x03F8, 0x03F8], [0x03FB, 0x03FC], [0x0430, 0x045F], [0x0461, 0x0461], [0x0463, 0x0463], [0x0465, 0x0465], [0x0467, 0x0467], [0x0469, 0x0469], [0x046B, 0x046B], [0x046D, 0x046D], [0x046F, 0x046F], [0x0471, 0x0471], [0x0473, 0x0473], [0x0475, 0x0475], [0x0477, 0x0477], [0x0479, 0x0479], [0x047B, 0x047B], [0x047D, 0x047D], [0x047F, 0x047F], [0x0481, 0x0481], [0x048B, 0x048B], [0x048D, 0x048D], [0x048F, 0x048F], [0x0491, 0x0491], [0x0493, 0x0493], [0x0495, 0x0495], [0x0497, 0x0497], [0x0499, 0x0499], [0x049B, 0x049B], [0x049D, 0x049D], [0x049F, 0x049F], [0x04A1, 0x04A1], [0x04A3, 0x04A3], [0x04A5, 0x04A5], [0x04A7, 0x04A7], [0x04A9, 0x04A9], [0x04AB, 0x04AB], [0x04AD, 0x04AD], [0x04AF, 0x04AF], [0x04B1, 0x04B1], [0x04B3, 0x04B3], [0x04B5, 0x04B5], [0x04B7, 0x04B7], [0x04B9, 0x04B9], [0x04BB, 0x04BB], [0x04BD, 0x04BD], [0x04BF, 0x04BF], [0x04C2, 0x04C2], [0x04C4, 0x04C4], [0x04C6, 0x04C6], [0x04C8, 0x04C8], [0x04CA, 0x04CA], [0x04CC, 0x04CC], [0x04CE, 0x04CF], [0x04D1, 0x04D1], [0x04D3, 0x04D3], [0x04D5, 0x04D5], [0x04D7, 0x04D7], [0x04D9, 0x04D9], [0x04DB, 0x04DB], [0x04DD, 0x04DD], [0x04DF, 0x04DF], [0x04E1, 0x04E1], [0x04E3, 0x04E3], [0x04E5, 0x04E5], [0x04E7, 0x04E7], [0x04E9, 0x04E9], [0x04EB, 0x04EB], [0x04ED, 0x04ED], [0x04EF, 0x04EF], [0x04F1, 0x04F1], [0x04F3, 0x04F3], [0x04F5, 0x04F5], [0x04F7, 0x04F7], [0x04F9, 0x04F9], [0x04FB, 0x04FB], [0x04FD, 0x04FD], [0x04FF, 0x04FF], [0x0501, 0x0501], [0x0503, 0x0503], [0x0505, 0x0505], [0x0507, 0x0507], [0x0509, 0x0509], [0x050B, 0x050B], [0x050D, 0x050D], [0x050F, 0x050F], [0x0511, 0x0511], [0x0513, 0x0513], [0x0515, 0x0515], [0x0517, 0x0517], [0x0519, 0x0519], [0x051B, 0x051B], [0x051D, 0x051D], [0x051F, 0x051F], [0x0521, 0x0521], [0x0523, 0x0523], [0x0561, 0x0587], [0x1D00, 0x1D2B], [0x1D62, 0x1D77], [0x1D79, 0x1D9A], [0x1E01, 0x1E01], [0x1E03, 0x1E03], [0x1E05, 0x1E05], [0x1E07, 0x1E07], [0x1E09, 0x1E09], [0x1E0B, 0x1E0B], [0x1E0D, 0x1E0D], [0x1E0F, 0x1E0F], [0x1E11, 0x1E11], [0x1E13, 0x1E13], [0x1E15, 0x1E15], [0x1E17, 0x1E17], [0x1E19, 0x1E19], [0x1E1B, 0x1E1B], [0x1E1D, 0x1E1D], [0x1E1F, 0x1E1F], [0x1E21, 0x1E21], [0x1E23, 0x1E23], [0x1E25, 0x1E25], [0x1E27, 0x1E27], [0x1E29, 0x1E29], [0x1E2B, 0x1E2B], [0x1E2D, 0x1E2D], [0x1E2F, 0x1E2F], [0x1E31, 0x1E31], [0x1E33, 0x1E33], [0x1E35, 0x1E35], [0x1E37, 0x1E37], [0x1E39, 0x1E39], [0x1E3B, 0x1E3B], [0x1E3D, 0x1E3D], [0x1E3F, 0x1E3F], [0x1E41, 0x1E41], [0x1E43, 0x1E43], [0x1E45, 0x1E45], [0x1E47, 0x1E47], [0x1E49, 0x1E49], [0x1E4B, 0x1E4B], [0x1E4D, 0x1E4D], [0x1E4F, 0x1E4F], [0x1E51, 0x1E51], [0x1E53, 0x1E53], [0x1E55, 0x1E55], [0x1E57, 0x1E57], [0x1E59, 0x1E59], [0x1E5B, 0x1E5B], [0x1E5D, 0x1E5D], [0x1E5F, 0x1E5F], [0x1E61, 0x1E61], [0x1E63, 0x1E63], [0x1E65, 0x1E65], [0x1E67, 0x1E67], [0x1E69, 0x1E69], [0x1E6B, 0x1E6B], [0x1E6D, 0x1E6D], [0x1E6F, 0x1E6F], [0x1E71, 0x1E71], [0x1E73, 0x1E73], [0x1E75, 0x1E75], [0x1E77, 0x1E77], [0x1E79, 0x1E79], [0x1E7B, 0x1E7B], [0x1E7D, 0x1E7D], [0x1E7F, 0x1E7F], [0x1E81, 0x1E81], [0x1E83, 0x1E83], [0x1E85, 0x1E85], [0x1E87, 0x1E87], [0x1E89, 0x1E89], [0x1E8B, 0x1E8B], [0x1E8D, 0x1E8D], [0x1E8F, 0x1E8F], [0x1E91, 0x1E91], [0x1E93, 0x1E93], [0x1E95, 0x1E9D], [0x1E9F, 0x1E9F], [0x1EA1, 0x1EA1], [0x1EA3, 0x1EA3], [0x1EA5, 0x1EA5], [0x1EA7, 0x1EA7], [0x1EA9, 0x1EA9], [0x1EAB, 0x1EAB], [0x1EAD, 0x1EAD], [0x1EAF, 0x1EAF], [0x1EB1, 0x1EB1], [0x1EB3, 0x1EB3], [0x1EB5, 0x1EB5], [0x1EB7, 0x1EB7], [0x1EB9, 0x1EB9], [0x1EBB, 0x1EBB], [0x1EBD, 0x1EBD], [0x1EBF, 0x1EBF], [0x1EC1, 0x1EC1], [0x1EC3, 0x1EC3], [0x1EC5, 0x1EC5], [0x1EC7, 0x1EC7], [0x1EC9, 0x1EC9], [0x1ECB, 0x1ECB], [0x1ECD, 0x1ECD], [0x1ECF, 0x1ECF], [0x1ED1, 0x1ED1], [0x1ED3, 0x1ED3], [0x1ED5, 0x1ED5], [0x1ED7, 0x1ED7], [0x1ED9, 0x1ED9], [0x1EDB, 0x1EDB], [0x1EDD, 0x1EDD], [0x1EDF, 0x1EDF], [0x1EE1, 0x1EE1], [0x1EE3, 0x1EE3], [0x1EE5, 0x1EE5], [0x1EE7, 0x1EE7], [0x1EE9, 0x1EE9], [0x1EEB, 0x1EEB], [0x1EED, 0x1EED], [0x1EEF, 0x1EEF], [0x1EF1, 0x1EF1], [0x1EF3, 0x1EF3], [0x1EF5, 0x1EF5], [0x1EF7, 0x1EF7], [0x1EF9, 0x1EF9], [0x1EFB, 0x1EFB], [0x1EFD, 0x1EFD], [0x1EFF, 0x1F07], [0x1F10, 0x1F15], [0x1F20, 0x1F27], [0x1F30, 0x1F37], [0x1F40, 0x1F45], [0x1F50, 0x1F57], [0x1F60, 0x1F67], [0x1F70, 0x1F7D], [0x1F80, 0x1F87], [0x1F90, 0x1F97], [0x1FA0, 0x1FA7], [0x1FB0, 0x1FB4], [0x1FB6, 0x1FB7], [0x1FBE, 0x1FBE], [0x1FC2, 0x1FC4], [0x1FC6, 0x1FC7], [0x1FD0, 0x1FD3], [0x1FD6, 0x1FD7], [0x1FE0, 0x1FE7], [0x1FF2, 0x1FF4], [0x1FF6, 0x1FF7], [0x2071, 0x2071], [0x207F, 0x207F], [0x210A, 0x210A], [0x210E, 0x210F], [0x2113, 0x2113], [0x212F, 0x212F], [0x2134, 0x2134], [0x2139, 0x2139], [0x213C, 0x213D], [0x2146, 0x2149], [0x214E, 0x214E], [0x2184, 0x2184], [0x2C30, 0x2C5E], [0x2C61, 0x2C61], [0x2C65, 0x2C66], [0x2C68, 0x2C68], [0x2C6A, 0x2C6A], [0x2C6C, 0x2C6C], [0x2C71, 0x2C71], [0x2C73, 0x2C74], [0x2C76, 0x2C7C], [0x2C81, 0x2C81], [0x2C83, 0x2C83], [0x2C85, 0x2C85], [0x2C87, 0x2C87], [0x2C89, 0x2C89], [0x2C8B, 0x2C8B], [0x2C8D, 0x2C8D], [0x2C8F, 0x2C8F], [0x2C91, 0x2C91], [0x2C93, 0x2C93], [0x2C95, 0x2C95], [0x2C97, 0x2C97], [0x2C99, 0x2C99], [0x2C9B, 0x2C9B], [0x2C9D, 0x2C9D], [0x2C9F, 0x2C9F], [0x2CA1, 0x2CA1], [0x2CA3, 0x2CA3], [0x2CA5, 0x2CA5], [0x2CA7, 0x2CA7], [0x2CA9, 0x2CA9], [0x2CAB, 0x2CAB], [0x2CAD, 0x2CAD], [0x2CAF, 0x2CAF], [0x2CB1, 0x2CB1], [0x2CB3, 0x2CB3], [0x2CB5, 0x2CB5], [0x2CB7, 0x2CB7], [0x2CB9, 0x2CB9], [0x2CBB, 0x2CBB], [0x2CBD, 0x2CBD], [0x2CBF, 0x2CBF], [0x2CC1, 0x2CC1], [0x2CC3, 0x2CC3], [0x2CC5, 0x2CC5], [0x2CC7, 0x2CC7], [0x2CC9, 0x2CC9], [0x2CCB, 0x2CCB], [0x2CCD, 0x2CCD], [0x2CCF, 0x2CCF], [0x2CD1, 0x2CD1], [0x2CD3, 0x2CD3], [0x2CD5, 0x2CD5], [0x2CD7, 0x2CD7], [0x2CD9, 0x2CD9], [0x2CDB, 0x2CDB], [0x2CDD, 0x2CDD], [0x2CDF, 0x2CDF], [0x2CE1, 0x2CE1], [0x2CE3, 0x2CE4], [0x2D00, 0x2D25], [0xA641, 0xA641], [0xA643, 0xA643], [0xA645, 0xA645], [0xA647, 0xA647], [0xA649, 0xA649], [0xA64B, 0xA64B], [0xA64D, 0xA64D], [0xA64F, 0xA64F], [0xA651, 0xA651], [0xA653, 0xA653], [0xA655, 0xA655], [0xA657, 0xA657], [0xA659, 0xA659], [0xA65B, 0xA65B], [0xA65D, 0xA65D], [0xA65F, 0xA65F], [0xA663, 0xA663], [0xA665, 0xA665], [0xA667, 0xA667], [0xA669, 0xA669], [0xA66B, 0xA66B], [0xA66D, 0xA66D], [0xA681, 0xA681], [0xA683, 0xA683], [0xA685, 0xA685], [0xA687, 0xA687], [0xA689, 0xA689], [0xA68B, 0xA68B], [0xA68D, 0xA68D], [0xA68F, 0xA68F], [0xA691, 0xA691], [0xA693, 0xA693], [0xA695, 0xA695], [0xA697, 0xA697], [0xA723, 0xA723], [0xA725, 0xA725], [0xA727, 0xA727], [0xA729, 0xA729], [0xA72B, 0xA72B], [0xA72D, 0xA72D], [0xA72F, 0xA731], [0xA733, 0xA733], [0xA735, 0xA735], [0xA737, 0xA737], [0xA739, 0xA739], [0xA73B, 0xA73B], [0xA73D, 0xA73D], [0xA73F, 0xA73F], [0xA741, 0xA741], [0xA743, 0xA743], [0xA745, 0xA745], [0xA747, 0xA747], [0xA749, 0xA749], [0xA74B, 0xA74B], [0xA74D, 0xA74D], [0xA74F, 0xA74F], [0xA751, 0xA751], [0xA753, 0xA753], [0xA755, 0xA755], [0xA757, 0xA757], [0xA759, 0xA759], [0xA75B, 0xA75B], [0xA75D, 0xA75D], [0xA75F, 0xA75F], [0xA761, 0xA761], [0xA763, 0xA763], [0xA765, 0xA765], [0xA767, 0xA767], [0xA769, 0xA769], [0xA76B, 0xA76B], [0xA76D, 0xA76D], [0xA76F, 0xA76F], [0xA771, 0xA778], [0xA77A, 0xA77A], [0xA77C, 0xA77C], [0xA77F, 0xA77F], [0xA781, 0xA781], [0xA783, 0xA783], [0xA785, 0xA785], [0xA787, 0xA787], [0xA78C, 0xA78C], [0xFB00, 0xFB06], [0xFB13, 0xFB17], [0xFF41, 0xFF5A]];
+Lt = [[0x01C5, 0x01C5], [0x01C8, 0x01C8], [0x01CB, 0x01CB], [0x01F2, 0x01F2], [0x1F88, 0x1F8F], [0x1F98, 0x1F9F], [0x1FA8, 0x1FAF], [0x1FBC, 0x1FBC], [0x1FCC, 0x1FCC], [0x1FFC, 0x1FFC]];
+Lm = [[0x02B0, 0x02C1], [0x02C6, 0x02D1], [0x02E0, 0x02E4], [0x02EC, 0x02EC], [0x02EE, 0x02EE], [0x0374, 0x0374], [0x037A, 0x037A], [0x0559, 0x0559], [0x0640, 0x0640], [0x06E5, 0x06E6], [0x07F4, 0x07F5], [0x07FA, 0x07FA], [0x0971, 0x0971], [0x0E46, 0x0E46], [0x0EC6, 0x0EC6], [0x10FC, 0x10FC], [0x17D7, 0x17D7], [0x1843, 0x1843], [0x1C78, 0x1C7D], [0x1D2C, 0x1D61], [0x1D78, 0x1D78], [0x1D9B, 0x1DBF], [0x2090, 0x2094], [0x2C7D, 0x2C7D], [0x2D6F, 0x2D6F], [0x2E2F, 0x2E2F], [0x3005, 0x3005], [0x3031, 0x3035], [0x303B, 0x303B], [0x309D, 0x309E], [0x30FC, 0x30FE], [0xA015, 0xA015], [0xA60C, 0xA60C], [0xA67F, 0xA67F], [0xA717, 0xA71F], [0xA770, 0xA770], [0xA788, 0xA788], [0xFF70, 0xFF70], [0xFF9E, 0xFF9F]];
+Lo = [[0x01BB, 0x01BB], [0x01C0, 0x01C3], [0x0294, 0x0294], [0x05D0, 0x05EA], [0x05F0, 0x05F2], [0x0621, 0x063F], [0x0641, 0x064A], [0x066E, 0x066F], [0x0671, 0x06D3], [0x06D5, 0x06D5], [0x06EE, 0x06EF], [0x06FA, 0x06FC], [0x06FF, 0x06FF], [0x0710, 0x0710], [0x0712, 0x072F], [0x074D, 0x07A5], [0x07B1, 0x07B1], [0x07CA, 0x07EA], [0x0904, 0x0939], [0x093D, 0x093D], [0x0950, 0x0950], [0x0958, 0x0961], [0x0972, 0x0972], [0x097B, 0x097F], [0x0985, 0x098C], [0x098F, 0x0990], [0x0993, 0x09A8], [0x09AA, 0x09B0], [0x09B2, 0x09B2], [0x09B6, 0x09B9], [0x09BD, 0x09BD], [0x09CE, 0x09CE], [0x09DC, 0x09DD], [0x09DF, 0x09E1], [0x09F0, 0x09F1], [0x0A05, 0x0A0A], [0x0A0F, 0x0A10], [0x0A13, 0x0A28], [0x0A2A, 0x0A30], [0x0A32, 0x0A33], [0x0A35, 0x0A36], [0x0A38, 0x0A39], [0x0A59, 0x0A5C], [0x0A5E, 0x0A5E], [0x0A72, 0x0A74], [0x0A85, 0x0A8D], [0x0A8F, 0x0A91], [0x0A93, 0x0AA8], [0x0AAA, 0x0AB0], [0x0AB2, 0x0AB3], [0x0AB5, 0x0AB9], [0x0ABD, 0x0ABD], [0x0AD0, 0x0AD0], [0x0AE0, 0x0AE1], [0x0B05, 0x0B0C], [0x0B0F, 0x0B10], [0x0B13, 0x0B28], [0x0B2A, 0x0B30], [0x0B32, 0x0B33], [0x0B35, 0x0B39], [0x0B3D, 0x0B3D], [0x0B5C, 0x0B5D], [0x0B5F, 0x0B61], [0x0B71, 0x0B71], [0x0B83, 0x0B83], [0x0B85, 0x0B8A], [0x0B8E, 0x0B90], [0x0B92, 0x0B95], [0x0B99, 0x0B9A], [0x0B9C, 0x0B9C], [0x0B9E, 0x0B9F], [0x0BA3, 0x0BA4], [0x0BA8, 0x0BAA], [0x0BAE, 0x0BB9], [0x0BD0, 0x0BD0], [0x0C05, 0x0C0C], [0x0C0E, 0x0C10], [0x0C12, 0x0C28], [0x0C2A, 0x0C33], [0x0C35, 0x0C39], [0x0C3D, 0x0C3D], [0x0C58, 0x0C59], [0x0C60, 0x0C61], [0x0C85, 0x0C8C], [0x0C8E, 0x0C90], [0x0C92, 0x0CA8], [0x0CAA, 0x0CB3], [0x0CB5, 0x0CB9], [0x0CBD, 0x0CBD], [0x0CDE, 0x0CDE], [0x0CE0, 0x0CE1], [0x0D05, 0x0D0C], [0x0D0E, 0x0D10], [0x0D12, 0x0D28], [0x0D2A, 0x0D39], [0x0D3D, 0x0D3D], [0x0D60, 0x0D61], [0x0D7A, 0x0D7F], [0x0D85, 0x0D96], [0x0D9A, 0x0DB1], [0x0DB3, 0x0DBB], [0x0DBD, 0x0DBD], [0x0DC0, 0x0DC6], [0x0E01, 0x0E30], [0x0E32, 0x0E33], [0x0E40, 0x0E45], [0x0E81, 0x0E82], [0x0E84, 0x0E84], [0x0E87, 0x0E88], [0x0E8A, 0x0E8A], [0x0E8D, 0x0E8D], [0x0E94, 0x0E97], [0x0E99, 0x0E9F], [0x0EA1, 0x0EA3], [0x0EA5, 0x0EA5], [0x0EA7, 0x0EA7], [0x0EAA, 0x0EAB], [0x0EAD, 0x0EB0], [0x0EB2, 0x0EB3], [0x0EBD, 0x0EBD], [0x0EC0, 0x0EC4], [0x0EDC, 0x0EDD], [0x0F00, 0x0F00], [0x0F40, 0x0F47], [0x0F49, 0x0F6C], [0x0F88, 0x0F8B], [0x1000, 0x102A], [0x103F, 0x103F], [0x1050, 0x1055], [0x105A, 0x105D], [0x1061, 0x1061], [0x1065, 0x1066], [0x106E, 0x1070], [0x1075, 0x1081], [0x108E, 0x108E], [0x10D0, 0x10FA], [0x1100, 0x1159], [0x115F, 0x11A2], [0x11A8, 0x11F9], [0x1200, 0x1248], [0x124A, 0x124D], [0x1250, 0x1256], [0x1258, 0x1258], [0x125A, 0x125D], [0x1260, 0x1288], [0x128A, 0x128D], [0x1290, 0x12B0], [0x12B2, 0x12B5], [0x12B8, 0x12BE], [0x12C0, 0x12C0], [0x12C2, 0x12C5], [0x12C8, 0x12D6], [0x12D8, 0x1310], [0x1312, 0x1315], [0x1318, 0x135A], [0x1380, 0x138F], [0x13A0, 0x13F4], [0x1401, 0x166C], [0x166F, 0x1676], [0x1681, 0x169A], [0x16A0, 0x16EA], [0x1700, 0x170C], [0x170E, 0x1711], [0x1720, 0x1731], [0x1740, 0x1751], [0x1760, 0x176C], [0x176E, 0x1770], [0x1780, 0x17B3], [0x17DC, 0x17DC], [0x1820, 0x1842], [0x1844, 0x1877], [0x1880, 0x18A8], [0x18AA, 0x18AA], [0x1900, 0x191C], [0x1950, 0x196D], [0x1970, 0x1974], [0x1980, 0x19A9], [0x19C1, 0x19C7], [0x1A00, 0x1A16], [0x1B05, 0x1B33], [0x1B45, 0x1B4B], [0x1B83, 0x1BA0], [0x1BAE, 0x1BAF], [0x1C00, 0x1C23], [0x1C4D, 0x1C4F], [0x1C5A, 0x1C77], [0x2135, 0x2138], [0x2D30, 0x2D65], [0x2D80, 0x2D96], [0x2DA0, 0x2DA6], [0x2DA8, 0x2DAE], [0x2DB0, 0x2DB6], [0x2DB8, 0x2DBE], [0x2DC0, 0x2DC6], [0x2DC8, 0x2DCE], [0x2DD0, 0x2DD6], [0x2DD8, 0x2DDE], [0x3006, 0x3006], [0x303C, 0x303C], [0x3041, 0x3096], [0x309F, 0x309F], [0x30A1, 0x30FA], [0x30FF, 0x30FF], [0x3105, 0x312D], [0x3131, 0x318E], [0x31A0, 0x31B7], [0x31F0, 0x31FF], [0x3400, 0x4DB5], [0x4E00, 0x9FC3], [0xA000, 0xA014], [0xA016, 0xA48C], [0xA500, 0xA60B], [0xA610, 0xA61F], [0xA62A, 0xA62B], [0xA66E, 0xA66E], [0xA7FB, 0xA801], [0xA803, 0xA805], [0xA807, 0xA80A], [0xA80C, 0xA822], [0xA840, 0xA873], [0xA882, 0xA8B3], [0xA90A, 0xA925], [0xA930, 0xA946], [0xAA00, 0xAA28], [0xAA40, 0xAA42], [0xAA44, 0xAA4B], [0xAC00, 0xD7A3], [0xF900, 0xFA2D], [0xFA30, 0xFA6A], [0xFA70, 0xFAD9], [0xFB1D, 0xFB1D], [0xFB1F, 0xFB28], [0xFB2A, 0xFB36], [0xFB38, 0xFB3C], [0xFB3E, 0xFB3E], [0xFB40, 0xFB41], [0xFB43, 0xFB44], [0xFB46, 0xFBB1], [0xFBD3, 0xFD3D], [0xFD50, 0xFD8F], [0xFD92, 0xFDC7], [0xFDF0, 0xFDFB], [0xFE70, 0xFE74], [0xFE76, 0xFEFC], [0xFF66, 0xFF6F], [0xFF71, 0xFF9D], [0xFFA0, 0xFFBE], [0xFFC2, 0xFFC7], [0xFFCA, 0xFFCF], [0xFFD2, 0xFFD7], [0xFFDA, 0xFFDC]];
+Nl = [[0x16EE, 0x16F0], [0x2160, 0x2182], [0x2185, 0x2188], [0x3007, 0x3007], [0x3021, 0x3029], [0x3038, 0x303A]];
+Mn = [[0x0300, 0x036F], [0x0483, 0x0487], [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0610, 0x061A], [0x064B, 0x065E], [0x0670, 0x0670], [0x06D6, 0x06DC], [0x06DF, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], [0x0711, 0x0711], [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], [0x0A51, 0x0A51], [0x0A70, 0x0A71], [0x0A75, 0x0A75], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], [0x0B3F, 0x0B3F], [0x0B41, 0x0B44], [0x0B4D, 0x0B4D], [0x0B56, 0x0B56], [0x0B62, 0x0B63], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0C62, 0x0C63], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3], [0x0D41, 0x0D44], [0x0D4D, 0x0D4D], [0x0D62, 0x0D63], [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], [0x1032, 0x1037], [0x1039, 0x103A], [0x103D, 0x103E], [0x1058, 0x1059], [0x105E, 0x1060], [0x1071, 0x1074], [0x1082, 0x1082], [0x1085, 0x1086], [0x108D, 0x108D], [0x135F, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], [0x1772, 0x1773], [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73], [0x1B80, 0x1B81], [0x1BA2, 0x1BA5], [0x1BA8, 0x1BA9], [0x1C2C, 0x1C33], [0x1C36, 0x1C37], [0x1DC0, 0x1DE6], [0x1DFE, 0x1DFF], [0x20D0, 0x20DC], [0x20E1, 0x20E1], [0x20E5, 0x20F0], [0x2DE0, 0x2DFF], [0x302A, 0x302F], [0x3099, 0x309A], [0xA66F, 0xA66F], [0xA67C, 0xA67D], [0xA802, 0xA802], [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826], [0xA8C4, 0xA8C4], [0xA926, 0xA92D], [0xA947, 0xA951], [0xAA29, 0xAA2E], [0xAA31, 0xAA32], [0xAA35, 0xAA36], [0xAA43, 0xAA43], [0xAA4C, 0xAA4C], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], [0xFE20, 0xFE26]];
+Mc = [[0x0903, 0x0903], [0x093E, 0x0940], [0x0949, 0x094C], [0x0982, 0x0983], [0x09BE, 0x09C0], [0x09C7, 0x09C8], [0x09CB, 0x09CC], [0x09D7, 0x09D7], [0x0A03, 0x0A03], [0x0A3E, 0x0A40], [0x0A83, 0x0A83], [0x0ABE, 0x0AC0], [0x0AC9, 0x0AC9], [0x0ACB, 0x0ACC], [0x0B02, 0x0B03], [0x0B3E, 0x0B3E], [0x0B40, 0x0B40], [0x0B47, 0x0B48], [0x0B4B, 0x0B4C], [0x0B57, 0x0B57], [0x0BBE, 0x0BBF], [0x0BC1, 0x0BC2], [0x0BC6, 0x0BC8], [0x0BCA, 0x0BCC], [0x0BD7, 0x0BD7], [0x0C01, 0x0C03], [0x0C41, 0x0C44], [0x0C82, 0x0C83], [0x0CBE, 0x0CBE], [0x0CC0, 0x0CC4], [0x0CC7, 0x0CC8], [0x0CCA, 0x0CCB], [0x0CD5, 0x0CD6], [0x0D02, 0x0D03], [0x0D3E, 0x0D40], [0x0D46, 0x0D48], [0x0D4A, 0x0D4C], [0x0D57, 0x0D57], [0x0D82, 0x0D83], [0x0DCF, 0x0DD1], [0x0DD8, 0x0DDF], [0x0DF2, 0x0DF3], [0x0F3E, 0x0F3F], [0x0F7F, 0x0F7F], [0x102B, 0x102C], [0x1031, 0x1031], [0x1038, 0x1038], [0x103B, 0x103C], [0x1056, 0x1057], [0x1062, 0x1064], [0x1067, 0x106D], [0x1083, 0x1084], [0x1087, 0x108C], [0x108F, 0x108F], [0x17B6, 0x17B6], [0x17BE, 0x17C5], [0x17C7, 0x17C8], [0x1923, 0x1926], [0x1929, 0x192B], [0x1930, 0x1931], [0x1933, 0x1938], [0x19B0, 0x19C0], [0x19C8, 0x19C9], [0x1A19, 0x1A1B], [0x1B04, 0x1B04], [0x1B35, 0x1B35], [0x1B3B, 0x1B3B], [0x1B3D, 0x1B41], [0x1B43, 0x1B44], [0x1B82, 0x1B82], [0x1BA1, 0x1BA1], [0x1BA6, 0x1BA7], [0x1BAA, 0x1BAA], [0x1C24, 0x1C2B], [0x1C34, 0x1C35], [0xA823, 0xA824], [0xA827, 0xA827], [0xA880, 0xA881], [0xA8B4, 0xA8C3], [0xA952, 0xA953], [0xAA2F, 0xAA30], [0xAA33, 0xAA34], [0xAA4D, 0xAA4D]];
+Nd = [[0x0030, 0x0039], [0x0660, 0x0669], [0x06F0, 0x06F9], [0x07C0, 0x07C9], [0x0966, 0x096F], [0x09E6, 0x09EF], [0x0A66, 0x0A6F], [0x0AE6, 0x0AEF], [0x0B66, 0x0B6F], [0x0BE6, 0x0BEF], [0x0C66, 0x0C6F], [0x0CE6, 0x0CEF], [0x0D66, 0x0D6F], [0x0E50, 0x0E59], [0x0ED0, 0x0ED9], [0x0F20, 0x0F29], [0x1040, 0x1049], [0x1090, 0x1099], [0x17E0, 0x17E9], [0x1810, 0x1819], [0x1946, 0x194F], [0x19D0, 0x19D9], [0x1B50, 0x1B59], [0x1BB0, 0x1BB9], [0x1C40, 0x1C49], [0x1C50, 0x1C59], [0xA620, 0xA629], [0xA8D0, 0xA8D9], [0xA900, 0xA909], [0xAA50, 0xAA59], [0xFF10, 0xFF19]];
+Pc = [[0x005F, 0x005F], [0x203F, 0x2040], [0x2054, 0x2054], [0xFE33, 0xFE34], [0xFE4D, 0xFE4F], [0xFF3F, 0xFF3F]];
+
+UnicodeLetterLu = [];
+UnicodeLetterLl = [];
+UnicodeLetterLt = [];
+UnicodeLetterLm = [];
+UnicodeLetterLo = [];
+UnicodeLetterNl = [];
+UnicodeLetterMn = [];
+UnicodeLetterMc = [];
+UnicodeLetterNd = [];
+UnicodeLetterPc = [];
+
+for (indexI = 0; indexI < Lu.length; indexI++) {
+ for (indexJ = Lu[indexI][0]; indexJ <= Lu[indexI][1]; indexJ++) {
+ UnicodeLetterLu[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Ll.length; indexI++) {
+ for (indexJ = Ll[indexI][0]; indexJ <= Ll[indexI][1]; indexJ++) {
+ UnicodeLetterLl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lt.length; indexI++) {
+ for (indexJ = Lt[indexI][0]; indexJ <= Lt[indexI][1]; indexJ++) {
+ UnicodeLetterLt[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lm.length; indexI++) {
+ for (indexJ = Lm[indexI][0]; indexJ <= Lm[indexI][1]; indexJ++) {
+ UnicodeLetterLm[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Lo.length; indexI++) {
+ for (indexJ = Lo[indexI][0]; indexJ <= Lo[indexI][1]; indexJ++) {
+ UnicodeLetterLo[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nl.length; indexI++) {
+ for (indexJ = Nl[indexI][0]; indexJ <= Nl[indexI][1]; indexJ++) {
+ UnicodeLetterNl[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mn.length; indexI++) {
+ for (indexJ = Mn[indexI][0]; indexJ <= Mn[indexI][1]; indexJ++) {
+ UnicodeLetterMn[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Mc.length; indexI++) {
+ for (indexJ = Mc[indexI][0]; indexJ <= Mc[indexI][1]; indexJ++) {
+ UnicodeLetterMc[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Nd.length; indexI++) {
+ for (indexJ = Nd[indexI][0]; indexJ <= Nd[indexI][1]; indexJ++) {
+ UnicodeLetterNd[indexJ] = true;
+ }
+}
+for (indexI = 0; indexI < Pc.length; indexI++) {
+ for (indexJ = Pc[indexI][0]; indexJ <= Pc[indexI][1]; indexJ++) {
+ UnicodeLetterPc[indexJ] = true;
+ }
+}
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0; index <= 65535; index++) {
+ if ((UnicodeLetterLu[index] === undefined) && (UnicodeLetterLl[index] === undefined) && (UnicodeLetterLt[index] === undefined) && (UnicodeLetterLm[index] === undefined) && (UnicodeLetterLo[index] === undefined) && (UnicodeLetterNl[index] === undefined) && (UnicodeLetterMn[index] === undefined) && (UnicodeLetterMc[index] === undefined) && (UnicodeLetterNd[index] === undefined) && (UnicodeLetterPc[index] === undefined) && (index !== 0x0024) && (index !== 0x005F)) {
+ try {
+ var hex = decimalToHexString(index);
+ var identifier1 = "$" + String.fromCharCode(index) + "1";
+ var identifier2 = "$\\u" + hex + "1";
+ eval(identifier1 + " = 1");
+ eval(identifier1 + " === " + identifier2);
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ } catch (e) {
+ }
+ count++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/test b/external/contributions/Google/test
deleted file mode 100644
index 9daeafb98..000000000
--- a/external/contributions/Google/test
+++ /dev/null
@@ -1 +0,0 @@
-test